@flemist/simple-utils 2.0.2 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +0,0 @@
1
- "use strict";const z=require("@flemist/abort-controller-fast"),K=require("@flemist/async-utils"),Ut=require("@flemist/time-controller");let q=null;function At(){if(!q){q=new Array(256);for(let t=0;t<256;t++)q[t]=t.toString(16).padStart(2,"0")}return q}function st(t){const e=At(),n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);let r="";for(let o=0,i=n.length;o<i;o++)r+=e[n[o]];return r}let Y=null,ut=null,B=null,lt=null;function Et(){Y||(Y=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),ut=new Uint32Array(64),lt=new TextEncoder,B=new Uint8Array(65536))}function at(t){if(t==null)return null;Et();const e=Y,n=ut,r=lt;let o=B,i;if(typeof t=="string"){const h=t.length*3;o.length<h+128&&(o=B=new Uint8Array(h+128));const f=r.encodeInto(t,o);i=o.subarray(0,f.written)}else if(t instanceof Uint8Array)i=t;else if(ArrayBuffer.isView(t))i=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);else throw new Error(`[sha256Buffer] Unsupported content type: ${typeof t}`);const c=i.length,a=c+72>>>6<<6;o.length<a&&(o=B=new Uint8Array(a)),i!==o&&o.set(i),o[c]=128;for(let h=c+1;h<a;h++)o[h]=0;const U=c*8,_=U/4294967296|0,C=U|0;o[a-8]=_>>>24,o[a-7]=_>>>16,o[a-6]=_>>>8,o[a-5]=_,o[a-4]=C>>>24,o[a-3]=C>>>16,o[a-2]=C>>>8,o[a-1]=C;let A=1779033703,T=-1150833019,u=1013904242,s=-1521486534,l=1359893119,g=-1694144372,d=528734635,y=1541459225;for(let h=0;h<a;h+=64){for(let m=0;m<16;m++){const p=h+(m<<2);n[m]=o[p]<<24|o[p+1]<<16|o[p+2]<<8|o[p+3]}for(let m=16;m<64;m++){const p=n[m-15],$=n[m-2],b=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,F=($>>>17|$<<15)^($>>>19|$<<13)^$>>>10;n[m]=n[m-16]+b+n[m-7]+F|0}let f=A,S=T,L=u,W=s,O=l,D=g,x=d,J=y;for(let m=0;m<64;m+=4)for(let p=0;p<4;p++){const $=m+p,b=(O>>>6|O<<26)^(O>>>11|O<<21)^(O>>>25|O<<7),F=J+b+(x^O&(D^x))+e[$]+n[$]|0,$t=((f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10))+(f&S^L&(f^S))|0;J=x,x=D,D=O,O=W+F|0,W=L,L=S,S=f,f=F+$t|0}A=A+f|0,T=T+S|0,u=u+L|0,s=s+W|0,l=l+O|0,g=g+D|0,d=d+x|0,y=y+J|0}const w=new Uint8Array(32),R=[A,T,u,s,l,g,d,y];for(let h=0;h<8;h++){const f=R[h],S=h<<2;w[S]=f>>>24,w[S+1]=f>>>16&255,w[S+2]=f>>>8&255,w[S+3]=f&255}return w}function Ct(t){const e=at(t);return e?st(e):null}function ct(t,e){return t==null?e:e==null?t:Math.min(t,e)}function ft(t,e){return t==null?e:e==null?t:Math.max(t,e)}function Rt(t,e,n){return ft(ct(t,e),n)}function It(t,e){return(t%e+e)%e}function kt(t){return function(){let n=t+=1831565813;return n=Math.imul(n^n>>>15,n|1),n^=n+Math.imul(n^n>>>7,n|61),(n^n>>>14)/4294967296+.5}}function xt(){return Math.random()}function Nt(){return Math.random()*2**32>>>0}function ht(t){return t!=null?kt(t):xt}class G{_seed;_rnd;constructor(e){this._seed=e,this._rnd=ht(e)}get seed(){return this._seed}nextSeed(){return this.next()*2**32>>>0}nextRandom(){return new G(this.nextSeed())}next(){return this._rnd()}clone(){return new G(this._seed)}}function v(t,e,n){if(n==null&&(n=e,e=0),n<=e)throw new Error(`[random][randomFloat] toExclusive (${n}) must be greater than from (${e})`);return t.next()*(n-e)+e}function mt(t,e,n){return Math.floor(v(t,e,n))}function Mt(t,e){return t.next()<(e??.5)}function Pt(t,e,n){if(Array.isArray(e)){const i=e;e=i.length,n=c=>i[c]}if(!n)throw new Error("[random][randomIndexWeighted] getWeight is required");let r=0;for(let i=0;i<e;i++)r+=n(i);if(r===0)return-1;let o=v(t,r);for(let i=0;i<e;i++)if(o-=n(i),o<0)return i;return e-1}function j(t,e){if(e.length===0)throw new Error("[random][randomItem] items is empty");const n=mt(t,e.length);return e[n]}function Lt(t,e,n){if(e.length===0)throw new Error("[random][randomItems] items is empty");const r=[];for(let o=0;o<n;o++)r.push(j(t,e));return r}function Dt(t,e,n){let r=Object.values(e);return n&&(r=r.filter(n)),j(t,r)}const dt=1073741789,V=(dt>>2)-1;function Ft(t=V,e){if(t<=0)throw new Error(`[random][PseudoRandom] count(${t}) must be > 0`);if(t>V)throw new Error(`[random][PseudoRandom] count(${t}) must be <= ${V}`);if(e==null&&(e=Math.floor(Math.random()*t)),e>=t)throw new Error(`[random][PseudoRandom] startFrom(${e}) must be < count(${t})`);let n=e;return function(){return n=(n+dt)%t,n}}let N=null;function qt(){const t=Date.now();return N==null||t>N?(N=t,t):(N++,N)}async function Bt({url:t,timeout:e}={}){t||(t=typeof window<"u"?"/":"https://google.com");let n;try{const r=new z.AbortControllerFast;n=e?setTimeout(()=>{r.abort()},e):null;const o=await fetch(t,{method:"HEAD",signal:z.toAbortSignal(r.signal)}),i=o.headers.get("date");if(!i)throw new Error(`[Now][getDateInet] No date header in response: ${o.status} ${t}`);return new Date(i).getTime()}finally{n&&clearTimeout(n)}}function tt(t,e,n){const r=e==null?t:new Date(t.toLocaleString("en-US",{timeZone:e})),o=n==null?t:new Date(t.toLocaleString("en-US",{timeZone:n}));return new Date(t.getTime()+o.getTime()-r.getTime())}function pt(t,e){t=tt(t,"UTC",e);const n=t.getUTCFullYear().toString().padStart(4,"0"),r=(t.getUTCMonth()+1).toString().padStart(2,"0"),o=t.getUTCDate().toString().padStart(2,"0"),i=t.getUTCHours().toString().padStart(2,"0"),c=t.getUTCMinutes().toString().padStart(2,"0"),a=t.getUTCSeconds().toString().padStart(2,"0");return`${n}-${r}-${o} ${i}:${c}:${a}`}let Vt=0;const X=new WeakMap;function I(t){if(X.has(t))return X.get(t);const e=Vt++;return X.set(t,e),e}function M(t,e,n){if(t==null)return null;if(e==null||t.length<=e)return t;const r=n?.appendEllipsis?"…":"",o=r.length+(n?.appendTruncatedLength?String(t.length).length+2:0),i=Math.max(0,e-o),c=n?.appendTruncatedLength?`(${t.length-i})`:"";return i<=0?c+r:n?.fromStart?c+r+t.slice(t.length-i):t.slice(0,i)+r+c}function nt(t,e){try{return t[e]}catch(n){return"Error: "+(n instanceof Error?n.message:String(n))}}function k(t,e,n,r){const{pretty:o,filter:i,maxDepth:c,maxItems:a,maxStringLength:U,showObjectId:_,showArrayIndex:C,customToString:A}=e??{};if(n==null&&(n=[]),r==null&&(r=new Set),A){const u=A(t,n,s=>k(s,e,n,r));if(u!=null)return M(u,U,e?.truncateOptions)}const T=n.length;if(typeof t=="string")return t=M(t,U,e?.truncateOptions),r.size>0&&(t=JSON.stringify(t)),t;if(t==null||typeof t!="object")return String(t);if(t instanceof ArrayBuffer||ArrayBuffer.isView(t))return`${t.constructor?.name??""}#${I(t)}[${t.byteLength}]`;if(t instanceof RegExp)return M(String(t),U,e?.truncateOptions);if(t instanceof Date)return pt(t);if(t instanceof Object){if(r.has(t)||c!=null&&T>=c)return`${t.constructor===Object?"":t.constructor?.name??""}#${I(t)}`;r.add(t)}if(t instanceof Error)return M(t.stack||t.message||String(t),U,e?.truncateOptions);if(Array.isArray(t)){const u=o?" ".repeat(T):"";let s="";_&&(s+=`#${I(t)} `),s+="[";let l=0,g=!1;for(let d=0;d<t.length;d++){if(a!=null&&l>=a){g=!0;break}const y=[...n,String(d)],w=nt(t,d);if(i!=null&&!i(y,w))continue;const R=k(w,e,y,r);l>0&&(s+=","),o&&(s+=`
2
- `),o&&(s+=`${u} `),C&&(s+=`${d}: `),s+=`${R}`,l++}return g?(l>0&&(s+=","),o?(s+=`
3
- `,s+=`${u} ...
4
- `):s+="...",s+=u,s+="]"):(l>0&&o&&(s+=`
5
- ${u}`),s+="]"),s}if(t instanceof Map){let u="";return _&&(u+=`#${I(t)} `),u+="Map",u+=k(Array.from(t.entries()),e,n,r),u}if(t instanceof Set){let u="";return _&&(u+=`#${I(t)} `),u+="Set",u+=k(Array.from(t.values()),e,n,r),u}{const u=t.constructor===Object?"":t.constructor?.name??"",s=o?" ".repeat(T):"";let l=u?`${u} `:"";_&&(l+=`#${I(t)} `),l+="{";let g=0,d=!1;for(const y in t){if(a!=null&&g>=a){d=!0;break}const w=[...n,y],R=nt(t,y);if(i!=null&&!i(w,R))continue;const h=k(R,e,w,r);g>0&&(l+=","),o&&(l+=`
6
- `),o&&(l+=`${s} `),l+=`${y}: ${h}`,g++}return d&&(g>0&&(l+=","),o?(l+=`
7
- `,l+=`${s} ...
8
- `):l+="...",l+=s),g>0&&o&&!d&&(l+=`
9
- ${s}`),l+="}",l}}function zt(t,e){t=tt(t,"UTC",e);const n=t.getUTCFullYear().toString().padStart(4,"0"),r=(t.getUTCMonth()+1).toString().padStart(2,"0"),o=t.getUTCDate().toString().padStart(2,"0"),i=t.getUTCHours().toString().padStart(2,"0"),c=t.getUTCMinutes().toString().padStart(2,"0"),a=t.getUTCSeconds().toString().padStart(2,"0");return`${n}-${r}-${o}_${i}-${c}-${a}`}function Gt(t){return t==null?null:t.replace(/[&<>"']/g,e=>{switch(e){case"&":return"&amp;";case"<":return"&lt;";case">":return"&rt;";case'"':return"&quot;";default:return"&#039;"}})}function Ht(t){return t==null?null:t?.replace(/[/\\^$*+?.()|[\]{}]/g,"\\$&")}function Q(t){if(t==null)return null;if(Array.isArray(t)){const e=t.length,n=[];for(let r=0;r<e;r++)n.push(Q(t[r]));return n}if(typeof t=="object"){if(t.constructor&&t.constructor!==Object)return t;const e={};for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=Q(t[n]));return e}return t}function P(t,e){if(t===e)return!0;if(t==null)return e==null;if(e==null)return!1;if(Array.isArray(t)){if(!Array.isArray(e))return!1;const n=t.length;if(n!==e.length)return!1;for(let r=0;r<n;r++)if(!P(t[r],e[r]))return!1;return!0}if(typeof t=="object"){if(typeof e!="object"||t.constructor&&t.constructor!==Object||e.constructor&&e.constructor!==Object)return!1;for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&!P(t[n],Object.prototype.hasOwnProperty.call(e,n)?e[n]:null))return!1;for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&!Object.prototype.hasOwnProperty.call(t,n)&&!P(e[n],null))return!1;return!0}return!1}function Wt(t,e){if(t==null||e==null)return t==null==(e==null);if(t.size!==e.size)return!1;for(const[n,r]of t)if(!P(r,e.get(n)))return!1;return!0}function Jt(t,e){const n=t.length;if(n!==e.length)return!1;for(let r=0;r<n;r++)if(t[r]!==e[r])return!1;return!0}function Z(t){return!t||typeof t!="object"?t:Array.isArray(t)?t.map(Z):t&&Object.keys(t).sort().reduce((e,n)=>{const r=Z(t[n]);return r!=null&&(e[n]=r),e},{})}function bt(t,e){return Object.defineProperty(t,"name",{value:e,configurable:!0}),t}function Xt(t){const e=alert;return window.alert=n=>t(e,n),()=>{window.alert=e}}var et=(t=>(t.log="log",t.warn="warn",t.error="error",t.info="info",t.debug="debug",t.trace="trace",t.assert="assert",t))(et||{});const rt=Object.values(et);function E(t){return function(){t.apply(console,arguments)}}const ot={log:E(console.log),warn:E(console.warn),error:E(console.error),info:E(console.info),debug:E(console.debug),trace:E(console.trace),assert:E(console.assert)};function gt(t){return rt.forEach(e=>{console[e]=(...n)=>{t(ot,e,n)}}),()=>{rt.forEach(e=>{console[e]=ot[e]})}}function Yt(t){return function(n){const r=gt(t);try{const o=n();return K.isPromiseLike(o)?o.then(i=>(r(),i),i=>{throw r(),i}):o}finally{r()}}}function yt(){let t=new Error().stack;if(t!=null){const e=t.indexOf(`
10
- `);e!=null&&e>=0&&(t=t.substring(e+1))}return t??""}function Qt(t){return function(...e){const n=yt();try{return t.apply(this,e)}catch(r){throw r instanceof Error||(r=new Error(String(r))),r.stack=r.stack?r.stack+`
11
- `+n:n,r}}}function wt(t){if(!t||t.timeout==null)return null;const e=new z.AbortControllerFast,n=t.timeController??Ut.timeControllerDefault;if(t.timeout){const r=n.setTimeout(()=>{e.abort(new z.AbortError(`[timeoutAbortController] Timeout error: ${t.timeout}ms`))},t.timeout);e.signal.subscribe(()=>{clearTimeout(r)})}return t.abortSignal?.subscribe(r=>{e.abort(r)}),e}async function Zt(t,e){const n=wt(e);try{return await t(n?.signal??e?.abortSignal??null)}finally{n?.abort()}}class Kt{_options;_hasValue=!1;_promiseOrValue=null;constructor(e){this._options=e}run(){if(!this._hasValue){let e=this._options.func();const n=o=>(this._options.persist?this._promiseOrValue=o:(this._promiseOrValue=null,this._hasValue=!1),o),r=o=>{throw this._options.persist||(this._promiseOrValue=null,this._hasValue=!1),o};if(K.isPromiseLike(e))e=e.then(n,r);else if(!this._options.persist)return e;this._promiseOrValue=e,this._hasValue=!0}return this._promiseOrValue}set(e){if(!this._options.persist)throw new Error("[Lazy][set] Cannot set value when persist is false");this._hasValue=!0,this._promiseOrValue=e}}class vt{_options;_promiseOrValues=new Map;constructor(e){this._options=e}run(e){if(this._promiseOrValues.has(e))return this._promiseOrValues.get(e);let n=this._options.func(e);const r=i=>(this._options.persist?this._promiseOrValues.set(e,i):this._promiseOrValues.delete(e),i),o=i=>{throw this._options.persist||this._promiseOrValues.delete(e),i};if(K.isPromiseLike(n))n=n.then(r,o);else if(!this._options.persist)return n;return this._promiseOrValues.set(e,n),n}set(e,n){if(!this._options.persist)throw new Error("[LazyWithId][set] Cannot set value when persist is false");this._promiseOrValues.set(e,n)}}function it(t){return t.replace(/\W/g,"").toLowerCase()}function St(t){return t instanceof URL?t.searchParams:t instanceof URLSearchParams?t:typeof t=="string"?new URL(t).searchParams:typeof window<"u"?new URL(window.location.href).searchParams:new URLSearchParams}function Ot(t){return t==null?null:(t=t.toLowerCase().trim(),t==="true"||t==="1"||t==="yes"?!0:t==="false"||t==="0"||t==="no"?!1:null)}function _t(t){if(t==null)return null;t=t.trim();const e=parseInt(t,10);return isNaN(e)?null:e}function Tt(t){if(t==null)return null;t=t.trim();const e=parseFloat(t);return isNaN(e)?null:e}function H(t,e){const n=St(e),r=it(t);for(const[o,i]of n.entries())if(it(o)===r)return i;return null}function jt(t,e){return Ot(H(t,e))}function te(t,e){return _t(H(t,e))}function ee(t,e){return Tt(H(t,e))}exports.ConsoleMessageLevel=et;exports.Lazy=Kt;exports.LazyWithId=vt;exports.Random=G;exports.UNIQUE_PSEUDO_RANDOM_MAX_COUNT=V;exports.alertReplace=Xt;exports.consoleReplace=gt;exports.convertTimeZone=tt;exports.createUniquePseudoRandom=Ft;exports.dateNowUnique=qt;exports.deepCloneJsonLike=Q;exports.deepEqualJsonLike=P;exports.deepEqualJsonLikeMap=Wt;exports.equalArray=Jt;exports.escapeHtml=Gt;exports.escapeRegExp=Ht;exports.fixStackTrace=Qt;exports.formatAny=k;exports.formatDate=pt;exports.formatDateFileName=zt;exports.getDateInet=Bt;exports.getNormalizedObject=Z;exports.getRandomFunc=ht;exports.getRandomSeed=Nt;exports.getStackTrace=yt;exports.max=ft;exports.min=ct;exports.minMax=Rt;exports.numberMod=It;exports.randomBoolean=Mt;exports.randomEnum=Dt;exports.randomFloat=v;exports.randomIndexWeighted=Pt;exports.randomInt=mt;exports.randomItem=j;exports.randomItems=Lt;exports.setFuncName=bt;exports.sha256=Ct;exports.sha256Buffer=at;exports.timeoutAbortController=wt;exports.toHex=st;exports.truncateString=M;exports.urlGetBoolean=jt;exports.urlGetFloat=ee;exports.urlGetInt=te;exports.urlGetParams=St;exports.urlGetString=H;exports.urlParamToBoolean=Ot;exports.urlParamToFloat=Tt;exports.urlParamToInt=_t;exports.withConsoleReplace=Yt;exports.withTimeout=Zt;