UNPKG

com-tools

Version:

com-tools 提供了一些通用的工具函数;

2 lines (1 loc) 6.27 kB
(function(o,h){typeof exports=="object"&&typeof module<"u"?h(exports):typeof define=="function"&&define.amd?define(["exports"],h):(o=typeof globalThis<"u"?globalThis:o||self,h(o.ComTools={}))})(this,function(o){"use strict";var X=Object.defineProperty;var p=(o,h,b)=>h in o?X(o,h,{enumerable:!0,configurable:!0,writable:!0,value:b}):o[h]=b;var _=(o,h,b)=>p(o,typeof h!="symbol"?h+"":h,b);function h(e,t){return JSON.stringify(e)==JSON.stringify(t)}function b({loopCall:e,complete:t,stepComplete:n,thisValue:i,total:r=Number.POSITIVE_INFINITY,step:u=50,delay:s=0}){let f=0,c=0,v=!1;function d(y){y&&(v=y,t&&t.call(i,v,f,c,r))}function m(){let y=f<r;return!y&&t&&t.call(i,!1,f-1,c,r),y}let g=null;function l(){c++;let y=Math.min(f+u,r);function P(){return f<y}for(;P()&&!v;)d(e.call(i,f,c,r)),f++;n&&d(n.call(i,f-1,c,r)),m()&&!v&&(g=setTimeout(l,s))}function a(y){y||(y=!0),clearTimeout(g),d(y)}return m()&&l(),a}let A={multipleLoop:{configurable:!0,writable:!0,enumerable:!1,value:function({loopCall:e,complete:t,stepComplete:n,thisValue:i,step:r,delay:u}){i&&(i=this);let s={loopCall:(f,c)=>e.call(i,this[f],f,c,this),total:this.length,step:r,delay:u};return t&&(s.complete=(f,c,v)=>t.call(i,f,c,v,this)),n&&(s.stepComplete=(f,c)=>n.call(i,f,c,this)),b(s)}}};Object.defineProperties(Array.prototype,A);function F(e,t,n){n==null&&(n=e);let i=[];for(let u of e)i.push(u);return i.filter(function(u){let s=this.indexOf(u);return t.call(n,u,s,e)},i)}function N(e,t,n){let{ready:i=t+"Ready",noEvent:r,event:u=t+"Change",newValueKey:s="value",oldValueKey:f="oldValue",getDefault:c}=n||{},v="_"+i,d="_"+t;if(Object.defineProperty(e,i,{configurable:!0,enumerable:!0,get:function(){let l=this||window;if(!l[v]){let a=l[d];a?l[v]=Promise.resolve(a):l[v]=L()}return l[v]},set:function(l){let a=this||window;a[v]=l}}),c)var m=function(){let l=this||window;return!l[d]&&c&&(l[t]=c.call(l,l)),l[d]};else m=function(){return(this||window)[d]};if(r)var g=function(l){let a=this||window;if(l&&l!==a[d]){a[d]=l;let y=a[i];y.resolve?y.resolve(l):a[i]=Promise.resolve(l)}};else g=function(l){let a=this||window;if(l&&l!==a[d]){let y=a[d];a[d]=l;let P=a[i];P.resolve?P.resolve(l):a[i]=Promise.resolve(l);let E=new Event(u,{bubbles:!0});E[s]=l,E[f]=y,window.dispatchEvent(E)}};return Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:m,set:g}),e}function S(e,t,n){var i=t;return Array.isArray(t)&&(i=t.reduce(function(r,u){return r[u]=n,r},{})),Object.keys(i).forEach(function(r){let u=i[r];N(e,r,u)}),e}function D(e,t,n,i){let r="_"+t;if(i)var u=n;else n?u=function(){let s=this||window;return!s[r]&&n&&(s[t]=n.call(s,s)),s[r]}:u=function(){return(this||window)[r]};Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:u})}function I(){var e=new Date;return e.getTime().toString()+Math.random()}function L(e,t){let n=typeof e=="function";n&&t==null&&(t=!0);var i={};function r(){f.resolve=void 0,f.reject=void 0,f.clearAdditions=void 0}function u(c){r(),i.resolve(c)}function s(c){r(),i.reject(c)}var f=new Promise(function(c,v){if(i.resolve=c,i.reject=v,n)if(t)setTimeout(e,0,u,s);else return e(u,s)});return f.clearAdditions=r,f.resolve=u,f.reject=s,f}function M(e,t,n,i){var{get:r=!0,set:u=!0,configurable:s=!0,enumerable:f=!0,getDefault:c,setDefault:v}=i||{},d={configurable:s,enumerable:f};return r&&(d.get=function(){var m=t[n];return m===void 0?c:m}),u&&(d.set=function(m){m=m===void 0?v:m,t[n]=m}),Object.defineProperty(e,n,d),e}function T(e,t,n,i){var r=n;return Array.isArray(n)&&(r=n.reduce(function(u,s){return u[s]=i,u},{})),Object.keys(r).forEach(function(u){let s=r[u];M(e,t,u,s)}),e}function R(e){return new Function(`"use strict"; return (${e})`)()}function C(e){const t=$(e);return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t}function $(e){return j(e.toString(),e.name,!0)}const q=/(^\s*(async\s+)?function\s*(\s|\*)\s*)[A-Za-z_$]+[\w$]*(\s*\()/,J=/^[A-Za-z_$]+[\w$]*$/;function j(e,t,n){const i=q,r=J,u=i.test(e),s=t&&r.test(t);if(u&&s&&!n&&(e=e.replace(i,`$1${t}$4`)),!u&&s)var f=`"use strict"; var ${t} = ${e} ; return ${t}`;else f=`"use strict"; return (${e})`;return new Function(f)()}function U(e){return function(){return new.target?new e(...arguments):e.apply(this,arguments)}}class W{constructor(){_(this,"_decided",!1);_(this,"listeners",[]);_(this,"_value")}get decided(){return this._decided}get value(){return this._value}set value(t){this._value=t,this.resolve()}resolve(){this._decided=!0;const t=this.value;for(const n of this.listeners)n(t);this.listeners=[],this.then=function(n){n(this.value)}}then(t){this.listeners.push(t)}static resolve(t){const n=new this;return n.value=t,n}}function w(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 O(e,t,n){t.length===0&&Object.assign(e,n);const i=t.length-1;for(let r=0;r<i;r++){const u=t[r];e[u]==null&&(e[u]=typeof t[r+1]=="number"?[]:{}),e=e[u]}e[t[i]]=n}function B(e,t,n){const i=typeof n=="function"?n:()=>n;let r=w(e,t);return r===void 0&&(r=i(),O(e,t,r)),r}function k(e,t,n){const i=typeof n=="function"?n:()=>n;let r=w(e,t);return r===void 0&&(r=i(),r instanceof Promise?r.then(u=>O(e,t,u)):O(e,t,r)),r}function z(e,t){if(t.length===0)return!0;const n=t.length-1;for(let i=0;i<n;i++){if(e==null)return!1;e=e[t[i]]}return e==null?!1:delete e[t[n]]}function K(e){return Object.keys(e).forEach(t=>e[t]===void 0&&delete e[t]),e}function Z(e){return Object.keys(e).forEach(t=>e[t]==null&&delete e[t]),e}function Y(e,t){return t.some(n=>e.includes(n))}function H(e,t){return t.some(n=>n.test(e))}function Q(e,t){return t.some(function(n){return typeof n=="string"?e.includes(n):n.test(e)})}o.Decide=W,o.betterEval=R,o.copyConstructor=C,o.copyFunction=$,o.createControllablePromise=L,o.createFunctionBy=j,o.createSingleton=U,o.createUniqueIdentifier=I,o.defineListenableProperties=S,o.defineListenableProperty=N,o.defineListenablePropertyGetter=D,o.defineProxyProperties=T,o.defineProxyProperty=M,o.deleteMember=z,o.getMember=w,o.getMemberWithAsyncDefault=k,o.getMemberWithDefault=B,o.includesPatterns=Q,o.includesRegExps=H,o.includesStrings=Y,o.isEqualByJSON=h,o.multipleLoop=b,o.removeNull=Z,o.removeUndefined=K,o.safelyIterate=F,o.setMember=O,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});