@giveback007/util-lib 2.5.3 → 3.1.0

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.
@@ -3,7 +3,6 @@ export type Immutable<T> = {
3
3
  };
4
4
  export type Action<T extends string, P = undefined> = Readonly<P extends undefined ? {
5
5
  T: T;
6
- P?: P;
7
6
  } : {
8
7
  T: T;
9
8
  P: P;
package/dist/@types.d.ts CHANGED
@@ -66,3 +66,7 @@ export type AnyDate = string | number | Date | TimeObj | TimeArr;
66
66
  export type Dict<T> = {
67
67
  [id: string]: T;
68
68
  };
69
+ export type GeoPoint = {
70
+ lon: number;
71
+ lat: number;
72
+ };
package/dist/array.d.ts CHANGED
@@ -11,6 +11,7 @@ export declare const arrGen: <T = any>(length: number, fill?: number | BigInt |
11
11
  * ```
12
12
  */
13
13
  export declare function arrRemoveById<T extends AnyObj>(arr: T[], idArr: string[], idKey?: keyof T): T[];
14
+ export declare function arrRemoveItemByIndex<T>(arr: T[], index: number): T[];
14
15
  /**
15
16
  * Gets values out of `arr` that match the ids in `idArr`
16
17
  *
package/dist/array.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.arrLast = exports.arrDeepFlatten = exports.arrGen = void 0;
4
4
  exports.arrRemoveById = arrRemoveById;
5
+ exports.arrRemoveItemByIndex = arrRemoveItemByIndex;
5
6
  exports.arrGetByIds = arrGetByIds;
6
7
  exports.arrDivide = arrDivide;
7
8
  exports.arrFlatten = arrFlatten;
@@ -29,6 +30,10 @@ function arrRemoveById(arr, idArr, idKey = 'id') {
29
30
  const keep = (0, _1.objRemoveKeys)(objDict, idArr);
30
31
  return (0, _1.objVals)(keep);
31
32
  }
33
+ function arrRemoveItemByIndex(arr, index) {
34
+ // Use slice to create a new array without the item at the given index
35
+ return arr.slice(0, index).concat(arr.slice(index + 1));
36
+ }
32
37
  /**
33
38
  * Gets values out of `arr` that match the ids in `idArr`
34
39
  *
package/dist/array.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { Dict } from "./@types";
2
+ export declare const lStore: {
3
+ hasStore: () => boolean;
4
+ get: <T = any>(key: string) => T | null;
5
+ set: (key: string, data: any) => void;
6
+ del: (key: string) => void;
7
+ };
8
+ export declare const sStore: {
9
+ hasStore: () => boolean;
10
+ get: <T = any>(key: string) => T | null;
11
+ set: (key: string, data: any) => void;
12
+ del: (key: string) => void;
13
+ };
14
+ export type ClassNameArray = ClassNameValue[];
15
+ export type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false;
16
+ export type CssMergeArgs = Dict<any> | ClassNameValue | ClassNameValue[];
17
+ export declare function twMerge(...cssArgs: CssMergeArgs[]): string;
18
+ export declare function getFormData<T extends Dict<any> = Dict<string>>(formElm: HTMLFormElement): T;
19
+ export type FileDropEvent = DragEvent & {
20
+ currentTarget: EventTarget & HTMLDivElement;
21
+ } & {
22
+ dataTransfer: DataTransfer;
23
+ };
24
+ export declare class DragOverTracker {
25
+ private elm;
26
+ private onChange;
27
+ private onDrop;
28
+ private dragCounter;
29
+ constructor(elm: HTMLElement, onChange: (dragover: boolean) => any, onDrop: (e: FileDropEvent) => any);
30
+ destroy(): void;
31
+ private prevState;
32
+ private changeHandler;
33
+ }
34
+ export declare function downloadFile(url: string, filename?: string | null): Promise<void>;
35
+ export declare function copyToClipboard(text: string): Promise<boolean>;
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DragOverTracker = exports.sStore = exports.lStore = void 0;
4
+ exports.twMerge = twMerge;
5
+ exports.getFormData = getFormData;
6
+ exports.downloadFile = downloadFile;
7
+ exports.copyToClipboard = copyToClipboard;
8
+ const test_1 = require("./test");
9
+ const tailwind_merge_1 = require("tailwind-merge");
10
+ function storageFactory(type) {
11
+ return {
12
+ hasStore: () => !!(typeof window !== "undefined" && window[type]),
13
+ get: (key) => JSON.parse(window[type].getItem(key) ?? 'null'),
14
+ set: (key, data) => window[type].setItem(key, JSON.stringify(data)),
15
+ del: (key) => window[type].removeItem(key),
16
+ };
17
+ }
18
+ exports.lStore = storageFactory('localStorage');
19
+ exports.sStore = storageFactory('sessionStorage');
20
+ function twMerge(...cssArgs) {
21
+ // @ts-ignore
22
+ cssArgs = Array.isArray(cssArgs) ? cssArgs.flat(Infinity) : cssArgs;
23
+ const classes = [];
24
+ for (let css of cssArgs) {
25
+ if ((0, test_1.isType)(css, 'object')) {
26
+ Object.entries(css).forEach(([cls, truthy]) => {
27
+ if (truthy)
28
+ classes.push(cls);
29
+ });
30
+ }
31
+ else if (css) {
32
+ classes.push(css);
33
+ }
34
+ }
35
+ return (0, tailwind_merge_1.twMerge)(classes);
36
+ }
37
+ function getFormData(formElm) {
38
+ const dict = {};
39
+ const data = new FormData(formElm);
40
+ data.forEach((val, key) => dict[key] = val);
41
+ return dict;
42
+ }
43
+ class DragOverTracker {
44
+ elm;
45
+ onChange;
46
+ onDrop;
47
+ dragCounter = 0;
48
+ constructor(elm, onChange, onDrop) {
49
+ this.elm = elm;
50
+ this.onChange = onChange;
51
+ this.onDrop = onDrop;
52
+ elm.ondragenter = () => {
53
+ this.dragCounter++;
54
+ this.changeHandler(true);
55
+ };
56
+ elm.ondragleave = () => {
57
+ this.dragCounter--;
58
+ if (this.dragCounter === 0)
59
+ this.changeHandler(false);
60
+ };
61
+ elm.ondragover = (e) => e.preventDefault();
62
+ elm.ondrop = (e) => {
63
+ e.preventDefault();
64
+ this.dragCounter = 0;
65
+ this.changeHandler(false);
66
+ this.onDrop(e);
67
+ };
68
+ }
69
+ destroy() {
70
+ this.elm.ondragenter = null;
71
+ this.elm.ondragleave = null;
72
+ this.elm.ondragover = null;
73
+ this.elm.ondrop = null;
74
+ }
75
+ prevState = false;
76
+ changeHandler(newState) {
77
+ if (this.prevState === newState)
78
+ return;
79
+ this.prevState = newState;
80
+ this.onChange(newState);
81
+ }
82
+ }
83
+ exports.DragOverTracker = DragOverTracker;
84
+ async function downloadFile(url, filename = null) {
85
+ try {
86
+ const response = await fetch(url);
87
+ if (!response.ok) {
88
+ throw new Error(`HTTP error! status: ${response.status}`);
89
+ }
90
+ const blob = await response.blob();
91
+ const downloadUrl = window.URL.createObjectURL(blob);
92
+ const link = document.createElement('a');
93
+ link.href = downloadUrl;
94
+ // Use provided filename or try to extract from URL or response headers
95
+ link.download = filename || extractFilenameFromUrl(url) || 'download';
96
+ document.body.appendChild(link);
97
+ link.click();
98
+ document.body.removeChild(link);
99
+ window.URL.revokeObjectURL(downloadUrl);
100
+ console.log('File downloaded successfully');
101
+ }
102
+ catch (error) {
103
+ console.error('Download failed:', error);
104
+ // Fallback: try opening in new tab
105
+ window.open(url, '_blank');
106
+ }
107
+ }
108
+ ;
109
+ function extractFilenameFromUrl(url) {
110
+ try {
111
+ const urlPath = new URL(url).pathname;
112
+ const segments = urlPath.split('/');
113
+ const filename = segments[segments.length - 1];
114
+ return filename && filename.includes('.') ? filename : null;
115
+ }
116
+ catch {
117
+ return null;
118
+ }
119
+ }
120
+ ;
121
+ async function copyToClipboard(text) {
122
+ try {
123
+ await navigator.clipboard.writeText(text);
124
+ return true;
125
+ }
126
+ catch (err) {
127
+ return false;
128
+ }
129
+ }
130
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
package/dist/general.d.ts CHANGED
@@ -42,5 +42,6 @@ export declare function promiseOut<T = any>(): {
42
42
  resolve: (value: T) => void;
43
43
  promise: Promise<T>;
44
44
  };
45
- export declare function concurrentTasks<T, Res = any>(arr: T[], fn: (x: T, idx: number) => Promise<Res> | Res, nOfConcurrentTasks?: number): Promise<Res[]>;
45
+ export declare function concurrentTasks<T, Res = any>(arr: T[], fn: (arr: T, arrIdx: number, concurrentIdx: num) => Promise<Res> | Res, nOfConcurrentTasks?: number): Promise<Res[]>;
46
46
  export declare function hash(str: string): string;
47
+ export declare function formatFileSize(bytes: num): string;
package/dist/general.js CHANGED
@@ -8,6 +8,7 @@ exports.debounceTimeOut = debounceTimeOut;
8
8
  exports.promiseOut = promiseOut;
9
9
  exports.concurrentTasks = concurrentTasks;
10
10
  exports.hash = hash;
11
+ exports.formatFileSize = formatFileSize;
11
12
  const _1 = require(".");
12
13
  /**
13
14
  * @example
@@ -156,11 +157,11 @@ function promiseOut() {
156
157
  async function concurrentTasks(arr, fn, nOfConcurrentTasks = 8) {
157
158
  let idx = -1;
158
159
  const result = [];
159
- await Promise.all(Array(nOfConcurrentTasks).fill(0).map(async () => {
160
+ await Promise.all(Array(nOfConcurrentTasks).fill(0).map(async (_, cI) => {
160
161
  let data;
161
162
  while (data = arr[++idx]) {
162
163
  const i = idx;
163
- result[i] = await fn(data, idx);
164
+ result[i] = await fn(data, idx, cI);
164
165
  }
165
166
  }));
166
167
  return result;
@@ -171,4 +172,12 @@ function hash(str) {
171
172
  hash = (hash * 31n + BigInt(str.charCodeAt(i))) & 0xffffffffffffffffn;
172
173
  return hash.toString(36);
173
174
  }
175
+ function formatFileSize(bytes) {
176
+ if (bytes === 0)
177
+ return '0 B';
178
+ const k = 1024;
179
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
180
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
181
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
182
+ }
174
183
  //# sourceMappingURL=general.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","sourceRoot":"","sources":["../src/general.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"general.js","sourceRoot":"","sources":["../src/general.ts"],"names":[],"mappings":"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"}
package/dist/geo.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import { GeoPoint } from "./@types";
2
+ export declare const haversineDistance: (geo1: GeoPoint | [lat: number, lat: number], geo2: GeoPoint | [lat: number, lat: number], type?: "mi" | "km") => number;
3
+ export declare function getCountryName(code: string, lang?: string): string | undefined;
4
+ export declare const countryCodes: string[];
package/dist/geo.js ADDED
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.countryCodes = exports.haversineDistance = void 0;
4
+ exports.getCountryName = getCountryName;
5
+ const haversineDistance = (geo1, geo2, type = 'km') => {
6
+ let lat1 = 0, lon1 = 0, lat2 = 0, lon2 = 0;
7
+ if (Array.isArray(geo1)) {
8
+ lat1 = geo1[0];
9
+ lat1 = geo1[1];
10
+ }
11
+ else {
12
+ lat1 = geo1.lat;
13
+ lon1 = geo1.lon;
14
+ }
15
+ if (Array.isArray(geo2)) {
16
+ lat2 = geo2[0];
17
+ lat2 = geo2[1];
18
+ }
19
+ else {
20
+ lat2 = geo2.lat;
21
+ lon2 = geo2.lon;
22
+ }
23
+ const toRadian = (angle) => (Math.PI / 180) * angle;
24
+ const distance = (a, b) => (Math.PI / 180) * (a - b);
25
+ const RADIUS_OF_EARTH_IN_KM = 6371;
26
+ const dLat = distance(lat2, lat1);
27
+ const dLon = distance(lon2, lon1);
28
+ lat1 = toRadian(lat1);
29
+ lat2 = toRadian(lat2);
30
+ // Haversine Formula
31
+ const a = Math.pow(Math.sin(dLat / 2), 2) +
32
+ Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);
33
+ const c = 2 * Math.asin(Math.sqrt(a));
34
+ let finalDistance = RADIUS_OF_EARTH_IN_KM * c;
35
+ if (type === 'mi') {
36
+ finalDistance /= 1.60934;
37
+ }
38
+ return finalDistance;
39
+ };
40
+ exports.haversineDistance = haversineDistance;
41
+ function getCountryName(code, lang = "es") {
42
+ const regionNames = new Intl.DisplayNames([lang], { type: 'region' });
43
+ return regionNames.of(code);
44
+ }
45
+ exports.countryCodes = [
46
+ "AF", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD",
47
+ "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI",
48
+ "KH", "CM", "CA", "CV", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI",
49
+ "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "SZ", "ET", "FK",
50
+ "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU",
51
+ "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM",
52
+ "IL", "IT", "CI", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KP", "KR", "KW", "KG", "LA", "LA", "LV", "LB",
53
+ "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MK", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU",
54
+ "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "AN", "NC", "NZ",
55
+ "NI", "NE", "NG", "NU", "NF", "MP", "NO", "OM", "PK", "PW", "PS", "PA", "PG", "PY", "PE", "PH", "PN", "PL",
56
+ "PT", "PR", "QA", "RW", "RE", "RO", "RU", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA",
57
+ "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ",
58
+ "SZ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV",
59
+ "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VN", "VG", "VI", "WF", "EH", "YE", "ZM",
60
+ "ZW", "AX",
61
+ ];
62
+ //# sourceMappingURL=geo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geo.js","sourceRoot":"","sources":["../src/geo.ts"],"names":[],"mappings":"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C1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1G,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1G,IAAI,EAAE,IAAI;CACb,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,11 @@
1
- export * from './@types';
2
1
  export * from './@state.types';
2
+ export * from './@types';
3
3
  export * from './array';
4
+ export * from './browser';
4
5
  export * from './clone';
5
6
  export * from './equality';
6
7
  export * from './general';
8
+ export * from './geo';
7
9
  export * from './http';
8
10
  export * from './iterate';
9
11
  export * from './number';
package/dist/index.js CHANGED
@@ -14,12 +14,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./@types"), exports);
18
17
  __exportStar(require("./@state.types"), exports);
18
+ __exportStar(require("./@types"), exports);
19
19
  __exportStar(require("./array"), exports);
20
+ __exportStar(require("./browser"), exports);
20
21
  __exportStar(require("./clone"), exports);
21
22
  __exportStar(require("./equality"), exports);
22
23
  __exportStar(require("./general"), exports);
24
+ __exportStar(require("./geo"), exports);
23
25
  __exportStar(require("./http"), exports);
24
26
  __exportStar(require("./iterate"), exports);
25
27
  __exportStar(require("./number"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,iDAA8B;AAC9B,0CAAwB;AACxB,0CAAwB;AACxB,6CAA2B;AAC3B,4CAA0B;AAC1B,yCAAuB;AACvB,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,kDAAgC;AAChC,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,0CAAwB;AACxB,6CAA2B;AAC3B,4CAA0B;AAC1B,wCAAsB;AACtB,yCAAuB;AACvB,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,kDAAgC;AAChC,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB"}
package/dist/number.d.ts CHANGED
@@ -6,10 +6,10 @@ import { num } from '.';
6
6
  * @param min - whole number & `< max`
7
7
  * @param max - whole number & `> min`
8
8
  */
9
- export declare const randInt: (min: number, max: number) => number;
10
- export declare const rand: (min: number, max: number) => number;
9
+ export declare const numRandInt: (min: number, max: number) => number;
10
+ export declare const numRand: (min: number, max: number) => number;
11
11
  /** Takes an array of numbers and finds and average */
12
- export declare const average: (nArr: number[]) => number;
12
+ export declare const numAvg: (nArr: number[]) => number;
13
13
  /**
14
14
  * Takes a number `n` & fixes to decimal places `places`
15
15
  * @param n - the number to fix decimal places of
@@ -25,4 +25,5 @@ export declare const numFixed: (n: number, fractionDigits: number) => number;
25
25
  * new random number.
26
26
  */
27
27
  export declare function newNum(prevNum: number | number[], min: number, max: number): number;
28
- export declare const getProgress: (total: num, nOfDone: num, fractionDigits?: number) => string;
28
+ export declare const numGetProgress: (total: num, nOfDone: num, fractionDigits?: number) => string;
29
+ export declare const numSum: (nArr: num[]) => number;
package/dist/number.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getProgress = exports.numFixed = exports.average = exports.rand = exports.randInt = void 0;
3
+ exports.numSum = exports.numGetProgress = exports.numFixed = exports.numAvg = exports.numRand = exports.numRandInt = void 0;
4
4
  exports.newNum = newNum;
5
5
  const _1 = require(".");
6
6
  /**
@@ -10,13 +10,13 @@ const _1 = require(".");
10
10
  * @param min - whole number & `< max`
11
11
  * @param max - whole number & `> min`
12
12
  */
13
- const randInt = (min, max) => Math.floor(Math.random() * ((max + 1) - min)) + min;
14
- exports.randInt = randInt;
15
- const rand = (min, max) => Math.random() * (max - min) + min;
16
- exports.rand = rand;
13
+ const numRandInt = (min, max) => Math.floor(Math.random() * ((max + 1) - min)) + min;
14
+ exports.numRandInt = numRandInt;
15
+ const numRand = (min, max) => Math.random() * (max - min) + min;
16
+ exports.numRand = numRand;
17
17
  /** Takes an array of numbers and finds and average */
18
- const average = (nArr) => nArr.reduce((a = 0, b = 0) => a + b, 0) / nArr.length;
19
- exports.average = average;
18
+ const numAvg = (nArr) => nArr.reduce((a = 0, b = 0) => a + b, 0) / nArr.length;
19
+ exports.numAvg = numAvg;
20
20
  /**
21
21
  * Takes a number `n` & fixes to decimal places `places`
22
22
  * @param n - the number to fix decimal places of
@@ -38,7 +38,7 @@ function newNum(prevNum, min, max) {
38
38
  const dict = (0, _1.isType)(prevNum, 'array') ?
39
39
  (0, _1.arrToBoolDict)(prevNum) : { [prevNum]: true };
40
40
  do {
41
- num = (0, exports.randInt)(min, max);
41
+ num = (0, exports.numRandInt)(min, max);
42
42
  loop++;
43
43
  if (loop > 1_000_000) {
44
44
  console.error('Check for infinite loops');
@@ -47,6 +47,8 @@ function newNum(prevNum, min, max) {
47
47
  } while (dict[num]);
48
48
  return num;
49
49
  }
50
- const getProgress = (total, nOfDone, fractionDigits = 2) => (nOfDone / total * 100).toFixed(fractionDigits);
51
- exports.getProgress = getProgress;
50
+ const numGetProgress = (total, nOfDone, fractionDigits = 2) => (nOfDone / total * 100).toFixed(fractionDigits);
51
+ exports.numGetProgress = numGetProgress;
52
+ const numSum = (nArr) => nArr.reduce((acc, n) => acc + n, 0);
53
+ exports.numSum = numSum;
52
54
  //# sourceMappingURL=number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../src/number.ts"],"names":[],"mappings":";;;AAmCA,wBAmBC;AAtDD,wBAAqD;AAErD;;;;;;GAMG;AACI,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAD3C,QAAA,OAAO,WACoC;AAEjD,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAC7C,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AADzB,QAAA,IAAI,QACqB;AAEtC,sDAAsD;AAC/C,MAAM,OAAO,GAAG,CAAC,IAAc,EAAE,EAAE,CACtC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAD7C,QAAA,OAAO,WACsC;AAE1D;;;;;;;;GAQG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,cAAsB,EAAE,EAAE,CAC1D,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AAD7B,QAAA,QAAQ,YACqB;AAE1C;;;GAGG;AACH,SAAgB,MAAM,CAClB,OAA0B,EAAE,GAAW,EAAE,GAAW;IAEpD,IAAI,GAAG,CAAC;IACR,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,IAAI,GAAkB,IAAA,SAAM,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,IAAA,gBAAa,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;IAEjD,GAAG,CAAC;QACA,GAAG,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC;QAEP,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE;IAEpB,OAAO,GAAG,CAAC;AACf,CAAC;AAEM,MAAM,WAAW,GAAG,CACvB,KAAU,EAAE,OAAY,EAAE,cAAc,GAAG,CAAC,EAC9C,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAFxC,QAAA,WAAW,eAE6B"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../src/number.ts"],"names":[],"mappings":";;;AAmCA,wBAmBC;AAtDD,wBAAqD;AAErD;;;;;;GAMG;AACI,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAD3C,QAAA,UAAU,cACiC;AAEjD,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAChD,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AADzB,QAAA,OAAO,WACkB;AAEtC,sDAAsD;AAC/C,MAAM,MAAM,GAAG,CAAC,IAAc,EAAE,EAAE,CACrC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAD7C,QAAA,MAAM,UACuC;AAE1D;;;;;;;;GAQG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,cAAsB,EAAE,EAAE,CAC1D,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AAD7B,QAAA,QAAQ,YACqB;AAE1C;;;GAGG;AACH,SAAgB,MAAM,CAClB,OAA0B,EAAE,GAAW,EAAE,GAAW;IAEpD,IAAI,GAAG,CAAC;IACR,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,IAAI,GAAkB,IAAA,SAAM,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,IAAA,gBAAa,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;IAEjD,GAAG,CAAC;QACA,GAAG,GAAG,IAAA,kBAAU,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3B,IAAI,EAAE,CAAC;QAEP,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE;IAEpB,OAAO,GAAG,CAAC;AACf,CAAC;AAEM,MAAM,cAAc,GAAG,CAC1B,KAAU,EAAE,OAAY,EAAE,cAAc,GAAG,CAAC,EAC9C,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAFxC,QAAA,cAAc,kBAE0B;AAE9C,MAAM,MAAM,GAAG,CAAC,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAA9D,QAAA,MAAM,UAAwD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giveback007/util-lib",
3
- "version": "2.5.3",
3
+ "version": "3.1.0",
4
4
  "description": "Utility library",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,6 +27,7 @@
27
27
  "homepage": "https://github.com/Giveback007/util-lib#readme",
28
28
  "dependencies": {
29
29
  "@js-temporal/polyfill": "^0.5.1",
30
+ "tailwind-merge": "^3.3.1",
30
31
  "tslib": "^2.8.1"
31
32
  },
32
33
  "devDependencies": {
@@ -3,7 +3,7 @@ export type Immutable<T> = {
3
3
  };
4
4
 
5
5
  export type Action<T extends string, P = undefined> =
6
- Readonly<P extends undefined ? { T: T; P?: P; } : { T: T; P: P; }>;
6
+ Readonly<P extends undefined ? { T: T } : { T: T; P: P; }>;
7
7
 
8
8
  export type stateSubFct<S> = (s: S, prev: S | null) => any;
9
9
 
package/src/@types.ts CHANGED
@@ -110,3 +110,8 @@ export type TimeArr = [
110
110
  export type AnyDate = string | number | Date | TimeObj | TimeArr;
111
111
 
112
112
  export type Dict<T> = { [id: string]: T };
113
+
114
+ export type GeoPoint = {
115
+ lon: number;
116
+ lat: number;
117
+ }
package/src/array.ts CHANGED
@@ -27,6 +27,11 @@ export function arrRemoveById<
27
27
  return objVals(keep);
28
28
  }
29
29
 
30
+ export function arrRemoveItemByIndex<T>(arr: T[], index: number) {
31
+ // Use slice to create a new array without the item at the given index
32
+ return arr.slice(0, index).concat(arr.slice(index + 1));
33
+ }
34
+
30
35
  /**
31
36
  * Gets values out of `arr` that match the ids in `idArr`
32
37
  *
package/src/browser.ts ADDED
@@ -0,0 +1,145 @@
1
+ import { Dict } from "./@types";
2
+ import { isType } from "./test";
3
+ import { twMerge as _twMerge } from "tailwind-merge";
4
+
5
+ type StorageType = 'localStorage' | 'sessionStorage';
6
+
7
+ function storageFactory(type: StorageType) {
8
+ return {
9
+ hasStore: () => !!(typeof window !== "undefined" && window[type]),
10
+ get: <T = any>(key: string) => JSON.parse(window[type].getItem(key) ?? 'null') as T | null,
11
+ set: (key: string, data: any) => window[type].setItem(key, JSON.stringify(data)),
12
+ del: (key: string) => window[type].removeItem(key),
13
+ }
14
+ }
15
+
16
+ export const lStore = storageFactory('localStorage');
17
+ export const sStore = storageFactory('sessionStorage');
18
+
19
+ export type ClassNameArray = ClassNameValue[];
20
+ export type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false;
21
+ export type CssMergeArgs = Dict<any> | ClassNameValue | ClassNameValue[];
22
+
23
+ export function twMerge(...cssArgs: CssMergeArgs[]): string {
24
+ // @ts-ignore
25
+ cssArgs = Array.isArray(cssArgs) ? cssArgs.flat(Infinity) : cssArgs;
26
+ const classes: ClassNameValue[] = [];
27
+
28
+ for (let css of cssArgs) {
29
+ if (isType(css, 'object')) {
30
+ Object.entries(css).forEach(([cls, truthy]) => {
31
+ if (truthy) classes.push(cls);
32
+ });
33
+ } else if (css) {
34
+ classes.push(css)
35
+ }
36
+ }
37
+
38
+ return _twMerge(classes);
39
+ }
40
+
41
+ export function getFormData<T extends Dict<any> = Dict<string>>(formElm: HTMLFormElement) {
42
+ const dict = {} as T;
43
+ const data = new FormData(formElm);
44
+ data.forEach((val, key) => (dict[key] as any) = val);
45
+
46
+ return dict;
47
+ }
48
+
49
+ export type FileDropEvent = DragEvent & {
50
+ currentTarget: EventTarget & HTMLDivElement;
51
+ } & {
52
+ dataTransfer: DataTransfer;
53
+ };
54
+ export class DragOverTracker {
55
+ private dragCounter = 0;
56
+
57
+ constructor(
58
+ private elm: HTMLElement,
59
+ private onChange: (dragover: boolean) => any,
60
+ private onDrop: (e: FileDropEvent) => any,
61
+ ) {
62
+ elm.ondragenter = () => {
63
+ this.dragCounter++;
64
+ this.changeHandler(true);
65
+ };
66
+ elm.ondragleave = () => {
67
+ this.dragCounter--;
68
+ if (this.dragCounter === 0)
69
+ this.changeHandler(false)
70
+ };
71
+ elm.ondragover = (e) => e.preventDefault();
72
+ elm.ondrop = (e) => {
73
+ e.preventDefault();
74
+ this.dragCounter = 0;
75
+ this.changeHandler(false);
76
+
77
+ this.onDrop(e as FileDropEvent);
78
+ };
79
+ }
80
+
81
+ destroy() {
82
+ this.elm.ondragenter = null;
83
+ this.elm.ondragleave = null;
84
+ this.elm.ondragover = null;
85
+ this.elm.ondrop = null;
86
+ }
87
+
88
+ private prevState = false;
89
+ private changeHandler(newState: boolean) {
90
+ if (this.prevState === newState) return;
91
+ this.prevState = newState;
92
+
93
+ this.onChange(newState);
94
+ }
95
+ }
96
+
97
+ export async function downloadFile(url: string, filename: string | null = null) {
98
+ try {
99
+ const response = await fetch(url);
100
+
101
+ if (!response.ok) {
102
+ throw new Error(`HTTP error! status: ${response.status}`);
103
+ }
104
+
105
+ const blob = await response.blob();
106
+ const downloadUrl = window.URL.createObjectURL(blob);
107
+
108
+ const link = document.createElement('a');
109
+ link.href = downloadUrl;
110
+
111
+ // Use provided filename or try to extract from URL or response headers
112
+ link.download = filename || extractFilenameFromUrl(url) || 'download';
113
+
114
+ document.body.appendChild(link);
115
+ link.click();
116
+ document.body.removeChild(link);
117
+ window.URL.revokeObjectURL(downloadUrl);
118
+
119
+ console.log('File downloaded successfully');
120
+ } catch (error) {
121
+ console.error('Download failed:', error);
122
+ // Fallback: try opening in new tab
123
+ window.open(url, '_blank');
124
+ }
125
+ };
126
+
127
+ function extractFilenameFromUrl(url: string) {
128
+ try {
129
+ const urlPath = new URL(url).pathname;
130
+ const segments = urlPath.split('/');
131
+ const filename = segments[segments.length - 1];
132
+ return filename && filename.includes('.') ? filename : null;
133
+ } catch {
134
+ return null;
135
+ }
136
+ };
137
+
138
+ export async function copyToClipboard(text: string) {
139
+ try {
140
+ await navigator.clipboard.writeText(text);
141
+ return true;
142
+ } catch (err) {
143
+ return false;
144
+ }
145
+ }
package/src/general.ts CHANGED
@@ -165,17 +165,17 @@ export function promiseOut<T = any>() {
165
165
 
166
166
  export async function concurrentTasks<T, Res = any>(
167
167
  arr: T[],
168
- fn: (x: T, idx: number) => Promise<Res> | Res,
168
+ fn: (arr: T, arrIdx: number, concurrentIdx: num) => Promise<Res> | Res,
169
169
  nOfConcurrentTasks = 8
170
170
  ): Promise<Res[]> {
171
171
  let idx = -1;
172
172
  const result: Res[] = [];
173
173
 
174
- await Promise.all(Array(nOfConcurrentTasks).fill(0).map(async () => {
174
+ await Promise.all(Array(nOfConcurrentTasks).fill(0).map(async (_, cI) => {
175
175
  let data: T | undefined;
176
176
  while (data = arr[++idx]) {
177
177
  const i = idx;
178
- result[i] = await fn(data, idx)
178
+ result[i] = await fn(data, idx, cI)
179
179
  }
180
180
  }));
181
181
 
@@ -188,4 +188,14 @@ export function hash(str: string) {
188
188
  hash = (hash * 31n + BigInt(str.charCodeAt(i))) & 0xFFFFFFFFFFFFFFFFn;
189
189
 
190
190
  return hash.toString(36);
191
+ }
192
+
193
+ export function formatFileSize(bytes: num) {
194
+ if (bytes === 0) return '0 B';
195
+
196
+ const k = 1024;
197
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
198
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
199
+
200
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
191
201
  }
package/src/geo.ts ADDED
@@ -0,0 +1,71 @@
1
+ import { GeoPoint } from "./@types";
2
+
3
+ export const haversineDistance = (
4
+ geo1: GeoPoint | [lat: number, lat: number],
5
+ geo2: GeoPoint | [lat: number, lat: number],
6
+ type: 'mi' | 'km' = 'km',
7
+ ) => {
8
+ let lat1 = 0, lon1 = 0, lat2 = 0, lon2 = 0;
9
+ if (Array.isArray(geo1)) {
10
+ lat1 = geo1[0];
11
+ lat1 = geo1[1];
12
+ } else {
13
+ lat1 = geo1.lat;
14
+ lon1 = geo1.lon;
15
+ }
16
+
17
+ if (Array.isArray(geo2)) {
18
+ lat2 = geo2[0];
19
+ lat2 = geo2[1];
20
+ } else {
21
+ lat2 = geo2.lat;
22
+ lon2 = geo2.lon;
23
+ }
24
+
25
+ const toRadian = (angle: number) => (Math.PI / 180) * angle;
26
+ const distance = (a: number, b: number) => (Math.PI / 180) * (a - b);
27
+ const RADIUS_OF_EARTH_IN_KM = 6371;
28
+
29
+ const dLat = distance(lat2, lat1);
30
+ const dLon = distance(lon2, lon1);
31
+
32
+ lat1 = toRadian(lat1);
33
+ lat2 = toRadian(lat2);
34
+
35
+ // Haversine Formula
36
+ const a =
37
+ Math.pow(Math.sin(dLat / 2), 2) +
38
+ Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);
39
+ const c = 2 * Math.asin(Math.sqrt(a));
40
+
41
+ let finalDistance = RADIUS_OF_EARTH_IN_KM * c;
42
+
43
+ if (type === 'mi') {
44
+ finalDistance /= 1.60934;
45
+ }
46
+
47
+ return finalDistance;
48
+ };
49
+
50
+ export function getCountryName(code: string, lang = "es") {
51
+ const regionNames = new Intl.DisplayNames([lang], { type: 'region' });
52
+ return regionNames.of(code)
53
+ }
54
+
55
+ export const countryCodes = [
56
+ "AF", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD",
57
+ "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI",
58
+ "KH", "CM", "CA", "CV", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI",
59
+ "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "SZ", "ET", "FK",
60
+ "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU",
61
+ "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM",
62
+ "IL", "IT", "CI", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KP", "KR", "KW", "KG", "LA", "LA", "LV", "LB",
63
+ "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MK", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU",
64
+ "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "AN", "NC", "NZ",
65
+ "NI", "NE", "NG", "NU", "NF", "MP", "NO", "OM", "PK", "PW", "PS", "PA", "PG", "PY", "PE", "PH", "PN", "PL",
66
+ "PT", "PR", "QA", "RW", "RE", "RO", "RU", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA",
67
+ "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ",
68
+ "SZ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV",
69
+ "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VN", "VG", "VI", "WF", "EH", "YE", "ZM",
70
+ "ZW", "AX",
71
+ ]
package/src/index.ts CHANGED
@@ -1,9 +1,11 @@
1
- export * from './@types';
2
1
  export * from './@state.types'
2
+ export * from './@types';
3
3
  export * from './array';
4
+ export * from './browser';
4
5
  export * from './clone';
5
6
  export * from './equality';
6
7
  export * from './general';
8
+ export * from './geo';
7
9
  export * from './http';
8
10
  export * from './iterate';
9
11
  export * from './number';
package/src/number.ts CHANGED
@@ -7,14 +7,14 @@ import { arrToBoolDict, Dict, isType, num } from '.';
7
7
  * @param min - whole number & `< max`
8
8
  * @param max - whole number & `> min`
9
9
  */
10
- export const randInt = (min: number, max: number) =>
10
+ export const numRandInt = (min: number, max: number) =>
11
11
  Math.floor(Math.random() * ((max + 1) - min)) + min;
12
12
 
13
- export const rand = (min: number, max: number) =>
13
+ export const numRand = (min: number, max: number) =>
14
14
  Math.random() * (max - min) + min;
15
15
 
16
16
  /** Takes an array of numbers and finds and average */
17
- export const average = (nArr: number[]) =>
17
+ export const numAvg = (nArr: number[]) =>
18
18
  nArr.reduce((a = 0, b = 0) => a + b, 0) / nArr.length;
19
19
 
20
20
  /**
@@ -42,7 +42,7 @@ export function newNum(
42
42
  arrToBoolDict(prevNum) : { [prevNum]: true };
43
43
 
44
44
  do {
45
- num = randInt(min, max);
45
+ num = numRandInt(min, max);
46
46
  loop++;
47
47
 
48
48
  if (loop > 1_000_000) {
@@ -54,6 +54,8 @@ export function newNum(
54
54
  return num;
55
55
  }
56
56
 
57
- export const getProgress = (
57
+ export const numGetProgress = (
58
58
  total: num, nOfDone: num, fractionDigits = 2
59
- ) => (nOfDone / total * 100).toFixed(fractionDigits);
59
+ ) => (nOfDone / total * 100).toFixed(fractionDigits);
60
+
61
+ export const numSum = (nArr: num[]) => nArr.reduce((acc, n) => acc + n, 0);