nhb-toolbox 4.12.7 â 4.12.10
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.
- package/CHANGELOG.md +25 -1
- package/README.md +185 -2
- package/dist/cjs/colors/constants.js +1 -9
- package/dist/cjs/date/Chronos.js +47 -31
- package/dist/dts/colors/Color.d.ts +2 -1
- package/dist/dts/colors/Color.d.ts.map +1 -1
- package/dist/dts/colors/constants.d.ts +0 -1
- package/dist/dts/colors/constants.d.ts.map +1 -1
- package/dist/dts/colors/convert.d.ts.map +1 -1
- package/dist/dts/colors/helpers.d.ts +2 -1
- package/dist/dts/colors/helpers.d.ts.map +1 -1
- package/dist/dts/colors/initials.d.ts +2 -1
- package/dist/dts/colors/initials.d.ts.map +1 -1
- package/dist/dts/colors/types.d.ts +0 -3
- package/dist/dts/colors/types.d.ts.map +1 -1
- package/dist/dts/date/Chronos.d.ts +54 -41
- package/dist/dts/date/Chronos.d.ts.map +1 -1
- package/dist/dts/date/types.d.ts +6 -1
- package/dist/dts/date/types.d.ts.map +1 -1
- package/dist/dts/number/types.d.ts +33 -0
- package/dist/dts/number/types.d.ts.map +1 -1
- package/dist/esm/colors/constants.js +0 -8
- package/dist/esm/date/Chronos.js +47 -31
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- markdownlint-disable-file MD024 -->
|
|
4
|
+
|
|
3
5
|
All notable changes to this package will be documented in this file.
|
|
4
6
|
|
|
5
7
|
---
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
## [4.12.10] - 2025-05-30
|
|
10
|
+
|
|
11
|
+
### đ§ New Chronos Methods
|
|
12
|
+
|
|
13
|
+
- Added 2 new instance methods in `Chronos`, `day` and `monthName` to get day and month names respectively.
|
|
14
|
+
|
|
15
|
+
### âšī¸ [README](README.md)
|
|
16
|
+
|
|
17
|
+
- Added `Signature Utilities` section in `README.md`
|
|
18
|
+
|
|
19
|
+
## [4.12.8] - 2025-05-29
|
|
20
|
+
|
|
21
|
+
### Types
|
|
22
|
+
|
|
23
|
+
- Added new types `Enumerate` and `NumberRange` to generate number literals like `0 | 1 | 2 | ... | 998`.
|
|
24
|
+
- Implemented both types in few cases where a return type is number and limited to a range, especially in color and number related functions and `Color` & `Chronos` classes.
|
|
25
|
+
|
|
26
|
+
### Method Changed in Chronos
|
|
27
|
+
|
|
28
|
+
- `isoWeekday` is now `isoWeekDay`
|
|
29
|
+
- Some method logic changed internally
|
|
30
|
+
|
|
31
|
+
---
|
|
8
32
|
|
|
9
33
|
## [4.12.7] - 2025-05-28
|
|
10
34
|
|
package/README.md
CHANGED
|
@@ -48,6 +48,12 @@ yarn add nhb-toolbox
|
|
|
48
48
|
|
|
49
49
|
---
|
|
50
50
|
|
|
51
|
+
## Changelog
|
|
52
|
+
|
|
53
|
+
See [Changelog](CHANGELOG.md) for recent updates.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
51
57
|
## Key Features
|
|
52
58
|
|
|
53
59
|
- **Type-Safe Utilities**:Fully typed for perfect TypeScript integration with strict type checking
|
|
@@ -60,9 +66,186 @@ yarn add nhb-toolbox
|
|
|
60
66
|
|
|
61
67
|
---
|
|
62
68
|
|
|
63
|
-
##
|
|
69
|
+
## Signature Utilities
|
|
70
|
+
|
|
71
|
+
### đ°ī¸ **Chronos - Time Mastery**
|
|
72
|
+
|
|
73
|
+
The ultimate date/time manipulation class with 100+ methods for parsing, formatting, calculating, and comparing dates. Handles all edge cases and timezones safely.
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
new Chronos('2025-01-01').addDays(3).format('YYYY-MM-DD'); // "2025-01-04"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/classes/Chronos)
|
|
80
|
+
|
|
81
|
+
### đ¨ **Color - Professional Color Manipulation**
|
|
82
|
+
|
|
83
|
+
Convert between color formats, generate palettes, check accessibility contrast, and perform advanced color math with perfect type safety.
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
const blue = new Color('#0000ff');
|
|
87
|
+
const darkerBlue = blue.applyDarkness(20); // 20% darker
|
|
88
|
+
console.log(darkerBlue.hsl); // "hsl(240, 100%, 40%)" (was 50%)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/classes/Color)
|
|
92
|
+
|
|
93
|
+
### đ **Finder - Optimized Array Search**
|
|
94
|
+
|
|
95
|
+
Blazing-fast array searching with binary search, fuzzy matching, and smart caching. Perfect for large datasets.
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
const productFinder = new Finder(products);
|
|
99
|
+
|
|
100
|
+
const laptop = productFinder.findOne('laptop', 'category', {
|
|
101
|
+
fuzzy: true,
|
|
102
|
+
caseInsensitive: false,
|
|
103
|
+
});
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/classes/Finder)
|
|
107
|
+
|
|
108
|
+
### đ **Random ID Generation**
|
|
109
|
+
|
|
110
|
+
**`generateRandomID`** - Enterprise-grade unique ID generation with prefixes, timestamps, and formatting
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
generateRandomID({
|
|
114
|
+
prefix: 'user',
|
|
115
|
+
timeStamp: true,
|
|
116
|
+
length: 12,
|
|
117
|
+
caseOption: 'upper',
|
|
118
|
+
}); // "USER-171234567890-AB3C4D5E6F7G"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/utilities/string/generateRandomID)
|
|
122
|
+
|
|
123
|
+
### đ¨ **Color System Utilities**
|
|
124
|
+
|
|
125
|
+
**`getColorForInitial`** - Deterministic color mapping system for consistent UI theming
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
// Get color palette for user avatars
|
|
129
|
+
getColorForInitial(['Alice', 'Bob', 'Charlie']);
|
|
130
|
+
// ['#00094C', '#00376E', '#005600']
|
|
131
|
+
|
|
132
|
+
getColorForInitial('Banana', 50); // '#00376E80' (50% opacity)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/utilities/color/getColorForInitial)
|
|
136
|
+
|
|
137
|
+
### đĄī¸ **Sanitize Data**
|
|
138
|
+
|
|
139
|
+
Clean and normalize strings/objects by trimming whitespace, removing empty values, and applying customizable filters.
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
const user = {
|
|
143
|
+
name: ' John Doe ',
|
|
144
|
+
age: null,
|
|
145
|
+
address: { city: ' NYC ', zip: '' },
|
|
146
|
+
tags: [],
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
sanitizeData(user, { ignoreNullish: true, ignoreEmpty: true });
|
|
150
|
+
// Returns { name: "John Doe", address: { city: "NYC" } } with exact input type
|
|
151
|
+
|
|
152
|
+
sanitizeData(user, { ignoreNullish: true }, 'partial');
|
|
153
|
+
// Return type: FlattenPartial<typeof user> which is Partial<T>
|
|
154
|
+
// Returns { name: "John Doe", address: { city: "NYC" } }
|
|
155
|
+
// { name: 'John' }
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/utilities/object/sanitizeData)
|
|
159
|
+
|
|
160
|
+
### đ **JSON Hydration**
|
|
161
|
+
|
|
162
|
+
**`parseJSON`** - Bulletproof JSON parsing with primitive conversion
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
parseJSON('{"value":"42"}'); // { value: 42 } (auto-converts numbers)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/utilities/misc/parseJSON)
|
|
169
|
+
|
|
170
|
+
### đ° **Format Currency**
|
|
171
|
+
|
|
172
|
+
Intelligent currency formatting with automatic locale detection and 150+ supported currencies.
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
console.log(formatCurrency(99.99, 'EUR')); // "99,99 âŦ"
|
|
176
|
+
console.log(formatCurrency('5000', 'JPY')); // "īŋĨ5,000" (ja-JP locale)
|
|
177
|
+
console.log(formatCurrency('5000', 'BDT')); // "ā§Ģ,ā§Ļā§Ļā§Ļ.ā§Ļā§Ļā§ŗ" (bn-BD locale)
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/utilities/number/formatCurrency)
|
|
181
|
+
|
|
182
|
+
### đĸ **Number to Words**
|
|
183
|
+
|
|
184
|
+
Convert numbers to human-readable words (supports up to 100 quintillion).
|
|
185
|
+
|
|
186
|
+
```typescript
|
|
187
|
+
numberToWords(125); // "one hundred twenty-five"
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/utilities/number/numberToWords)
|
|
191
|
+
|
|
192
|
+
### đĸ **Advanced Number Operations**
|
|
193
|
+
|
|
194
|
+
**`getNumbersInRange`** - Generate intelligent number sequences with prime, even/odd, and custom filtering capabilities
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
// Get primes between 10-30 as formatted string
|
|
198
|
+
getNumbersInRange('prime', { min: 10, max: 30, getAsString: true });
|
|
199
|
+
// "11, 13, 17, 19, 23, 29"
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/utilities/number/getNumbersInRange)
|
|
203
|
+
|
|
204
|
+
**`calculatePercentage`** - Swiss Army knife for percentage calculations with 7 specialized modes
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
// Calculate percentage change
|
|
208
|
+
calculatePercentage({
|
|
209
|
+
mode: 'get-change-percent',
|
|
210
|
+
oldValue: 100,
|
|
211
|
+
newValue: 150,
|
|
212
|
+
}); // 50 (50% increase)
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/utilities/number/calculatePercentage)
|
|
216
|
+
|
|
217
|
+
### đ **Extract Updated Fields**
|
|
218
|
+
|
|
219
|
+
Detect exactly what changed between two objects (including deep nested changes).
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
const dbRecord = { id: 1, content: 'Hello', meta: { views: 0 } };
|
|
223
|
+
const update = { content: 'Hello', meta: { views: 1 } };
|
|
224
|
+
extractUpdatedFields(dbRecord, update);
|
|
225
|
+
// { meta: { views: 1 } }
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/utilities/object/extractUpdatedFields)
|
|
229
|
+
|
|
230
|
+
### ⥠**Performance Optimizers**
|
|
231
|
+
|
|
232
|
+
**`throttleAction`** - Precision control for high-frequency events
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
// Smooth scroll handling
|
|
236
|
+
throttleAction(updateScrollPosition, 100);
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
[Documentation â](https://nhb-toolbox.vercel.app/docs/utilities/misc/throttleAction)
|
|
240
|
+
|
|
241
|
+
**`debounceAction`** - Intelligent delay for expensive operations
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
// Search-as-you-type
|
|
245
|
+
debounceAction(fetchResults, 300);
|
|
246
|
+
```
|
|
64
247
|
|
|
65
|
-
|
|
248
|
+
[Full Documentation â](https://nhb-toolbox.vercel.app/docs/utilities/misc/debounceAction)
|
|
66
249
|
|
|
67
250
|
---
|
|
68
251
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.numberColorPalette = exports.alphabetColorPalette = void 0;
|
|
4
4
|
/** Colors based on the ASCII value of the letter. */
|
|
5
5
|
exports.alphabetColorPalette = Object.freeze([
|
|
6
6
|
'#00094C',
|
|
@@ -43,11 +43,3 @@ exports.numberColorPalette = Object.freeze([
|
|
|
43
43
|
'#B5680A',
|
|
44
44
|
'#6437B3',
|
|
45
45
|
]);
|
|
46
|
-
exports.PERCENT_VALUES = Object.freeze([
|
|
47
|
-
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
48
|
-
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
|
49
|
-
40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
|
|
50
|
-
59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
|
|
51
|
-
78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
|
|
52
|
-
97, 98, 99, 100,
|
|
53
|
-
]);
|
package/dist/cjs/date/Chronos.js
CHANGED
|
@@ -72,10 +72,10 @@ class Chronos {
|
|
|
72
72
|
*[Symbol.iterator]() {
|
|
73
73
|
yield ['year', this.year];
|
|
74
74
|
yield ['month', this.month];
|
|
75
|
-
yield ['isoMonth', this.
|
|
75
|
+
yield ['isoMonth', this.isoMonth];
|
|
76
76
|
yield ['date', this.date];
|
|
77
77
|
yield ['weekDay', this.weekDay];
|
|
78
|
-
yield ['isoWeekDay', this.
|
|
78
|
+
yield ['isoWeekDay', this.isoWeekDay];
|
|
79
79
|
yield ['hour', this.hour];
|
|
80
80
|
yield ['minute', this.minute];
|
|
81
81
|
yield ['second', this.second];
|
|
@@ -297,13 +297,13 @@ class Chronos {
|
|
|
297
297
|
return this.#date.getMilliseconds();
|
|
298
298
|
}
|
|
299
299
|
/** Gets ISO weekday: 1 = Monday, 7 = Sunday */
|
|
300
|
-
get
|
|
300
|
+
get isoWeekDay() {
|
|
301
301
|
const day = this.weekDay;
|
|
302
302
|
return day === 0 ? 7 : day;
|
|
303
303
|
}
|
|
304
304
|
/** Gets ISO month (1â12 instead of 0â11) */
|
|
305
305
|
get isoMonth() {
|
|
306
|
-
return this.month + 1;
|
|
306
|
+
return (this.month + 1);
|
|
307
307
|
}
|
|
308
308
|
/** Returns the Unix timestamp (seconds since the Unix epoch: January 1, 1970, UTC). */
|
|
309
309
|
get unix() {
|
|
@@ -538,14 +538,14 @@ class Chronos {
|
|
|
538
538
|
return new Chronos(adjustedTime).#withOrigin('timeZone', stringOffset);
|
|
539
539
|
}
|
|
540
540
|
/**
|
|
541
|
-
* @instance Checks if the year is a leap year.
|
|
541
|
+
* @instance Checks if the current year is a leap year.
|
|
542
542
|
* - A year is a leap year if it is divisible by 4, but not divisible by 100, unless it is also divisible by 400.
|
|
543
543
|
* - For example, 2000 and 2400 are leap years, but 1900 and 2100 are not.
|
|
544
|
+
* @param year - Optional year to check. Default is the year from current `Chronos` instance.
|
|
544
545
|
* @returns `true` if the year is a leap year, `false` otherwise.
|
|
545
546
|
*/
|
|
546
|
-
isLeapYear() {
|
|
547
|
-
|
|
548
|
-
return (0, guards_2.isLeapYear)(year);
|
|
547
|
+
isLeapYear(year) {
|
|
548
|
+
return (0, guards_2.isLeapYear)(year ?? this.year);
|
|
549
549
|
}
|
|
550
550
|
/** @instance Checks if the current date is today. */
|
|
551
551
|
isToday() {
|
|
@@ -933,7 +933,7 @@ class Chronos {
|
|
|
933
933
|
/**
|
|
934
934
|
* @instance Returns the number of full years between the input date and now.
|
|
935
935
|
* @param time Optional time to compare with the `Chronos` date/time.
|
|
936
|
-
* @returns The difference in number, negative
|
|
936
|
+
* @returns The difference in number, negative when `Chronos` time is a past time else positive.
|
|
937
937
|
*/
|
|
938
938
|
getRelativeYear(time) {
|
|
939
939
|
const now = this.#toNewDate(time);
|
|
@@ -949,7 +949,7 @@ class Chronos {
|
|
|
949
949
|
/**
|
|
950
950
|
* @instance Returns the number of full months between the input date and now.
|
|
951
951
|
* @param time Optional time to compare with the `Chronos` date/time.
|
|
952
|
-
* @returns The difference in number, negative
|
|
952
|
+
* @returns The difference in number, negative when `Chronos` time is a past time else positive.
|
|
953
953
|
*/
|
|
954
954
|
getRelativeMonth(time) {
|
|
955
955
|
const now = this.#toNewDate(time);
|
|
@@ -994,7 +994,7 @@ class Chronos {
|
|
|
994
994
|
/**
|
|
995
995
|
* @instance Returns the number of full hours between the input date and now.
|
|
996
996
|
* @param time Optional time to compare with the `Chronos` date/time.
|
|
997
|
-
* @returns The difference in number, negative
|
|
997
|
+
* @returns The difference in number, negative when `Chronos` time is a past time else positive.
|
|
998
998
|
*/
|
|
999
999
|
getRelativeHour(time) {
|
|
1000
1000
|
const diff = this.#date.getTime() - this.#toNewDate(time).getTime();
|
|
@@ -1003,7 +1003,7 @@ class Chronos {
|
|
|
1003
1003
|
/**
|
|
1004
1004
|
* @instance Returns the number of full minutes between the input date and now.
|
|
1005
1005
|
* @param time Optional time to compare with the `Chronos` date/time.
|
|
1006
|
-
* @returns The difference in number, negative
|
|
1006
|
+
* @returns The difference in number, negative when `Chronos` time is a past time else positive.
|
|
1007
1007
|
*/
|
|
1008
1008
|
getRelativeMinute(time) {
|
|
1009
1009
|
const diff = this.#date.getTime() - this.#toNewDate(time).getTime();
|
|
@@ -1012,7 +1012,7 @@ class Chronos {
|
|
|
1012
1012
|
/**
|
|
1013
1013
|
* @instance Returns the number of full seconds between the input date and now.
|
|
1014
1014
|
* @param time Optional time to compare with the `Chronos` date/time.
|
|
1015
|
-
* @returns The difference in number, negative
|
|
1015
|
+
* @returns The difference in number, negative when `Chronos` time is a past time else positive.
|
|
1016
1016
|
*/
|
|
1017
1017
|
getRelativeSecond(time) {
|
|
1018
1018
|
const diff = this.#date.getTime() - this.#toNewDate(time).getTime();
|
|
@@ -1021,7 +1021,7 @@ class Chronos {
|
|
|
1021
1021
|
/**
|
|
1022
1022
|
* @instance Returns the number of milliseconds between the input date and now.
|
|
1023
1023
|
* @param time Optional time to compare with the `Chronos` date/time.
|
|
1024
|
-
* @returns The difference in number, negative
|
|
1024
|
+
* @returns The difference in number, negative when `Chronos` time is a past time else positive.
|
|
1025
1025
|
*/
|
|
1026
1026
|
getRelativeMilliSecond(time) {
|
|
1027
1027
|
return this.#date.getTime() - this.#toNewDate(time).getTime();
|
|
@@ -1045,7 +1045,7 @@ class Chronos {
|
|
|
1045
1045
|
*
|
|
1046
1046
|
* @param unit The time unit to compare by. Defaults to 'minute'.
|
|
1047
1047
|
* @param time Optional time to compare with the `Chronos` date/time.
|
|
1048
|
-
* @returns The difference in number, negative
|
|
1048
|
+
* @returns The difference in number, negative when `Chronos` time is a past time else positive.
|
|
1049
1049
|
*/
|
|
1050
1050
|
compare(unit = 'minute', time) {
|
|
1051
1051
|
switch (unit) {
|
|
@@ -1122,46 +1122,46 @@ class Chronos {
|
|
|
1122
1122
|
}
|
|
1123
1123
|
/**
|
|
1124
1124
|
* @instance Returns a new Chronos instance with the specified unit added.
|
|
1125
|
-
* @param
|
|
1125
|
+
* @param number The number of time unit to add (can be negative).
|
|
1126
1126
|
* @param unit The time unit to add.
|
|
1127
1127
|
*/
|
|
1128
|
-
add(
|
|
1128
|
+
add(number, unit) {
|
|
1129
1129
|
const d = new Date(this.#date);
|
|
1130
1130
|
switch (unit) {
|
|
1131
1131
|
case 'millisecond':
|
|
1132
|
-
d.setMilliseconds(d.getMilliseconds() +
|
|
1132
|
+
d.setMilliseconds(d.getMilliseconds() + number);
|
|
1133
1133
|
break;
|
|
1134
1134
|
case 'second':
|
|
1135
|
-
d.setSeconds(d.getSeconds() +
|
|
1135
|
+
d.setSeconds(d.getSeconds() + number);
|
|
1136
1136
|
break;
|
|
1137
1137
|
case 'minute':
|
|
1138
|
-
d.setMinutes(d.getMinutes() +
|
|
1138
|
+
d.setMinutes(d.getMinutes() + number);
|
|
1139
1139
|
break;
|
|
1140
1140
|
case 'hour':
|
|
1141
|
-
d.setHours(d.getHours() +
|
|
1141
|
+
d.setHours(d.getHours() + number);
|
|
1142
1142
|
break;
|
|
1143
1143
|
case 'day':
|
|
1144
|
-
d.setDate(d.getDate() +
|
|
1144
|
+
d.setDate(d.getDate() + number);
|
|
1145
1145
|
break;
|
|
1146
1146
|
case 'week':
|
|
1147
|
-
d.setDate(d.getDate() +
|
|
1147
|
+
d.setDate(d.getDate() + number * 7);
|
|
1148
1148
|
break;
|
|
1149
1149
|
case 'month':
|
|
1150
|
-
d.setMonth(d.getMonth() +
|
|
1150
|
+
d.setMonth(d.getMonth() + number);
|
|
1151
1151
|
break;
|
|
1152
1152
|
case 'year':
|
|
1153
|
-
d.setFullYear(d.getFullYear() +
|
|
1153
|
+
d.setFullYear(d.getFullYear() + number);
|
|
1154
1154
|
break;
|
|
1155
1155
|
}
|
|
1156
1156
|
return new Chronos(d).#withOrigin('add');
|
|
1157
1157
|
}
|
|
1158
1158
|
/**
|
|
1159
1159
|
* @instance Returns a new Chronos instance with the specified unit subtracted.
|
|
1160
|
-
* @param
|
|
1160
|
+
* @param number The number of time unit to subtract (can be negative).
|
|
1161
1161
|
* @param unit The time unit to add.
|
|
1162
1162
|
*/
|
|
1163
|
-
subtract(
|
|
1164
|
-
return this.add(-
|
|
1163
|
+
subtract(number, unit) {
|
|
1164
|
+
return this.add(-number, unit).#withOrigin('subtract');
|
|
1165
1165
|
}
|
|
1166
1166
|
/**
|
|
1167
1167
|
* @instance Gets the value of a specific time unit from the date.
|
|
@@ -1335,7 +1335,7 @@ class Chronos {
|
|
|
1335
1335
|
const firstThursday = new Chronos(target.year, 1, 4) // January 4
|
|
1336
1336
|
.startOf('week', 1)
|
|
1337
1337
|
.add(3, 'day'); // Thursday of first ISO week
|
|
1338
|
-
return target.diff(firstThursday, 'week') + 1;
|
|
1338
|
+
return (target.diff(firstThursday, 'week') + 1);
|
|
1339
1339
|
}
|
|
1340
1340
|
/**
|
|
1341
1341
|
* @instance Calculates the week number of the year based on custom week start.
|
|
@@ -1346,7 +1346,7 @@ class Chronos {
|
|
|
1346
1346
|
const startOfYear = new Chronos(this.year, 1, 1);
|
|
1347
1347
|
const startOfFirstWeek = startOfYear.startOf('week', weekStartsOn);
|
|
1348
1348
|
const week = this.startOf('week', weekStartsOn).diff(startOfFirstWeek, 'week');
|
|
1349
|
-
return week + 1;
|
|
1349
|
+
return (week + 1);
|
|
1350
1350
|
}
|
|
1351
1351
|
/**
|
|
1352
1352
|
* @instance Returns the ISO week-numbering year for the current date.
|
|
@@ -1366,7 +1366,7 @@ class Chronos {
|
|
|
1366
1366
|
getDayOfYear() {
|
|
1367
1367
|
const start = new Date(this.year, 0, 1);
|
|
1368
1368
|
const diff = this.#date.getTime() - start.getTime();
|
|
1369
|
-
return Math.floor(diff / 86400000) + 1;
|
|
1369
|
+
return (Math.floor(diff / 86400000) + 1);
|
|
1370
1370
|
}
|
|
1371
1371
|
/**
|
|
1372
1372
|
* @instance Returns the zodiac sign for the current date.
|
|
@@ -1733,6 +1733,22 @@ class Chronos {
|
|
|
1733
1733
|
};
|
|
1734
1734
|
return this.#normalizeDuration(result, absolute, isFuture);
|
|
1735
1735
|
}
|
|
1736
|
+
/**
|
|
1737
|
+
* @instance Returns the name of the current day or optional day index.
|
|
1738
|
+
* @param index Optional day index (0â6, where 0 is Sunday) to override current day.
|
|
1739
|
+
* @returns Name of the weekday.
|
|
1740
|
+
*/
|
|
1741
|
+
day(index) {
|
|
1742
|
+
return constants_1.DAYS[index ?? this.weekDay];
|
|
1743
|
+
}
|
|
1744
|
+
/**
|
|
1745
|
+
* @instance Returns the name of the current month or optional month index.
|
|
1746
|
+
* @param index Optional month index (0â11, where 0 is January) to override current month.
|
|
1747
|
+
* @returns Name of the month.
|
|
1748
|
+
*/
|
|
1749
|
+
monthName(index) {
|
|
1750
|
+
return constants_1.MONTHS[index ?? this.month];
|
|
1751
|
+
}
|
|
1736
1752
|
/**
|
|
1737
1753
|
* @static Returns the current date and time in a specified format in local time.
|
|
1738
1754
|
* * Default format is dd, `mmm DD, YYYY HH:mm:ss` = `Sun, Apr 06, 2025 16:11:55`
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Percent } from '../number/types';
|
|
2
|
+
import type { Analogous, ColorType, CSSColor, Hex6, Hex8, HSL, HSLA, RGB, RGBA, Tetrad, Triad } from './types';
|
|
2
3
|
/**
|
|
3
4
|
* * Class representing a color and its conversions among `Hex`, `Hex8` `RGB`, `RGBA`, `HSL` and `HSLA` formats.
|
|
4
5
|
* * It has 13 instance methods to manipulate and play with the color values.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../../../src/colors/Color.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../../../src/colors/Color.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAW/C,OAAO,KAAK,EAEX,SAAS,EAET,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,GAAG,EACH,IAAI,EAEJ,MAAM,EACN,KAAK,EACL,MAAM,SAAS,CAAC;AAGjB;;;;;;;;;;;GAWG;AACH,qBAAa,KAAK;;IACV,GAAG,EAAE,IAAI,CAAC;IACV,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,IAAI,CAAC;IAElB;;;;;;;;;;;;;;;;;;;;;;OAsBG;;IAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;gBACS,KAAK,EAAE,SAAS;IAE5B;;;;;;;;;;;;;;;OAeG;gBACS,KAAK,EAAE,QAAQ;IA0G3B,iEAAiE;IAChE,CAAC,MAAM,CAAC,QAAQ,CAAC;IASlB;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK;IAkBrC;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK;IAUtC;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK;IAUxC;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK;IAUtC;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK;IAYxC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,MAAM,SAAM,GAAG,KAAK;IAwB3D;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM;IA0BlD;;;OAGG;IACH,qBAAqB,IAAI,KAAK;IAU9B;;;;OAIG;IACH,kBAAkB,IAAI,SAAS;IAa/B;;;;OAIG;IACH,cAAc,IAAI,KAAK;IAWvB;;;;OAIG;IACH,eAAe,IAAI,MAAM;IAczB;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK;IAQjE;;;OAGG;IACH,YAAY,IAAI,OAAO;IAQvB;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,IAAI;IAI3C;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,IAAI;IAI3C;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,GAAG;IAIzC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,IAAI;IAI3C;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,GAAG;IAIzC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,IAAI;IAI3C;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,QAAQ;CA2DnD"}
|
|
@@ -2,5 +2,4 @@
|
|
|
2
2
|
export declare const alphabetColorPalette: readonly string[];
|
|
3
3
|
/** Colors based on the index of numbers. */
|
|
4
4
|
export declare const numberColorPalette: readonly string[];
|
|
5
|
-
export declare const PERCENT_VALUES: readonly [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100];
|
|
6
5
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/colors/constants.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,eAAO,MAAM,oBAAoB,mBA2B/B,CAAC;AAEH,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,mBAW7B,CAAC
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/colors/constants.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,eAAO,MAAM,oBAAoB,mBA2B/B,CAAC;AAEH,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,mBAW7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/colors/convert.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/colors/convert.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAGX,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,MAAM,SAAS,CAAC;AAGjB;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,MAAO,MAAM,KAAK,MAAM,KAAK,MAAM,KAAG,GAyBjE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,MAAO,MAAM,KAAK,MAAM,KAAK,MAAM,KAAG,GAkCjE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,MAAO,MAAM,KAAK,MAAM,KAAK,MAAM,KAAG,IAIjE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAS,IAAI,GAAG,GAAG,KAAG,GAejD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,MAAO,MAAM,KAAK,MAAM,KAAK,MAAM,KAAG,IAOjE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAS,IAAI,GAAG,GAAG,GAAG,MAAM,KAAG,GAgB1D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,MACzB,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,KACP,IAUF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,MAC1B,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,KACP,IAgBF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,MAC1B,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,KACP,IAkBF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,MAC1B,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,KACP,IAaF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,SAAU,IAAI,KAAG,IAS9C,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,MAC1B,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,KACP,IAgBF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,SAAU,IAAI,KAAG,IAI9C,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG;IAC9C,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,CAAC;CACT,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG;IAC7C,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,GAAG,CAAC;CACT,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG;IAC7C,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,GAAG,CAAC;CACT,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG;IAC9C,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;CACX,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG;IAC9C,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;CACX,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG;IAC9C,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;CACX,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Percent } from '../number/types';
|
|
2
|
+
import type { AlphaValue, Hex6, Hex8, HSL, HSLA, RGB, RGBA } from './types';
|
|
2
3
|
/**
|
|
3
4
|
* * Converts opacity percentage (0-100) to a 2-digit hex string.
|
|
4
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/colors/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/colors/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,YAAa,OAAO,KAAG,MAOvD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAW,MAAM,WAAW,MAAM,KAAG,MAE9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,GAKrC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,iBACd,MAAM,EAAE,YACZ,MAAM,KACd,OA2BF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,IAAI,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,IAAI,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,GAAG,CAalD;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,IAAI,CAcpD;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,GAAG,CASlD;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,IAAI,CAcpD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED,kDAAkD;AAClD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initials.d.ts","sourceRoot":"","sources":["../../../src/colors/initials.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initials.d.ts","sourceRoot":"","sources":["../../../src/colors/initials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,KAAK,EAAc,eAAe,EAAE,MAAM,SAAS,CAAC;AAE3D;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,CAAC,EAAE,OAAO,GACf,MAAM,CAAC;AAEV;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,OAAO,GACf,MAAM,EAAE,CAAC"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import type { Branded } from '../types/index';
|
|
2
2
|
import type { Color } from './Color';
|
|
3
|
-
import type { PERCENT_VALUES } from './constants';
|
|
4
3
|
import type { CSS_COLORS } from './css-colors';
|
|
5
4
|
/** - A string, number for generating color. */
|
|
6
5
|
export type ColorInput = string | number;
|
|
7
6
|
/** - An array of strings/numbers or nested arrays of strings/numbers for generating colors. */
|
|
8
7
|
export type ColorInputArray = Array<ColorInput | ColorInputArray>;
|
|
9
|
-
/** - Number value in percentage `(0% - 100%)` without `%` symbol. */
|
|
10
|
-
export type Percent = (typeof PERCENT_VALUES)[number];
|
|
11
8
|
/**
|
|
12
9
|
* * Represents a hexadecimal color code.
|
|
13
10
|
* * Format: `#3C6945`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/colors/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/colors/types.ts"],"names":[],"mappings":"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"}
|