com-tools
Version:
com-tools 提供了一些通用的工具函数;
2 lines • 15.1 kB
JavaScript
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`type-tls`)):typeof define==`function`&&define.amd?define([`exports`,`type-tls`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.ComTools={},e.type_tls))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function n(e,t){return JSON.stringify(e)==JSON.stringify(t)}function r(e){let{loopCall:t,complete:n,stepComplete:r,thisValue:i,total:a=1/0,step:o=50,delay:s=0}=e,c=0,l=0,u=!1;function d(e){e&&(u=e,n&&n.call(i,u,c,l,a))}function f(){let e=c<a;return!e&&n&&n.call(i,!1,c-1,l,a),e}let p=null;function m(){l++;let e=Math.min(c+o,a);for(;c<e&&!u;)d(t.call(i,c,l,a)),c++;r&&d(r.call(i,c-1,l,a)),f()&&!u&&(p=setTimeout(m,s))}function h(e){let t=e||!0;clearTimeout(p),d(t)}return f()&&m(),h}Object.defineProperties(Array.prototype,{multipleLoop:{configurable:!0,writable:!0,enumerable:!1,value:function(e){let{loopCall:t,complete:n,stepComplete:i,thisValue:a,step:o,delay:s}=e,c=this,l=a||c,u={loopCall:(e,n)=>t.call(l,c[e],e,n,c),total:c.length,step:o,delay:s};return n&&(u.complete=(e,t,r)=>n.call(l,e,t,r,c)),i&&(u.stepComplete=(e,t)=>i.call(l,e,t,c)),r(u)}}});function i(e,t,n){n??=e;let r=[];for(let t of e)r.push(t);return r.filter(function(r){let i=this.indexOf(r);return t.call(n,r,i,e)},r)}function a(e,t,n){let{ready:r=t+`Ready`,noEvent:i,event:a=t+`Change`,newValueKey:o=`value`,oldValueKey:s=`oldValue`,getDefault:c}=n||{},u=`_`+r,d=`_`+t;Object.defineProperty(e,r,{configurable:!0,enumerable:!0,get:function(){let e=this||window;if(!e[u]){let t=e[d];t?e[u]=Promise.resolve(t):e[u]=l()}return e[u]},set:function(e){let t=this||window;t[u]=e}});let f;f=c?function(){let e=this||window;return!e[d]&&c&&(e[t]=c.call(e,e)),e[d]}:function(){return(this||window)[d]};let p;return p=i?function(e){let t=this||window;if(e&&e!==t[d]){t[d]=e;let n=t[r];n.resolve?n.resolve(e):t[r]=Promise.resolve(e)}}:function(e){let t=this||window;if(e&&e!==t[d]){let n=t[d];t[d]=e;let i=t[r];i.resolve?i.resolve(e):t[r]=Promise.resolve(e);let c=new Event(a,{bubbles:!0});c[o]=e,c[s]=n,window.dispatchEvent(c)}},Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:f,set:p}),e}function o(e,t,n){let r;return r=Array.isArray(t)?t.reduce((e,t)=>(e[t]=n,e),{}):t,Object.keys(r).forEach(function(t){let n=r[t];a(e,t,n)}),e}function s(e,t,n,r){let i=`_`+t,a;a=r?n:n?function(){let e=this||window;return!e[i]&&n&&(e[t]=n.call(e,e)),e[i]}:function(){return(this||window)[i]},Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:a})}function c(){return new Date().getTime().toString()+Math.random()}function l(e,t){let n=typeof e==`function`;n&&t==null&&(t=!0);let r={};function i(){s.resolve=void 0,s.reject=void 0,s.clearAdditions=void 0}function a(e){i(),r.resolve(e)}function o(e){i(),r.reject(e)}let s=new Promise(function(i,s){if(r.resolve=i,r.reject=s,n)if(t)setTimeout(e,0,a,o);else return e(a,o)});return s.clearAdditions=i,s.resolve=a,s.reject=o,s}function u(e,t,n,r){let{get:i=!0,set:a=!0,configurable:o=!0,enumerable:s=!0,getDefault:c,setDefault:l}=r||{},u={configurable:o,enumerable:s};return i&&(u.get=function(){let e=t[n];return e===void 0?c:e}),a&&(u.set=function(e){t[n]=e===void 0?l:e}),Object.defineProperty(e,n,u),e}function d(e,t,n,r){let i;return i=Array.isArray(n)?n.reduce((e,t)=>(e[t]=r,e),{}):n,Object.keys(i).forEach(function(n){let r=i[n];u(e,t,n,r)}),e}function f(e){return Function(`"use strict"; return (${e})`)()}function p(e){let t=m(e);return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t}function m(e){return g(e.toString(),e.name,!0)}var h=/(^\s*(async\s+)?function\s*(\s|\*)\s*)[A-Za-z_$]+[\w$]*(\s*\()/,ee=/^[A-Za-z_$]+[\w$]*$/;function g(e,t,n){let r=h,i=ee,a=r.test(e),o=t&&i.test(t);if(a&&o&&!n&&(e=e.replace(r,`$1${t}$4`)),!a&&o)var s=`"use strict"; var ${t} = ${e} ; return ${t}`;else s=`"use strict"; return (${e})`;return Function(s)()}function te(e){var t;return function(){return t===void 0?new.target?new e(...arguments):e.apply(this,arguments):t}}function ne(e,t){return e>0?new Promise(n=>{setTimeout(n,e,t)}):Promise.resolve(t)}function re(e){if(e<0)return()=>!0;let t=0;return function(){let n=Date.now(),r=n>t;return r&&(t=n+e),r}}function _(e){if(e<=0)return()=>!0;let t=0;return function(){let n=Date.now(),r=n>=t;return r&&(t=n+e),r}}function v(e,t,n){if(n)for(let n in t)e[n]??(e[n]=t[n]);else for(let n in t)e[n]===void 0&&(e[n]=t[n]);return e}var ie=class{_decided=!1;get decided(){return this._decided}listeners=[];_value;get value(){return this._value}set value(e){this._value=e,this.resolve()}resolve(){this._decided=!0;let e=this.value;for(let t of this.listeners)t(e);this.listeners=[],this.then=function(e){e(this.value)}}then(e){this.listeners.push(e)}static resolve(e){let t=new this;return t.value=e,t}};function y(e,t){if(t.length===0)return e;for(let n=0;n<t.length;n++){if(e==null)return;e=e[t[n]]}return e}function b(e,t,n){t.length===0&&Object.assign(e,n);let r=t.length-1;for(let n=0;n<r;n++){let r=t[n];e[r]??(e[r]=typeof t[n+1]==`number`?[]:{}),e=e[r]}e[t[r]]=n}function x(e,t,n){let r=typeof n==`function`?n:()=>n,i=y(e,t);return i===void 0&&(i=r(),b(e,t,i)),i}function ae(e,t,n){let r=typeof n==`function`?n:()=>n,i=y(e,t);return i===void 0&&(i=r(),i instanceof Promise?i.then(n=>b(e,t,n)):b(e,t,i)),i}function S(e,t){if(t.length===0)return!0;let n=t.length-1;for(let r=0;r<n;r++){if(e==null)return!1;e=e[t[r]]}return e==null?!1:delete e[t[n]]}function oe(e){return Object.keys(e).forEach(t=>e[t]===void 0&&delete e[t]),e}function se(e){return Object.keys(e).forEach(t=>e[t]==null&&delete e[t]),e}function ce(e,t){return Object.keys(e).forEach(n=>t.includes(e[n])&&delete e[n]),e}function le(e,t){return Object.keys(e).forEach(n=>t(e[n],n)&&delete e[n]),e}function C(e,n){return n??=t.isEmptyValue,Object.keys(e).forEach(t=>n(e[t])&&delete e[t]),e}function w(e,t){let n={};for(let r of t){let t=e[r];t!==void 0&&(n[r]=t)}return n}function T(e,t){for(let n of t)delete e[n];return e}function E(e,t){let n={};for(let r of t)b(n,r,y(e,r));return n}function D(e,t){for(let n of t)S(e,n);return e}function O(e,t,n){t??=`/`,n??=`-`;for(let t=e.length-1;t>=0&&e[t]==null;t--)e.length=t;return e.map(e=>e??n).join(t)}function k(e,t,n=`/`){return e.split(n,t+1)[t]}function A(e,t,n,r=`/`){let i=e.split(r);return i[t]=n,i.join(r)}function j(e,t,n=`/`){let r=[];for(let i of e){let e=i.split(n,t+1)[t];e&&r.push(e)}return r}function M(e,t,n=`/`){return e===t||e.startsWith(t+n)}function N(e,t,n=`/`){return e===t||e.startsWith(t+n)||t.startsWith(e+n)}function P(e,t){return t.some(t=>e.includes(t))}function F(e,t){return t.some(t=>t.test(e))}function I(e,t){return t.some(function(t){return typeof t==`string`?e.includes(t):t.test(e)})}function L(e,t,n){if(t===n)return e;let[r]=e.splice(t,1);return e.splice(n,0,r),e}function R(e,t,n){let r=e[t],i=e.filter((e,n)=>n!==t);return i.splice(n,0,r),i}function z(e,t,n){let r=t.map(function(t,r){return{item:e[t],to:n[r]}});for(let{item:t}of r){let n=e.indexOf(t);e.splice(n,1)}for(let{item:t,to:n}of r)e.splice(n,0,t);return e}function B(e,t,n){let r=t.map(t=>e[t]),i=e.filter((e,n)=>!t.includes(n));for(let e=0;e<t.length;e++)i.splice(n[e],0,r[e]);return i}function V(e,t){let n=typeof t==`string`?t.length:t??0,r=Math.min(n,1),i=[`/`,...e,`/`],a=JSON.stringify(i,null,t),o=a.indexOf(`/`)+3+r,s=a.lastIndexOf(`/`)-1-n;return a.slice(o,s)}function H(e,t,n){let r=JSON.stringify(e,null,t)+`,`;return t&&(n??=`
`),n&&(r+=n),r}function U(e,t,n,r){r??=e;let i=e.filter(function(e,n){return t.includes(n)});return i.forEach(t=>{let i=e.indexOf(t);n.call(r,t,i,e)}),i}function W(e,t,n,r){r??=e;let i=[],a=t.map(t=>(i.push(t),e.indexOf(t)));return i.forEach(t=>{let i=e.indexOf(t);n.call(r,t,i,e)}),a}function ue(e,t,n){return n??=e,e.slice().filter(r=>{let i=e.indexOf(r);return t.call(n,r,i,e)})}function de(e,t,n,r=1){let i=e.splice(t,r);return e.splice(n,0,...i),i}function fe(e,t,...n){let r=K(e,...n);return e.splice(t,0,...r),r}function pe(e,t,...n){let r=q(e,...n);return e.splice(t,0,...n),r}function me(e,t,n,r){let i=J(e,n,r);return e.splice(t,0,...i),i}function G(e,t,n=0,r){r||=function(e,t){return e===t};let i=e.filter(n=>r.call(e,n,t));return q(e,...i),e.splice(n,0,t),i}function he(e,t,n,r){return t.reduceRight((t,i)=>{let a=G(e,i,n,r);return t.unshift(...a),t},[])}function ge(e,t,n){n??=t;let r=n+1-t;return e.splice(t,r)}function K(e,...t){return U(e,t,function(e,t,n){n.splice(t,1)},e)}function q(e,...t){return W(e,t,function(e,t,n){n.splice(t,1)},e)}function J(e,t,n){n===void 0&&(n=e);let r=e.filter((e,r,i)=>t.call(n,e,r,i));return W(e,r,function(e,t,n){n.splice(t,1)},e),r}function _e(e,t,n){return n??=e,e.reduce(function(e,r,i,a){return t.call(n,r,i,a)&&e.push(i),e},[])}function ve(e,t,n){return e.length===t.length?(n||=function(e,t){return e===t},e.every((e,r)=>n(e,t[r]))):!1}function ye(e,t){return e.sort((e,n)=>{let r=t.indexOf(e),i=t.indexOf(n);r===-1&&(r=2**53-1),i===-1&&(i=2**53-1);let a=r-i;return a===0?e<n?-1:1:a})}function be(e,t){let n={members:[]},r=e.length;for(let i=0;i<r;i++){let r=e[i],a=x(n,t(r,i,e),()=>({members:[]}));(a.members??=[]).push(r)}return n}function xe(e){return Object.keys(e).filter(t=>Y(e[t]))}function Se(e){return Object.values(e).filter(e=>Y(e))}function Ce(e){return Object.entries(e).filter(([e,t])=>Y(t))}function Y(e){return e&&!Array.isArray(e)&&typeof e==`object`}function we(e){return Object.values(e).some(e=>Y(e))}function Te(e){let t=[],n=[e];for(let e=0;e<n.length;e++){let{members:r,...i}=n[e];r&&t.push(...r),n.push(...Object.values(i))}return{members:t,nodes:n}}function Ee(e,t){let n={};return new Proxy(e,{get:function(e,r,i){if(typeof e[r]==`function`)return Object.hasOwn(n,r)?n[r]:n[r]=function(...n){let i=e[r](...n);for(let e of t)e[r]?.(...n);return i};let a=e[r];for(let e of t)e[r];return a},set:function(e,n,r,i){let a=Reflect.set(e,n,r);for(let e of t)e[n]=r;return a},deleteProperty:function(e,n){let r=Reflect.deleteProperty(e,n);for(let e of t)Reflect.deleteProperty(e,n);return r},apply:function(e,n,r){let i=Reflect.apply(e,n,r);for(let e of t)Reflect.apply(e,n,r);return i},construct:function(e,n,r){let i=Reflect.construct(e,n,r);for(let e of t)Reflect.construct(e,n,r);return i}})}async function X(e,t,n){let r=[];for(let i of e){let e=i.apply(t,n),a=e instanceof Promise?await e:e;r.push(a)}return r}function De(e,t,n){let r=e.length,i=0,a,o=[];for(;i<r&&(a=e[i].apply(t,n),!(a instanceof Promise));)o.push(a),i++;if(i===r)return o;let s=e.slice(i+1);return a.then(async function(e){if(o.push(e),s.length){let e=await X(s,t,n);o.push(...e)}return o})}async function Z(e,t,n,r){r??=function(){};let i=[];for(let a of e)try{let e=a.apply(t,n),r=e instanceof Promise?await e:e;i.push(r)}catch(e){i.push(e),r.call(t,e,a)}return i}function Oe(e,t,n,r){r??=function(){};let i=e.length,a=0,o,s=[];for(;a<i;){let i=e[a];try{if(o=i.apply(t,n),o instanceof Promise)break;s.push(o)}catch(e){s.push(e),r.call(t,e,i)}a++}if(a===i)return s;let c=e.slice(a+1);return o.then(function(e){s.push(e)},function(t){s.push(t),r(t,e[a])}).then(async function(){if(c.length){let e=await Z(c,t,n,r);s.push(...e)}return s})}function ke(e,t=0){return Number.isSafeInteger(e)?e:t}function Ae(e){e.trailing??=!0;let t=0,n=null,r,i;function a(){n=null,t=Date.now()+e.interval,e.fn.apply(r,i)}return function(...o){r=this,i=o;let s=Date.now();s>=t?(n&&clearTimeout(n),a()):e.trailing&&!n&&(n=setTimeout(a,t-s))}}function je(e){let t=0,n=null,r,i;function a(){n=null,e.leading&&(t=Date.now()+e.interval),e.fn.apply(r,i)}return function(...o){r=this,i=o,e.leading&&!n&&t<=Date.now()?a():(n&&clearTimeout(n),n=setTimeout(a,e.interval))}}function Q(e){let t=0,n;return function(){let r=Date.now();return(r>t||e.nonNull&&n==null)&&(n=e.fn.apply(this,arguments),t=r+e.interval),n}}function Me(e){let t=0,n,r=!1,i=null;return async function(){if(i)return i;let a=Date.now();return a<t?n:(i=e.fn.apply(this,arguments).then(i=>(n=i,r=!0,t=a+e.interval,i),i=>{if(t=0,e.ignoreError&&r)return n;throw i}),i.finally(()=>{i=null}),i)}}function Ne(e){let t=0;return function(){let n=Date.now();if(n>t){let r=e.fn.apply(this,arguments);return(!e.shouldRestart||e.shouldRestart.call(this,r,this))&&(t=n+e.interval),r}return e.getValue.call(this,this)}}function Pe(e){let t=0,n=null;return async function(){if(n)return n;let r=Date.now();return r<t?e.getValue.call(this,this):(n=e.fn.apply(this,arguments).then(n=>((!e.shouldRestart||e.shouldRestart.call(this,n,this))&&(t=r+e.interval),n),n=>{if(t=0,e.ignoreError)return e.getValue.call(this,this);throw n}),n.finally(()=>{n=null}),n)}}function Fe(e,t){let n={},r=new Set([...e,...Object.keys(t)]);for(let e of r)e in t&&(n[e]=t[e]);return n}function $(e,t){return e.map(e=>e instanceof RegExp?e:new RegExp(e,t))}var Ie=class{constructor(e,t){this.flags=t,this.setOrder(e,t)}order;regExpOrder;setOrder(e,t){this.order=e,t??=this.flags??void 0,this.regExpOrder=$(e,t)}getOrderIndex(e){return this.regExpOrder.findIndex(t=>t.test(e))}compare=(e,t)=>{let n=this.getOrderIndex(e),r=this.getOrderIndex(t);n===-1&&(n=2**53-1),r===-1&&(r=2**53-1);let i=n-r;return i===0?e<t?-1:1:i};sort(e){return e.sort(this.compare)}toSorted(e){return this.sort(e)}};function Le(e,t){return e+Math.random()*(t-e)}e.Decide=ie,e.StringSorter=Ie,e.array_delete=ge,e.array_deleteIndexs=K,e.array_deleteItems=q,e.array_deleteUseTest=J,e.array_filterIndexs=_e,e.array_insertItem=G,e.array_insertItemList=he,e.array_isEqual=ve,e.array_move=de,e.array_moveItemsTo=pe,e.array_moveTo=fe,e.array_moveToUseTest=me,e.array_safelyFilter=ue,e.array_safelyOperateIndexs=U,e.array_safelyOperateItems=W,e.array_sortByOrder=ye,e.assignDefaultValues=v,e.asyncCachedCall=Me,e.asyncSerialCallAllFuns=Z,e.asyncSerialCallFuns=X,e.asyncSharedCachedCall=Pe,e.betterEval=f,e.cachedCall=Q,e.copyConstructor=p,e.copyFunction=m,e.createControllablePromise=l,e.createFunctionBy=g,e.createSingleton=te,e.createUniqueIdentifier=c,e.debounce=je,e.defineListenableProperties=o,e.defineListenableProperty=a,e.defineListenablePropertyGetter=s,e.defineProxyProperties=d,e.defineProxyProperty=u,e.deleteMember=S,e.flatGroupTree=Te,e.formatSafeInteger=ke,e.getMember=y,e.getMemberWithAsyncDefault=ae,e.getMemberWithDefault=x,e.getPathPart=k,e.getSubGroupEntries=Ce,e.getSubGroupNames=xe,e.getSubGroupNodes=Se,e.getValidPathParts=j,e.greaterInterval=re,e.groupTreeBy=be,e.hasSubGroups=we,e.includesPatterns=I,e.includesRegExps=F,e.includesStrings=P,e.isEqualByJSON=n,e.isGroupTree=Y,e.isRelatedPath=N,e.isSubPath=M,e.moveItemInArray=L,e.moveItemInNewArray=R,e.moveItemsInArray=z,e.moveItemsInNewArray=B,e.multipleLoop=r,e.noLessInterval=_,e.omitMembers=T,e.omitMembersByPath=D,e.pathString=O,e.pickMembers=w,e.pickMembersByPath=E,e.randomInRange=Le,e.removeEmpty=C,e.removeNull=se,e.removePropertyValue=le,e.removePropertyValues=ce,e.removeUndefined=oe,e.replacePathPart=A,e.safelyIterate=i,e.serialCallAllFuns=Oe,e.serialCallFuns=De,e.setMember=b,e.sharedCachedCall=Ne,e.sortMembers=Fe,e.syncOperateObjects=Ee,e.throttle=Ae,e.toIRegExps=$,e.toJSONArrayFragment=V,e.toJSONItemFragment=H,e.waitWhile=ne});