@companix/utils-js 0.0.19 → 0.0.21

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
- "use strict";var t=require("axios");const e=(t,e)=>{if(e<=0)throw new Error("Number of parts must be greater than 0");const r=[],s=Math.floor(t.length/e);let o=t.length%e,n=0;for(let a=0;a<e;a++){const e=n+s+(o>0?1:0),a=t.slice(n,e);a.length>0&&r.push(a),n=e,o--}return r};const r=(t,e)=>{const r=Math.pow(10,e);return Math.round(t*r)/r},s=(t,e=1)=>t>0?[0,".",...new Array(t-1).fill(0),e].join(""):`${e}`,o=t=>Object.keys(t);const n=(t,e)=>Math.floor(Math.random()*(e-t+1))+t;var a;!function(t){t.Get="GET",t.Post="POST"}(a||(a={}));const i=(t,e="token")=>{const r=t??localStorage.getItem(e);return r?`Bearer ${r}`:""},c=(t,{noPennies:e,currency:r,locale:s})=>t.toLocaleString(s,{style:"currency",currency:r,...e?{minimumFractionDigits:0,maximumFractionDigits:0}:{}}),u={email:/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,phone:/^[0-9]+$/},p={email:t=>u.email.test(t),phone:t=>u.phone.test(t)},h=t=>t.toString().padStart(2,"0"),l={"1s":1e3,"1m":6e4,"3m":18e4,"5m":3e5},x=(t,e)=>Math.floor(t/l[e])*l[e];exports.EventBroadcaster=class{subscribers=[];emit(t){this.subscribers.forEach(e=>{e(t)})}subscribe(t){return this.subscribers.push(t),()=>{this.unsubscribe(t)}}unsubscribe(t){const e=this.subscribers.findIndex(e=>e===t);-1!==e&&this.subscribers.splice(e,1)}},exports.EventDispatcher=class{store={};emit(t,e){this.store[t]&&this.store[t](e)}on(t,e){return this.store[t]=e,()=>{this.rm(t)}}rm(t){delete this.store[t]}},exports.EventEmmiter=class{store={};emit(t,e){this.store[t]&&this.store[t].forEach(t=>t(e))}subscribe(t,e){return this.store[t]||(this.store[t]=[]),this.store[t].push(e),()=>{this.unsubscribe(t,e)}}unsubscribe(t,e){if(this.store[t]){const r=this.store[t].findIndex(t=>t===e);-1!==r&&(this.store[t].splice(r,1),0===this.store[t].length&&delete this.store[t])}}},exports.HttpAPI=class{http;constructor(e){this.http=t.create(e)}async request(t){const{url:e,body:r={},method:s,config:o={}}=t,n=s===a.Get?"params":"data";return this.http({url:e,method:s,[n]:r,...o}).then(({data:t})=>t).catch(async({response:t})=>{throw t})}createClient(t=""){const e=this.request.bind(this);return t&&(t+="/"),{post:(r,s,o)=>e({method:a.Post,url:t+r.toString(),config:o,body:s}),get:(r,s,o)=>e({method:a.Get,url:t+r.toString(),config:o,body:s}),blob(t,e){return this.post(t,e,{responseType:"arraybuffer"}).then(t=>new Blob([t]))}}}},exports.QueueManager=class{active=!1;queue=[];add(t){return new Promise((e,r)=>{this.queue.push({resolve:e,reject:r,target:t}),this.active||this.next()})}async next(){const t=this.queue[0];t?(this.active=!0,await t.target().then(e=>t.resolve(e)).catch(e=>t.reject(e)).finally(()=>this.queue.shift()),await this.next()):this.active=!1}},exports.applyAlphaToHex=(t,e)=>{t.startsWith("#")&&(t=t.slice(1));return`rgba(${parseInt(t.slice(0,2),16)}, ${parseInt(t.slice(2,4),16)}, ${parseInt(t.slice(4,6),16)}, ${Math.max(0,Math.min(100,e))/100})`},exports.cashAmount=t=>{const e=t/1e3;if(e>=1e3){const t=e/1e3;return t>=1e3?t/1e3+" МЛРД. ₽":`${t} МЛН. ₽`}return`${e} ТЫС. ₽`},exports.checkPattern=p,exports.contain=t=>t.reduce((t,e)=>[...t,...e],[]),exports.cutNumber=(t,e)=>{const r=Math.pow(10,e);return Math.floor(t*r)/r},exports.dollars=(t,e={})=>c(t,{locale:"us-US",currency:"USD",...e}),exports.formatBytes=t=>{const e=t/1024;return e>1024?+(e/1024).toFixed(1)+" MB":e<1?t+" B":Math.trunc(+e.toFixed(2))+" KB"},exports.formatTime=h,exports.generateCode=t=>{const e="A0B1C2D3E4F5G6H7W89K0L1M2N34P5Q6R7S8T9U0V3XYZ",r=[];for(let s=0;s<t;s++){const t=Math.floor(45*Math.random());r.push(e[t])}return r.join("")},exports.generatePreview=t=>{const e=URL.createObjectURL(t);return{url:e,destroy:()=>{URL.revokeObjectURL(e)}}},exports.getAuthToken=i,exports.getCurrentCandleTime=x,exports.getDate=(t,e=!0)=>{const r=new Date(t),s=e?"UTC":"";return[h(r[`get${s}Date`]()),h(r[`get${s}Month`]()+1),h(r[`get${s}FullYear`]())].join(":")},exports.getFiles=t=>Array.from(t),exports.getFloatDigits=t=>{if(t.includes("e")){const[e,r]=t.split("e");return Math.max((e.split(".")[1]?.length||0)-+r,0)}return t.split(".")[1]?.length||0},exports.getHeaders=({token:t,tokenSource:e,multipart:r}={})=>{const s=i(t,e),o={"Content-Type":r?"multipart/form-data; charset=utf-8":"application/json"};return s&&(o.Authorization=s),o},exports.getLastClosedCandleTime=(t,e)=>x(t,e)-l[e],exports.getNextCandleTime=(t,e)=>x(t,e)+l[e],exports.getNoun=(t,e,r,s)=>{let o=Math.abs(t);return o%=100,o>=5&&o<=20?s:(o%=10,1===o?e:o>=2&&o<=4?r:s)},exports.getNum=t=>isNaN(Number(t))?null:+t,exports.getPrecisionStep=s,exports.getRandomInt=n,exports.getRandomIntString=t=>new Array(t).fill(0).map(()=>n(0,9)).join(""),exports.getRandomItemFromArray=(t,e)=>{const r=e&&e.exceptions.length<t.length?t.filter(t=>!e.exceptions.some(r=>e.isEqual(t,r))):t;return r[r.length*Math.random()|0]},exports.getTime=(t,e=!0)=>{const r=new Date(t),s=e?"UTC":"";return[h(r[`get${s}Hours`]()),h(r[`get${s}Minutes`]()),h(r[`get${s}Seconds`]())].join(":")},exports.getTimes=t=>{t<0&&(t=0);const e=Math.floor(t/1e3);return{hours:Math.floor(e/3600),minutes:Math.floor(e%3600/60),seconds:e%60}},exports.hash=()=>{const t="undefined"==typeof performance?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const r=(16*Math.random()+t)%16|0;return("x"===e?r:3&r|8).toString(16)})},exports.intervals=l,exports.isEmpty=t=>{for(const e in t)return!1;return!0},exports.isValidPrecision=(t,e)=>{const r=t.toString();return!r.includes(".")||0!==e&&r.split(".")[1].length<=e},exports.keys=o,exports.keysLength=t=>o(t).length,exports.nonNullable=t=>null!=t,exports.normalize=r,exports.omit=(t,e)=>(delete t[e],t),exports.partial=t=>{const e={};for(const r in t)t[r]&&(e[r]=t[r]);return e},exports.range=(t,e,r=1)=>{const s=t<e?1:-1,o=Math.abs(t-e)+1,n=Math.ceil(o/r),a=Array(n);for(let e=0;e<a.length;e++)a[e]=t+e*r*s;return a},exports.regex=u,exports.rgbaToHex=t=>{const e=t.match(/rgba?\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*([\d.]+)\s*\)/);if(!e)throw new Error("Некорректный формат RGBA");const[,r,s,o,n]=e,a=t=>parseInt(t).toString(16).padStart(2,"0"),i=Math.round(255*parseFloat(n));return`#${a(r)}${a(s)}${a(o)}${a(i.toString())}`},exports.roundSeparateArray=(t,r)=>{const s=Math.round(t.length/r);return s>1?e(t,s):[t]},exports.roundUp2=(t,e)=>{const o=t.toFixed(e);return t>+o?r(+o+ +s(e),e):+o},exports.rubles=(t,e={})=>c(t,{locale:"ru-RU",currency:"RUB",...e}),exports.separateArray=e,exports.sleep=t=>new Promise(e=>setTimeout(e,t)),exports.splitByChunks=(t,e)=>{const r=[];for(let s=0;s<t.length;s+=e)r.push(t.slice(s,s+e));return r},exports.stringify=(...t)=>t.map(t=>JSON.stringify(t)).join(" "),exports.transport=t=>{const e=new FormData;return e.append("file",t),e.append("type","file"),e},exports.truncateNumber=(t,e)=>{const r=t.toFixed(e);return+r>t?(+r-Math.sign(t)*Math.pow(.1,e)).toFixed(e):r};
1
+ "use strict";var t=require("axios");const e=(t,e)=>{if(e<=0)throw new Error("Number of parts must be greater than 0");const r=[],s=Math.floor(t.length/e);let o=t.length%e,n=0;for(let i=0;i<e;i++){const e=n+s+(o>0?1:0),i=t.slice(n,e);i.length>0&&r.push(i),n=e,o--}return r};const r=(t,e)=>{const r=Math.pow(10,e);return Math.round(t*r)/r},s=(t,e=1)=>t>0?[0,".",...new Array(t-1).fill(0),e].join(""):`${e}`,o=t=>Object.keys(t);const n=(t,e)=>Math.floor(Math.random()*(e-t+1))+t;var i;!function(t){t.Get="GET",t.Post="POST"}(i||(i={}));const a=(t,e="token")=>{const r=t??localStorage.getItem(e);return r?`Bearer ${r}`:""},c=(t,{noPennies:e,currency:r,locale:s})=>t.toLocaleString(s,{style:"currency",currency:r,...e?{minimumFractionDigits:0,maximumFractionDigits:0}:{}}),u={email:/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,phone:/^[0-9]+$/},h={email:t=>u.email.test(t),phone:t=>u.phone.test(t)},l=t=>t.toString().padStart(2,"0"),p={"1s":1e3,"1m":6e4,"3m":18e4,"5m":3e5},x=(t,e)=>Math.floor(t/p[e])*p[e];exports.EventBroadcaster=class{subscribers=[];emit(t){this.subscribers.forEach(e=>{e(t)})}subscribe(t){return this.subscribers.push(t),()=>{this.unsubscribe(t)}}unsubscribe(t){const e=this.subscribers.findIndex(e=>e===t);-1!==e&&this.subscribers.splice(e,1)}},exports.EventDispatcher=class{store={};emit(t,e){this.store[t]&&this.store[t](e)}on(t,e){return this.store[t]=e,()=>{this.rm(t)}}rm(t){delete this.store[t]}},exports.EventEmmiter=class{store={};emit(t,e){this.store[t]&&this.store[t].forEach(t=>t(e))}subscribe(t,e){return this.store[t]||(this.store[t]=[]),this.store[t].push(e),()=>{this.unsubscribe(t,e)}}unsubscribe(t,e){if(this.store[t]){const r=this.store[t].findIndex(t=>t===e);-1!==r&&(this.store[t].splice(r,1),0===this.store[t].length&&delete this.store[t])}}},exports.HttpAPI=class{http;constructor(e){this.http=t.create(e)}async request(t){const{url:e,body:r={},method:s,config:o={}}=t,n=s===i.Get?"params":"data";return this.http({url:e,method:s,[n]:r,...o}).then(({data:t})=>t).catch(({response:t})=>{throw t})}createClient(t=""){const e=this.request.bind(this);return t&&(t+="/"),{post:(r,s,o)=>e({method:i.Post,url:t+r.toString(),config:o,body:s}),get:(r,s,o)=>e({method:i.Get,url:t+r.toString(),config:o,body:s}),blob(t,e){return this.post(t,e,{responseType:"arraybuffer"}).then(t=>new Blob([t]))}}}},exports.QueueManager=class{active=!1;queue=[];add(t){return new Promise((e,r)=>{this.queue.push({resolve:e,reject:r,target:t}),this.active||this.next()})}async next(){const t=this.queue[0];t?(this.active=!0,await t.target().then(e=>t.resolve(e)).catch(e=>t.reject(e)).finally(()=>this.queue.shift()),await this.next()):this.active=!1}},exports.applyAlphaToHex=(t,e)=>{t.startsWith("#")&&(t=t.slice(1));return`rgba(${parseInt(t.slice(0,2),16)}, ${parseInt(t.slice(2,4),16)}, ${parseInt(t.slice(4,6),16)}, ${Math.max(0,Math.min(100,e))/100})`},exports.cashAmount=t=>{const e=t/1e3;if(e>=1e3){const t=e/1e3;return t>=1e3?t/1e3+" МЛРД. ₽":`${t} МЛН. ₽`}return`${e} ТЫС. ₽`},exports.checkPattern=h,exports.contain=t=>t.reduce((t,e)=>[...t,...e],[]),exports.cutNumber=(t,e)=>{const r=Math.pow(10,e);return Math.floor(t*r)/r},exports.dollars=(t,e={})=>c(t,{locale:"us-US",currency:"USD",...e}),exports.formatBytes=t=>{const e=t/1024;return e>1024?+(e/1024).toFixed(1)+" MB":e<1?t+" B":Math.trunc(+e.toFixed(2))+" KB"},exports.formatTime=l,exports.generateCode=t=>{const e="A0B1C2D3E4F5G6H7W89K0L1M2N34P5Q6R7S8T9U0V3XYZ",r=[];for(let s=0;s<t;s++){const t=Math.floor(45*Math.random());r.push(e[t])}return r.join("")},exports.getAuthToken=a,exports.getCurrentCandleTime=x,exports.getDate=(t,e=!0)=>{const r=new Date(t),s=e?"UTC":"";return[l(r[`get${s}Date`]()),l(r[`get${s}Month`]()+1),l(r[`get${s}FullYear`]())].join(":")},exports.getFloatDigits=t=>{if(t.includes("e")){const[e,r]=t.split("e");return Math.max((e.split(".")[1]?.length||0)-+r,0)}return t.split(".")[1]?.length||0},exports.getHeaders=({token:t,tokenSource:e,multipart:r}={})=>{const s=a(t,e),o={"Content-Type":r?"multipart/form-data; charset=utf-8":"application/json"};return s&&(o.Authorization=s),o},exports.getLastClosedCandleTime=(t,e)=>x(t,e)-p[e],exports.getNextCandleTime=(t,e)=>x(t,e)+p[e],exports.getNoun=(t,e,r,s)=>{let o=Math.abs(t);return o%=100,o>=5&&o<=20?s:(o%=10,1===o?e:o>=2&&o<=4?r:s)},exports.getNum=t=>isNaN(Number(t))?null:+t,exports.getPrecisionStep=s,exports.getRandomInt=n,exports.getRandomIntString=t=>new Array(t).fill(0).map(()=>n(0,9)).join(""),exports.getRandomItemFromArray=(t,e)=>{const r=e&&e.exceptions.length<t.length?t.filter(t=>!e.exceptions.some(r=>e.isEqual(t,r))):t;return r[r.length*Math.random()|0]},exports.getTime=(t,e=!0)=>{const r=new Date(t),s=e?"UTC":"";return[l(r[`get${s}Hours`]()),l(r[`get${s}Minutes`]()),l(r[`get${s}Seconds`]())].join(":")},exports.getTimes=t=>{t<0&&(t=0);const e=Math.floor(t/1e3);return{hours:Math.floor(e/3600),minutes:Math.floor(e%3600/60),seconds:e%60}},exports.hash=()=>{const t="undefined"==typeof performance?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const r=(16*Math.random()+t)%16|0;return("x"===e?r:3&r|8).toString(16)})},exports.intervals=p,exports.isEmpty=t=>{for(const e in t)return!1;return!0},exports.isValidPrecision=(t,e)=>{const r=t.toString();return!r.includes(".")||0!==e&&r.split(".")[1].length<=e},exports.keys=o,exports.keysLength=t=>o(t).length,exports.nonNullable=t=>null!=t,exports.normalize=r,exports.omit=(t,e)=>(delete t[e],t),exports.partial=t=>{const e={};for(const r in t)t[r]&&(e[r]=t[r]);return e},exports.range=(t,e,r=1)=>{const s=t<e?1:-1,o=Math.abs(t-e)+1,n=Math.ceil(o/r),i=Array(n);for(let e=0;e<i.length;e++)i[e]=t+e*r*s;return i},exports.regex=u,exports.rgbaToHex=t=>{const e=t.match(/rgba?\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*([\d.]+)\s*\)/);if(!e)throw new Error("Некорректный формат RGBA");const[,r,s,o,n]=e,i=t=>parseInt(t).toString(16).padStart(2,"0"),a=Math.round(255*parseFloat(n));return`#${i(r)}${i(s)}${i(o)}${i(a.toString())}`},exports.roundSeparateArray=(t,r)=>{const s=Math.round(t.length/r);return s>1?e(t,s):[t]},exports.roundUp2=(t,e)=>{const o=t.toFixed(e);return t>+o?r(+o+ +s(e),e):+o},exports.rubles=(t,e={})=>c(t,{locale:"ru-RU",currency:"RUB",...e}),exports.separateArray=e,exports.sleep=t=>new Promise(e=>setTimeout(e,t)),exports.splitByChunks=(t,e)=>{const r=[];for(let s=0;s<t.length;s+=e)r.push(t.slice(s,s+e));return r},exports.stringify=(...t)=>t.map(t=>JSON.stringify(t)).join(" "),exports.truncateNumber=(t,e)=>{const r=t.toFixed(e);return+r>t?(+r-Math.sign(t)*Math.pow(.1,e)).toFixed(e):r};
@@ -1 +1 @@
1
- import t from"axios";const e=(t,e,r=1)=>{const s=t<e?1:-1,n=Math.abs(t-e)+1,o=Math.ceil(n/r),i=Array(o);for(let e=0;e<i.length;e++)i[e]=t+e*r*s;return i},r=(t,e)=>{const r=[];for(let s=0;s<t.length;s+=e)r.push(t.slice(s,s+e));return r},s=(t,e)=>{if(e<=0)throw new Error("Number of parts must be greater than 0");const r=[],s=Math.floor(t.length/e);let n=t.length%e,o=0;for(let i=0;i<e;i++){const e=o+s+(n>0?1:0),i=t.slice(o,e);i.length>0&&r.push(i),o=e,n--}return r},n=(t,e)=>{const r=Math.round(t.length/e);return r>1?s(t,r):[t]},o=(t,e)=>{t.startsWith("#")&&(t=t.slice(1));return`rgba(${parseInt(t.slice(0,2),16)}, ${parseInt(t.slice(2,4),16)}, ${parseInt(t.slice(4,6),16)}, ${Math.max(0,Math.min(100,e))/100})`},i=t=>{const e=t.match(/rgba?\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*([\d.]+)\s*\)/);if(!e)throw new Error("Некорректный формат RGBA");const[,r,s,n,o]=e,i=t=>parseInt(t).toString(16).padStart(2,"0"),a=Math.round(255*parseFloat(o));return`#${i(r)}${i(s)}${i(n)}${i(a.toString())}`};class a{store={};emit(t,e){this.store[t]&&this.store[t](e)}on(t,e){return this.store[t]=e,()=>{this.rm(t)}}rm(t){delete this.store[t]}}class c{store={};emit(t,e){this.store[t]&&this.store[t].forEach(t=>t(e))}subscribe(t,e){return this.store[t]||(this.store[t]=[]),this.store[t].push(e),()=>{this.unsubscribe(t,e)}}unsubscribe(t,e){if(this.store[t]){const r=this.store[t].findIndex(t=>t===e);-1!==r&&(this.store[t].splice(r,1),0===this.store[t].length&&delete this.store[t])}}}class u{subscribers=[];emit(t){this.subscribers.forEach(e=>{e(t)})}subscribe(t){return this.subscribers.push(t),()=>{this.unsubscribe(t)}}unsubscribe(t){const e=this.subscribers.findIndex(e=>e===t);-1!==e&&this.subscribers.splice(e,1)}}const h=t=>{if(t.includes("e")){const[e,r]=t.split("e");return Math.max((e.split(".")[1]?.length||0)-+r,0)}return t.split(".")[1]?.length||0},l=(t,e)=>{const r=Math.pow(10,e);return Math.round(t*r)/r},p=(t,e)=>{const r=Math.pow(10,e);return Math.floor(t*r)/r},m=(t,e)=>{const r=t.toFixed(e);return t>+r?l(+r+ +d(e),e):+r},x=(t,e)=>{const r=t.toFixed(e);return+r>t?(+r-Math.sign(t)*Math.pow(.1,e)).toFixed(e):r},d=(t,e=1)=>t>0?[0,".",...new Array(t-1).fill(0),e].join(""):`${e}`,f=(t,e)=>{const r=t.toString();return!r.includes(".")||0!==e&&r.split(".")[1].length<=e},g=t=>isNaN(Number(t))?null:+t,b=t=>Object.keys(t),M=t=>b(t).length,y=t=>{for(const e in t)return!1;return!0},w=(t,e)=>(delete t[e],t),$=t=>{const e={};for(const r in t)t[r]&&(e[r]=t[r]);return e};class S{active=!1;queue=[];add(t){return new Promise((e,r)=>{this.queue.push({resolve:e,reject:r,target:t}),this.active||this.next()})}async next(){const t=this.queue[0];t?(this.active=!0,await t.target().then(e=>t.resolve(e)).catch(e=>t.reject(e)).finally(()=>this.queue.shift()),await this.next()):this.active=!1}}const j=t=>{const e="A0B1C2D3E4F5G6H7W89K0L1M2N34P5Q6R7S8T9U0V3XYZ",r=[];for(let s=0;s<t;s++){const t=Math.floor(45*Math.random());r.push(e[t])}return r.join("")},F=(t,e)=>Math.floor(Math.random()*(e-t+1))+t,U=t=>new Array(t).fill(0).map(()=>F(0,9)).join(""),A=()=>{const t="undefined"==typeof performance?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const r=(16*Math.random()+t)%16|0;return("x"===e?r:3&r|8).toString(16)})},D=(t,e)=>{const r=e&&e.exceptions.length<t.length?t.filter(t=>!e.exceptions.some(r=>e.isEqual(t,r))):t;return r[r.length*Math.random()|0]},v=t=>new Promise(e=>setTimeout(e,t)),B=(...t)=>t.map(t=>JSON.stringify(t)).join(" "),R=t=>t.reduce((t,e)=>[...t,...e],[]),T=t=>null!=t;var q;!function(t){t.Get="GET",t.Post="POST"}(q||(q={}));class E{http;constructor(e){this.http=t.create(e)}async request(t){const{url:e,body:r={},method:s,config:n={}}=t,o=s===q.Get?"params":"data";return this.http({url:e,method:s,[o]:r,...n}).then(({data:t})=>t).catch(async({response:t})=>{throw t})}createClient(t=""){const e=this.request.bind(this);return t&&(t+="/"),{post:(r,s,n)=>e({method:q.Post,url:t+r.toString(),config:n,body:s}),get:(r,s,n)=>e({method:q.Get,url:t+r.toString(),config:n,body:s}),blob(t,e){return this.post(t,e,{responseType:"arraybuffer"}).then(t=>new Blob([t]))}}}}const I=({token:t,tokenSource:e,multipart:r}={})=>{const s=P(t,e),n={"Content-Type":r?"multipart/form-data; charset=utf-8":"application/json"};return s&&(n.Authorization=s),n},P=(t,e="token")=>{const r=t??localStorage.getItem(e);return r?`Bearer ${r}`:""},G=t=>{const e=new FormData;return e.append("file",t),e.append("type","file"),e},L=t=>{const e=URL.createObjectURL(t);return{url:e,destroy:()=>{URL.revokeObjectURL(e)}}},N=t=>Array.from(t),k=t=>{const e=t/1e3;if(e>=1e3){const t=e/1e3;return t>=1e3?t/1e3+" МЛРД. ₽":`${t} МЛН. ₽`}return`${e} ТЫС. ₽`},C=(t,{noPennies:e,currency:r,locale:s})=>t.toLocaleString(s,{style:"currency",currency:r,...e?{minimumFractionDigits:0,maximumFractionDigits:0}:{}}),O=(t,e={})=>C(t,{locale:"ru-RU",currency:"RUB",...e}),z=(t,e={})=>C(t,{locale:"us-US",currency:"USD",...e}),Z=(t,e,r,s)=>{let n=Math.abs(t);return n%=100,n>=5&&n<=20?s:(n%=10,1===n?e:n>=2&&n<=4?r:s)},H={email:/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,phone:/^[0-9]+$/},K={email:t=>H.email.test(t),phone:t=>H.phone.test(t)},W=t=>{const e=t/1024;return e>1024?+(e/1024).toFixed(1)+" MB":e<1?t+" B":Math.trunc(+e.toFixed(2))+" KB"},Y=t=>t.toString().padStart(2,"0"),J=t=>{t<0&&(t=0);const e=Math.floor(t/1e3);return{hours:Math.floor(e/3600),minutes:Math.floor(e%3600/60),seconds:e%60}},Q=(t,e=!0)=>{const r=new Date(t),s=e?"UTC":"";return[Y(r[`get${s}Hours`]()),Y(r[`get${s}Minutes`]()),Y(r[`get${s}Seconds`]())].join(":")},V=(t,e=!0)=>{const r=new Date(t),s=e?"UTC":"";return[Y(r[`get${s}Date`]()),Y(r[`get${s}Month`]()+1),Y(r[`get${s}FullYear`]())].join(":")},X={"1s":1e3,"1m":6e4,"3m":18e4,"5m":3e5},_=(t,e)=>tt(t,e)-X[e],tt=(t,e)=>Math.floor(t/X[e])*X[e],et=(t,e)=>tt(t,e)+X[e];export{u as EventBroadcaster,a as EventDispatcher,c as EventEmmiter,E as HttpAPI,S as QueueManager,o as applyAlphaToHex,k as cashAmount,K as checkPattern,R as contain,p as cutNumber,z as dollars,W as formatBytes,Y as formatTime,j as generateCode,L as generatePreview,P as getAuthToken,tt as getCurrentCandleTime,V as getDate,N as getFiles,h as getFloatDigits,I as getHeaders,_ as getLastClosedCandleTime,et as getNextCandleTime,Z as getNoun,g as getNum,d as getPrecisionStep,F as getRandomInt,U as getRandomIntString,D as getRandomItemFromArray,Q as getTime,J as getTimes,A as hash,X as intervals,y as isEmpty,f as isValidPrecision,b as keys,M as keysLength,T as nonNullable,l as normalize,w as omit,$ as partial,e as range,H as regex,i as rgbaToHex,n as roundSeparateArray,m as roundUp2,O as rubles,s as separateArray,v as sleep,r as splitByChunks,B as stringify,G as transport,x as truncateNumber};
1
+ import t from"axios";const e=(t,e,r=1)=>{const s=t<e?1:-1,n=Math.abs(t-e)+1,o=Math.ceil(n/r),i=Array(o);for(let e=0;e<i.length;e++)i[e]=t+e*r*s;return i},r=(t,e)=>{const r=[];for(let s=0;s<t.length;s+=e)r.push(t.slice(s,s+e));return r},s=(t,e)=>{if(e<=0)throw new Error("Number of parts must be greater than 0");const r=[],s=Math.floor(t.length/e);let n=t.length%e,o=0;for(let i=0;i<e;i++){const e=o+s+(n>0?1:0),i=t.slice(o,e);i.length>0&&r.push(i),o=e,n--}return r},n=(t,e)=>{const r=Math.round(t.length/e);return r>1?s(t,r):[t]},o=(t,e)=>{t.startsWith("#")&&(t=t.slice(1));return`rgba(${parseInt(t.slice(0,2),16)}, ${parseInt(t.slice(2,4),16)}, ${parseInt(t.slice(4,6),16)}, ${Math.max(0,Math.min(100,e))/100})`},i=t=>{const e=t.match(/rgba?\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*([\d.]+)\s*\)/);if(!e)throw new Error("Некорректный формат RGBA");const[,r,s,n,o]=e,i=t=>parseInt(t).toString(16).padStart(2,"0"),a=Math.round(255*parseFloat(o));return`#${i(r)}${i(s)}${i(n)}${i(a.toString())}`};class a{store={};emit(t,e){this.store[t]&&this.store[t](e)}on(t,e){return this.store[t]=e,()=>{this.rm(t)}}rm(t){delete this.store[t]}}class c{store={};emit(t,e){this.store[t]&&this.store[t].forEach(t=>t(e))}subscribe(t,e){return this.store[t]||(this.store[t]=[]),this.store[t].push(e),()=>{this.unsubscribe(t,e)}}unsubscribe(t,e){if(this.store[t]){const r=this.store[t].findIndex(t=>t===e);-1!==r&&(this.store[t].splice(r,1),0===this.store[t].length&&delete this.store[t])}}}class h{subscribers=[];emit(t){this.subscribers.forEach(e=>{e(t)})}subscribe(t){return this.subscribers.push(t),()=>{this.unsubscribe(t)}}unsubscribe(t){const e=this.subscribers.findIndex(e=>e===t);-1!==e&&this.subscribers.splice(e,1)}}const u=t=>{if(t.includes("e")){const[e,r]=t.split("e");return Math.max((e.split(".")[1]?.length||0)-+r,0)}return t.split(".")[1]?.length||0},l=(t,e)=>{const r=Math.pow(10,e);return Math.round(t*r)/r},p=(t,e)=>{const r=Math.pow(10,e);return Math.floor(t*r)/r},x=(t,e)=>{const r=t.toFixed(e);return t>+r?l(+r+ +d(e),e):+r},m=(t,e)=>{const r=t.toFixed(e);return+r>t?(+r-Math.sign(t)*Math.pow(.1,e)).toFixed(e):r},d=(t,e=1)=>t>0?[0,".",...new Array(t-1).fill(0),e].join(""):`${e}`,g=(t,e)=>{const r=t.toString();return!r.includes(".")||0!==e&&r.split(".")[1].length<=e},f=t=>isNaN(Number(t))?null:+t,b=t=>Object.keys(t),M=t=>b(t).length,y=t=>{for(const e in t)return!1;return!0},$=(t,e)=>(delete t[e],t),w=t=>{const e={};for(const r in t)t[r]&&(e[r]=t[r]);return e};class S{active=!1;queue=[];add(t){return new Promise((e,r)=>{this.queue.push({resolve:e,reject:r,target:t}),this.active||this.next()})}async next(){const t=this.queue[0];t?(this.active=!0,await t.target().then(e=>t.resolve(e)).catch(e=>t.reject(e)).finally(()=>this.queue.shift()),await this.next()):this.active=!1}}const j=t=>{const e="A0B1C2D3E4F5G6H7W89K0L1M2N34P5Q6R7S8T9U0V3XYZ",r=[];for(let s=0;s<t;s++){const t=Math.floor(45*Math.random());r.push(e[t])}return r.join("")},F=(t,e)=>Math.floor(Math.random()*(e-t+1))+t,A=t=>new Array(t).fill(0).map(()=>F(0,9)).join(""),B=()=>{const t="undefined"==typeof performance?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const r=(16*Math.random()+t)%16|0;return("x"===e?r:3&r|8).toString(16)})},D=(t,e)=>{const r=e&&e.exceptions.length<t.length?t.filter(t=>!e.exceptions.some(r=>e.isEqual(t,r))):t;return r[r.length*Math.random()|0]},T=t=>new Promise(e=>setTimeout(e,t)),q=(...t)=>t.map(t=>JSON.stringify(t)).join(" "),v=t=>t.reduce((t,e)=>[...t,...e],[]),E=t=>null!=t;var I;!function(t){t.Get="GET",t.Post="POST"}(I||(I={}));class P{http;constructor(e){this.http=t.create(e)}async request(t){const{url:e,body:r={},method:s,config:n={}}=t,o=s===I.Get?"params":"data";return this.http({url:e,method:s,[o]:r,...n}).then(({data:t})=>t).catch(({response:t})=>{throw t})}createClient(t=""){const e=this.request.bind(this);return t&&(t+="/"),{post:(r,s,n)=>e({method:I.Post,url:t+r.toString(),config:n,body:s}),get:(r,s,n)=>e({method:I.Get,url:t+r.toString(),config:n,body:s}),blob(t,e){return this.post(t,e,{responseType:"arraybuffer"}).then(t=>new Blob([t]))}}}}const U=({token:t,tokenSource:e,multipart:r}={})=>{const s=G(t,e),n={"Content-Type":r?"multipart/form-data; charset=utf-8":"application/json"};return s&&(n.Authorization=s),n},G=(t,e="token")=>{const r=t??localStorage.getItem(e);return r?`Bearer ${r}`:""},N=t=>{const e=t/1e3;if(e>=1e3){const t=e/1e3;return t>=1e3?t/1e3+" МЛРД. ₽":`${t} МЛН. ₽`}return`${e} ТЫС. ₽`},C=(t,{noPennies:e,currency:r,locale:s})=>t.toLocaleString(s,{style:"currency",currency:r,...e?{minimumFractionDigits:0,maximumFractionDigits:0}:{}}),k=(t,e={})=>C(t,{locale:"ru-RU",currency:"RUB",...e}),R=(t,e={})=>C(t,{locale:"us-US",currency:"USD",...e}),z=(t,e,r,s)=>{let n=Math.abs(t);return n%=100,n>=5&&n<=20?s:(n%=10,1===n?e:n>=2&&n<=4?r:s)},O={email:/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,phone:/^[0-9]+$/},Z={email:t=>O.email.test(t),phone:t=>O.phone.test(t)},H=t=>{const e=t/1024;return e>1024?+(e/1024).toFixed(1)+" MB":e<1?t+" B":Math.trunc(+e.toFixed(2))+" KB"},K=t=>t.toString().padStart(2,"0"),L=t=>{t<0&&(t=0);const e=Math.floor(t/1e3);return{hours:Math.floor(e/3600),minutes:Math.floor(e%3600/60),seconds:e%60}},W=(t,e=!0)=>{const r=new Date(t),s=e?"UTC":"";return[K(r[`get${s}Hours`]()),K(r[`get${s}Minutes`]()),K(r[`get${s}Seconds`]())].join(":")},Y=(t,e=!0)=>{const r=new Date(t),s=e?"UTC":"";return[K(r[`get${s}Date`]()),K(r[`get${s}Month`]()+1),K(r[`get${s}FullYear`]())].join(":")},J={"1s":1e3,"1m":6e4,"3m":18e4,"5m":3e5},Q=(t,e)=>V(t,e)-J[e],V=(t,e)=>Math.floor(t/J[e])*J[e],X=(t,e)=>V(t,e)+J[e];export{h as EventBroadcaster,a as EventDispatcher,c as EventEmmiter,P as HttpAPI,S as QueueManager,o as applyAlphaToHex,N as cashAmount,Z as checkPattern,v as contain,p as cutNumber,R as dollars,H as formatBytes,K as formatTime,j as generateCode,G as getAuthToken,V as getCurrentCandleTime,Y as getDate,u as getFloatDigits,U as getHeaders,Q as getLastClosedCandleTime,X as getNextCandleTime,z as getNoun,f as getNum,d as getPrecisionStep,F as getRandomInt,A as getRandomIntString,D as getRandomItemFromArray,W as getTime,L as getTimes,B as hash,J as intervals,y as isEmpty,g as isValidPrecision,b as keys,M as keysLength,E as nonNullable,l as normalize,$ as omit,w as partial,e as range,O as regex,i as rgbaToHex,n as roundSeparateArray,x as roundUp2,k as rubles,s as separateArray,T as sleep,r as splitByChunks,q as stringify,m as truncateNumber};
@@ -5,11 +5,11 @@ export type IOpattern<T extends IOpattern<T>> = {
5
5
  answer: T[key]['answer'];
6
6
  };
7
7
  };
8
- export declare class HttpAPI<T extends IOpattern<T>> {
8
+ export declare class HttpAPI {
9
9
  http: AxiosInstance;
10
10
  constructor(config: CreateAxiosDefaults);
11
11
  private request;
12
- createClient(context?: string): {
12
+ createClient<T extends IOpattern<T>>(context?: string): {
13
13
  post<K extends keyof T>(url: K, body: T[K]["params"], config?: AxiosRequestConfig): Promise<T[K]["answer"]>;
14
14
  get<K extends keyof T>(url: K, body: T[K]["params"], config?: AxiosRequestConfig): Promise<T[K]["answer"]>;
15
15
  blob<K extends keyof T>(url: K, body: T[K]["params"]): Promise<Blob>;
package/dist/index.d.ts CHANGED
@@ -8,7 +8,6 @@ export * from './random';
8
8
  export * from './utils';
9
9
  export * from './http-api';
10
10
  export * from './http-headers';
11
- export * from './http-upload';
12
11
  export * from './money';
13
12
  export * from './nouns';
14
13
  export * from './regex';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@companix/utils-js",
3
- "version": "0.0.19",
3
+ "version": "0.0.21",
4
4
  "main": "dist/bundle.cjs.js",
5
5
  "module": "dist/bundle.esm.js",
6
6
  "types": "./dist/index.d.ts",
@@ -1,6 +0,0 @@
1
- export declare const transport: (file: Blob) => FormData;
2
- export declare const generatePreview: (file: File) => {
3
- url: string;
4
- destroy: () => void;
5
- };
6
- export declare const getFiles: (files: FileList) => File[];