ts-time-utils 0.0.1 → 1.0.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.
- package/README.md +365 -1
- package/dist/age.d.ts +1 -10
- package/dist/age.d.ts.map +1 -1
- package/dist/constants.d.ts +2 -21
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +12 -13
- package/dist/duration.d.ts +171 -0
- package/dist/duration.d.ts.map +1 -0
- package/dist/duration.js +382 -0
- package/dist/esm/age.d.ts +1 -10
- package/dist/esm/age.d.ts.map +1 -1
- package/dist/esm/constants.d.ts +2 -21
- package/dist/esm/constants.d.ts.map +1 -1
- package/dist/esm/constants.js +12 -13
- package/dist/esm/duration.d.ts +171 -0
- package/dist/esm/duration.d.ts.map +1 -0
- package/dist/esm/duration.js +382 -0
- package/dist/esm/format.d.ts.map +1 -1
- package/dist/esm/index.d.ts +10 -6
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +8 -0
- package/dist/esm/interval.d.ts +3 -6
- package/dist/esm/interval.d.ts.map +1 -1
- package/dist/esm/locale.d.ts +94 -0
- package/dist/esm/locale.d.ts.map +1 -0
- package/dist/esm/locale.js +1087 -0
- package/dist/esm/performance.d.ts +2 -9
- package/dist/esm/performance.d.ts.map +1 -1
- package/dist/esm/performance.js +7 -8
- package/dist/esm/rangePresets.d.ts +7 -8
- package/dist/esm/rangePresets.d.ts.map +1 -1
- package/dist/esm/rangePresets.js +11 -9
- package/dist/esm/serialize.d.ts +73 -0
- package/dist/esm/serialize.d.ts.map +1 -0
- package/dist/esm/serialize.js +365 -0
- package/dist/esm/timezone.d.ts +2 -6
- package/dist/esm/timezone.d.ts.map +1 -1
- package/dist/esm/timezone.js +1 -1
- package/dist/esm/types.d.ts +229 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +25 -0
- package/dist/esm/workingHours.d.ts +4 -13
- package/dist/esm/workingHours.d.ts.map +1 -1
- package/dist/esm/workingHours.js +3 -1
- package/dist/format.d.ts.map +1 -1
- package/dist/index.d.ts +10 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/interval.d.ts +3 -6
- package/dist/interval.d.ts.map +1 -1
- package/dist/locale.d.ts +94 -0
- package/dist/locale.d.ts.map +1 -0
- package/dist/locale.js +1087 -0
- package/dist/performance.d.ts +2 -9
- package/dist/performance.d.ts.map +1 -1
- package/dist/performance.js +7 -8
- package/dist/rangePresets.d.ts +7 -8
- package/dist/rangePresets.d.ts.map +1 -1
- package/dist/rangePresets.js +11 -9
- package/dist/serialize.d.ts +73 -0
- package/dist/serialize.d.ts.map +1 -0
- package/dist/serialize.js +365 -0
- package/dist/timezone.d.ts +2 -6
- package/dist/timezone.d.ts.map +1 -1
- package/dist/timezone.js +1 -1
- package/dist/types.d.ts +229 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +25 -0
- package/dist/workingHours.d.ts +4 -13
- package/dist/workingHours.d.ts.map +1 -1
- package/dist/workingHours.js +3 -1
- package/package.json +39 -3
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
import { MILLISECONDS_PER_SECOND, MILLISECONDS_PER_MINUTE, MILLISECONDS_PER_HOUR, MILLISECONDS_PER_DAY, MILLISECONDS_PER_WEEK } from './constants.js';
|
|
2
|
+
/**
|
|
3
|
+
* Represents a duration of time with arithmetic and conversion capabilities
|
|
4
|
+
*/
|
|
5
|
+
export class Duration {
|
|
6
|
+
constructor(input) {
|
|
7
|
+
if (typeof input === 'number') {
|
|
8
|
+
this._milliseconds = input;
|
|
9
|
+
}
|
|
10
|
+
else if (typeof input === 'string') {
|
|
11
|
+
this._milliseconds = this.parseString(input);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
this._milliseconds = this.calculateMilliseconds(input);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create Duration from milliseconds
|
|
19
|
+
*/
|
|
20
|
+
static fromMilliseconds(ms) {
|
|
21
|
+
return new Duration(ms);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create Duration from seconds
|
|
25
|
+
*/
|
|
26
|
+
static fromSeconds(seconds) {
|
|
27
|
+
return new Duration(seconds * MILLISECONDS_PER_SECOND);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create Duration from minutes
|
|
31
|
+
*/
|
|
32
|
+
static fromMinutes(minutes) {
|
|
33
|
+
return new Duration(minutes * MILLISECONDS_PER_MINUTE);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create Duration from hours
|
|
37
|
+
*/
|
|
38
|
+
static fromHours(hours) {
|
|
39
|
+
return new Duration(hours * MILLISECONDS_PER_HOUR);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create Duration from days
|
|
43
|
+
*/
|
|
44
|
+
static fromDays(days) {
|
|
45
|
+
return new Duration(days * MILLISECONDS_PER_DAY);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create Duration from weeks
|
|
49
|
+
*/
|
|
50
|
+
static fromWeeks(weeks) {
|
|
51
|
+
return new Duration(weeks * MILLISECONDS_PER_WEEK);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create Duration from a string (e.g., "1h 30m", "2.5 hours", "90 seconds")
|
|
55
|
+
*/
|
|
56
|
+
static fromString(str) {
|
|
57
|
+
return new Duration(str);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create Duration between two dates
|
|
61
|
+
*/
|
|
62
|
+
static between(start, end) {
|
|
63
|
+
return new Duration(Math.abs(end.getTime() - start.getTime()));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get duration in milliseconds
|
|
67
|
+
*/
|
|
68
|
+
get milliseconds() {
|
|
69
|
+
return this._milliseconds;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get duration in seconds
|
|
73
|
+
*/
|
|
74
|
+
get seconds() {
|
|
75
|
+
return this._milliseconds / MILLISECONDS_PER_SECOND;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get duration in minutes
|
|
79
|
+
*/
|
|
80
|
+
get minutes() {
|
|
81
|
+
return this._milliseconds / MILLISECONDS_PER_MINUTE;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get duration in hours
|
|
85
|
+
*/
|
|
86
|
+
get hours() {
|
|
87
|
+
return this._milliseconds / MILLISECONDS_PER_HOUR;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get duration in days
|
|
91
|
+
*/
|
|
92
|
+
get days() {
|
|
93
|
+
return this._milliseconds / MILLISECONDS_PER_DAY;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get duration in weeks
|
|
97
|
+
*/
|
|
98
|
+
get weeks() {
|
|
99
|
+
return this._milliseconds / MILLISECONDS_PER_WEEK;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Add another duration
|
|
103
|
+
*/
|
|
104
|
+
add(other) {
|
|
105
|
+
const otherDuration = this.normalizeToDuration(other);
|
|
106
|
+
return new Duration(this._milliseconds + otherDuration._milliseconds);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Subtract another duration
|
|
110
|
+
*/
|
|
111
|
+
subtract(other) {
|
|
112
|
+
const otherDuration = this.normalizeToDuration(other);
|
|
113
|
+
return new Duration(Math.max(0, this._milliseconds - otherDuration._milliseconds));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Multiply duration by a factor
|
|
117
|
+
*/
|
|
118
|
+
multiply(factor) {
|
|
119
|
+
return new Duration(this._milliseconds * factor);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Divide duration by a factor
|
|
123
|
+
*/
|
|
124
|
+
divide(factor) {
|
|
125
|
+
if (factor === 0) {
|
|
126
|
+
throw new Error('Cannot divide duration by zero');
|
|
127
|
+
}
|
|
128
|
+
return new Duration(this._milliseconds / factor);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get absolute duration (always positive)
|
|
132
|
+
*/
|
|
133
|
+
abs() {
|
|
134
|
+
return new Duration(Math.abs(this._milliseconds));
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Negate duration
|
|
138
|
+
*/
|
|
139
|
+
negate() {
|
|
140
|
+
return new Duration(-this._milliseconds);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Check if duration equals another
|
|
144
|
+
*/
|
|
145
|
+
equals(other) {
|
|
146
|
+
const otherMs = typeof other === 'number' ? other : other._milliseconds;
|
|
147
|
+
return Math.abs(this._milliseconds - otherMs) < 1; // Allow for floating point precision
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if duration is greater than another
|
|
151
|
+
*/
|
|
152
|
+
greaterThan(other) {
|
|
153
|
+
const otherMs = typeof other === 'number' ? other : other._milliseconds;
|
|
154
|
+
return this._milliseconds > otherMs;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Check if duration is less than another
|
|
158
|
+
*/
|
|
159
|
+
lessThan(other) {
|
|
160
|
+
const otherMs = typeof other === 'number' ? other : other._milliseconds;
|
|
161
|
+
return this._milliseconds < otherMs;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Compare with another duration (-1, 0, 1)
|
|
165
|
+
*/
|
|
166
|
+
compareTo(other) {
|
|
167
|
+
if (this._milliseconds < other._milliseconds)
|
|
168
|
+
return -1;
|
|
169
|
+
if (this._milliseconds > other._milliseconds)
|
|
170
|
+
return 1;
|
|
171
|
+
return 0;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Check if duration is zero
|
|
175
|
+
*/
|
|
176
|
+
isZero() {
|
|
177
|
+
return Math.abs(this._milliseconds) < 1;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Check if duration is positive
|
|
181
|
+
*/
|
|
182
|
+
isPositive() {
|
|
183
|
+
return this._milliseconds > 0;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Check if duration is negative
|
|
187
|
+
*/
|
|
188
|
+
isNegative() {
|
|
189
|
+
return this._milliseconds < 0;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Convert to human-readable string
|
|
193
|
+
*/
|
|
194
|
+
toString() {
|
|
195
|
+
if (this.isZero())
|
|
196
|
+
return '0ms';
|
|
197
|
+
const parts = [];
|
|
198
|
+
let remaining = Math.abs(this._milliseconds);
|
|
199
|
+
const units = [
|
|
200
|
+
{ name: 'd', value: MILLISECONDS_PER_DAY },
|
|
201
|
+
{ name: 'h', value: MILLISECONDS_PER_HOUR },
|
|
202
|
+
{ name: 'm', value: MILLISECONDS_PER_MINUTE },
|
|
203
|
+
{ name: 's', value: MILLISECONDS_PER_SECOND },
|
|
204
|
+
{ name: 'ms', value: 1 }
|
|
205
|
+
];
|
|
206
|
+
for (const unit of units) {
|
|
207
|
+
if (remaining >= unit.value) {
|
|
208
|
+
const count = Math.floor(remaining / unit.value);
|
|
209
|
+
parts.push(`${count}${unit.name}`);
|
|
210
|
+
remaining %= unit.value;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
const result = parts.join(' ');
|
|
214
|
+
return this._milliseconds < 0 ? `-${result}` : result;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Convert to detailed object representation
|
|
218
|
+
*/
|
|
219
|
+
toObject() {
|
|
220
|
+
const ms = Math.abs(this._milliseconds);
|
|
221
|
+
const days = Math.floor(ms / MILLISECONDS_PER_DAY);
|
|
222
|
+
const hours = Math.floor((ms % MILLISECONDS_PER_DAY) / MILLISECONDS_PER_HOUR);
|
|
223
|
+
const minutes = Math.floor((ms % MILLISECONDS_PER_HOUR) / MILLISECONDS_PER_MINUTE);
|
|
224
|
+
const seconds = Math.floor((ms % MILLISECONDS_PER_MINUTE) / MILLISECONDS_PER_SECOND);
|
|
225
|
+
const milliseconds = ms % MILLISECONDS_PER_SECOND;
|
|
226
|
+
return {
|
|
227
|
+
years: 0, // Years/months require complex calendar calculations
|
|
228
|
+
months: 0,
|
|
229
|
+
weeks: Math.floor(days / 7),
|
|
230
|
+
days: days,
|
|
231
|
+
hours,
|
|
232
|
+
minutes,
|
|
233
|
+
seconds,
|
|
234
|
+
milliseconds
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Convert to JSON representation
|
|
239
|
+
*/
|
|
240
|
+
toJSON() {
|
|
241
|
+
return this._milliseconds;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Create Duration from JSON
|
|
245
|
+
*/
|
|
246
|
+
static fromJSON(ms) {
|
|
247
|
+
return new Duration(ms);
|
|
248
|
+
}
|
|
249
|
+
calculateMilliseconds(input) {
|
|
250
|
+
let total = 0;
|
|
251
|
+
if (input.milliseconds)
|
|
252
|
+
total += input.milliseconds;
|
|
253
|
+
if (input.seconds)
|
|
254
|
+
total += input.seconds * MILLISECONDS_PER_SECOND;
|
|
255
|
+
if (input.minutes)
|
|
256
|
+
total += input.minutes * MILLISECONDS_PER_MINUTE;
|
|
257
|
+
if (input.hours)
|
|
258
|
+
total += input.hours * MILLISECONDS_PER_HOUR;
|
|
259
|
+
if (input.days)
|
|
260
|
+
total += input.days * MILLISECONDS_PER_DAY;
|
|
261
|
+
if (input.weeks)
|
|
262
|
+
total += input.weeks * MILLISECONDS_PER_WEEK;
|
|
263
|
+
// Approximate conversions for months and years
|
|
264
|
+
if (input.months)
|
|
265
|
+
total += input.months * MILLISECONDS_PER_DAY * 30.44; // Average month
|
|
266
|
+
if (input.years)
|
|
267
|
+
total += input.years * MILLISECONDS_PER_DAY * 365.25; // Average year
|
|
268
|
+
return total;
|
|
269
|
+
}
|
|
270
|
+
parseString(str) {
|
|
271
|
+
const normalized = str.toLowerCase().trim();
|
|
272
|
+
// Handle simple formats like "1000", "1000ms"
|
|
273
|
+
if (/^\d+(?:ms)?$/.test(normalized)) {
|
|
274
|
+
return parseInt(normalized.replace('ms', ''));
|
|
275
|
+
}
|
|
276
|
+
// Handle complex formats like "1h 30m 45s"
|
|
277
|
+
const patterns = [
|
|
278
|
+
{ regex: /(\d+(?:\.\d+)?)\s*y(?:ears?)?(?!\w)/g, multiplier: MILLISECONDS_PER_DAY * 365.25 },
|
|
279
|
+
{ regex: /(\d+(?:\.\d+)?)\s*mo(?:nths?)?(?!\w)/g, multiplier: MILLISECONDS_PER_DAY * 30.44 },
|
|
280
|
+
{ regex: /(\d+(?:\.\d+)?)\s*w(?:eeks?)?(?!\w)/g, multiplier: MILLISECONDS_PER_WEEK },
|
|
281
|
+
{ regex: /(\d+(?:\.\d+)?)\s*d(?:ays?)?(?!\w)/g, multiplier: MILLISECONDS_PER_DAY },
|
|
282
|
+
{ regex: /(\d+(?:\.\d+)?)\s*h(?:ours?)?(?!\w)/g, multiplier: MILLISECONDS_PER_HOUR },
|
|
283
|
+
{ regex: /(\d+(?:\.\d+)?)\s*min(?:utes?)?(?!\w)/g, multiplier: MILLISECONDS_PER_MINUTE },
|
|
284
|
+
{ regex: /(\d+(?:\.\d+)?)\s*m(?!s|o)(?!\w)/g, multiplier: MILLISECONDS_PER_MINUTE },
|
|
285
|
+
{ regex: /(\d+(?:\.\d+)?)\s*s(?:ec(?:onds?)?)?(?!\w)/g, multiplier: MILLISECONDS_PER_SECOND },
|
|
286
|
+
{ regex: /(\d+(?:\.\d+)?)\s*ms(?!\w)/g, multiplier: 1 }
|
|
287
|
+
];
|
|
288
|
+
let total = 0;
|
|
289
|
+
let hasMatch = false;
|
|
290
|
+
for (const pattern of patterns) {
|
|
291
|
+
let match;
|
|
292
|
+
while ((match = pattern.regex.exec(normalized)) !== null) {
|
|
293
|
+
total += parseFloat(match[1]) * pattern.multiplier;
|
|
294
|
+
hasMatch = true;
|
|
295
|
+
}
|
|
296
|
+
pattern.regex.lastIndex = 0; // Reset regex
|
|
297
|
+
}
|
|
298
|
+
if (!hasMatch) {
|
|
299
|
+
throw new Error(`Invalid duration format: ${str}`);
|
|
300
|
+
}
|
|
301
|
+
return total;
|
|
302
|
+
}
|
|
303
|
+
normalizeToDuration(input) {
|
|
304
|
+
if (input instanceof Duration) {
|
|
305
|
+
return input;
|
|
306
|
+
}
|
|
307
|
+
return new Duration(input);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Create a new Duration instance
|
|
312
|
+
*/
|
|
313
|
+
export function createDuration(input) {
|
|
314
|
+
return new Duration(input);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Check if a value is a valid duration
|
|
318
|
+
*/
|
|
319
|
+
export function isValidDuration(value) {
|
|
320
|
+
return value instanceof Duration;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Parse duration from various formats
|
|
324
|
+
*/
|
|
325
|
+
export function parseDurationString(input) {
|
|
326
|
+
return new Duration(input);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Format duration to human-readable string
|
|
330
|
+
*/
|
|
331
|
+
export function formatDurationString(duration, options) {
|
|
332
|
+
const d = typeof duration === 'number' ? new Duration(duration) : duration;
|
|
333
|
+
if (options?.long) {
|
|
334
|
+
const obj = d.toObject();
|
|
335
|
+
const parts = [];
|
|
336
|
+
const units = [
|
|
337
|
+
{ key: 'days', singular: 'day', plural: 'days' },
|
|
338
|
+
{ key: 'hours', singular: 'hour', plural: 'hours' },
|
|
339
|
+
{ key: 'minutes', singular: 'minute', plural: 'minutes' },
|
|
340
|
+
{ key: 'seconds', singular: 'second', plural: 'seconds' }
|
|
341
|
+
];
|
|
342
|
+
for (const unit of units) {
|
|
343
|
+
const value = obj[unit.key];
|
|
344
|
+
if (value > 0) {
|
|
345
|
+
parts.push(`${value} ${value === 1 ? unit.singular : unit.plural}`);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return parts.length > 0 ? parts.join(', ') : '0 seconds';
|
|
349
|
+
}
|
|
350
|
+
return d.toString();
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Get the maximum duration from an array
|
|
354
|
+
*/
|
|
355
|
+
export function maxDuration(...durations) {
|
|
356
|
+
if (durations.length === 0)
|
|
357
|
+
return null;
|
|
358
|
+
return durations.reduce((max, current) => current.greaterThan(max) ? current : max);
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Get the minimum duration from an array
|
|
362
|
+
*/
|
|
363
|
+
export function minDuration(...durations) {
|
|
364
|
+
if (durations.length === 0)
|
|
365
|
+
return null;
|
|
366
|
+
return durations.reduce((min, current) => current.lessThan(min) ? current : min);
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Sum multiple durations
|
|
370
|
+
*/
|
|
371
|
+
export function sumDurations(...durations) {
|
|
372
|
+
return durations.reduce((sum, current) => sum.add(current), new Duration(0));
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Get average duration from an array
|
|
376
|
+
*/
|
|
377
|
+
export function averageDuration(...durations) {
|
|
378
|
+
if (durations.length === 0)
|
|
379
|
+
return null;
|
|
380
|
+
const sum = sumDurations(...durations);
|
|
381
|
+
return sum.divide(durations.length);
|
|
382
|
+
}
|
package/dist/esm/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,aAAa,EACd,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,aAAa,EACd,MAAM,gBAAgB,CAAC;AAGxB;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CA2E9E;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CA+CvE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,GAAE,KAAK,GAAG,KAAK,GAAG,KAAa,GAAG,MAAM,CAcpF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAyDtD"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -5,13 +5,17 @@
|
|
|
5
5
|
export { formatDuration, timeAgo, formatTime, parseDuration } from './format.js';
|
|
6
6
|
export { differenceInUnits, addTime, subtractTime, startOf, endOf, isBetween, businessDaysBetween } from './calculate.js';
|
|
7
7
|
export { isValidDate, isLeapYear, isPast, isFuture, isToday, isYesterday, isTomorrow, isSameDay, isWeekend, isWeekday, isValidTimeString, isValidISOString } from './validate.js';
|
|
8
|
-
export { calculateAge, getAgeInUnits, getLifeStage, getNextBirthday, getDaysUntilBirthday, isBirthday
|
|
8
|
+
export { calculateAge, getAgeInUnits, getLifeStage, getNextBirthday, getDaysUntilBirthday, isBirthday } from './age.js';
|
|
9
9
|
export { getWeekNumber, getWeekOfMonth, getQuarter, getDayOfYear, getWeeksInYear, getDaysInMonth, getDaysInYear, getEaster, getMonthsInYear, getDaysInMonthArray, getWeekdaysInMonth, getFirstDayOfMonth, getLastDayOfMonth, getFirstDayOfYear, getLastDayOfYear } from './calendar.js';
|
|
10
10
|
export { parseDate, parseRelativeDate, parseTimeAgo, parseCustomFormat, parseManyFormats } from './parse.js';
|
|
11
|
-
export { sleep, timeout, debounce, throttle, retry, createStopwatch, measureTime, measureAsync, benchmark, Stopwatch
|
|
12
|
-
export { createInterval, isValidInterval, intervalDuration, intervalContains, intervalsOverlap, intervalIntersection, mergeIntervals, subtractInterval, splitIntervalByDay, totalIntervalCoverage, normalizeIntervals
|
|
13
|
-
export { getTimezoneOffset, formatInTimeZone, getZonedTime, convertDateToZone, isValidTimeZone, COMMON_TIMEZONES, getLocalOffset, compareZoneOffsets, reinterpretAsZone
|
|
14
|
-
export { DEFAULT_WORKING_HOURS, isWorkingDay, isWorkingTime, nextWorkingTime, workingTimeBetween, addWorkingHours
|
|
15
|
-
export { today, yesterday, tomorrow, lastNDays, nextNDays, thisWeek, lastWeek, nextWeek, thisMonth, lastMonth, nextMonth, thisYear, lastYear, nextYear, rollingWindowDays, quarterRange, lastQuarter, nextQuarter, RANGE_PRESETS
|
|
11
|
+
export { sleep, timeout, debounce, throttle, retry, createStopwatch, measureTime, measureAsync, benchmark, Stopwatch } from './performance.js';
|
|
12
|
+
export { createInterval, isValidInterval, intervalDuration, intervalContains, intervalsOverlap, intervalIntersection, mergeIntervals, subtractInterval, splitIntervalByDay, totalIntervalCoverage, normalizeIntervals } from './interval.js';
|
|
13
|
+
export { getTimezoneOffset, formatInTimeZone, getZonedTime, convertDateToZone, isValidTimeZone, COMMON_TIMEZONES, getLocalOffset, compareZoneOffsets, reinterpretAsZone } from './timezone.js';
|
|
14
|
+
export { DEFAULT_WORKING_HOURS, isWorkingDay, isWorkingTime, nextWorkingTime, workingTimeBetween, addWorkingHours } from './workingHours.js';
|
|
15
|
+
export { today, yesterday, tomorrow, lastNDays, nextNDays, thisWeek, lastWeek, nextWeek, thisMonth, lastMonth, nextMonth, thisYear, lastYear, nextYear, rollingWindowDays, quarterRange, lastQuarter, nextQuarter, RANGE_PRESETS } from './rangePresets.js';
|
|
16
|
+
export { Duration, createDuration, isValidDuration, parseDurationString, formatDurationString, maxDuration, minDuration, sumDurations, averageDuration } from './duration.js';
|
|
17
|
+
export { serializeDate, deserializeDate, createDateReviver, createDateReplacer, parseISOString, toEpochTimestamp, fromEpochTimestamp, createEpochTimestamp, toDateObject, fromDateObject, isValidISODateString, isValidEpochTimestamp, cloneDate, datesEqual, now, parseJSONWithDates, stringifyWithDates } from './serialize.js';
|
|
18
|
+
export { registerLocale, getLocaleConfig, getSupportedLocales, formatRelativeTime, formatDateLocale, formatTimeLocale, formatDateTimeLocale, getMonthNames, getDayNames, getFirstDayOfWeek, isLocaleSupported, getBestMatchingLocale, detectLocale, convertRelativeTime, detectLocaleFromRelativeTime, convertFormatPattern, convertFormattedDate, convertRelativeTimeArray, compareLocaleFormats } from './locale.js';
|
|
16
19
|
export { MILLISECONDS_PER_SECOND, MILLISECONDS_PER_MINUTE, MILLISECONDS_PER_HOUR, MILLISECONDS_PER_DAY, MILLISECONDS_PER_WEEK, MILLISECONDS_PER_MONTH, MILLISECONDS_PER_YEAR, SECONDS_PER_MINUTE, SECONDS_PER_HOUR, SECONDS_PER_DAY, SECONDS_PER_WEEK, type TimeUnit, type FormatOptions } from './constants.js';
|
|
20
|
+
export type { DateInput, DateRange, ParseOptions, WorkingHoursConfig, AgeResult, ZonedTime, Interval, BenchmarkResult, RecurrencePattern, LocaleFormatOptions, BusinessConfig, DateValidator, DateTransformer, TimeUtilsError, ParseError, ValidationError, DurationUnit, DurationInput, DurationComparison, SerializationOptions, DateObject, EpochTimestamp, SupportedLocale, LocaleConfig, RelativeTimeOptions, RelativeTimeUnit } from './types.js';
|
|
17
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,cAAc,EACd,OAAO,EACP,UAAU,EACV,aAAa,EACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,iBAAiB,EACjB,OAAO,EACP,YAAY,EACZ,OAAO,EACP,KAAK,EACL,SAAS,EACT,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,WAAW,EACX,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -24,5 +24,13 @@ export { getTimezoneOffset, formatInTimeZone, getZonedTime, convertDateToZone, i
|
|
|
24
24
|
export { DEFAULT_WORKING_HOURS, isWorkingDay, isWorkingTime, nextWorkingTime, workingTimeBetween, addWorkingHours } from './workingHours.js';
|
|
25
25
|
// Range preset utilities
|
|
26
26
|
export { today, yesterday, tomorrow, lastNDays, nextNDays, thisWeek, lastWeek, nextWeek, thisMonth, lastMonth, nextMonth, thisYear, lastYear, nextYear, rollingWindowDays, quarterRange, lastQuarter, nextQuarter, RANGE_PRESETS } from './rangePresets.js';
|
|
27
|
+
// Duration utilities
|
|
28
|
+
export { Duration, createDuration, isValidDuration, parseDurationString, formatDurationString, maxDuration, minDuration, sumDurations, averageDuration } from './duration.js';
|
|
29
|
+
// Serialization utilities
|
|
30
|
+
export { serializeDate, deserializeDate, createDateReviver, createDateReplacer, parseISOString, toEpochTimestamp, fromEpochTimestamp, createEpochTimestamp, toDateObject, fromDateObject, isValidISODateString, isValidEpochTimestamp, cloneDate, datesEqual, now, parseJSONWithDates, stringifyWithDates } from './serialize.js';
|
|
31
|
+
// Locale utilities
|
|
32
|
+
export { registerLocale, getLocaleConfig, getSupportedLocales, formatRelativeTime, formatDateLocale, formatTimeLocale, formatDateTimeLocale, getMonthNames, getDayNames, getFirstDayOfWeek, isLocaleSupported, getBestMatchingLocale, detectLocale,
|
|
33
|
+
// Conversion utilities
|
|
34
|
+
convertRelativeTime, detectLocaleFromRelativeTime, convertFormatPattern, convertFormattedDate, convertRelativeTimeArray, compareLocaleFormats } from './locale.js';
|
|
27
35
|
// Constants and types
|
|
28
36
|
export { MILLISECONDS_PER_SECOND, MILLISECONDS_PER_MINUTE, MILLISECONDS_PER_HOUR, MILLISECONDS_PER_DAY, MILLISECONDS_PER_WEEK, MILLISECONDS_PER_MONTH, MILLISECONDS_PER_YEAR, SECONDS_PER_MINUTE, SECONDS_PER_HOUR, SECONDS_PER_DAY, SECONDS_PER_WEEK } from './constants.js';
|
package/dist/esm/interval.d.ts
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Interval utilities: operations on time intervals [start, end)
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
start: Date;
|
|
6
|
-
end: Date;
|
|
7
|
-
}
|
|
4
|
+
import type { Interval, DateInput } from './types.js';
|
|
8
5
|
/** Create an interval ensuring start <= end */
|
|
9
|
-
export declare function createInterval(start:
|
|
6
|
+
export declare function createInterval(start: DateInput, end: DateInput): Interval | null;
|
|
10
7
|
/** Validate an object is a proper interval */
|
|
11
8
|
export declare function isValidInterval(i: any): i is Interval;
|
|
12
9
|
/** Duration of interval in ms */
|
|
13
10
|
export declare function intervalDuration(i: Interval): number;
|
|
14
11
|
/** Whether interval contains date (inclusive start, exclusive end) */
|
|
15
|
-
export declare function intervalContains(i: Interval, date:
|
|
12
|
+
export declare function intervalContains(i: Interval, date: DateInput): boolean;
|
|
16
13
|
/** Whether two intervals overlap */
|
|
17
14
|
export declare function intervalsOverlap(a: Interval, b: Interval): boolean;
|
|
18
15
|
/** Intersection of two intervals, or null */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interval.d.ts","sourceRoot":"","sources":["../../src/interval.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,
|
|
1
|
+
{"version":3,"file":"interval.d.ts","sourceRoot":"","sources":["../../src/interval.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtD,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAKhF;AAED,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,QAAQ,CAErD;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAEpD;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAGtE;AAED,oCAAoC;AACpC,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAElE;AAED,6CAA6C;AAC7C,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAI9E;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAgBhE;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAMrE;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAU1D;AAED,+DAA+D;AAC/D,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAEnE;AAED,gDAAgD;AAChD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,CAAC,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,CAEzF"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { DateInput, SupportedLocale, LocaleConfig, RelativeTimeOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Register a custom locale configuration
|
|
4
|
+
*/
|
|
5
|
+
export declare function registerLocale(config: LocaleConfig): void;
|
|
6
|
+
/**
|
|
7
|
+
* Get locale configuration, with fallback to base language or English
|
|
8
|
+
*/
|
|
9
|
+
export declare function getLocaleConfig(locale: SupportedLocale): LocaleConfig;
|
|
10
|
+
/**
|
|
11
|
+
* Get list of all registered locales
|
|
12
|
+
*/
|
|
13
|
+
export declare function getSupportedLocales(): SupportedLocale[];
|
|
14
|
+
/**
|
|
15
|
+
* Format relative time in the specified locale
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatRelativeTime(date: DateInput, options?: RelativeTimeOptions): string;
|
|
18
|
+
/**
|
|
19
|
+
* Format date in locale-specific format
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatDateLocale(date: DateInput, locale?: SupportedLocale, style?: 'short' | 'medium' | 'long' | 'full'): string;
|
|
22
|
+
/**
|
|
23
|
+
* Format time in locale-specific format
|
|
24
|
+
*/
|
|
25
|
+
export declare function formatTimeLocale(date: DateInput, locale?: SupportedLocale, style?: 'short' | 'medium' | 'long' | 'full'): string;
|
|
26
|
+
/**
|
|
27
|
+
* Format both date and time in locale-specific format
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatDateTimeLocale(date: DateInput, locale?: SupportedLocale, dateStyle?: 'short' | 'medium' | 'long' | 'full', timeStyle?: 'short' | 'medium' | 'long' | 'full'): string;
|
|
30
|
+
/**
|
|
31
|
+
* Get localized month names
|
|
32
|
+
*/
|
|
33
|
+
export declare function getMonthNames(locale?: SupportedLocale, short?: boolean): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Get localized day names
|
|
36
|
+
*/
|
|
37
|
+
export declare function getDayNames(locale?: SupportedLocale, short?: boolean): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Get the first day of week for a locale (0 = Sunday, 1 = Monday, etc.)
|
|
40
|
+
*/
|
|
41
|
+
export declare function getFirstDayOfWeek(locale?: SupportedLocale): number;
|
|
42
|
+
/**
|
|
43
|
+
* Check if a locale is supported
|
|
44
|
+
*/
|
|
45
|
+
export declare function isLocaleSupported(locale: string): locale is SupportedLocale;
|
|
46
|
+
/**
|
|
47
|
+
* Get the best matching locale from a list of preferences
|
|
48
|
+
*/
|
|
49
|
+
export declare function getBestMatchingLocale(preferences: string[], fallback?: SupportedLocale): SupportedLocale;
|
|
50
|
+
/**
|
|
51
|
+
* Auto-detect locale from browser or system (if available)
|
|
52
|
+
*/
|
|
53
|
+
export declare function detectLocale(fallback?: SupportedLocale): SupportedLocale;
|
|
54
|
+
/**
|
|
55
|
+
* Convert a relative time string from one locale to another
|
|
56
|
+
* Attempts to parse the relative time and reformat in target locale
|
|
57
|
+
*/
|
|
58
|
+
export declare function convertRelativeTime(relativeTimeString: string, fromLocale: SupportedLocale, toLocale: SupportedLocale): string | null;
|
|
59
|
+
/**
|
|
60
|
+
* Detect the locale of a formatted relative time string
|
|
61
|
+
* Returns the most likely locale or null if detection fails
|
|
62
|
+
*/
|
|
63
|
+
export declare function detectLocaleFromRelativeTime(relativeTimeString: string): SupportedLocale | null;
|
|
64
|
+
/**
|
|
65
|
+
* Convert a date format pattern from one locale's convention to another
|
|
66
|
+
*/
|
|
67
|
+
export declare function convertFormatPattern(pattern: string, fromLocale: SupportedLocale, toLocale: SupportedLocale, style?: 'short' | 'medium' | 'long' | 'full'): string;
|
|
68
|
+
/**
|
|
69
|
+
* Convert a formatted date string from one locale to another
|
|
70
|
+
* Attempts to parse the date and reformat in target locale
|
|
71
|
+
*/
|
|
72
|
+
export declare function convertFormattedDate(formattedDate: string, fromLocale: SupportedLocale, toLocale: SupportedLocale, targetStyle?: 'short' | 'medium' | 'long' | 'full'): string | null;
|
|
73
|
+
/**
|
|
74
|
+
* Bulk convert an array of relative time strings to a different locale
|
|
75
|
+
*/
|
|
76
|
+
export declare function convertRelativeTimeArray(relativeTimeStrings: string[], fromLocale: SupportedLocale, toLocale: SupportedLocale): (string | null)[];
|
|
77
|
+
/**
|
|
78
|
+
* Get format pattern differences between two locales
|
|
79
|
+
*/
|
|
80
|
+
export declare function compareLocaleFormats(locale1: SupportedLocale, locale2: SupportedLocale): {
|
|
81
|
+
dateFormats: Record<string, {
|
|
82
|
+
locale1: string;
|
|
83
|
+
locale2: string;
|
|
84
|
+
}>;
|
|
85
|
+
timeFormats: Record<string, {
|
|
86
|
+
locale1: string;
|
|
87
|
+
locale2: string;
|
|
88
|
+
}>;
|
|
89
|
+
weekStartsOn: {
|
|
90
|
+
locale1: number;
|
|
91
|
+
locale2: number;
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=locale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/locale.ts"],"names":[],"mappings":"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"}
|