pubo-utils 1.0.161 → 1.0.164

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 +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,ContinuousTrigger:()=>f,Emitter:()=>c,HistoryStack:()=>d,Level:()=>T,RegExpList:()=>I,SensorDataFilter:()=>N,StringSplit:()=>L,SyncQueue:()=>p,WatchDog:()=>x,callbackToPromise:()=>b,cloneDeep:()=>U,debounce:()=>s,degrees:()=>M,filterKeyPoints:()=>k,getAngle:()=>S,getBestPointIndex:()=>A,getCenter:()=>P,getDistance:()=>w,getPositionTheta:()=>j,getRotate:()=>v,getVectorTheta:()=>O,hex2rgb:()=>n,loop:()=>l,lower2camel:()=>R,orderByDistance:()=>E,radians:()=>_,random:()=>o,randomRangeNum:()=>r,sleep:()=>a,superFactory:()=>h,throttle:()=>m,waitFor:()=>u});var i={};t.r(i),t.d(i,{EncoderMap:()=>g,toUnit8Array:()=>y});const s=(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)}}},n=t=>{let e;e="string"==typeof t?(t=>parseInt(t.replace("#",""),16))(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)]},o=(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},r=t=>{const e=Math.abs(t[1]-t[0]);return Math.random()*e+Math.min(...t)};class c{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=o(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])"function"==typeof i&&await i(e)}clone(){return{state:{...this.state},ids:{...this.ids}}}restore(t){this.state=t.state,this.ids=t.ids}}const h=t=>e=>{const i={};for(const s of Object.keys(e))i[s]=t(e[s],s);return i},a=async t=>{await new Promise((e=>{let i=setTimeout((()=>{e(),clearTimeout(i),i=null}),t)}))},l=(t,e)=>{let i=!0,s=()=>{i=!1},n=async()=>{try{await t()}catch(t){console.log(t)}await a(e),i?n():(n=null,t=null,s=null,i=null,e=null)};return n(),s},u=(t,{checkTime:e,timeout:i}={})=>new Promise(((s,n)=>{let o,r=l((async()=>{const e=await t();e&&("function"==typeof r&&r(),o&&(clearTimeout(o),o=null),s(e),r=null,t=null,s=null)}),e||100);i&&(o=setTimeout((()=>{"function"==typeof r&&r(),o&&(clearTimeout(o),o=null),n("timeout"),n=null,r=null,t=null}),i))}));class p{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}}function m(t,e){const i=new p;let s=[];return(...n)=>{if(s=n,!(i.length>0))return i.push((async()=>{await a(e),await t(...s)}))}}class f{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 g=function(){const t={};for(let e=0;e<64;e++)t["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e)]=e;return t}();function y(t){const e=new Uint8Array(6*t.length/8);let i=0,s=0,n=0;for(let o=0;o<t.length&&n<e.length;o+=1)if(s=(s<<6)+g[t.charAt(o)],i+=6,i>=8){i-=8;let t=s>>>i;e[n++]=255&t,t<<=i,s-=t}return e}class d{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 x{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 T{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 b=t=>(...e)=>new Promise(((i,s)=>{t(...e,((t,...e)=>{t&&s(t),e.length<2?i(e[0]):i([...e])})),t=null})),w=(t,e)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),M=t=>180*t/Math.PI,_=t=>t*Math.PI/180,S=({w:t,h:e})=>M(Math.atan2(e,t));function k(t,e=.5){if(t.length<3||e<=0)return t;let i;return t.filter(((s,n)=>!(n>0&&w(i,s)<e||(i=t[n],0))))}function P(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 v(t,e){return[Math.cos(e)*t[0]-Math.sin(e)*t[1],Math.sin(e)*t[0]+Math.cos(e)*t[1]]}const j=(t,e)=>{const i={x:e.x-t.x,y:e.y-t.y};return Math.atan2(i.y,i.x)},A=(t,e)=>{if(t.length<2)return 0;const i=[];let s=1/0,n=0;for(const o of t){const t=w(o,e),r=j(e,o)-e.theta;s>t&&(s=t),i.push({...o,index:n,distance:t,theta:r}),n+=1}return i.filter((t=>t.distance-s<.1)).sort(((t,e)=>t.theta-e.theta))[0].index},E=(t,e={x:0,y:0,theta:0})=>{let i=e;const s=[],n=[...t];for(;n.length>0;){const t=A(n,i);s.push(n[t]),i=n[t],n.splice(t,1)}return s},O=(t,e)=>Math.atan2(e.y,e.x)-Math.atan2(t.y,t.x),R=t=>t.split("_").map(((t,e)=>e>0?t.slice(0,1).toUpperCase()+t.slice(1):t)).join("");class I{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 N{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}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),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 L{_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 U(t,e=new WeakMap){if("object"!=typeof t||null===t)return t;if(e.has(t))return e.get(t);const i={};return Object.keys(t).forEach((s=>{const n=t[s];"object"!=typeof n||null===n?i[s]=n:Array.isArray(n)?i[s]=n.map((t=>U(t,e))):n instanceof Set?i[s]=new Set([...n]):n instanceof Map?i[s]=new Map([...n]):(e.set(t,t),i[s]=U(n,e))})),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,ContinuousTrigger:()=>y,Emitter:()=>c,HistoryStack:()=>w,Level:()=>b,RegExpList:()=>L,SensorDataFilter:()=>U,StringSplit:()=>D,SyncQueue:()=>m,WatchDog:()=>T,callbackToPromise:()=>M,cloneDeep:()=>z,debounce:()=>s,degrees:()=>k,filterKeyPoints:()=>S,getAngle:()=>P,getBestPointIndex:()=>O,getCenter:()=>A,getDistance:()=>_,getPositionTheta:()=>E,getRotate:()=>j,getVectorTheta:()=>I,hex2rgb:()=>n,loop:()=>l,lower2camel:()=>N,orderByDistance:()=>R,radians:()=>v,random:()=>o,randomRangeNum:()=>r,retry:()=>p,runAsyncTasks:()=>f,sleep:()=>h,superFactory:()=>a,throttle:()=>g,waitFor:()=>u});var i={};t.r(i),t.d(i,{EncoderMap:()=>d,toUnit8Array:()=>x});const s=(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)}}},n=t=>{let e;e="string"==typeof t?(t=>parseInt(t.replace("#",""),16))(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)]},o=(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},r=t=>{const e=Math.abs(t[1]-t[0]);return Math.random()*e+Math.min(...t)};class c{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=o(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])"function"==typeof i&&await i(e)}clone(){return{state:{...this.state},ids:{...this.ids}}}restore(t){this.state=t.state,this.ids=t.ids}}const a=t=>e=>{const i={};for(const s of Object.keys(e))i[s]=t(e[s],s);return i},h=async t=>{await new Promise((e=>{let i=setTimeout((()=>{e(),clearTimeout(i),i=null}),t)}))},l=(t,e)=>{let i=!0,s=()=>{i=!1},n=async()=>{try{await t()}catch(t){console.log(t)}await h(e),i?n():(n=null,t=null,s=null,i=null,e=null)};return n(),s},u=(t,{checkTime:e,timeout:i}={})=>new Promise(((s,n)=>{let o,r=l((async()=>{const e=await t();e&&("function"==typeof r&&r(),o&&(clearTimeout(o),o=null),s(e),r=null,t=null,s=null)}),e||100);i&&(o=setTimeout((()=>{"function"==typeof r&&r(),o&&(clearTimeout(o),o=null),n("timeout"),n=null,r=null,t=null}),i))})),p=(t,{times:e=5,interval:i=1e3}={times:5,interval:1e3})=>{let s=1;const n=async(...o)=>{let r;if(s>e)throw new Error("retry times exceed");try{return r=await t(...o),r}catch(t){return console.log(`action error, times ${s}`),console.log(t),await h(i),s+=1,n(...o)}};return n};class m{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 f=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 g(t,e){const i=new m;let s=[];return(...n)=>{if(s=n,!(i.length>0))return i.push((async()=>{await h(e),await t(...s)}))}}class y{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 d=function(){const t={};for(let e=0;e<64;e++)t["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e)]=e;return t}();function x(t){const e=new Uint8Array(6*t.length/8);let i=0,s=0,n=0;for(let o=0;o<t.length&&n<e.length;o+=1)if(s=(s<<6)+d[t.charAt(o)],i+=6,i>=8){i-=8;let t=s>>>i;e[n++]=255&t,t<<=i,s-=t}return e}class w{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 T{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 b{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 M=t=>(...e)=>new Promise(((i,s)=>{t(...e,((t,...e)=>{t&&s(t),e.length<2?i(e[0]):i([...e])})),t=null})),_=(t,e)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),k=t=>180*t/Math.PI,v=t=>t*Math.PI/180,P=({w:t,h:e})=>k(Math.atan2(e,t));function S(t,e=.5){if(t.length<3||e<=0)return t;let i;return t.filter(((s,n)=>!(n>0&&_(i,s)<e||(i=t[n],0))))}function A(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 j(t,e){return[Math.cos(e)*t[0]-Math.sin(e)*t[1],Math.sin(e)*t[0]+Math.cos(e)*t[1]]}const E=(t,e)=>{const i={x:e.x-t.x,y:e.y-t.y};return Math.atan2(i.y,i.x)},O=(t,e)=>{if(t.length<2)return 0;const i=[];let s=1/0,n=0;for(const o of t){const t=_(o,e),r=E(e,o)-e.theta;s>t&&(s=t),i.push({...o,index:n,distance:t,theta:r}),n+=1}return i.filter((t=>t.distance-s<.1)).sort(((t,e)=>t.theta-e.theta))[0].index},R=(t,e={x:0,y:0,theta:0})=>{let i=e;const s=[],n=[...t];for(;n.length>0;){const t=O(n,i);s.push(n[t]),i=n[t],n.splice(t,1)}return s},I=(t,e)=>Math.atan2(e.y,e.x)-Math.atan2(t.y,t.x),N=t=>t.split("_").map(((t,e)=>e>0?t.slice(0,1).toUpperCase()+t.slice(1):t)).join("");class L{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 U{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}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),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 D{_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 z(t,e=new WeakMap){if("object"!=typeof t||null===t)return t;if(e.has(t))return e.get(t);const i={};return Object.keys(t).forEach((s=>{const n=t[s];"object"!=typeof n||null===n?i[s]=n:Array.isArray(n)?i[s]=n.map((t=>z(t,e))):n instanceof Set?i[s]=new Set([...n]):n instanceof Map?i[s]=new Map([...n]):(e.set(t,t),i[s]=z(n,e))})),i}return e})()));
package/es/index.d.ts CHANGED
@@ -2,8 +2,8 @@ export { debounce } from './debounce';
2
2
  export { hex2rgb } from './color/utils';
3
3
  export { Emitter } from './emitter';
4
4
  export { superFactory } from './factory';
5
- export { loop, waitFor } from './loop';
6
- export { SyncQueue } from './queue';
5
+ export { loop, waitFor, retry } from './loop';
6
+ export { SyncQueue, runAsyncTasks } from './queue';
7
7
  export { random, randomRangeNum } from './random';
8
8
  export { sleep } from './sleep';
9
9
  export { throttle } from './throttle';
package/es/index.js CHANGED
@@ -2,8 +2,8 @@ export { debounce } from './debounce';
2
2
  export { hex2rgb } from './color/utils';
3
3
  export { Emitter } from './emitter';
4
4
  export { superFactory } from './factory';
5
- export { loop, waitFor } from './loop';
6
- export { SyncQueue } from './queue';
5
+ export { loop, waitFor, retry } from './loop';
6
+ export { SyncQueue, runAsyncTasks } from './queue';
7
7
  export { random, randomRangeNum } from './random';
8
8
  export { sleep } from './sleep';
9
9
  export { throttle } from './throttle';
@@ -20,4 +20,8 @@ export declare const waitFor: (bool: WaitForBool, { checkTime, timeout }?: {
20
20
  checkTime?: number;
21
21
  timeout?: number;
22
22
  }) => Promise<unknown>;
23
+ export declare const retry: (action: any, { times, interval }?: {
24
+ times: number;
25
+ interval: number;
26
+ }) => (...args: any[]) => Promise<any>;
23
27
  export {};
package/es/loop/index.js CHANGED
@@ -74,3 +74,26 @@ import { sleep } from '../sleep';
74
74
  }
75
75
  });
76
76
  };
77
+ export const retry = (action, { times = 5, interval = 1000 } = {
78
+ times: 5,
79
+ interval: 1000
80
+ })=>{
81
+ let count = 1;
82
+ const fn = async (...args)=>{
83
+ let result;
84
+ if (count > times) {
85
+ throw new Error('retry times exceed');
86
+ }
87
+ try {
88
+ result = await action(...args);
89
+ return result;
90
+ } catch (err) {
91
+ console.log(`action error, times ${count}`);
92
+ console.log(err);
93
+ await sleep(interval);
94
+ count += 1;
95
+ return fn(...args);
96
+ }
97
+ };
98
+ return fn;
99
+ };
@@ -7,3 +7,4 @@ export declare class SyncQueue {
7
7
  push(fn: any): Promise<unknown>;
8
8
  get length(): number;
9
9
  }
10
+ export declare const runAsyncTasks: (list: any, j?: number) => Promise<void>;
package/es/queue/index.js CHANGED
@@ -45,3 +45,23 @@ export class SyncQueue {
45
45
  return this.len;
46
46
  }
47
47
  }
48
+ export const runAsyncTasks = async (list, j = 4)=>{
49
+ let i = -1;
50
+ const t = [];
51
+ const run = async ()=>{
52
+ i += 1;
53
+ if (!list[i]) {
54
+ return;
55
+ }
56
+ try {
57
+ await list[i]();
58
+ } catch (err) {
59
+ console.log(err);
60
+ }
61
+ await run();
62
+ };
63
+ for(let n = 0; n < j; n += 1){
64
+ t.push(run());
65
+ }
66
+ await Promise.all(t);
67
+ };
package/lib/index.d.ts CHANGED
@@ -2,8 +2,8 @@ export { debounce } from './debounce';
2
2
  export { hex2rgb } from './color/utils';
3
3
  export { Emitter } from './emitter';
4
4
  export { superFactory } from './factory';
5
- export { loop, waitFor } from './loop';
6
- export { SyncQueue } from './queue';
5
+ export { loop, waitFor, retry } from './loop';
6
+ export { SyncQueue, runAsyncTasks } from './queue';
7
7
  export { random, randomRangeNum } from './random';
8
8
  export { sleep } from './sleep';
9
9
  export { throttle } from './throttle';
package/lib/index.js CHANGED
@@ -96,6 +96,12 @@ _export(exports, {
96
96
  randomRangeNum: function() {
97
97
  return _random.randomRangeNum;
98
98
  },
99
+ retry: function() {
100
+ return _loop.retry;
101
+ },
102
+ runAsyncTasks: function() {
103
+ return _queue.runAsyncTasks;
104
+ },
99
105
  sleep: function() {
100
106
  return _sleep.sleep;
101
107
  },
@@ -20,4 +20,8 @@ export declare const waitFor: (bool: WaitForBool, { checkTime, timeout }?: {
20
20
  checkTime?: number;
21
21
  timeout?: number;
22
22
  }) => Promise<unknown>;
23
+ export declare const retry: (action: any, { times, interval }?: {
24
+ times: number;
25
+ interval: number;
26
+ }) => (...args: any[]) => Promise<any>;
23
27
  export {};
package/lib/loop/index.js CHANGED
@@ -12,6 +12,9 @@ _export(exports, {
12
12
  loop: function() {
13
13
  return loop;
14
14
  },
15
+ retry: function() {
16
+ return retry;
17
+ },
15
18
  waitFor: function() {
16
19
  return waitFor;
17
20
  }
@@ -78,3 +81,26 @@ const waitFor = (bool, { checkTime, timeout } = {})=>{
78
81
  }
79
82
  });
80
83
  };
84
+ const retry = (action, { times = 5, interval = 1000 } = {
85
+ times: 5,
86
+ interval: 1000
87
+ })=>{
88
+ let count = 1;
89
+ const fn = async (...args)=>{
90
+ let result;
91
+ if (count > times) {
92
+ throw new Error('retry times exceed');
93
+ }
94
+ try {
95
+ result = await action(...args);
96
+ return result;
97
+ } catch (err) {
98
+ console.log(`action error, times ${count}`);
99
+ console.log(err);
100
+ await (0, _sleep.sleep)(interval);
101
+ count += 1;
102
+ return fn(...args);
103
+ }
104
+ };
105
+ return fn;
106
+ };
@@ -7,3 +7,4 @@ export declare class SyncQueue {
7
7
  push(fn: any): Promise<unknown>;
8
8
  get length(): number;
9
9
  }
10
+ export declare const runAsyncTasks: (list: any, j?: number) => Promise<void>;
@@ -2,10 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "SyncQueue", {
6
- enumerable: true,
7
- get: function() {
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ SyncQueue: function() {
8
13
  return SyncQueue;
14
+ },
15
+ runAsyncTasks: function() {
16
+ return runAsyncTasks;
9
17
  }
10
18
  });
11
19
  class SyncQueue {
@@ -55,3 +63,23 @@ class SyncQueue {
55
63
  return this.len;
56
64
  }
57
65
  }
66
+ const runAsyncTasks = async (list, j = 4)=>{
67
+ let i = -1;
68
+ const t = [];
69
+ const run = async ()=>{
70
+ i += 1;
71
+ if (!list[i]) {
72
+ return;
73
+ }
74
+ try {
75
+ await list[i]();
76
+ } catch (err) {
77
+ console.log(err);
78
+ }
79
+ await run();
80
+ };
81
+ for(let n = 0; n < j; n += 1){
82
+ t.push(run());
83
+ }
84
+ await Promise.all(t);
85
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pubo-utils",
3
- "version": "1.0.161",
3
+ "version": "1.0.164",
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": "bd8490cfef859238d4c4de7ebc4b7e3e820db956",
21
+ "gitHead": "c0bff5fb6d2bb3d5429a56bf20ae01797f9266a9",
22
22
  "devDependencies": {
23
23
  "del": "^5.1.0",
24
24
  "eslint": "^8.42.0",