nhb-toolbox 4.0.76 → 4.0.88

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.
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Finder = void 0;
4
+ /**
5
+ * The `Finder` class performs optimized searching on arrays.
6
+ * It supports binary search, fuzzy search, and smart caching with TTL.
7
+ */
8
+ class Finder {
9
+ static DEFAULT_TTL = 1000 * 60 * 5;
10
+ #cache = new Map();
11
+ #sortedCache = new Map();
12
+ #ttl;
13
+ #items;
14
+ /**
15
+ * * Creates a new `Finder` instance.
16
+ *
17
+ * @param ttl Time-to-live (in milliseconds) for cached search results. Defaults to {@link Finder.DEFAULT_TTL 5 Minutes}.
18
+ * @param items The initial array of items to be used for searching.
19
+ */
20
+ constructor(ttl = Finder.DEFAULT_TTL, items) {
21
+ this.#ttl = ttl;
22
+ this.#items = items;
23
+ }
24
+ /**
25
+ * @instance Clears cache globally or for a specific key.
26
+ * @param key Optional key to clear only a specific cache entry.
27
+ */
28
+ clearCache(key) {
29
+ if (key) {
30
+ this.#cache.delete(key);
31
+ }
32
+ else {
33
+ this.#cache.clear();
34
+ }
35
+ }
36
+ /**
37
+ * @instance Finds all items that match the provided matcher using optional caching or fuzzy logic.
38
+ * @param matcher The value to match against.
39
+ * @param keySelector Property key or selector function.
40
+ * @param options Optional settings for search behavior and source list.
41
+ */
42
+ findAll(matcher, keySelector, options) {
43
+ const { fuzzy = false, needSorting = true, cacheKey = 'finder-cache', forceBinary = false, caseInsensitive = true, data, } = options ?? {};
44
+ const source = typeof data === 'function' ? data() : (data ?? this.#items);
45
+ if (!source?.length)
46
+ return [];
47
+ const rawGetKey = typeof keySelector === 'function' ? keySelector : ((item) => item[keySelector]);
48
+ const getKey = Finder.#createMemoizedKeyGetter(rawGetKey);
49
+ const normalizedMatcher = caseInsensitive && typeof matcher === 'string' ?
50
+ matcher.toLowerCase()
51
+ : matcher;
52
+ if (cacheKey) {
53
+ const entry = this.#cache.get(cacheKey);
54
+ if (entry && Date.now() - entry.timestamp < this.#ttl) {
55
+ return entry.result;
56
+ }
57
+ else {
58
+ this.#cache.delete(cacheKey);
59
+ }
60
+ }
61
+ let results = [];
62
+ if (source.length < 100 && !forceBinary) {
63
+ results = source.filter((item) => {
64
+ const key = getKey(item);
65
+ const value = caseInsensitive && typeof key === 'string' ?
66
+ key.toLowerCase()
67
+ : key;
68
+ return value === normalizedMatcher;
69
+ });
70
+ }
71
+ else {
72
+ const sorted = needSorting ?
73
+ this.#sortAndCache(source, getKey, cacheKey)
74
+ : source;
75
+ const firstMatch = this.binarySearch(sorted, normalizedMatcher, getKey, caseInsensitive);
76
+ if (firstMatch) {
77
+ const baseKey = getKey(firstMatch);
78
+ const base = caseInsensitive && typeof baseKey === 'string' ?
79
+ baseKey.toLowerCase()
80
+ : baseKey;
81
+ results = sorted.filter((item) => {
82
+ const key = getKey(item);
83
+ const value = caseInsensitive && typeof key === 'string' ?
84
+ key.toLowerCase()
85
+ : key;
86
+ return value === base;
87
+ });
88
+ }
89
+ }
90
+ if (!results.length && fuzzy && typeof normalizedMatcher === 'string') {
91
+ results = source.filter((item) => {
92
+ const rawKey = getKey(item);
93
+ const key = caseInsensitive && typeof rawKey === 'string' ?
94
+ rawKey.toLowerCase()
95
+ : String(rawKey);
96
+ return this.#match(key, normalizedMatcher);
97
+ });
98
+ }
99
+ if (cacheKey) {
100
+ this.#cache.set(cacheKey, {
101
+ result: results,
102
+ timestamp: Date.now(),
103
+ });
104
+ }
105
+ return results;
106
+ }
107
+ /**
108
+ * @instance Finds first matching item that matches the provided matcher using optional caching or fuzzy logic.
109
+ * @param matcher The value to match.
110
+ * @param keySelector Property key or selector function.
111
+ * @param options Optional behavior flags and item source.
112
+ */
113
+ findOne(matcher, keySelector, options) {
114
+ const { fuzzy = false, needSorting = true, cacheKey = 'finder-cache', forceBinary = false, caseInsensitive = true, data, } = options ?? {};
115
+ const source = typeof data === 'function' ? data() : (data ?? this.#items);
116
+ if (!source?.length)
117
+ return undefined;
118
+ const rawGetKey = typeof keySelector === 'function' ? keySelector : ((item) => item[keySelector]);
119
+ const getKey = Finder.#createMemoizedKeyGetter(rawGetKey);
120
+ const normalizedMatcher = caseInsensitive && typeof matcher === 'string' ?
121
+ matcher.toLowerCase()
122
+ : matcher;
123
+ if (cacheKey) {
124
+ const entry = this.#cache.get(cacheKey);
125
+ if (entry && Date.now() - entry.timestamp < this.#ttl) {
126
+ return entry.result[0];
127
+ }
128
+ else {
129
+ this.#cache.delete(cacheKey);
130
+ }
131
+ }
132
+ let result;
133
+ if (source.length < 100 && !forceBinary) {
134
+ result = source.find((item) => {
135
+ const key = getKey(item);
136
+ const value = caseInsensitive && typeof key === 'string' ?
137
+ key.toLowerCase()
138
+ : key;
139
+ return value === normalizedMatcher;
140
+ });
141
+ }
142
+ else {
143
+ result = this.binarySearch(needSorting ?
144
+ this.#sortAndCache(source, getKey, cacheKey)
145
+ : source, normalizedMatcher, getKey, caseInsensitive);
146
+ }
147
+ if (!result && fuzzy && typeof normalizedMatcher === 'string') {
148
+ return this.fuzzySearch(source, normalizedMatcher, getKey, caseInsensitive);
149
+ }
150
+ if (cacheKey && result) {
151
+ this.#cache.set(cacheKey, {
152
+ result: [result],
153
+ timestamp: Date.now(),
154
+ });
155
+ }
156
+ return result;
157
+ }
158
+ /**
159
+ * @instance Asynchronous variant of `findAll` that accepts a promise-based data supplier.
160
+ * @param supplier Async function resolving the items list.
161
+ * @param matcher The value to match.
162
+ * @param keySelector Property key or selector function.
163
+ * @param options Optional settings for search behavior and cache.
164
+ */
165
+ async findAllAsync(supplier, matcher, keySelector, options) {
166
+ const items = await supplier();
167
+ return this.findAll(matcher, keySelector, { ...options, data: items });
168
+ }
169
+ /**
170
+ * @instance Asynchronous variant of `findOne`.
171
+ * @param supplier Async function resolving the items list.
172
+ * @param matcher The value to match.
173
+ * @param keySelector Property key or selector function.
174
+ * @param options Optional settings for behavior and cache.
175
+ */
176
+ async findOneAsync(supplier, matcher, keySelector, options) {
177
+ const items = await supplier();
178
+ return this.findOne(matcher, keySelector, { ...options, data: items });
179
+ }
180
+ /**
181
+ * @instance Performs a binary search on a sorted array using a custom key selector.
182
+ *
183
+ * @param sorted - The sorted array of items to search.
184
+ * @param matcher - The value to search for.
185
+ * @param keySelector - A function that extracts the comparable key from each item.
186
+ * @param caseInsensitive - Whether to compare string keys ignoring case.
187
+ * @returns The first matching item if found; otherwise, undefined.
188
+ */
189
+ binarySearch(sorted, matcher, keySelector, caseInsensitive) {
190
+ let min = 0, max = sorted.length - 1;
191
+ while (min <= max) {
192
+ const mid = Math.floor((min + max) / 2);
193
+ const midKey = keySelector(sorted[mid]);
194
+ const key = caseInsensitive && typeof midKey === 'string' ?
195
+ midKey.toLowerCase()
196
+ : midKey;
197
+ if (key === matcher)
198
+ return sorted[mid];
199
+ if (key < matcher)
200
+ min = mid + 1;
201
+ else
202
+ max = mid - 1;
203
+ }
204
+ return undefined;
205
+ }
206
+ /**
207
+ * @instance Performs a fuzzy search on an array by matching characters in sequence.
208
+ *
209
+ * @param array - The array of items to search.
210
+ * @param matcher - The fuzzy search string to match against.
211
+ * @param keySelector - A function that extracts the key to search from each item.
212
+ * @param caseInsensitive - Whether to compare ignoring case for string values.
213
+ * @returns The first fuzzy-matching item if found; otherwise, undefined.
214
+ */
215
+ fuzzySearch(array, matcher, keySelector, caseInsensitive) {
216
+ for (const item of array) {
217
+ const rawKey = keySelector(item);
218
+ const key = caseInsensitive && typeof rawKey === 'string' ?
219
+ rawKey.toLowerCase()
220
+ : String(rawKey);
221
+ if (this.#match(key, matcher))
222
+ return item;
223
+ }
224
+ return undefined;
225
+ }
226
+ /**
227
+ * @private Checks if the characters in the target string appear in order within the source string.
228
+ * @param source Source string to search within.
229
+ * @param target Target string to match against the source string.
230
+ * @returns True if the target string is a fuzzy match within the source string; otherwise, false.
231
+ */
232
+ #match(source, target) {
233
+ let i = 0;
234
+ for (const char of target) {
235
+ i = source.indexOf(char, i);
236
+ if (i === -1)
237
+ return false;
238
+ i++;
239
+ }
240
+ return true;
241
+ }
242
+ /**
243
+ * @private Sorts an array and caches the result for a specified time-to-live (TTL).
244
+ * @param data Data to sort and cache.
245
+ * @param getKey Key extraction function.
246
+ * @param cacheKey Optional cache key for storing the result.
247
+ * @returns
248
+ */
249
+ #sortAndCache(data, getKey, cacheKey) {
250
+ if (cacheKey) {
251
+ const entry = this.#sortedCache.get(cacheKey);
252
+ if (entry && Date.now() - entry.timestamp < this.#ttl) {
253
+ return entry.result;
254
+ }
255
+ else {
256
+ this.#sortedCache.delete(cacheKey);
257
+ }
258
+ }
259
+ const sorted = [...data].sort((a, b) => {
260
+ const keyA = getKey(a);
261
+ const keyB = getKey(b);
262
+ return (keyA < keyB ? -1
263
+ : keyA > keyB ? 1
264
+ : 0);
265
+ });
266
+ if (cacheKey) {
267
+ this.#sortedCache.set(cacheKey, {
268
+ result: sorted,
269
+ timestamp: Date.now(),
270
+ });
271
+ }
272
+ return sorted;
273
+ }
274
+ /**
275
+ * @static @private Creates a memoized version of a key extractor.
276
+ * @param getKey Original key extraction function
277
+ */
278
+ static #createMemoizedKeyGetter(getKey) {
279
+ const cache = new Map();
280
+ return (item) => {
281
+ if (cache.has(item))
282
+ return cache.get(item);
283
+ const key = getKey(item);
284
+ cache.set(item, key);
285
+ return key;
286
+ };
287
+ }
288
+ }
289
+ exports.Finder = Finder;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Color = void 0;
4
4
  const convert_1 = require("./convert");
5
+ const css_colors_1 = require("./css-colors");
5
6
  const helpers_1 = require("./helpers");
6
7
  const random_1 = require("./random");
7
8
  const hsl = (0, random_1.generateRandomHSLColor)();
@@ -9,7 +10,7 @@ const { hex, rgb } = (0, convert_1.convertColorCode)(hsl);
9
10
  /**
10
11
  * * Class representing a color and its conversions among `Hex`, `Hex8` `RGB`, `RGBA`, `HSL` and `HSLA` formats.
11
12
  * * It has 13 instance methods to manipulate and play with the color values.
12
- * * It has 6 static methods that can be used to check if a color is in `Hex`, `Hex8` `RGB`, `RGBA`, `HSL` or `HSLA` format.
13
+ * * It has 7 static methods that can be used to check if a color is in `Hex`, `Hex8` `RGB`, `RGBA`, `HSL` or `HSLA` format.
13
14
  *
14
15
  * @property hex - The color in `Hex` format.
15
16
  * @property hex8 - The color in `Hex8` format.
@@ -44,7 +45,7 @@ class Color {
44
45
  * - It has 13 instance methods to manipulate and play with the color values.
45
46
  * - Use static methods like `Color.isHex6(color)` to validate color strings.
46
47
  *
47
- * @param toConvert - An optional input color string in any supported format (`Hex`, `Hex8`, `RGB`, `RGBA`, `HSL`, or `HSLA`) to convert in all other (includes the current format) formats.
48
+ * @param color - An optional input color string in any supported format (`Hex`, `Hex8`, `RGB`, `RGBA`, `HSL`, or `HSLA`) to convert in all other (includes the current format) formats.
48
49
  *
49
50
  * @example
50
51
  * // Convert an existing Hex color to all other formats
@@ -68,31 +69,42 @@ class Color {
68
69
  *
69
70
  * @returns Instance of `Color`.
70
71
  */
71
- constructor(toConvert) {
72
- if (toConvert) {
73
- const colors = this.#convertColorToOthers(toConvert);
74
- if ('hex8' in colors) {
75
- // Extract alpha color values (Hex8, RGBA, HSLA)
76
- const rgbaValues = (0, helpers_1._extractAlphaColorValues)(colors.rgba);
77
- const hslaValues = (0, helpers_1._extractAlphaColorValues)(colors.hsla);
78
- this.hex = colors.hex8.toUpperCase().slice(0, 7);
79
- this.hex8 = colors.hex8.toUpperCase();
80
- this.rgb = `rgb(${rgbaValues[0]}, ${rgbaValues[1]}, ${rgbaValues[2]})`;
81
- this.rgba = colors.rgba;
82
- this.hsl = `hsl(${hslaValues[0]}, ${hslaValues[1]}%, ${hslaValues[2]}%)`;
83
- this.hsla = colors.hsla;
72
+ constructor(color) {
73
+ if (color) {
74
+ if (Color.isCSSColor(color)) {
75
+ const newColor = new Color(css_colors_1.CSS_COLORS[color]);
76
+ this.hex = newColor.hex;
77
+ this.hex8 = newColor.hex8;
78
+ this.rgb = newColor.rgb;
79
+ this.rgba = newColor.rgba;
80
+ this.hsl = newColor.hsl;
81
+ this.hsla = newColor.hsla;
84
82
  }
85
83
  else {
86
- // Extract solid color values (Hex, RGB, HSL)
87
- const rgbValues = (0, helpers_1._extractSolidColorValues)(colors.rgb);
88
- const hslValues = (0, helpers_1._extractSolidColorValues)(colors.hsl);
89
- this.hex = colors.hex.toUpperCase();
90
- this.hex8 =
91
- `${colors.hex.toUpperCase()}${(0, helpers_1._convertOpacityToHex)(100)}`;
92
- this.rgb = colors.rgb;
93
- this.rgba = `rgba(${rgbValues[0]}, ${rgbValues[1]}, ${rgbValues[2]}, 1)`;
94
- this.hsl = colors.hsl;
95
- this.hsla = `hsla(${hslValues[0]}, ${hslValues[1]}%, ${hslValues[2]}%, 1)`;
84
+ const colors = this.#convertColorToOthers(color);
85
+ if ('hex8' in colors) {
86
+ // Extract alpha color values (Hex8, RGBA, HSLA)
87
+ const rgbaValues = (0, helpers_1._extractAlphaColorValues)(colors.rgba);
88
+ const hslaValues = (0, helpers_1._extractAlphaColorValues)(colors.hsla);
89
+ this.hex = colors.hex8.toUpperCase().slice(0, 7);
90
+ this.hex8 = colors.hex8.toUpperCase();
91
+ this.rgb = `rgb(${rgbaValues[0]}, ${rgbaValues[1]}, ${rgbaValues[2]})`;
92
+ this.rgba = colors.rgba;
93
+ this.hsl = `hsl(${hslaValues[0]}, ${hslaValues[1]}%, ${hslaValues[2]}%)`;
94
+ this.hsla = colors.hsla;
95
+ }
96
+ else {
97
+ // Extract solid color values (Hex, RGB, HSL)
98
+ const rgbValues = (0, helpers_1._extractSolidColorValues)(colors.rgb);
99
+ const hslValues = (0, helpers_1._extractSolidColorValues)(colors.hsl);
100
+ this.hex = colors.hex.toUpperCase();
101
+ this.hex8 =
102
+ `${colors.hex.toUpperCase()}${(0, helpers_1._convertOpacityToHex)(100)}`;
103
+ this.rgb = colors.rgb;
104
+ this.rgba = `rgba(${rgbValues[0]}, ${rgbValues[1]}, ${rgbValues[2]}, 1)`;
105
+ this.hsl = colors.hsl;
106
+ this.hsla = `hsla(${hslValues[0]}, ${hslValues[1]}%, ${hslValues[2]}%, 1)`;
107
+ }
96
108
  }
97
109
  }
98
110
  else {
@@ -370,6 +382,23 @@ class Color {
370
382
  static isHSLA(color) {
371
383
  return (0, helpers_1._isHSLA)(color);
372
384
  }
385
+ /**
386
+ * @static Checks if a color is a valid CSS color name.
387
+ * - This method checks against a predefined list of CSS color names.
388
+ * - It does not validate format types like Hex, RGB, or HSL or their alpha channels.
389
+ *
390
+ * @param color - The color to check.
391
+ * @returns `true` if the color is a valid CSS color name, `false` otherwise.
392
+ */
393
+ static isCSSColor(color) {
394
+ return (!Color.isHex6(color) &&
395
+ !Color.isHex8(color) &&
396
+ !(0, helpers_1._isRGB)(color) &&
397
+ !(0, helpers_1._isRGBA)(color) &&
398
+ !(0, helpers_1._isHSL)(color) &&
399
+ !(0, helpers_1._isHSLA)(color) &&
400
+ color in css_colors_1.CSS_COLORS);
401
+ }
373
402
  /**
374
403
  * @private Converts the given color to all other formats while preserving the original.
375
404
  *
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CSS_COLORS = void 0;
4
+ exports.CSS_COLORS = {
5
+ black: '#000000',
6
+ silver: '#C0C0C0',
7
+ gray: '#808080',
8
+ white: '#FFFFFF',
9
+ maroon: '#800000',
10
+ red: '#FF0000',
11
+ purple: '#800080',
12
+ fuchsia: '#FF00FF',
13
+ green: '#008000',
14
+ lime: '#00FF00',
15
+ olive: '#808000',
16
+ yellow: '#FFFF00',
17
+ navy: '#000080',
18
+ blue: '#0000FF',
19
+ teal: '#008080',
20
+ aqua: '#00FFFF',
21
+ aliceblue: '#F0F8FF',
22
+ antiquewhite: '#FAEBD7',
23
+ aquamarine: '#7FFFD4',
24
+ azure: '#F0FFFF',
25
+ beige: '#F5F5DC',
26
+ bisque: '#FFE4C4',
27
+ blanchedalmond: '#FFEBCD',
28
+ blueviolet: '#8A2BE2',
29
+ brown: '#A52A2A',
30
+ burlywood: '#DEB887',
31
+ cadetblue: '#5F9EA0',
32
+ chartreuse: '#7FFF00',
33
+ chocolate: '#D2691E',
34
+ coral: '#FF7F50',
35
+ cornflowerblue: '#6495ED',
36
+ cornsilk: '#FFF8DC',
37
+ crimson: '#DC143C',
38
+ cyan: '#00FFFF',
39
+ darkblue: '#00008B',
40
+ darkcyan: '#008B8B',
41
+ darkgoldenrod: '#B8860B',
42
+ darkgray: '#A9A9A9',
43
+ darkgreen: '#006400',
44
+ darkgrey: '#A9A9A9',
45
+ darkkhaki: '#BDB76B',
46
+ darkmagenta: '#8B008B',
47
+ darkolivegreen: '#556B2F',
48
+ darkorange: '#FF8C00',
49
+ darkorchid: '#9932CC',
50
+ darkred: '#8B0000',
51
+ darksalmon: '#E9967A',
52
+ darkseagreen: '#8FBC8F',
53
+ darkslateblue: '#483D8B',
54
+ darkslategray: '#2F4F4F',
55
+ darkslategrey: '#2F4F4F',
56
+ darkturquoise: '#00CED1',
57
+ darkviolet: '#9400D3',
58
+ deeppink: '#FF1493',
59
+ deepskyblue: '#00BFFF',
60
+ dimgray: '#696969',
61
+ dimgrey: '#696969',
62
+ dodgerblue: '#1E90FF',
63
+ firebrick: '#B22222',
64
+ floralwhite: '#FFFAF0',
65
+ forestgreen: '#228B22',
66
+ gainsboro: '#DCDCDC',
67
+ ghostwhite: '#F8F8FF',
68
+ gold: '#FFD700',
69
+ goldenrod: '#DAA520',
70
+ greenyellow: '#ADFF2F',
71
+ grey: '#808080',
72
+ honeydew: '#F0FFF0',
73
+ hotpink: '#FF69B4',
74
+ indianred: '#CD5C5C',
75
+ indigo: '#4B0082',
76
+ ivory: '#FFFFF0',
77
+ khaki: '#F0E68C',
78
+ lavender: '#E6E6FA',
79
+ lavenderblush: '#FFF0F5',
80
+ lawngreen: '#7CFC00',
81
+ lemonchiffon: '#FFFACD',
82
+ lightblue: '#ADD8E6',
83
+ lightcoral: '#F08080',
84
+ lightcyan: '#E0FFFF',
85
+ lightgoldenrodyellow: '#FAFAD2',
86
+ lightgray: '#D3D3D3',
87
+ lightgreen: '#90EE90',
88
+ lightgrey: '#D3D3D3',
89
+ lightpink: '#FFB6C1',
90
+ lightsalmon: '#FFA07A',
91
+ lightseagreen: '#20B2AA',
92
+ lightskyblue: '#87CEFA',
93
+ lightslategray: '#778899',
94
+ lightslategrey: '#778899',
95
+ lightsteelblue: '#B0C4DE',
96
+ lightyellow: '#FFFFE0',
97
+ limegreen: '#32CD32',
98
+ linen: '#FAF0E6',
99
+ magenta: '#FF00FF',
100
+ mediumaquamarine: '#66CDAA',
101
+ mediumblue: '#0000CD',
102
+ mediumorchid: '#BA55D3',
103
+ mediumpurple: '#9370DB',
104
+ mediumseagreen: '#3CB371',
105
+ mediumslateblue: '#7B68EE',
106
+ mediumspringgreen: '#00FA9A',
107
+ mediumturquoise: '#48D1CC',
108
+ mediumvioletred: '#C71585',
109
+ midnightblue: '#191970',
110
+ mintcream: '#F5FFFA',
111
+ mistyrose: '#FFE4E1',
112
+ moccasin: '#FFE4B5',
113
+ navajowhite: '#FFDEAD',
114
+ oldlace: '#FDF5E6',
115
+ olivedrab: '#6B8E23',
116
+ orange: '#FFA500',
117
+ orangered: '#FF4500',
118
+ orchid: '#DA70D6',
119
+ palegoldenrod: '#EEE8AA',
120
+ palegreen: '#98FB98',
121
+ paleturquoise: '#AFEEEE',
122
+ palevioletred: '#DB7093',
123
+ papayawhip: '#FFEFD5',
124
+ peachpuff: '#FFDAB9',
125
+ peru: '#CD853F',
126
+ pink: '#FFC0CB',
127
+ plum: '#DDA0DD',
128
+ powderblue: '#B0E0E6',
129
+ rebeccapurple: '#663399',
130
+ rosybrown: '#BC8F8F',
131
+ royalblue: '#4169E1',
132
+ saddlebrown: '#8B4513',
133
+ salmon: '#FA8072',
134
+ sandybrown: '#F4A460',
135
+ seagreen: '#2E8B57',
136
+ seashell: '#FFF5EE',
137
+ sienna: '#A0522D',
138
+ skyblue: '#87CEEB',
139
+ slateblue: '#6A5ACD',
140
+ slategray: '#708090',
141
+ slategrey: '#708090',
142
+ snow: '#FFFAFA',
143
+ springgreen: '#00FF7F',
144
+ steelblue: '#4682B4',
145
+ tan: '#D2B48C',
146
+ thistle: '#D8BFD8',
147
+ tomato: '#FF6347',
148
+ transparent: '#00000000',
149
+ turquoise: '#40E0D0',
150
+ violet: '#EE82EE',
151
+ wheat: '#F5DEB3',
152
+ whitesmoke: '#F5F5F5',
153
+ yellowgreen: '#9ACD32',
154
+ grape: '#CC5DE8',
155
+ dark: '#3B3B3B',
156
+ volcano: '#FA541C',
157
+ geekblue: '#2F54EB',
158
+ success: '#4CAF50',
159
+ info: '#2196F3',
160
+ warning: '#FF9800',
161
+ error: '#F44336',
162
+ };
package/dist/cjs/index.js CHANGED
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getFibonacciNumbers = exports.getFibonacci = exports.generateFibonacci = exports.fibonacciGenerator = exports.calculatePercentage = exports.UnitConverter = exports.Unit = exports.Currency = exports.sumOfNumbers = exports.sumNumbers = exports.sumDigits = exports.reverseNumber = exports.getSumOfNumbers = exports.getRandomNumber = exports.getAverageOfNumbers = exports.getAverage = exports.convertToDecimal = exports.calculateLCM = exports.calculateLCD = exports.calculateHCF = exports.calculateGCD = exports.calculateAverage = exports.wordCount = exports.levenshteinDistance = exports.getLevenshteinDistance = exports.extractNumbersFromString = exports.countWordsInString = exports.countWords = exports.slugifyString = exports.reverseString = exports.replaceAllInString = exports.normalizeString = exports.maskString = exports.formatWithPlural = exports.formatUnitWithPlural = exports.formatNumberWithPluralUnit = exports.extractURLs = exports.extractEmails = exports.convertStringCase = exports.isSnakeCase = exports.isPascalCase = exports.isPalindrome = exports.isKebabCase = exports.isEmojiOnly = exports.isCamelCase = exports.generateAnagrams = exports.truncateString = exports.trimString = exports.generateRandomID = exports.capitalizeString = void 0;
4
4
  exports.convertHslaToRgba = exports.convertHslaToHex8 = exports.convertHexToRgb = exports.convertHexToHsl = exports.convertHex8ToRgba = exports.convertHex8ToHsla = exports.convertColorCode = exports.generateRandomHSLColor = exports.generateRandomColorInHexRGB = exports.getColorForInitial = exports.getNumbersInRange = exports.roundToNearestInterval = exports.roundToNearest = exports.roundNumberToNearestInterval = exports.roundNumber = exports.numberToOrdinal = exports.getRandomFloat = exports.getRandomDecimal = exports.getOrdinalNumber = exports.getOrdinal = exports.formatCurrency = exports.convertToOrdinal = exports.convertNumberToOrdinal = exports.convertNumberToCurrency = exports.clampNumber = exports.cardinalToOrdinal = exports.isPrimeNumber = exports.isPrime = exports.getPrimeNumbers = exports.findPrimeNumbers = exports.numberToWords = exports.numericToRoman = exports.convertToRomanNumerals = exports.convertNumberToWords = exports.isPerfectSquare = exports.isParOfFibonacciSeries = exports.isParOfFibonacci = exports.isOddNumber = exports.isOdd = exports.isMultiple = exports.isInvalidNumbers = exports.isFibonacci = exports.isEvenNumber = exports.isEven = exports.areInvalidNumbers = exports.getNthFibonacci = exports.getMemoizedFibonacciSeries = exports.getMemoizedFibonacci = exports.getFibonacciSeriesMemo = exports.getFibonacciSeries = void 0;
5
- exports.extractDuplicatesFromArray = exports.extractDuplicates = exports.createOptionsArray = exports.sortAnArray = exports.shuffleArray = exports.isValidEmptyArray = exports.isInvalidOrEmptyArray = exports.getLastArrayElement = exports.flattenArray = exports.filterArrayOfObjects = exports.minutesToUTCOffset = exports.getTotalMinutesFromUTC = exports.getTotalMinutesFromTime = exports.getTotalMinutes = exports.getTimeStringFromUTC = exports.getMinutesFromUTC = exports.getCurrentTime = exports.getCurrentDateTime = exports.formatUTCOffset = exports.extractTotalMinutesFromTime = exports.extractTimeStringFromUTC = exports.extractTimeFromUTC = exports.extractMinutesFromUTC = exports.extractHourMinute = exports.convertMinutesToUTCOffset = exports.chronusts = exports.chronusjs = exports.chronus = exports.chronosts = exports.chronosjs = exports.chronos = exports.Chronus = exports.Chronos = exports.isValidUTCOffSet = exports.isValidUTC = exports.isValidTimeString = exports.isValidTime = exports.isLeapYear = exports.greet = exports.getGreeting = exports.generateGreeting = exports.Colour = exports.Color = exports.convertRgbToRgba = exports.convertRgbToHsl = exports.convertRgbToHex = exports.convertRgbaToHsla = exports.convertRgbaToHex8 = exports.convertHslToRgb = exports.convertHslToHex = void 0;
6
- exports.remapObjectFields = exports.remapFields = exports.pickObjectFieldsByCondition = exports.pickObjectFields = exports.pickFieldsByCondition = exports.pickFields = exports.convertObjectValues = exports.sanitizeData = exports.parseStringifiedValues = exports.parseStringifiedPrimitives = exports.parseStringifiedObjectValues = exports.parsePrimitives = exports.parsePrimitiveData = exports.parseObjectValues = exports.parseJsonToObject = exports.mergeObjects = exports.mergeAndFlattenObjects = exports.flattenObjectKeyValue = exports.flattenObjectDotNotation = exports.extractUpdatedFields = exports.extractUpdatedAndNewFields = exports.extractNewFields = exports.countObjectFields = exports.cloneObject = exports.isValidFormData = exports.isOriginFileObj = exports.isFileUpload = exports.isFileList = exports.isFileArray = exports.isCustomFileArray = exports.isCustomFile = exports.serializeForm = exports.parseFormData = exports.createFormData = exports.createControlledFormData = exports.convertIntoFormData = exports.naturalSortForString = exports.naturalSort = exports.compareSorter = exports.compareNaturally = exports.splitArray = exports.rotateArray = exports.removeDuplicatesFromArray = exports.removeDuplicates = exports.moveArrayElement = exports.getMissingElements = exports.getDuplicatesFromArray = exports.getDuplicates = exports.findMissingElements = exports.extractMissingElements = void 0;
7
- exports.isDate = exports.isBigInt = exports.isArrayWithLength = exports.isArrayOfType = exports.isArray = exports.doesReturnPromise = exports.isUndefined = exports.isTruthy = exports.isSymbol = exports.isString = exports.isPrimitive = exports.isPositiveInteger = exports.isNumber = exports.isNull = exports.isNonEmptyString = exports.isInteger = exports.isFalsy = exports.isBoolean = exports.throttleAction = exports.parsePrimitivesDeep = exports.parseJsonDeep = exports.parseJSON = exports.isDeepEqual = exports.getStaticMethodsCount = exports.getStaticMethodNames = exports.getInstanceMethodsCount = exports.getInstanceMethodNames = exports.getClassDetails = exports.deepParsePrimitives = exports.debounceAction = exports.countStaticMethods = exports.countInstanceMethods = exports.convertArrayToString = exports.saveToSessionStorage = exports.saveToLocalStorage = exports.removeFromSessionStorage = exports.removeFromLocalStorage = exports.getFromSessionStorage = exports.getFromLocalStorage = exports.toggleFullScreen = exports.smoothScrollTo = exports.copyToClipboard = exports.updateQueryParam = exports.getQueryStringAsObject = exports.queryStringToObject = exports.parseQueryString = exports.getQueryParams = exports.generateQueryParams = exports.formatQueryParams = exports.createQueryParams = void 0;
8
- exports.isValidURL = exports.isValidEmail = exports.isUUID = exports.isURL = exports.isPhoneNumber = exports.isNumericString = exports.isNodeEnvironment = exports.isNodeENV = exports.isNode = exports.isIPAddress = exports.isExpectedNodeENV = exports.isEnvironment = exports.isEmailArray = exports.isEmail = exports.isDateString = exports.isBrowser = exports.isBase64 = exports.isValidSet = exports.isValidObject = exports.isValidMap = exports.isValidJSON = exports.isValidArray = exports.isSet = exports.isReturningPromise = exports.isRegularExpression = exports.isRegExp = exports.isPromise = exports.isObjectWithKeys = exports.isObjectEmpty = exports.isObject = exports.isNotEmptyObject = exports.isMethodDescriptor = exports.isMethod = exports.isMap = exports.isJSONObject = exports.isJSON = exports.isFunction = exports.isError = exports.isEmptyObjectGuard = exports.isEmptyObject = void 0;
5
+ exports.extractDuplicates = exports.createOptionsArray = exports.sortAnArray = exports.Finder = exports.shuffleArray = exports.isValidEmptyArray = exports.isInvalidOrEmptyArray = exports.getLastArrayElement = exports.flattenArray = exports.filterArrayOfObjects = exports.minutesToUTCOffset = exports.getTotalMinutesFromUTC = exports.getTotalMinutesFromTime = exports.getTotalMinutes = exports.getTimeStringFromUTC = exports.getMinutesFromUTC = exports.getCurrentTime = exports.getCurrentDateTime = exports.formatUTCOffset = exports.extractTotalMinutesFromTime = exports.extractTimeStringFromUTC = exports.extractTimeFromUTC = exports.extractMinutesFromUTC = exports.extractHourMinute = exports.convertMinutesToUTCOffset = exports.chronusts = exports.chronusjs = exports.chronus = exports.chronosts = exports.chronosjs = exports.chronos = exports.Chronus = exports.Chronos = exports.isValidUTCOffSet = exports.isValidUTC = exports.isValidTimeString = exports.isValidTime = exports.isLeapYear = exports.greet = exports.getGreeting = exports.generateGreeting = exports.Colour = exports.Color = exports.convertRgbToRgba = exports.convertRgbToHsl = exports.convertRgbToHex = exports.convertRgbaToHsla = exports.convertRgbaToHex8 = exports.convertHslToRgb = exports.convertHslToHex = void 0;
6
+ exports.remapFields = exports.pickObjectFieldsByCondition = exports.pickObjectFields = exports.pickFieldsByCondition = exports.pickFields = exports.convertObjectValues = exports.sanitizeData = exports.parseStringifiedValues = exports.parseStringifiedPrimitives = exports.parseStringifiedObjectValues = exports.parsePrimitives = exports.parsePrimitiveData = exports.parseObjectValues = exports.parseJsonToObject = exports.mergeObjects = exports.mergeAndFlattenObjects = exports.flattenObjectKeyValue = exports.flattenObjectDotNotation = exports.extractUpdatedFields = exports.extractUpdatedAndNewFields = exports.extractNewFields = exports.countObjectFields = exports.cloneObject = exports.isValidFormData = exports.isOriginFileObj = exports.isFileUpload = exports.isFileList = exports.isFileArray = exports.isCustomFileArray = exports.isCustomFile = exports.serializeForm = exports.parseFormData = exports.createFormData = exports.createControlledFormData = exports.convertIntoFormData = exports.naturalSortForString = exports.naturalSort = exports.compareSorter = exports.compareNaturally = exports.splitArray = exports.rotateArray = exports.removeDuplicatesFromArray = exports.removeDuplicates = exports.moveArrayElement = exports.getMissingElements = exports.getDuplicatesFromArray = exports.getDuplicates = exports.findMissingElements = exports.extractMissingElements = exports.extractDuplicatesFromArray = void 0;
7
+ exports.isBigInt = exports.isArrayWithLength = exports.isArrayOfType = exports.isArray = exports.doesReturnPromise = exports.isUndefined = exports.isTruthy = exports.isSymbol = exports.isString = exports.isPrimitive = exports.isPositiveInteger = exports.isNumber = exports.isNull = exports.isNonEmptyString = exports.isInteger = exports.isFalsy = exports.isBoolean = exports.throttleAction = exports.parsePrimitivesDeep = exports.parseJsonDeep = exports.parseJSON = exports.isDeepEqual = exports.getStaticMethodsCount = exports.getStaticMethodNames = exports.getInstanceMethodsCount = exports.getInstanceMethodNames = exports.getClassDetails = exports.deepParsePrimitives = exports.debounceAction = exports.countStaticMethods = exports.countInstanceMethods = exports.convertArrayToString = exports.saveToSessionStorage = exports.saveToLocalStorage = exports.removeFromSessionStorage = exports.removeFromLocalStorage = exports.getFromSessionStorage = exports.getFromLocalStorage = exports.toggleFullScreen = exports.smoothScrollTo = exports.copyToClipboard = exports.updateQueryParam = exports.getQueryStringAsObject = exports.queryStringToObject = exports.parseQueryString = exports.getQueryParams = exports.generateQueryParams = exports.formatQueryParams = exports.createQueryParams = exports.remapObjectFields = void 0;
8
+ exports.isValidURL = exports.isValidEmail = exports.isUUID = exports.isURL = exports.isPhoneNumber = exports.isNumericString = exports.isNodeEnvironment = exports.isNodeENV = exports.isNode = exports.isIPAddress = exports.isExpectedNodeENV = exports.isEnvironment = exports.isEmailArray = exports.isEmail = exports.isDateString = exports.isBrowser = exports.isBase64 = exports.isValidSet = exports.isValidObject = exports.isValidMap = exports.isValidJSON = exports.isValidArray = exports.isSet = exports.isReturningPromise = exports.isRegularExpression = exports.isRegExp = exports.isPromise = exports.isObjectWithKeys = exports.isObjectEmpty = exports.isObject = exports.isNotEmptyObject = exports.isMethodDescriptor = exports.isMethod = exports.isMap = exports.isJSONObject = exports.isJSON = exports.isFunction = exports.isError = exports.isEmptyObjectGuard = exports.isEmptyObject = exports.isDate = void 0;
9
9
  // ! String Utilities
10
10
  var basics_1 = require("./string/basics");
11
11
  Object.defineProperty(exports, "capitalizeString", { enumerable: true, get: function () { return basics_1.capitalizeString; } });
@@ -182,6 +182,8 @@ Object.defineProperty(exports, "getLastArrayElement", { enumerable: true, get: f
182
182
  Object.defineProperty(exports, "isInvalidOrEmptyArray", { enumerable: true, get: function () { return basics_3.isInvalidOrEmptyArray; } });
183
183
  Object.defineProperty(exports, "isValidEmptyArray", { enumerable: true, get: function () { return basics_3.isInvalidOrEmptyArray; } });
184
184
  Object.defineProperty(exports, "shuffleArray", { enumerable: true, get: function () { return basics_3.shuffleArray; } });
185
+ var Finder_1 = require("./array/Finder");
186
+ Object.defineProperty(exports, "Finder", { enumerable: true, get: function () { return Finder_1.Finder; } });
185
187
  var sort_1 = require("./array/sort");
186
188
  Object.defineProperty(exports, "sortAnArray", { enumerable: true, get: function () { return sort_1.sortAnArray; } });
187
189
  var transform_1 = require("./array/transform");