pubo-utils 1.0.187 → 1.0.192

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.
package/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) [2024] [pubo]
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PuboUtils=e():t.PuboUtils=e()}(this,(()=>(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{Base64Utils:()=>i,BufferSplit:()=>vt,CacheEmitter:()=>f,ColorUtils:()=>h,ContinuousTrigger:()=>v,Emitter:()=>m,HistoryStack:()=>S,Level:()=>P,LinearColor:()=>c,RegExpList:()=>W,RetryPlus:()=>M,SensorDataFilter:()=>H,StringSplit:()=>K,SyncQueue:()=>x,UTM:()=>s,WatchDog:()=>L,callbackToPromise:()=>N,cloneDeep:()=>Q,debounce:()=>n,degrees:()=>k,filterKeyPoints:()=>O,filterTree:()=>G,fixNum:()=>X,flatTree:()=>$,getAngle:()=>z,getBestPointIndex:()=>B,getCenter:()=>C,getDistance:()=>R,getPositionTheta:()=>I,getRotate:()=>U,getTreeItem:()=>V,getVectorTheta:()=>F,hex2rgb:()=>o,loop:()=>d,lower2camel:()=>q,orderByDistance:()=>D,radians:()=>j,random:()=>u,randomRangeNum:()=>l,retry:()=>b,runAsyncTasks:()=>T,searchTree:()=>Z,sleep:()=>g,superFactory:()=>p,throttle:()=>A,timeout:()=>y,waitFor:()=>w});var i={};t.r(i),t.d(i,{EncoderMap:()=>_,toUnit8Array:()=>E});var s={};t.r(s),t.d(s,{fromLatLon:()=>Mt,latLonToZoneNumber:()=>Tt,latitudeToZoneLetter:()=>xt,toLatLon:()=>bt});const n=(t,e,i=!1)=>{if(i){let i,s=!0;return(...n)=>{s&&(t(...n),s=!1),i&&clearTimeout(i),i=setTimeout((()=>{clearTimeout(i),s=!0,i=null}),e)}}{let i;return(...s)=>{i&&(clearTimeout(i),i=null),i=setTimeout((()=>{t(...s),clearTimeout(i),s=null,i=null}),e)}}},r=t=>parseInt(t.replace("#",""),16),o=t=>{let e;e="string"==typeof t?r(t):t;const i=e.toString(2).padStart(24,"0");return[parseInt(i.slice(0,8),2),parseInt(i.slice(8,16),2),parseInt(i.slice(16,24),2)]},a=t=>"#"+[0,1,2].map((e=>t[e].toString(16))).join("");class h{int;constructor(t){"number"==typeof t?this.int=t:"string"==typeof t?this.int=r(t):Array.isArray(t)&&(this.int=r(a(t)))}getRgbArray(){return o(this.int)}get rgb(){return`rba(${this.getRgbArray().join(", ")})`}get hex(){return a(this.getRgbArray())}toString(t="hex"){return"rgb"===t?this.rgb:this.hex}}class c{base=[255,0,0];intensity=1;min;max;constructor({base:t=[255,0,0],intensity:e=1}={}){this.base=t,this.intensity=e,this.intensity<1&&(this.intensity=1),this.min=this.base[1],this.max=this.base[0],Math.abs(this.min-this.max)<1&&(this.min=0,this.max=255)}getColor(t){if(t<0)return this.base;let e=this.base[0],i=this.base[1],s=this.base[2],n=t*this.intensity;return i=this.base[1]+n,i<this.max||(n=i-this.max,i=this.max,e=this.base[0]-n,e>this.min||(n=this.min-e,e=this.min,s=this.base[2]+n,s<this.max||(n=s-this.max,s=this.max,i-=n,i>this.min||(n=this.min-i,i=this.min,e+=n,e<this.max||(n=e-this.max,e=this.max,s-=n,s>this.min||(s=this.min)))))),[e,i,s]}}const u=(t=8)=>{const e=t=>Math.random().toString(32).slice(2,2+t);if(t<=8)return e(t);let i="";for(let s=0;s<=t;s+=8)i+=e(t-s>8?8:t-s);return i},l=t=>{const e=Math.abs(t[1]-t[0]);return Math.random()*e+Math.min(...t)};class m{state={};ids={};on(t,e){if(this.state[t]||(this.state[t]=[]),"function"!=typeof e)throw new Error("第二个参数必须为function!");const i=this.state[t].push(e)-1,s=u(40);return this.ids[s]={event:t,index:i},s}cancel(t){if(!t)return void this.clear();const{event:e,index:i}=this.ids[t]||{};e&&Array.isArray(this.state[e])&&(this.state[e].splice(i,1),delete this.ids[t],Object.keys(this.ids).forEach((t=>{this.ids[t].event===e&&this.ids[t].index>i&&(this.ids[t].index=this.ids[t].index-1)})))}clear(){this.state.length=0}emit(t,e){if(Array.isArray(this.state[t]))for(const i of this.state[t])"function"==typeof i&&i(e)}async emitSync(t,e){if(Array.isArray(this.state[t]))for(const i of this.state[t])if("function"==typeof i)try{await i(e)}catch(t){console.log(t)}}clone(){return{state:{...this.state},ids:{...this.ids}}}restore(t){this.state=t.state,this.ids=t.ids}}class f extends m{_cache={};emit(t,e){this._cache[t]=e,super.emit(t,e)}getState(t){return this._cache[t]}}const p=t=>e=>{const i={};for(const s of Object.keys(e))i[s]=t(e[s],s);return i},g=async t=>{await new Promise((e=>{let i=setTimeout((()=>{e(),clearTimeout(i),i=null}),t)}))},y=async(t,e=1e4)=>new Promise((async(i,s)=>{let n=!1;const r=setTimeout((()=>{n=!0,s(new Error("Timeout"))}),e);let o;try{o=await t(),clearTimeout(r)}catch(t){console.log(t),clearTimeout(r),n||s(t)}n||i(o)})),d=(t,e)=>{let i=!0;return(async()=>{for(;i;){try{await t()}catch(t){console.log(t)}await g(e)}})(),()=>i=!1},w=(t,{checkTime:e,timeout:i}={})=>new Promise(((s,n)=>{let r,o=d((async()=>{const e=await t();e&&("function"==typeof o&&o(),r&&(clearTimeout(r),r=null),s(e),o=null,t=null,s=null)}),e||100);i&&(r=setTimeout((()=>{"function"==typeof o&&o(),r&&(clearTimeout(r),r=null),n("timeout"),n=null,o=null,t=null}),i))})),b=async(t,{times:e=5,interval:i=1e3}={times:5,interval:1e3})=>{let s=1;const n=async()=>{let r;if(s>e)throw new Error("retry times exceed");try{return r=await t(),r}catch(t){console.log(`action error, times ${s}`),console.log(t),await g(i),s+=1,await n()}};await n()};class M{times;interval;action;count=1;args=[];result;canceled=!1;constructor(t,{times:e=5,interval:i=1e3}={times:5,interval:1e3}){this.interval=i,this.times=e,this.action=t}async _run(){if(this.canceled)throw new Error("retry canceled");if(this.count>this.times)throw new Error("retry times exceed");try{this.result=await this.action(...this.args)}catch(t){console.log(`action error, times ${this.count}`),console.log(t),await g(this.interval),this.count+=1,await this._run()}}async run(...t){return this.canceled=!1,this.result=null,this.count=1,this.args=t,await this._run(),this.args=[],this.count=1,this.result}async cancel(){this.canceled=!0}}class x{cache=[];running=!1;len=0;async _run({fn:t,promise:e}){try{const i=await t();e.resolve(i)}catch(t){e.reject(t)}t=null,e=null}async run(){if(this.cache.length<1)return void(this.running=!1);this.running=!0;const t=this.cache.shift();this.len-=1,"function"==typeof t.fn&&await this._run(t),this.run()}push(t){return this.len+=1,new Promise(((e,i)=>{this.cache.push({fn:t,promise:{resolve:e,reject:i}}),this.running||this.run()}))}get length(){return this.len}}const T=async(t,e=4)=>{let i=-1;const s=[],n=async()=>{if(i+=1,t[i]){try{await t[i]()}catch(t){console.log(t)}await n()}};for(let t=0;t<e;t+=1)s.push(n());await Promise.all(s)};function A(t,e){const i=new x;let s=[];return(...n)=>{if(s=n,!(i.length>0))return i.push((async()=>{await g(e),await t(...s)}))}}class v{timeout;_count=0;props;constructor(t){this.props=t}get count(){return this._count}increment(){clearTimeout(this.timeout),this.timeout=setTimeout((()=>this.clear()),this.props.resetTime),this._count=this._count+1,this._count>this.props.count&&this.props.cb()}clear(){clearTimeout(this.timeout),this._count=0,this.timeout=0}}const _=function(){const t={};for(let e=0;e<64;e++)t["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e)]=e;return t}();function E(t){const e=new Uint8Array(6*t.length/8);let i=0,s=0,n=0;for(let r=0;r<t.length&&n<e.length;r+=1)if(s=(s<<6)+_[t.charAt(r)],i+=6,i>=8){i-=8;let t=s>>>i;e[n++]=255&t,t<<=i,s-=t}return e}class S{stack=[];len=10;point=0;constructor(t=10){this.len=t}get current(){if(this.point<this.stack.length&&this.point>-1)return this.stack[this.point]}clear(){this.stack.length=0,this.point=0}backup(t){this.point>0&&this.stack.length>0&&(this.stack.splice(0,this.point),this.point=0),this.stack.unshift(t),this.stack.length>this.len&&this.stack.pop()}undo(){return this.point<this.stack.length-1&&(this.point+=1),this.current}redo(){return this.point>0&&(this.point-=1),this.current}}class L{onTimeout;timeout=null;_time;constructor({limit:t=10,onTimeout:e}){this._time=1e3*t,this.onTimeout=()=>{this.timeout&&(clearTimeout(this.timeout),this.timeout=null),e()}}feed(){this.init()}init(){clearTimeout(this.timeout),this.timeout=null,delete this.timeout,this.timeout=setTimeout(this.onTimeout,this._time)}stop(){this.timeout&&clearTimeout(this.timeout),delete this.timeout}}class P{config;step;constructor(t){this.config=t,this.step=(this.config.max-this.config.min)/(this.config.count-2)}get(t){if(t<=this.config.min)return 1;if(t>=this.config.max)return this.config.count;for(let e=2,i=this.config.min+this.step;i<this.config.max+this.step;i+=this.step,e+=1)if(t<i)return e;return this.config.count}}const N=t=>(...e)=>new Promise(((i,s)=>{t(...e,((t,...e)=>{t&&s(t),e.length<2?i(e[0]):i([...e])})),t=null})),R=(t,e)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),k=t=>180*t/Math.PI,j=t=>t*Math.PI/180,z=({w:t,h:e})=>k(Math.atan2(e,t));function O(t,e=.5){if(t.length<3||e<=0)return t;let i;return t.filter(((s,n)=>!(n>0&&R(i,s)<e||(i=t[n],0))))}function C(t){const e=[0,0];for(const i of t)Array.isArray(i)?(e[0]+=i[0],e[1]+=i[1]):(e[0]+=i.x,e[1]+=i.y);return{x:e[0]/t.length,y:e[1]/t.length}}function U(t,e,i){return i&&(e=j(e)),[Math.cos(e)*t[0]-Math.sin(e)*t[1],Math.sin(e)*t[0]+Math.cos(e)*t[1]]}const I=(t,e)=>{const i={x:e.x-t.x,y:e.y-t.y};return Math.atan2(i.y,i.x)},B=(t,e)=>{if(t.length<2)return 0;const i=[];let s=1/0,n=0;for(const r of t){const t=R(r,e),o=I(e,r)-e.theta;s>t&&(s=t),i.push({...r,index:n,distance:t,theta:o}),n+=1}return i.filter((t=>t.distance-s<.1)).sort(((t,e)=>t.theta-e.theta))[0].index},D=(t,e={x:0,y:0,theta:0})=>{let i=e;const s=[],n=[...t];for(;n.length>0;){const t=B(n,i);s.push(n[t]),i=n[t],n.splice(t,1)}return s},F=(t,e)=>Math.atan2(e.y,e.x)-Math.atan2(t.y,t.x),q=t=>t.split("_").map(((t,e)=>e>0?t.slice(0,1).toUpperCase()+t.slice(1):t)).join(""),X=(t,e=2)=>null==t||"NaN"===t?"N/A":("number"!=typeof t&&(t=parseFloat(t)),isNaN(t)?"N/A":t.toFixed(e));class W{list;_RegExpList=null;constructor(t){this.list=t}getRegEXP(t){const e=t.replace("/","\\/").replace("*",".*");return new RegExp(e)}include(t){return this._RegExpList||(this._RegExpList=this.list.map(this.getRegEXP)),this._RegExpList.some((e=>e.test(t)))}}class H{tmp=[];size;step;min;max;count=0;value=NaN;old;constructor({size:t=5,step:e=5,min:i=-1/0,max:s=1/0}={}){this.size=t,this.step=e,this.min=i,this.max=s,this.old=this.min}filter(t){return t<this.min||t>this.max||(this.tmp.push(t),this.old=this.calc(t)),this.old}calc(t){if(this.tmp.length<1)return t;this.tmp.length>this.size&&this.tmp.shift();const{res:e,dic:i}=this.getMostNumberOfTmp();return e!==t&&Math.abs(e-t)>this.step?(this.value!==t?this.count=1:this.count+=1,this.value=t,this.count>i[e]?(this.tmp.length=0,this.tmp.push(t),this.count=0,this.value=NaN,t):e):(this.count=0,this.value=NaN,t)}getMostNumberOfTmp(){const t={};let e,i=0;for(const s of this.tmp)t[s]?t[s]+=1:t[s]=1,t[s]>=i&&(i=t[s],e=s);return{res:e,dic:t}}}class K{_splitSymbol;_cache="";constructor(t){this._splitSymbol=t}split(t){const e=(this._cache+t).split(this._splitSymbol);return this._cache=e.splice(e.length-1,1)[0],e}}function Q(t,e=new WeakMap){if("object"!=typeof t||null===t)return t;if(e.has(t))return e.get(t);if(Array.isArray(t)){const i=t.map((t=>Q(t,e)));return e.set(t,i),i}if(t instanceof Set){const i=new Set([...t].map((t=>Q(t,e))));return e.set(t,i),i}if(t instanceof Map){const i=new Map;for(const[s,n]of t.entries())i.set(Q(s,e),Q(n,e));return e.set(t,i),i}{const i={};e.set(t,i);for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&(i[s]=Q(t[s],e));return i}}function V(t,e){if(e.length<1)return null;let i;Array.isArray(t)&&(i={children:t});for(const t of e)i=i.children[t];return Q(i)}function Z(t,e,i="children"){const s=[];let n=!1;const r=t=>{for(let o=0;o<t.length;o+=1){const a=t[o];if(e(a)){n=!0,s.push(o);break}if(Array.isArray(a[i])){if(s.push(o),r(a[i]),n)break;s.pop()}}};return Array.isArray(t)?r(t):Array.isArray(t[i])&&r(t[i]),n?s:[]}const $=(t,e="children",i=[],s=[])=>{let n=[];return Array.isArray(t[e])?n=t[e]:Array.isArray(t)&&(n=t),n.forEach(((t,n)=>{const r={...t};delete r[e],s.push(r),r.__indexes=[...i,n]})),n.forEach(((t,n)=>$(t,e,[...i,n],s))),s},G=(t,e,i="children")=>{const s=[];let n=[];return Array.isArray(t[i])?n=t[i]:Array.isArray(t)&&(n=t),n.forEach((t=>{var n;t[i]&&(t[i]=G(t[i],e)),((null===(n=t[i])||void 0===n?void 0:n.length)>0||e(t))&&s.push(t)})),s},J=.9996,Y=.00669438,tt=Math.pow(Y,2),et=Math.pow(Y,3),it=Y/(1-Y),st=Math.sqrt(1-Y),nt=(1-st)/(1+st),rt=Math.pow(nt,2),ot=Math.pow(nt,3),at=Math.pow(nt,4),ht=Math.pow(nt,5),ct=1-Y/4-3*tt/64-5*et/256,ut=3*Y/8+3*tt/32+45*et/1024,lt=15*tt/256+45*et/1024,mt=35*et/3072,ft=1.5*nt-27/32*ot+269/512*ht,pt=21/16*rt-55/32*at,gt=151/96*ot-417/128*ht,yt=1097/512*at,dt=6378137,wt="CDEFGHJKLMNPQRSTUVWXX";function bt(t){const{zoneNum:e,strict:i=!0}=t;let{zoneLetter:s,northern:n}=t;const r=t.x,o=t.y;if(!s&&void 0===n)throw new Error("either zoneLetter or northern needs to be set");if(s&&void 0!==n)throw new Error("set either zoneLetter or northern, but not both");if(i){if(r<1e5||1e6<=r)throw new RangeError("easting out of range (must be between 100 000 m and 999 999 m)");if(o<0||o>1e7)throw new RangeError("northing out of range (must be between 0 m and 10 000 000 m)")}if(e<1||e>60)throw new RangeError("zone number out of range (must be between 1 and 60)");if(s){if(s=s.toUpperCase(),1!==s.length||-1===wt.indexOf(s))throw new RangeError("zone letter out of range (must be between C and X)");n=s>="N"}const a=r-5e5;let h=o;n||(h-=1e7);const c=h/J/(dt*ct),u=c+ft*Math.sin(2*c)+pt*Math.sin(4*c)+gt*Math.sin(6*c)+yt*Math.sin(8*c),l=Math.sin(u),m=Math.pow(l,2),f=Math.cos(u),p=Math.tan(u),g=Math.pow(p,2),y=Math.pow(p,4),d=1-Y*m,w=Math.sqrt(d),b=(1-Y)/d,M=nt*f*f,x=M*M,T=a/(dt/w*J),A=Math.pow(T,2),v=Math.pow(T,3),_=Math.pow(T,4),E=Math.pow(T,5),S=Math.pow(T,6),L=(T-v/6*(1+2*g+M)+E/120*(5-2*M+28*g-3*x+8*it+24*y))/f;return{latitude:k(u-p/b*(A/2-_/24*(5+3*g+10*M-4*x-9*it))+S/720*(61+90*g+298*M+45*y-252*it-3*x)),longitude:k(L)+At(e)}}function Mt({latitude:t,longitude:e},i){if(t>84||t<-80)throw new RangeError("latitude out of range (must be between 80 deg S and 84 deg N)");if(e>180||e<-180)throw new RangeError("longitude out of range (must be between 180 deg W and 180 deg E)");const s=j(t),n=Math.sin(s),r=Math.cos(s),o=Math.tan(s),a=Math.pow(o,2),h=Math.pow(o,4);let c;c=void 0===i?Tt({latitude:t,longitude:e}):i;const u=xt(t),l=j(e),m=At(c),f=j(m),p=dt/Math.sqrt(1-Y*n*n),g=it*r*r,y=r*(l-f),d=Math.pow(y,2),w=Math.pow(y,3),b=Math.pow(y,4),M=Math.pow(y,5),x=Math.pow(y,6),T=dt*(ct*s-ut*Math.sin(2*s)+lt*Math.sin(4*s)-mt*Math.sin(6*s));let A=J*(T+p*o*(d/2+b/24*(5-a+9*g+4*g*g)+x/720*(61-58*a+h+600*g-330*it)));return t<0&&(A+=1e7),{x:J*p*(y+w/6*(1-a+g)+M/120*(5-18*a+h+72*g-58*it))+5e5,y:A,zoneNum:c,zoneLetter:u}}function xt(t){return-80<=t&&t<=84?wt[Math.floor((t+80)/8)]:null}function Tt({latitude:t,longitude:e}){if(56<=t&&t<64&&3<=e&&e<12)return 32;if(72<=t&&t<=84&&e>=0){if(e<9)return 31;if(e<21)return 33;if(e<33)return 35;if(e<42)return 37}return Math.floor((e+180)/6)+1}function At(t){return 6*(t-1)-180+3}class vt{c;cache=Buffer.alloc(0);constructor(t){this.c=t}push(t){const e=Buffer.concat([this.cache,t]),i=[];let s=0;for(let t=this.cache.byteLength;t<=e.byteLength-this.c.byteLength;t+=1)if(this.c.equals(e.subarray(t,this.c.byteLength+t))){const n=e.subarray(s,t);i.push(n),s=this.c.byteLength+t,t=this.c.byteLength+t}return this.cache=e.subarray(s),i}}return e})()));
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PuboUtils=e():t.PuboUtils=e()}(this,(()=>(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{Base64Utils:()=>i,BufferSplit:()=>vt,CacheEmitter:()=>m,ColorUtils:()=>h,ContinuousTrigger:()=>_,Emitter:()=>f,HistoryStack:()=>S,Level:()=>k,LinearColor:()=>c,RegExpList:()=>W,RetryPlus:()=>M,SensorDataFilter:()=>$,StringSplit:()=>H,SyncQueue:()=>x,UTM:()=>s,WatchDog:()=>L,callbackToPromise:()=>P,cloneDeep:()=>K,debounce:()=>n,degrees:()=>R,filterKeyPoints:()=>z,filterTree:()=>G,fixNum:()=>X,flatTree:()=>Z,getAngle:()=>O,getBestPointIndex:()=>D,getCenter:()=>C,getDistance:()=>N,getPositionTheta:()=>I,getRotate:()=>U,getTreeItem:()=>Q,getVectorTheta:()=>F,hex2rgb:()=>o,loop:()=>d,lower2camel:()=>q,orderByDistance:()=>B,radians:()=>j,random:()=>u,randomRangeNum:()=>l,reflection:()=>J,retry:()=>b,runAsyncTasks:()=>T,searchTree:()=>V,sleep:()=>g,superFactory:()=>p,throttle:()=>A,timeout:()=>y,waitFor:()=>w});var i={};t.r(i),t.d(i,{EncoderMap:()=>v,toUnit8Array:()=>E});var s={};t.r(s),t.d(s,{fromLatLon:()=>xt,latLonToZoneNumber:()=>At,latitudeToZoneLetter:()=>Tt,toLatLon:()=>Mt});const n=(t,e,i=!1)=>{if(i){let i,s=!0;return(...n)=>{s&&(t(...n),s=!1),i&&clearTimeout(i),i=setTimeout((()=>{clearTimeout(i),s=!0,i=null}),e)}}{let i;return(...s)=>{i&&(clearTimeout(i),i=null),i=setTimeout((()=>{t(...s),clearTimeout(i),s=null,i=null}),e)}}},r=t=>parseInt(t.replace("#",""),16),o=t=>{let e;e="string"==typeof t?r(t):t;const i=e.toString(2).padStart(24,"0");return[parseInt(i.slice(0,8),2),parseInt(i.slice(8,16),2),parseInt(i.slice(16,24),2)]},a=t=>"#"+[0,1,2].map((e=>t[e].toString(16))).join("");class h{int;constructor(t){"number"==typeof t?this.int=t:"string"==typeof t?this.int=r(t):Array.isArray(t)&&(this.int=r(a(t)))}getRgbArray(){return o(this.int)}get rgb(){return`rba(${this.getRgbArray().join(", ")})`}get hex(){return a(this.getRgbArray())}toString(t="hex"){return"rgb"===t?this.rgb:this.hex}}class c{base=[255,0,0];intensity=1;min;max;constructor({base:t=[255,0,0],intensity:e=1}={}){this.base=t,this.intensity=e,this.intensity<1&&(this.intensity=1),this.min=this.base[1],this.max=this.base[0],Math.abs(this.min-this.max)<1&&(this.min=0,this.max=255)}getColor(t){if(t<0)return this.base;let e=this.base[0],i=this.base[1],s=this.base[2],n=t*this.intensity;return i=this.base[1]+n,i<this.max||(n=i-this.max,i=this.max,e=this.base[0]-n,e>this.min||(n=this.min-e,e=this.min,s=this.base[2]+n,s<this.max||(n=s-this.max,s=this.max,i-=n,i>this.min||(n=this.min-i,i=this.min,e+=n,e<this.max||(n=e-this.max,e=this.max,s-=n,s>this.min||(s=this.min)))))),[e,i,s]}}const u=(t=8)=>{const e=t=>Math.random().toString(32).slice(2,2+t);if(t<=8)return e(t);let i="";for(let s=0;s<=t;s+=8)i+=e(t-s>8?8:t-s);return i},l=t=>{const e=Math.abs(t[1]-t[0]);return Math.random()*e+Math.min(...t)};class f{state={};ids={};on(t,e){if(this.state[t]||(this.state[t]={}),"function"!=typeof e)throw new Error("第二个参数必须为function!");const i=`${u(40)}_${(new Date).valueOf()}`;return this.state[t][i]=e,this.ids[i]=t,i}cancel(t){if(!t)return void this.clear();const e=this.ids[t];e&&this.state[e]&&(delete this.state[e][t],0===Object.keys(this.state[e]).length&&delete this.state[e],delete this.ids[t])}clear(){this.state={},this.ids={}}emit(t,e){if(this.state[t])for(const i of Object.keys(this.state[t])){const s=this.state[t][i];"function"==typeof s&&s(e)}}async emitSync(t,e){if(this.state[t])for(const i of Object.keys(this.state[t])){const s=this.state[t][i];if("function"==typeof s)try{await s(e)}catch(t){console.log(t)}}}clone(){return{state:{...this.state},ids:{...this.ids}}}restore(t){this.state=t.state,this.ids=t.ids}}class m extends f{_cache={};emit(t,e){this._cache[t]=e,super.emit(t,e)}getState(t){return this._cache[t]}}const p=t=>e=>{const i={};for(const s of Object.keys(e))i[s]=t(e[s],s);return i},g=async t=>{await new Promise((e=>{let i=setTimeout((()=>{e(),clearTimeout(i),i=null}),t)}))},y=async(t,e=1e4)=>new Promise((async(i,s)=>{let n=!1;const r=setTimeout((()=>{n=!0,s(new Error("Timeout"))}),e);let o;try{o=await t(),clearTimeout(r)}catch(t){console.log(t),clearTimeout(r),n||s(t)}n||i(o)})),d=(t,e)=>{let i=!0;return(async()=>{for(;i;){try{await t()}catch(t){console.log(t)}await g(e)}})(),()=>i=!1},w=(t,{checkTime:e,timeout:i}={})=>new Promise(((s,n)=>{let r,o=d((async()=>{const e=await t();e&&("function"==typeof o&&o(),r&&(clearTimeout(r),r=null),s(e),o=null,t=null,s=null)}),e||100);i&&(r=setTimeout((()=>{"function"==typeof o&&o(),r&&(clearTimeout(r),r=null),n("timeout"),n=null,o=null,t=null}),i))})),b=async(t,{times:e=5,interval:i=1e3}={times:5,interval:1e3})=>{let s=1;const n=async()=>{let r;if(s>e)throw new Error("retry times exceed");try{return r=await t(),r}catch(t){console.log(`action error, times ${s}`),console.log(t),await g(i),s+=1,await n()}};await n()};class M{times;interval;action;count=1;args=[];result;canceled=!1;constructor(t,{times:e=5,interval:i=1e3}={times:5,interval:1e3}){this.interval=i,this.times=e,this.action=t}async _run(){if(this.canceled)throw new Error("retry canceled");if(this.count>this.times)throw new Error("retry times exceed");try{this.result=await this.action(...this.args)}catch(t){console.log(`action error, times ${this.count}`),console.log(t),await g(this.interval),this.count+=1,await this._run()}}async run(...t){return this.canceled=!1,this.result=null,this.count=1,this.args=t,await this._run(),this.args=[],this.count=1,this.result}async cancel(){this.canceled=!0}}class x{cache=[];running=!1;len=0;async _run({fn:t,promise:e}){try{const i=await t();e.resolve(i)}catch(t){e.reject(t)}t=null,e=null}async run(){if(this.cache.length<1)return void(this.running=!1);this.running=!0;const t=this.cache.shift();this.len-=1,"function"==typeof t.fn&&await this._run(t),this.run()}push(t){return this.len+=1,new Promise(((e,i)=>{this.cache.push({fn:t,promise:{resolve:e,reject:i}}),this.running||this.run()}))}get length(){return this.len}}const T=async(t,e=4)=>{let i=-1;const s=[],n=async()=>{if(i+=1,t[i]){try{await t[i]()}catch(t){console.log(t)}await n()}};for(let t=0;t<e;t+=1)s.push(n());await Promise.all(s)};function A(t,e){const i=new x;let s=[];return(...n)=>{if(s=n,!(i.length>0))return i.push((async()=>{await g(e),await t(...s)}))}}class _{timeout;_count=0;props;constructor(t){this.props=t}get count(){return this._count}increment(){clearTimeout(this.timeout),this.timeout=setTimeout((()=>this.clear()),this.props.resetTime),this._count=this._count+1,this._count>this.props.count&&this.props.cb()}clear(){clearTimeout(this.timeout),this._count=0,this.timeout=0}}const v=function(){const t={};for(let e=0;e<64;e++)t["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e)]=e;return t}();function E(t){const e=new Uint8Array(6*t.length/8);let i=0,s=0,n=0;for(let r=0;r<t.length&&n<e.length;r+=1)if(s=(s<<6)+v[t.charAt(r)],i+=6,i>=8){i-=8;let t=s>>>i;e[n++]=255&t,t<<=i,s-=t}return e}class S{stack=[];len=10;point=0;constructor(t=10){this.len=t}get current(){if(this.point<this.stack.length&&this.point>-1)return this.stack[this.point]}clear(){this.stack.length=0,this.point=0}backup(t){this.point>0&&this.stack.length>0&&(this.stack.splice(0,this.point),this.point=0),this.stack.unshift(t),this.stack.length>this.len&&this.stack.pop()}undo(){return this.point<this.stack.length-1&&(this.point+=1),this.current}redo(){return this.point>0&&(this.point-=1),this.current}}class L{onTimeout;timeout=null;_time;constructor({limit:t=10,onTimeout:e}){this._time=1e3*t,this.onTimeout=()=>{this.timeout&&(clearTimeout(this.timeout),this.timeout=null),e()}}feed(){this.init()}init(){clearTimeout(this.timeout),this.timeout=null,delete this.timeout,this.timeout=setTimeout(this.onTimeout,this._time)}stop(){this.timeout&&clearTimeout(this.timeout),delete this.timeout}}class k{config;step;constructor(t){this.config=t,this.step=(this.config.max-this.config.min)/(this.config.count-2)}get(t){if(t<=this.config.min)return 1;if(t>=this.config.max)return this.config.count;for(let e=2,i=this.config.min+this.step;i<this.config.max+this.step;i+=this.step,e+=1)if(t<i)return e;return this.config.count}}const P=t=>(...e)=>new Promise(((i,s)=>{t(...e,((t,...e)=>{t&&s(t),e.length<2?i(e[0]):i([...e])})),t=null})),N=(t,e)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),R=t=>180*t/Math.PI,j=t=>t*Math.PI/180,O=({w:t,h:e})=>R(Math.atan2(e,t));function z(t,e=.5){if(t.length<3||e<=0)return t;let i;return t.filter(((s,n)=>!(n>0&&N(i,s)<e||(i=t[n],0))))}function C(t){const e=[0,0];for(const i of t)Array.isArray(i)?(e[0]+=i[0],e[1]+=i[1]):(e[0]+=i.x,e[1]+=i.y);return{x:e[0]/t.length,y:e[1]/t.length}}function U(t,e,i){return i&&(e=j(e)),[Math.cos(e)*t[0]-Math.sin(e)*t[1],Math.sin(e)*t[0]+Math.cos(e)*t[1]]}const I=(t,e)=>{const i={x:e.x-t.x,y:e.y-t.y};return Math.atan2(i.y,i.x)},D=(t,e)=>{if(t.length<2)return 0;const i=[];let s=1/0,n=0;for(const r of t){const t=N(r,e),o=I(e,r)-e.theta;s>t&&(s=t),i.push({...r,index:n,distance:t,theta:o}),n+=1}return i.filter((t=>t.distance-s<.1)).sort(((t,e)=>t.theta-e.theta))[0].index},B=(t,e={x:0,y:0,theta:0})=>{let i=e;const s=[],n=[...t];for(;n.length>0;){const t=D(n,i);s.push(n[t]),i=n[t],n.splice(t,1)}return s},F=(t,e)=>Math.atan2(e.y,e.x)-Math.atan2(t.y,t.x),q=t=>t.split("_").map(((t,e)=>e>0?t.slice(0,1).toUpperCase()+t.slice(1):t)).join(""),X=(t,e=2)=>null==t||"NaN"===t?"N/A":("number"!=typeof t&&(t=parseFloat(t)),isNaN(t)?"N/A":t.toFixed(e));class W{list;_RegExpList=null;constructor(t){this.list=t}getRegEXP(t){const e=t.replace("/","\\/").replace("*",".*");return new RegExp(e)}include(t){return this._RegExpList||(this._RegExpList=this.list.map(this.getRegEXP)),this._RegExpList.some((e=>e.test(t)))}}class ${tmp=[];size;step;min;max;count=0;value=NaN;old;constructor({size:t=5,step:e=5,min:i=-1/0,max:s=1/0}={}){this.size=t,this.step=e,this.min=i,this.max=s,this.old=this.min}filter(t){return t<this.min||t>this.max||(this.tmp.push(t),this.old=this.calc(t)),this.old}calc(t){if(this.tmp.length<1)return t;this.tmp.length>this.size&&this.tmp.shift();const{res:e,dic:i}=this.getMostNumberOfTmp();return e!==t&&Math.abs(e-t)>this.step?(this.value!==t?this.count=1:this.count+=1,this.value=t,this.count>i[e]?(this.tmp.length=0,this.tmp.push(t),this.count=0,this.value=NaN,t):e):(this.count=0,this.value=NaN,t)}getMostNumberOfTmp(){const t={};let e,i=0;for(const s of this.tmp)t[s]?t[s]+=1:t[s]=1,t[s]>=i&&(i=t[s],e=s);return{res:e,dic:t}}}class H{_splitSymbol;_cache="";constructor(t){this._splitSymbol=t}split(t){const e=(this._cache+t).split(this._splitSymbol);return this._cache=e.splice(e.length-1,1)[0],e}}function K(t,e=new WeakMap){if("object"!=typeof t||null===t)return t;if(e.has(t))return e.get(t);if(Array.isArray(t)){const i=t.map((t=>K(t,e)));return e.set(t,i),i}if(t instanceof Set){const i=new Set([...t].map((t=>K(t,e))));return e.set(t,i),i}if(t instanceof Map){const i=new Map;for(const[s,n]of t.entries())i.set(K(s,e),K(n,e));return e.set(t,i),i}{const i={};e.set(t,i);for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&(i[s]=K(t[s],e));return i}}function Q(t,e){if(e.length<1)return null;let i;Array.isArray(t)&&(i={children:t});for(const t of e)i=i.children[t];return K(i)}function V(t,e,i="children"){const s=[];let n=!1;const r=t=>{for(let o=0;o<t.length;o+=1){const a=t[o];if(e(a)){n=!0,s.push(o);break}if(Array.isArray(a[i])){if(s.push(o),r(a[i]),n)break;s.pop()}}};return Array.isArray(t)?r(t):Array.isArray(t[i])&&r(t[i]),n?s:[]}const Z=(t,e="children",i=[],s=[])=>{let n=[];return Array.isArray(t[e])?n=t[e]:Array.isArray(t)&&(n=t),n.forEach(((t,n)=>{const r={...t};delete r[e],s.push(r),r.__indexes=[...i,n]})),n.forEach(((t,n)=>Z(t,e,[...i,n],s))),s},G=(t,e,i="children")=>{const s=[];let n=[];return Array.isArray(t[i])?n=t[i]:Array.isArray(t)&&(n=t),n.forEach((t=>{var n;t[i]&&(t[i]=G(t[i],e)),((null===(n=t[i])||void 0===n?void 0:n.length)>0||e(t))&&s.push(t)})),s},J=t=>{const e={};for(const i of Object.keys(t))e[t[i]]=i;return e},Y=.9996,tt=.00669438,et=Math.pow(tt,2),it=Math.pow(tt,3),st=tt/(1-tt),nt=Math.sqrt(1-tt),rt=(1-nt)/(1+nt),ot=Math.pow(rt,2),at=Math.pow(rt,3),ht=Math.pow(rt,4),ct=Math.pow(rt,5),ut=1-tt/4-3*et/64-5*it/256,lt=3*tt/8+3*et/32+45*it/1024,ft=15*et/256+45*it/1024,mt=35*it/3072,pt=1.5*rt-27/32*at+269/512*ct,gt=21/16*ot-55/32*ht,yt=151/96*at-417/128*ct,dt=1097/512*ht,wt=6378137,bt="CDEFGHJKLMNPQRSTUVWXX";function Mt(t){const{zoneNum:e,strict:i=!0}=t;let{zoneLetter:s,northern:n}=t;const r=t.x,o=t.y;if(!s&&void 0===n)throw new Error("either zoneLetter or northern needs to be set");if(s&&void 0!==n)throw new Error("set either zoneLetter or northern, but not both");if(i){if(r<1e5||1e6<=r)throw new RangeError("easting out of range (must be between 100 000 m and 999 999 m)");if(o<0||o>1e7)throw new RangeError("northing out of range (must be between 0 m and 10 000 000 m)")}if(e<1||e>60)throw new RangeError("zone number out of range (must be between 1 and 60)");if(s){if(s=s.toUpperCase(),1!==s.length||-1===bt.indexOf(s))throw new RangeError("zone letter out of range (must be between C and X)");n=s>="N"}const a=r-5e5;let h=o;n||(h-=1e7);const c=h/Y/(wt*ut),u=c+pt*Math.sin(2*c)+gt*Math.sin(4*c)+yt*Math.sin(6*c)+dt*Math.sin(8*c),l=Math.sin(u),f=Math.pow(l,2),m=Math.cos(u),p=Math.tan(u),g=Math.pow(p,2),y=Math.pow(p,4),d=1-tt*f,w=Math.sqrt(d),b=(1-tt)/d,M=rt*m*m,x=M*M,T=a/(wt/w*Y),A=Math.pow(T,2),_=Math.pow(T,3),v=Math.pow(T,4),E=Math.pow(T,5),S=Math.pow(T,6),L=(T-_/6*(1+2*g+M)+E/120*(5-2*M+28*g-3*x+8*st+24*y))/m;return{latitude:R(u-p/b*(A/2-v/24*(5+3*g+10*M-4*x-9*st))+S/720*(61+90*g+298*M+45*y-252*st-3*x)),longitude:R(L)+_t(e)}}function xt({latitude:t,longitude:e},i){if(t>84||t<-80)throw new RangeError("latitude out of range (must be between 80 deg S and 84 deg N)");if(e>180||e<-180)throw new RangeError("longitude out of range (must be between 180 deg W and 180 deg E)");const s=j(t),n=Math.sin(s),r=Math.cos(s),o=Math.tan(s),a=Math.pow(o,2),h=Math.pow(o,4);let c;c=void 0===i?At({latitude:t,longitude:e}):i;const u=Tt(t),l=j(e),f=_t(c),m=j(f),p=wt/Math.sqrt(1-tt*n*n),g=st*r*r,y=r*(l-m),d=Math.pow(y,2),w=Math.pow(y,3),b=Math.pow(y,4),M=Math.pow(y,5),x=Math.pow(y,6),T=wt*(ut*s-lt*Math.sin(2*s)+ft*Math.sin(4*s)-mt*Math.sin(6*s));let A=Y*(T+p*o*(d/2+b/24*(5-a+9*g+4*g*g)+x/720*(61-58*a+h+600*g-330*st)));return t<0&&(A+=1e7),{x:Y*p*(y+w/6*(1-a+g)+M/120*(5-18*a+h+72*g-58*st))+5e5,y:A,zoneNum:c,zoneLetter:u}}function Tt(t){return-80<=t&&t<=84?bt[Math.floor((t+80)/8)]:null}function At({latitude:t,longitude:e}){if(56<=t&&t<64&&3<=e&&e<12)return 32;if(72<=t&&t<=84&&e>=0){if(e<9)return 31;if(e<21)return 33;if(e<33)return 35;if(e<42)return 37}return Math.floor((e+180)/6)+1}function _t(t){return 6*(t-1)-180+3}class vt{cache=Buffer.alloc(0);c;constructor(t){this.c=t}push(t){const e=Buffer.concat([this.cache,t]),i=[];let s=0;for(let t=this.cache.byteLength;t<=e.byteLength-this.c.byteLength;t+=1)if(this.c.equals(e.subarray(t,this.c.byteLength+t))){const n=e.subarray(s,t);i.push(n),s=this.c.byteLength+t,t=this.c.byteLength+t}return this.cache=e.subarray(s),i}}return e})()));
package/es/buf.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export declare class BufferSplit {
2
- private c;
3
2
  private cache;
3
+ private c;
4
4
  constructor(buf: Buffer);
5
5
  push(buf: Buffer): Buffer[];
6
6
  }
package/es/buf.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export class BufferSplit {
2
- c;
3
2
  cache = Buffer.alloc(0);
3
+ c;
4
4
  constructor(buf){
5
5
  this.c = buf;
6
6
  }
@@ -9,7 +9,7 @@ interface EmitterType {
9
9
  }
10
10
  export declare class Emitter implements EmitterType {
11
11
  private state;
12
- private ids;
12
+ ids: any;
13
13
  on(event: string, func: any): string;
14
14
  cancel(id?: string): void;
15
15
  clear(): void;
@@ -4,17 +4,14 @@ export class Emitter {
4
4
  ids = {};
5
5
  on(event, func) {
6
6
  if (!this.state[event]) {
7
- this.state[event] = [];
7
+ this.state[event] = {};
8
8
  }
9
9
  if (typeof func !== 'function') {
10
10
  throw new Error('第二个参数必须为function!');
11
11
  }
12
- const index = this.state[event].push(func) - 1;
13
- const key = random(40);
14
- this.ids[key] = {
15
- event,
16
- index
17
- };
12
+ const key = `${random(40)}_${new Date().valueOf()}`;
13
+ this.state[event][key] = func;
14
+ this.ids[key] = event;
18
15
  return key;
19
16
  }
20
17
  cancel(id) {
@@ -22,27 +19,27 @@ export class Emitter {
22
19
  this.clear();
23
20
  return;
24
21
  }
25
- const { event, index } = this.ids[id] || {};
22
+ const event = this.ids[id];
26
23
  if (!event) {
27
24
  return;
28
25
  }
29
- if (!Array.isArray(this.state[event])) {
26
+ if (!this.state[event]) {
30
27
  return;
31
28
  }
32
- this.state[event].splice(index, 1);
29
+ delete this.state[event][id];
30
+ if (Object.keys(this.state[event]).length === 0) {
31
+ delete this.state[event];
32
+ }
33
33
  delete this.ids[id];
34
- Object.keys(this.ids).forEach((key)=>{
35
- if (this.ids[key].event === event && this.ids[key].index > index) {
36
- this.ids[key].index = this.ids[key].index - 1;
37
- }
38
- });
39
34
  }
40
35
  clear() {
41
- this.state.length = 0;
36
+ this.state = {};
37
+ this.ids = {};
42
38
  }
43
39
  emit(event, payload) {
44
- if (Array.isArray(this.state[event])) {
45
- for (const func of this.state[event]){
40
+ if (this.state[event]) {
41
+ for (const key of Object.keys(this.state[event])){
42
+ const func = this.state[event][key];
46
43
  if (typeof func === 'function') {
47
44
  func(payload);
48
45
  }
@@ -50,8 +47,9 @@ export class Emitter {
50
47
  }
51
48
  }
52
49
  async emitSync(event, payload) {
53
- if (Array.isArray(this.state[event])) {
54
- for (const func of this.state[event]){
50
+ if (this.state[event]) {
51
+ for (const key of Object.keys(this.state[event])){
52
+ const func = this.state[event][key];
55
53
  if (typeof func === 'function') {
56
54
  try {
57
55
  await func(payload);
package/es/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { debounce } from './debounce';
2
2
  export { hex2rgb, LinearColor, ColorUtils } from './color/utils';
3
- export { CacheEmitter, Emitter } from './emitter';
3
+ export { Emitter, CacheEmitter } from './emitter';
4
4
  export { superFactory } from './factory';
5
5
  export { loop, retry, waitFor, RetryPlus } from './loop';
6
6
  export { SyncQueue, runAsyncTasks } from './queue';
@@ -17,6 +17,6 @@ export { getAngle, getDistance, getCenter, degrees, radians, filterKeyPoints, ge
17
17
  export { lower2camel, fixNum } from './str';
18
18
  export { RegExpList } from './regexp-list';
19
19
  export { SensorDataFilter, StringSplit } from './filter/sensor';
20
- export { cloneDeep, getTreeItem, searchTree, flatTree, filterTree } from './object';
20
+ export { cloneDeep, getTreeItem, searchTree, flatTree, filterTree, reflection } from './object';
21
21
  export * as UTM from './math/utm';
22
22
  export { BufferSplit } from './buf';
package/es/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { debounce } from './debounce';
2
2
  export { hex2rgb, LinearColor, ColorUtils } from './color/utils';
3
- export { CacheEmitter, Emitter } from './emitter';
3
+ export { Emitter, CacheEmitter } from './emitter';
4
4
  export { superFactory } from './factory';
5
5
  export { loop, retry, waitFor, RetryPlus } from './loop';
6
6
  export { SyncQueue, runAsyncTasks } from './queue';
@@ -17,6 +17,6 @@ export { getAngle, getDistance, getCenter, degrees, radians, filterKeyPoints, ge
17
17
  export { lower2camel, fixNum } from './str';
18
18
  export { RegExpList } from './regexp-list';
19
19
  export { SensorDataFilter, StringSplit } from './filter/sensor';
20
- export { cloneDeep, getTreeItem, searchTree, flatTree, filterTree } from './object';
20
+ export { cloneDeep, getTreeItem, searchTree, flatTree, filterTree, reflection } from './object';
21
21
  export * as UTM from './math/utm';
22
22
  export { BufferSplit } from './buf';
@@ -3,3 +3,4 @@ export declare function getTreeItem(tree: any, indexes: number[]): any;
3
3
  export declare function searchTree(tree: any, cb: (item: any) => boolean, key?: string): number[];
4
4
  export declare const flatTree: (tree: any, key?: string, indexes?: number[], tmp?: any[]) => any[];
5
5
  export declare const filterTree: (tree: any, cb: (item: any) => boolean, key?: string) => any[];
6
+ export declare const reflection: (obj: any) => any;
@@ -117,3 +117,10 @@ export const filterTree = (tree, cb, key = 'children')=>{
117
117
  });
118
118
  return tmp;
119
119
  };
120
+ export const reflection = (obj)=>{
121
+ const res = {};
122
+ for (const key of Object.keys(obj)){
123
+ res[obj[key]] = key;
124
+ }
125
+ return res;
126
+ };
package/lib/buf.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export declare class BufferSplit {
2
- private c;
3
2
  private cache;
3
+ private c;
4
4
  constructor(buf: Buffer);
5
5
  push(buf: Buffer): Buffer[];
6
6
  }
package/lib/buf.js CHANGED
@@ -9,8 +9,8 @@ Object.defineProperty(exports, "BufferSplit", {
9
9
  }
10
10
  });
11
11
  class BufferSplit {
12
- c;
13
12
  cache = Buffer.alloc(0);
13
+ c;
14
14
  constructor(buf){
15
15
  this.c = buf;
16
16
  }
@@ -9,7 +9,7 @@ interface EmitterType {
9
9
  }
10
10
  export declare class Emitter implements EmitterType {
11
11
  private state;
12
- private ids;
12
+ ids: any;
13
13
  on(event: string, func: any): string;
14
14
  cancel(id?: string): void;
15
15
  clear(): void;
@@ -22,17 +22,14 @@ class Emitter {
22
22
  ids = {};
23
23
  on(event, func) {
24
24
  if (!this.state[event]) {
25
- this.state[event] = [];
25
+ this.state[event] = {};
26
26
  }
27
27
  if (typeof func !== 'function') {
28
28
  throw new Error('第二个参数必须为function!');
29
29
  }
30
- const index = this.state[event].push(func) - 1;
31
- const key = (0, _random.random)(40);
32
- this.ids[key] = {
33
- event,
34
- index
35
- };
30
+ const key = `${(0, _random.random)(40)}_${new Date().valueOf()}`;
31
+ this.state[event][key] = func;
32
+ this.ids[key] = event;
36
33
  return key;
37
34
  }
38
35
  cancel(id) {
@@ -40,27 +37,27 @@ class Emitter {
40
37
  this.clear();
41
38
  return;
42
39
  }
43
- const { event, index } = this.ids[id] || {};
40
+ const event = this.ids[id];
44
41
  if (!event) {
45
42
  return;
46
43
  }
47
- if (!Array.isArray(this.state[event])) {
44
+ if (!this.state[event]) {
48
45
  return;
49
46
  }
50
- this.state[event].splice(index, 1);
47
+ delete this.state[event][id];
48
+ if (Object.keys(this.state[event]).length === 0) {
49
+ delete this.state[event];
50
+ }
51
51
  delete this.ids[id];
52
- Object.keys(this.ids).forEach((key)=>{
53
- if (this.ids[key].event === event && this.ids[key].index > index) {
54
- this.ids[key].index = this.ids[key].index - 1;
55
- }
56
- });
57
52
  }
58
53
  clear() {
59
- this.state.length = 0;
54
+ this.state = {};
55
+ this.ids = {};
60
56
  }
61
57
  emit(event, payload) {
62
- if (Array.isArray(this.state[event])) {
63
- for (const func of this.state[event]){
58
+ if (this.state[event]) {
59
+ for (const key of Object.keys(this.state[event])){
60
+ const func = this.state[event][key];
64
61
  if (typeof func === 'function') {
65
62
  func(payload);
66
63
  }
@@ -68,8 +65,9 @@ class Emitter {
68
65
  }
69
66
  }
70
67
  async emitSync(event, payload) {
71
- if (Array.isArray(this.state[event])) {
72
- for (const func of this.state[event]){
68
+ if (this.state[event]) {
69
+ for (const key of Object.keys(this.state[event])){
70
+ const func = this.state[event][key];
73
71
  if (typeof func === 'function') {
74
72
  try {
75
73
  await func(payload);
package/lib/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { debounce } from './debounce';
2
2
  export { hex2rgb, LinearColor, ColorUtils } from './color/utils';
3
- export { CacheEmitter, Emitter } from './emitter';
3
+ export { Emitter, CacheEmitter } from './emitter';
4
4
  export { superFactory } from './factory';
5
5
  export { loop, retry, waitFor, RetryPlus } from './loop';
6
6
  export { SyncQueue, runAsyncTasks } from './queue';
@@ -17,6 +17,6 @@ export { getAngle, getDistance, getCenter, degrees, radians, filterKeyPoints, ge
17
17
  export { lower2camel, fixNum } from './str';
18
18
  export { RegExpList } from './regexp-list';
19
19
  export { SensorDataFilter, StringSplit } from './filter/sensor';
20
- export { cloneDeep, getTreeItem, searchTree, flatTree, filterTree } from './object';
20
+ export { cloneDeep, getTreeItem, searchTree, flatTree, filterTree, reflection } from './object';
21
21
  export * as UTM from './math/utm';
22
22
  export { BufferSplit } from './buf';
package/lib/index.js CHANGED
@@ -126,6 +126,9 @@ _export(exports, {
126
126
  randomRangeNum: function() {
127
127
  return _random.randomRangeNum;
128
128
  },
129
+ reflection: function() {
130
+ return _object.reflection;
131
+ },
129
132
  retry: function() {
130
133
  return _loop.retry;
131
134
  },
@@ -3,3 +3,4 @@ export declare function getTreeItem(tree: any, indexes: number[]): any;
3
3
  export declare function searchTree(tree: any, cb: (item: any) => boolean, key?: string): number[];
4
4
  export declare const flatTree: (tree: any, key?: string, indexes?: number[], tmp?: any[]) => any[];
5
5
  export declare const filterTree: (tree: any, cb: (item: any) => boolean, key?: string) => any[];
6
+ export declare const reflection: (obj: any) => any;
@@ -21,6 +21,9 @@ _export(exports, {
21
21
  getTreeItem: function() {
22
22
  return getTreeItem;
23
23
  },
24
+ reflection: function() {
25
+ return reflection;
26
+ },
24
27
  searchTree: function() {
25
28
  return searchTree;
26
29
  }
@@ -144,3 +147,10 @@ const filterTree = (tree, cb, key = 'children')=>{
144
147
  });
145
148
  return tmp;
146
149
  };
150
+ const reflection = (obj)=>{
151
+ const res = {};
152
+ for (const key of Object.keys(obj)){
153
+ res[obj[key]] = key;
154
+ }
155
+ return res;
156
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pubo-utils",
3
- "version": "1.0.187",
3
+ "version": "1.0.192",
4
4
  "main": "./lib/index.js",
5
5
  "module": "./es/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -18,7 +18,7 @@
18
18
  "engines": {
19
19
  "node": ">=8.0.0"
20
20
  },
21
- "gitHead": "2f1b8fdc646e10edcd984d2123699569df265829",
21
+ "gitHead": "5916cce8a7b16eb69c0770a2075f1e7b1dcc1f85",
22
22
  "devDependencies": {
23
23
  "del": "^5.1.0",
24
24
  "eslint": "^8.42.0",