com-tools
Version:
com-tools 提供了一些通用的工具函数;
2 lines • 15.6 kB
JavaScript
var ComTools=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){return JSON.stringify(e)==JSON.stringify(t)}function n(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:r,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 r&&(u.complete=(e,t,n)=>r.call(l,e,t,n,c)),i&&(u.stepComplete=(e,t)=>i.call(l,e,t,c)),n(u)}}});function r(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 i(e,t,n){let{ready:r=t+`Ready`,noEvent:i,event:a=t+`Change`,newValueKey:o=`value`,oldValueKey:s=`oldValue`,getDefault:l}=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]=c()}return e[u]},set:function(e){let t=this||window;t[u]=e}});let f;f=l?function(){let e=this||window;return!e[d]&&l&&(e[t]=l.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 a(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];i(e,t,n)}),e}function o(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 s(){return new Date().getTime().toString()+Math.random()}function c(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 l(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 u(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];l(e,t,n,r)}),e}function d(e){return Function(`"use strict"; return (${e})`)()}function f(e){let t=p(e);return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t}function p(e){return g(e.toString(),e.name,!0)}var m=/(^\s*(async\s+)?function\s*(\s|\*)\s*)[A-Za-z_$]+[\w$]*(\s*\()/,h=/^[A-Za-z_$]+[\w$]*$/;function g(e,t,n){let r=m,i=h,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 ee(e){var t;return function(){return t===void 0?new.target?new e(...arguments):e.apply(this,arguments):t}}function te(e,t){return e>0?new Promise(n=>{setTimeout(n,e,t)}):Promise.resolve(t)}function ne(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 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 ie(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 ae=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 oe(e){let t=e&&e.length;return Number.isInteger(e.length)&&t>=0}function se(e){return e==null?!0:typeof e==`string`?e===``||e.trim()===``:!1}function ce(e){return e==null?!0:typeof e==`object`?oe(e)?e.length===0:e instanceof Map||e instanceof Set?e.size===0:Reflect.ownKeys(e).length===0:!1}function le(e){return typeof e==`object`?ce(e):se(e)}globalThis.AsyncFunction??(async function(){}).constructor,globalThis.GeneratorFunction??(function*(){}).constructor,globalThis.AsyncGeneratorFunction??(async function*(){}).constructor;var _=(e=>(e.equal=`equal`,e.intersect=`intersect`,e.intersectEqual=`intersectEqual`,e))(_||{});(e=>{function t(e){let t;switch(e){case`equal`:t=(e,t)=>e===t;case`intersect`:t=(e,t)=>e&t;default:t=(e,t)=>(e&t)===e}return t}e.getEqualFun=t})(_||={});function v(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 y(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 b(e,t,n){let r=typeof n==`function`?n:()=>n,i=v(e,t);return i===void 0&&(i=r(),y(e,t,i)),i}function ue(e,t,n){let r=typeof n==`function`?n:()=>n,i=v(e,t);return i===void 0&&(i=r(),i instanceof Promise?i.then(n=>y(e,t,n)):y(e,t,i)),i}function x(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 de(e){return Object.keys(e).forEach(t=>e[t]===void 0&&delete e[t]),e}function S(e){return Object.keys(e).forEach(t=>e[t]==null&&delete e[t]),e}function C(e,t){return Object.keys(e).forEach(n=>t.includes(e[n])&&delete e[n]),e}function w(e,t){return Object.keys(e).forEach(n=>t(e[n],n)&&delete e[n]),e}function T(e,t){return t??=le,Object.keys(e).forEach(n=>t(e[n])&&delete e[n]),e}function E(e,t){let n={};for(let r of t){let t=e[r];t!==void 0&&(n[r]=t)}return n}function D(e,t){for(let n of t)delete e[n];return e}function O(e,t){let n={};for(let r of t)y(n,r,v(e,r));return n}function k(e,t){for(let n of t)x(e,n);return e}function A(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 j(e,t,n=`/`){return e.split(n,t+1)[t]}function M(e,t,n,r=`/`){let i=e.split(r);return i[t]=n,i.join(r)}function N(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 P(e,t,n=`/`){return e===t||e.startsWith(t+n)}function F(e,t,n=`/`){return e===t||e.startsWith(t+n)||t.startsWith(e+n)}function I(e,t){return t.some(t=>e.includes(t))}function L(e,t){return t.some(t=>t.test(e))}function R(e,t){return t.some(function(t){return typeof t==`string`?e.includes(t):t.test(e)})}function z(e,t,n){if(t===n)return e;let[r]=e.splice(t,1);return e.splice(n,0,r),e}function B(e,t,n){let r=e[t],i=e.filter((e,n)=>n!==t);return i.splice(n,0,r),i}function V(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 H(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 fe(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 pe(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 me(e,t,n){return n??=e,e.slice().filter(r=>{let i=e.indexOf(r);return t.call(n,r,i,e)})}function he(e,t,n,r=1){let i=e.splice(t,r);return e.splice(n,0,...i),i}function ge(e,t,...n){let r=K(e,...n);return e.splice(t,0,...r),r}function _e(e,t,...n){let r=q(e,...n);return e.splice(t,0,...n),r}function ve(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 ye(e,t,n,r){return t.reduceRight((t,i)=>{let a=G(e,i,n,r);return t.unshift(...a),t},[])}function be(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 xe(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 Se(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 Ce(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 we(e,t){let n={members:[]},r=e.length;for(let i=0;i<r;i++){let r=e[i],a=b(n,t(r,i,e),()=>({members:[]}));(a.members??=[]).push(r)}return n}function Te(e){return Object.keys(e).filter(t=>Y(e[t]))}function Ee(e){return Object.values(e).filter(e=>Y(e))}function De(e){return Object.entries(e).filter(([e,t])=>Y(t))}function Y(e){return e&&!Array.isArray(e)&&typeof e==`object`}function Oe(e){return Object.values(e).some(e=>Y(e))}function ke(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 Ae(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 je(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 Me(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 Ne(e,t=0){return Number.isSafeInteger(e)?e:t}function Pe(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 Fe(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 Ie(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 Le(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 Re(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 ze(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 Be=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 Ve(e,t){return e+Math.random()*(t-e)}return e.Decide=ae,e.StringSorter=Be,e.array_delete=be,e.array_deleteIndexs=K,e.array_deleteItems=q,e.array_deleteUseTest=J,e.array_filterIndexs=xe,e.array_insertItem=G,e.array_insertItemList=ye,e.array_isEqual=Se,e.array_move=he,e.array_moveItemsTo=_e,e.array_moveTo=ge,e.array_moveToUseTest=ve,e.array_safelyFilter=me,e.array_safelyOperateIndexs=U,e.array_safelyOperateItems=W,e.array_sortByOrder=Ce,e.assignDefaultValues=ie,e.asyncCachedCall=Ie,e.asyncSerialCallAllFuns=Z,e.asyncSerialCallFuns=X,e.asyncSharedCachedCall=Re,e.betterEval=d,e.cachedCall=Q,e.copyConstructor=f,e.copyFunction=p,e.createControllablePromise=c,e.createFunctionBy=g,e.createSingleton=ee,e.createUniqueIdentifier=s,e.debounce=Fe,e.defineListenableProperties=a,e.defineListenableProperty=i,e.defineListenablePropertyGetter=o,e.defineProxyProperties=u,e.defineProxyProperty=l,e.deleteMember=x,e.flatGroupTree=ke,e.formatSafeInteger=Ne,e.getMember=v,e.getMemberWithAsyncDefault=ue,e.getMemberWithDefault=b,e.getPathPart=j,e.getSubGroupEntries=De,e.getSubGroupNames=Te,e.getSubGroupNodes=Ee,e.getValidPathParts=N,e.greaterInterval=ne,e.groupTreeBy=we,e.hasSubGroups=Oe,e.includesPatterns=R,e.includesRegExps=L,e.includesStrings=I,e.isEqualByJSON=t,e.isGroupTree=Y,e.isRelatedPath=F,e.isSubPath=P,e.moveItemInArray=z,e.moveItemInNewArray=B,e.moveItemsInArray=V,e.moveItemsInNewArray=H,e.multipleLoop=n,e.noLessInterval=re,e.omitMembers=D,e.omitMembersByPath=k,e.pathString=A,e.pickMembers=E,e.pickMembersByPath=O,e.randomInRange=Ve,e.removeEmpty=T,e.removeNull=S,e.removePropertyValue=w,e.removePropertyValues=C,e.removeUndefined=de,e.replacePathPart=M,e.safelyIterate=r,e.serialCallAllFuns=Me,e.serialCallFuns=je,e.setMember=y,e.sharedCachedCall=Le,e.sortMembers=ze,e.syncOperateObjects=Ae,e.throttle=Pe,e.toIRegExps=$,e.toJSONArrayFragment=fe,e.toJSONItemFragment=pe,e.waitWhile=te,e})({});