@holoscript/std 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/collections.d.ts +177 -0
- package/dist/collections.d.ts.map +1 -0
- package/dist/collections.js +720 -0
- package/dist/collections.js.map +1 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +177 -0
- package/dist/index.js.map +1 -0
- package/dist/math.d.ts +162 -0
- package/dist/math.d.ts.map +1 -0
- package/dist/math.js +539 -0
- package/dist/math.js.map +1 -0
- package/dist/string.d.ts +208 -0
- package/dist/string.d.ts.map +1 -0
- package/dist/string.js +443 -0
- package/dist/string.js.map +1 -0
- package/dist/time.d.ts +215 -0
- package/dist/time.d.ts.map +1 -0
- package/dist/time.js +530 -0
- package/dist/time.js.map +1 -0
- package/dist/types.d.ts +193 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +198 -0
- package/dist/types.js.map +1 -0
- package/package.json +55 -0
- package/src/collections.ts +844 -0
- package/src/index.ts +324 -0
- package/src/math.ts +658 -0
- package/src/string.ts +499 -0
- package/src/time.ts +622 -0
- package/src/types.ts +376 -0
- package/tsconfig.json +18 -0
package/dist/time.js
ADDED
|
@@ -0,0 +1,530 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @holoscript/std - Time Module
|
|
3
|
+
*
|
|
4
|
+
* Time, timer, and scheduling utilities for HoloScript Plus programs.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Get current timestamp in milliseconds
|
|
8
|
+
*/
|
|
9
|
+
export function now() {
|
|
10
|
+
return Date.now();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get high-resolution timestamp (for performance measurement)
|
|
14
|
+
*/
|
|
15
|
+
export function hrTime() {
|
|
16
|
+
if (typeof performance !== 'undefined') {
|
|
17
|
+
return performance.now();
|
|
18
|
+
}
|
|
19
|
+
return Date.now();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Sleep for a specified number of milliseconds
|
|
23
|
+
*/
|
|
24
|
+
export function sleep(ms) {
|
|
25
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Wait until a condition is true
|
|
29
|
+
*/
|
|
30
|
+
export async function waitUntil(condition, options = {}) {
|
|
31
|
+
const { timeout = 30000, interval = 100 } = options;
|
|
32
|
+
const startTime = now();
|
|
33
|
+
while (true) {
|
|
34
|
+
if (await condition())
|
|
35
|
+
return;
|
|
36
|
+
if (now() - startTime > timeout) {
|
|
37
|
+
throw new Error('waitUntil timeout');
|
|
38
|
+
}
|
|
39
|
+
await sleep(interval);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Execute a function with timeout
|
|
44
|
+
*/
|
|
45
|
+
export async function withTimeout(fn, ms) {
|
|
46
|
+
return Promise.race([
|
|
47
|
+
fn(),
|
|
48
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), ms)),
|
|
49
|
+
]);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Retry a function with exponential backoff
|
|
53
|
+
*/
|
|
54
|
+
export async function retry(fn, options = {}) {
|
|
55
|
+
const { maxAttempts = 3, initialDelay = 1000, maxDelay = 30000, factor = 2, onRetry } = options;
|
|
56
|
+
let lastError;
|
|
57
|
+
let delay = initialDelay;
|
|
58
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
59
|
+
try {
|
|
60
|
+
return await fn();
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
64
|
+
if (attempt === maxAttempts)
|
|
65
|
+
break;
|
|
66
|
+
onRetry?.(lastError, attempt);
|
|
67
|
+
await sleep(delay);
|
|
68
|
+
delay = Math.min(delay * factor, maxDelay);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
throw lastError;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Debounce a function
|
|
75
|
+
*/
|
|
76
|
+
export function debounce(fn, ms) {
|
|
77
|
+
let timeoutId = null;
|
|
78
|
+
return ((...args) => {
|
|
79
|
+
if (timeoutId)
|
|
80
|
+
clearTimeout(timeoutId);
|
|
81
|
+
timeoutId = setTimeout(() => {
|
|
82
|
+
timeoutId = null;
|
|
83
|
+
fn(...args);
|
|
84
|
+
}, ms);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Throttle a function
|
|
89
|
+
*/
|
|
90
|
+
export function throttle(fn, ms) {
|
|
91
|
+
let lastCall = 0;
|
|
92
|
+
let timeoutId = null;
|
|
93
|
+
return ((...args) => {
|
|
94
|
+
const elapsed = now() - lastCall;
|
|
95
|
+
if (elapsed >= ms) {
|
|
96
|
+
lastCall = now();
|
|
97
|
+
fn(...args);
|
|
98
|
+
}
|
|
99
|
+
else if (!timeoutId) {
|
|
100
|
+
timeoutId = setTimeout(() => {
|
|
101
|
+
lastCall = now();
|
|
102
|
+
timeoutId = null;
|
|
103
|
+
fn(...args);
|
|
104
|
+
}, ms - elapsed);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Measure execution time of a function
|
|
110
|
+
*/
|
|
111
|
+
export async function measure(fn) {
|
|
112
|
+
const start = hrTime();
|
|
113
|
+
const result = await fn();
|
|
114
|
+
const duration = hrTime() - start;
|
|
115
|
+
return { result, duration };
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Measure execution time and log it
|
|
119
|
+
*/
|
|
120
|
+
export async function timed(label, fn) {
|
|
121
|
+
const start = hrTime();
|
|
122
|
+
try {
|
|
123
|
+
return await fn();
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
const duration = hrTime() - start;
|
|
127
|
+
console.log(`[${label}] ${duration.toFixed(2)}ms`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Simple stopwatch for measuring elapsed time
|
|
132
|
+
*/
|
|
133
|
+
export class Stopwatch {
|
|
134
|
+
startTime = 0;
|
|
135
|
+
pausedTime = 0;
|
|
136
|
+
running = false;
|
|
137
|
+
start() {
|
|
138
|
+
if (!this.running) {
|
|
139
|
+
this.startTime = hrTime() - this.pausedTime;
|
|
140
|
+
this.running = true;
|
|
141
|
+
}
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
stop() {
|
|
145
|
+
if (this.running) {
|
|
146
|
+
this.pausedTime = hrTime() - this.startTime;
|
|
147
|
+
this.running = false;
|
|
148
|
+
}
|
|
149
|
+
return this.pausedTime;
|
|
150
|
+
}
|
|
151
|
+
reset() {
|
|
152
|
+
this.startTime = 0;
|
|
153
|
+
this.pausedTime = 0;
|
|
154
|
+
this.running = false;
|
|
155
|
+
return this;
|
|
156
|
+
}
|
|
157
|
+
restart() {
|
|
158
|
+
return this.reset().start();
|
|
159
|
+
}
|
|
160
|
+
get elapsed() {
|
|
161
|
+
if (this.running) {
|
|
162
|
+
return hrTime() - this.startTime;
|
|
163
|
+
}
|
|
164
|
+
return this.pausedTime;
|
|
165
|
+
}
|
|
166
|
+
get isRunning() {
|
|
167
|
+
return this.running;
|
|
168
|
+
}
|
|
169
|
+
lap() {
|
|
170
|
+
const elapsed = this.elapsed;
|
|
171
|
+
this.restart();
|
|
172
|
+
return elapsed;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Interval timer with pause/resume support
|
|
177
|
+
*/
|
|
178
|
+
export class IntervalTimer {
|
|
179
|
+
intervalId = null;
|
|
180
|
+
callback;
|
|
181
|
+
intervalMs;
|
|
182
|
+
isPaused = false;
|
|
183
|
+
constructor(callback, intervalMs) {
|
|
184
|
+
this.callback = callback;
|
|
185
|
+
this.intervalMs = intervalMs;
|
|
186
|
+
}
|
|
187
|
+
start() {
|
|
188
|
+
if (!this.intervalId && !this.isPaused) {
|
|
189
|
+
this.intervalId = setInterval(this.callback, this.intervalMs);
|
|
190
|
+
}
|
|
191
|
+
return this;
|
|
192
|
+
}
|
|
193
|
+
stop() {
|
|
194
|
+
if (this.intervalId) {
|
|
195
|
+
clearInterval(this.intervalId);
|
|
196
|
+
this.intervalId = null;
|
|
197
|
+
}
|
|
198
|
+
this.isPaused = false;
|
|
199
|
+
return this;
|
|
200
|
+
}
|
|
201
|
+
pause() {
|
|
202
|
+
if (this.intervalId) {
|
|
203
|
+
clearInterval(this.intervalId);
|
|
204
|
+
this.intervalId = null;
|
|
205
|
+
this.isPaused = true;
|
|
206
|
+
}
|
|
207
|
+
return this;
|
|
208
|
+
}
|
|
209
|
+
resume() {
|
|
210
|
+
if (this.isPaused) {
|
|
211
|
+
this.isPaused = false;
|
|
212
|
+
this.intervalId = setInterval(this.callback, this.intervalMs);
|
|
213
|
+
}
|
|
214
|
+
return this;
|
|
215
|
+
}
|
|
216
|
+
get running() {
|
|
217
|
+
return this.intervalId !== null;
|
|
218
|
+
}
|
|
219
|
+
get paused() {
|
|
220
|
+
return this.isPaused;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Countdown timer
|
|
225
|
+
*/
|
|
226
|
+
export class CountdownTimer {
|
|
227
|
+
remainingMs;
|
|
228
|
+
startTime = 0;
|
|
229
|
+
running = false;
|
|
230
|
+
onTick;
|
|
231
|
+
onComplete;
|
|
232
|
+
tickIntervalId = null;
|
|
233
|
+
constructor(durationMs, options = {}) {
|
|
234
|
+
this.remainingMs = durationMs;
|
|
235
|
+
this.onTick = options.onTick;
|
|
236
|
+
this.onComplete = options.onComplete;
|
|
237
|
+
if (options.onTick && options.tickInterval) {
|
|
238
|
+
this.tickIntervalId = setInterval(() => {
|
|
239
|
+
if (this.running) {
|
|
240
|
+
this.onTick?.(this.remaining);
|
|
241
|
+
}
|
|
242
|
+
}, options.tickInterval);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
start() {
|
|
246
|
+
if (!this.running && this.remainingMs > 0) {
|
|
247
|
+
this.startTime = hrTime();
|
|
248
|
+
this.running = true;
|
|
249
|
+
this.scheduleCompletion();
|
|
250
|
+
}
|
|
251
|
+
return this;
|
|
252
|
+
}
|
|
253
|
+
pause() {
|
|
254
|
+
if (this.running) {
|
|
255
|
+
this.remainingMs = Math.max(0, this.remainingMs - (hrTime() - this.startTime));
|
|
256
|
+
this.running = false;
|
|
257
|
+
}
|
|
258
|
+
return this;
|
|
259
|
+
}
|
|
260
|
+
resume() {
|
|
261
|
+
return this.start();
|
|
262
|
+
}
|
|
263
|
+
reset(durationMs) {
|
|
264
|
+
this.running = false;
|
|
265
|
+
this.remainingMs = durationMs ?? this.remainingMs;
|
|
266
|
+
return this;
|
|
267
|
+
}
|
|
268
|
+
stop() {
|
|
269
|
+
this.running = false;
|
|
270
|
+
if (this.tickIntervalId) {
|
|
271
|
+
clearInterval(this.tickIntervalId);
|
|
272
|
+
this.tickIntervalId = null;
|
|
273
|
+
}
|
|
274
|
+
return this;
|
|
275
|
+
}
|
|
276
|
+
get remaining() {
|
|
277
|
+
if (this.running) {
|
|
278
|
+
return Math.max(0, this.remainingMs - (hrTime() - this.startTime));
|
|
279
|
+
}
|
|
280
|
+
return this.remainingMs;
|
|
281
|
+
}
|
|
282
|
+
get isRunning() {
|
|
283
|
+
return this.running;
|
|
284
|
+
}
|
|
285
|
+
get isComplete() {
|
|
286
|
+
return this.remaining <= 0;
|
|
287
|
+
}
|
|
288
|
+
scheduleCompletion() {
|
|
289
|
+
setTimeout(() => {
|
|
290
|
+
if (this.running && this.remaining <= 0) {
|
|
291
|
+
this.running = false;
|
|
292
|
+
this.onComplete?.();
|
|
293
|
+
}
|
|
294
|
+
}, this.remainingMs);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Frame-based timer for game loops
|
|
299
|
+
*/
|
|
300
|
+
export class FrameTimer {
|
|
301
|
+
lastFrameTime = 0;
|
|
302
|
+
deltaTime = 0;
|
|
303
|
+
frameCount = 0;
|
|
304
|
+
fps = 0;
|
|
305
|
+
fpsUpdateInterval = 1000;
|
|
306
|
+
lastFpsUpdate = 0;
|
|
307
|
+
framesSinceLastFpsUpdate = 0;
|
|
308
|
+
/**
|
|
309
|
+
* Call at the start of each frame
|
|
310
|
+
*/
|
|
311
|
+
update() {
|
|
312
|
+
const currentTime = hrTime();
|
|
313
|
+
if (this.lastFrameTime > 0) {
|
|
314
|
+
this.deltaTime = (currentTime - this.lastFrameTime) / 1000; // Convert to seconds
|
|
315
|
+
}
|
|
316
|
+
this.lastFrameTime = currentTime;
|
|
317
|
+
this.frameCount++;
|
|
318
|
+
this.framesSinceLastFpsUpdate++;
|
|
319
|
+
// Update FPS calculation
|
|
320
|
+
if (currentTime - this.lastFpsUpdate >= this.fpsUpdateInterval) {
|
|
321
|
+
this.fps = (this.framesSinceLastFpsUpdate * 1000) / (currentTime - this.lastFpsUpdate);
|
|
322
|
+
this.lastFpsUpdate = currentTime;
|
|
323
|
+
this.framesSinceLastFpsUpdate = 0;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Get delta time in seconds since last frame
|
|
328
|
+
*/
|
|
329
|
+
get delta() {
|
|
330
|
+
return this.deltaTime;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Get delta time in milliseconds since last frame
|
|
334
|
+
*/
|
|
335
|
+
get deltaMs() {
|
|
336
|
+
return this.deltaTime * 1000;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Get total frame count
|
|
340
|
+
*/
|
|
341
|
+
get frames() {
|
|
342
|
+
return this.frameCount;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Get current FPS (frames per second)
|
|
346
|
+
*/
|
|
347
|
+
get currentFps() {
|
|
348
|
+
return this.fps;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Get total elapsed time in seconds
|
|
352
|
+
*/
|
|
353
|
+
get totalTime() {
|
|
354
|
+
return this.lastFrameTime / 1000;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Reset the timer
|
|
358
|
+
*/
|
|
359
|
+
reset() {
|
|
360
|
+
this.lastFrameTime = 0;
|
|
361
|
+
this.deltaTime = 0;
|
|
362
|
+
this.frameCount = 0;
|
|
363
|
+
this.fps = 0;
|
|
364
|
+
this.lastFpsUpdate = 0;
|
|
365
|
+
this.framesSinceLastFpsUpdate = 0;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Schedule a callback to run after a delay
|
|
370
|
+
*/
|
|
371
|
+
export function schedule(callback, delayMs) {
|
|
372
|
+
const timeoutId = setTimeout(callback, delayMs);
|
|
373
|
+
return () => clearTimeout(timeoutId);
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Schedule a callback to run at regular intervals
|
|
377
|
+
*/
|
|
378
|
+
export function scheduleInterval(callback, intervalMs) {
|
|
379
|
+
const intervalId = setInterval(callback, intervalMs);
|
|
380
|
+
return () => clearInterval(intervalId);
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Schedule a callback to run on the next animation frame (browser only)
|
|
384
|
+
*/
|
|
385
|
+
export function scheduleFrame(callback) {
|
|
386
|
+
if (typeof requestAnimationFrame !== 'undefined') {
|
|
387
|
+
const id = requestAnimationFrame(callback);
|
|
388
|
+
return () => cancelAnimationFrame(id);
|
|
389
|
+
}
|
|
390
|
+
// Fallback for non-browser environments
|
|
391
|
+
const id = setTimeout(() => callback(hrTime()), 16);
|
|
392
|
+
return () => clearTimeout(id);
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Create a ticker that calls a callback at a target frame rate
|
|
396
|
+
*/
|
|
397
|
+
export function createTicker(callback, targetFps = 60) {
|
|
398
|
+
const frameTime = 1000 / targetFps;
|
|
399
|
+
let lastTime = 0;
|
|
400
|
+
let running = false;
|
|
401
|
+
let animationId;
|
|
402
|
+
const tick = (currentTime) => {
|
|
403
|
+
if (!running)
|
|
404
|
+
return;
|
|
405
|
+
if (lastTime > 0) {
|
|
406
|
+
const delta = (currentTime - lastTime) / 1000;
|
|
407
|
+
callback(delta);
|
|
408
|
+
}
|
|
409
|
+
lastTime = currentTime;
|
|
410
|
+
if (typeof requestAnimationFrame !== 'undefined') {
|
|
411
|
+
animationId = requestAnimationFrame(tick);
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
animationId = setTimeout(() => tick(hrTime()), frameTime);
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
return {
|
|
418
|
+
start: () => {
|
|
419
|
+
if (!running) {
|
|
420
|
+
running = true;
|
|
421
|
+
lastTime = 0;
|
|
422
|
+
if (typeof requestAnimationFrame !== 'undefined') {
|
|
423
|
+
animationId = requestAnimationFrame(tick);
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
tick(hrTime());
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
stop: () => {
|
|
431
|
+
running = false;
|
|
432
|
+
if (typeof cancelAnimationFrame !== 'undefined') {
|
|
433
|
+
cancelAnimationFrame(animationId);
|
|
434
|
+
}
|
|
435
|
+
else {
|
|
436
|
+
clearTimeout(animationId);
|
|
437
|
+
}
|
|
438
|
+
},
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Date/time formatting utilities
|
|
443
|
+
*/
|
|
444
|
+
export const DateTime = {
|
|
445
|
+
/**
|
|
446
|
+
* Format a date as ISO string
|
|
447
|
+
*/
|
|
448
|
+
toISO(date = new Date()) {
|
|
449
|
+
return date.toISOString();
|
|
450
|
+
},
|
|
451
|
+
/**
|
|
452
|
+
* Format a date as local string
|
|
453
|
+
*/
|
|
454
|
+
toLocal(date = new Date()) {
|
|
455
|
+
return date.toLocaleString();
|
|
456
|
+
},
|
|
457
|
+
/**
|
|
458
|
+
* Format a date using a pattern
|
|
459
|
+
* Supports: YYYY, MM, DD, HH, mm, ss, SSS
|
|
460
|
+
*/
|
|
461
|
+
format(date, pattern) {
|
|
462
|
+
const pad = (n, width) => String(n).padStart(width, '0');
|
|
463
|
+
return pattern
|
|
464
|
+
.replace('YYYY', String(date.getFullYear()))
|
|
465
|
+
.replace('MM', pad(date.getMonth() + 1, 2))
|
|
466
|
+
.replace('DD', pad(date.getDate(), 2))
|
|
467
|
+
.replace('HH', pad(date.getHours(), 2))
|
|
468
|
+
.replace('mm', pad(date.getMinutes(), 2))
|
|
469
|
+
.replace('ss', pad(date.getSeconds(), 2))
|
|
470
|
+
.replace('SSS', pad(date.getMilliseconds(), 3));
|
|
471
|
+
},
|
|
472
|
+
/**
|
|
473
|
+
* Parse a date string
|
|
474
|
+
*/
|
|
475
|
+
parse(dateString) {
|
|
476
|
+
return new Date(dateString);
|
|
477
|
+
},
|
|
478
|
+
/**
|
|
479
|
+
* Get difference between two dates in various units
|
|
480
|
+
*/
|
|
481
|
+
diff(date1, date2, unit = 'ms') {
|
|
482
|
+
const diffMs = date1.getTime() - date2.getTime();
|
|
483
|
+
switch (unit) {
|
|
484
|
+
case 'ms':
|
|
485
|
+
return diffMs;
|
|
486
|
+
case 's':
|
|
487
|
+
return diffMs / 1000;
|
|
488
|
+
case 'm':
|
|
489
|
+
return diffMs / 60000;
|
|
490
|
+
case 'h':
|
|
491
|
+
return diffMs / 3600000;
|
|
492
|
+
case 'd':
|
|
493
|
+
return diffMs / 86400000;
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
/**
|
|
497
|
+
* Add time to a date
|
|
498
|
+
*/
|
|
499
|
+
add(date, amount, unit) {
|
|
500
|
+
const ms = DateTime.diff(new Date(amount), new Date(0), 'ms');
|
|
501
|
+
const multipliers = { ms: 1, s: 1000, m: 60000, h: 3600000, d: 86400000 };
|
|
502
|
+
return new Date(date.getTime() + amount * multipliers[unit]);
|
|
503
|
+
},
|
|
504
|
+
/**
|
|
505
|
+
* Check if a date is today
|
|
506
|
+
*/
|
|
507
|
+
isToday(date) {
|
|
508
|
+
const today = new Date();
|
|
509
|
+
return (date.getDate() === today.getDate() &&
|
|
510
|
+
date.getMonth() === today.getMonth() &&
|
|
511
|
+
date.getFullYear() === today.getFullYear());
|
|
512
|
+
},
|
|
513
|
+
/**
|
|
514
|
+
* Get start of day
|
|
515
|
+
*/
|
|
516
|
+
startOfDay(date = new Date()) {
|
|
517
|
+
const result = new Date(date);
|
|
518
|
+
result.setHours(0, 0, 0, 0);
|
|
519
|
+
return result;
|
|
520
|
+
},
|
|
521
|
+
/**
|
|
522
|
+
* Get end of day
|
|
523
|
+
*/
|
|
524
|
+
endOfDay(date = new Date()) {
|
|
525
|
+
const result = new Date(date);
|
|
526
|
+
result.setHours(23, 59, 59, 999);
|
|
527
|
+
return result;
|
|
528
|
+
},
|
|
529
|
+
};
|
|
530
|
+
//# sourceMappingURL=time.js.map
|
package/dist/time.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"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"}
|