## About             

Library to improve own experience working with JS. :gem:

Current version: **1.1.3** :star:   

There are *35* methods to try :trophy:

## Links

To download - *https://www.npmjs.com/package/codus.js* 

## Getting Started         

~~~
import {Codus} from 'codus.js'     

const codus = new Codus()   
~~~

## Examples

How to count distance between Vienna and Bratislava in km? :globe_with_meridians:      

~~~
    let start_coords: Cords = {lat: 48.2085, long: 16.3731} 
    let end_coords: Cords = {lat: 48.1434, long: 17.1082}   

    console.log(codus.haversine(start_coords.lat, start_coords.long, end_coords.lat, end_coords.long)) // 55.04715597243234 
~~~     

Validate and convert text to card number :credit_card:      

~~~
    let text: string = 'Hel224ore asds87967243232435'   

    console.log(codus.card(text)) // 2248-7967-2432-3243    
~~~

Create new ID or password for user Slavus54 :computer:     

~~~
    let result: string = codus.id(5)

    console.log(result) // p1f0j
~~~

## Methods     

--- **haversine** (*lat1*, *long1*, *lat2*, *long2*) : calculates distance beetween 2 dots on Earth and returns result in km.         

--- **cords** (*e*) : makes easier working with MapboxGL API by return an object with coordinates.      

--- **search** (*original* = '', *toCompare* = '', *percent* = 5e1, *startFromBeginning* = false) : searching text by comparing string with substring by filters (% and position to start of comparing).     

--- **short** (*text* = '', *words* = 3) : slices text with size by *words* and returns it.  

--- **round** (*num* = 1, *digit* = 0) : rounding number and returns integer or float rounded by *digit*   

--- **percent** (*value* = 0, *total* = 1e1, *round* = 0) : return rounded number generated by % of *total*.             

--- **part** (*value* = 0, *total* = 1e1, *round* = 0) : return % number generated by value of *total*.  

--- **random** (*list* = [], *shift* = 0) : return randomly choosen value of *list* with slicing % of array's elements from left side by *shift* parameter. 

--- **card** (*text* = '', *isConvert* = true) : return text converted into card number or vice versa.    

--- **calories** (*weight* = 7e1, *distance* = 5e2, *pulse* = 11e1, *round* = 0) : return number of burned calories by running *distance* in km.    

--- **debounce** (*func*, *timestamp* = 5e2) : return function with an interval.

--- **go** (*url* = '') : open browser's folder with source by *url*.   

--- **copy** (*text* = '') : copy message by *text* and save it in clipboard. 

--- **cash** (*change* = 1e3, *coins* = []) : counts number of different coins to pay *change* and return an object with residue and number of coins {change, values}.    

--- **mutateObject** (*object* = {}, *properties* = [], *values* = []) : change values of object's properties with an array and return updated object.    

--- **splice** (*list* = [], *borders* = [], *values* = [], *check* = null) : update elements of array inside index *borders* with *values* if *check* expression is valid.  

--- **is** (*obj1* = {}, *obj2* = {}, *round* = 0) : return % of objects similarity.            

--- **depth** (*list* = [], *position* = 1) : return level of array's depth.            

--- **objectFilter** (*obj* = {}, *type* = 'string') : return object only with *type* of property's value.      

--- **filterArrayByDigit** (*list* = [], *index* = 1, *value* = 1) : validate each array number by check *value* equal to digit of number by *index* and return list of numbers.        

--- **reverseObject** (*obj* = {}) : exchange key and value in each property of object and return object.      

--- **textSubstring** (*text* = '', *substring* = '') : counts number of word includes *substring* and return it.   

--- **binary** (*num* = null, *isConvert* = true) : convert decimal number to binary (by default) or binary to number.  

--- **getObjectProperty** (*obj* = {}, *properties* = []) : get object's property by array of keys. 

--- **sum** (*list* = [], *isEven* = null, *min* = 0, *max* = 1e6) : return sum of elements after filtering by *isEven* and borders.    

--- **wordEnd** (*num* = 1, *base* = 'поезд', *isLessHalf*= 'а', *isMoreHalf* = 'ов') : set right ending of noun word with its numeral in slavic languages. 

--- **countSpacesByWordsLength** (*text* = '', *min* = 1, *max* = 1e1) : return num of spaces which near words have length inside borders.  

--- **filterObjectProperties** (*obj* = {}, *text* = '') : filter properties of object by including *text* and returns cut off object.  

--- **findUppercasePart** (*text* = '', *round* = 0) : return rounded % of uppercase words in text.  

--- **id** (*length* = 1, *isNum* = true, *uppercaseSchema* = []) : build ID with size by *length*, may includes numbers and list of multiplicity nums as positions of ID symbols which will be uppercase.  

--- **findWordByDynamicLength** (*text* = '', *percent* = 5e1) : return word with length by % of logest word in text.   

--- **direction** (*lat1*, *long1*, *lat2*, *long2*) : return text with direction of moving from current to next map' dot.  

--- **passwordDifficulty** (*text* = '', *base* = 1, *multiplier* = 1.5) : estimate password difficulty and return number of points.    

--- **hash** (*schema* = [], *divider* = '-') : creates hash string by *schema* length of pieces and *dividers* between each pair.    