umt 2.16.0 → 2.17.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 +42 -0
- package/module/Array/chunk.js.map +1 -1
- package/module/Array/uniqBy.js.map +1 -1
- package/module/Async/debounceAsync.d.ts +18 -0
- package/module/Async/debounceAsync.js +59 -0
- package/module/Async/debounceAsync.js.map +1 -0
- package/module/Async/index.d.ts +5 -0
- package/module/Async/index.js +5 -0
- package/module/Async/index.js.map +1 -1
- package/module/Async/pSettled.d.ts +19 -0
- package/module/Async/pSettled.js +54 -0
- package/module/Async/pSettled.js.map +1 -0
- package/module/Async/retry.d.ts +22 -0
- package/module/Async/retry.js +49 -0
- package/module/Async/retry.js.map +1 -0
- package/module/Async/throttleAsync.d.ts +18 -0
- package/module/Async/throttleAsync.js +41 -0
- package/module/Async/throttleAsync.js.map +1 -0
- package/module/Async/waitFor.d.ts +18 -0
- package/module/Async/waitFor.js +32 -0
- package/module/Async/waitFor.js.map +1 -0
- package/module/Date/addDuration.d.ts +15 -0
- package/module/Date/addDuration.js +40 -0
- package/module/Date/addDuration.js.map +1 -0
- package/module/Date/diff.d.ts +14 -0
- package/module/Date/diff.js +45 -0
- package/module/Date/diff.js.map +1 -0
- package/module/Date/durationUnit.d.ts +12 -0
- package/module/Date/durationUnit.js +2 -0
- package/module/Date/durationUnit.js.map +1 -0
- package/module/Date/endOf.d.ts +13 -0
- package/module/Date/endOf.js +58 -0
- package/module/Date/endOf.js.map +1 -0
- package/module/Date/formatRelative.d.ts +13 -0
- package/module/Date/formatRelative.js +35 -0
- package/module/Date/formatRelative.js.map +1 -0
- package/module/Date/index.d.ts +10 -0
- package/module/Date/index.js +10 -0
- package/module/Date/index.js.map +1 -1
- package/module/Date/isBusinessDay.d.ts +10 -0
- package/module/Date/isBusinessDay.js +18 -0
- package/module/Date/isBusinessDay.js.map +1 -0
- package/module/Date/isSameDay.d.ts +10 -0
- package/module/Date/isSameDay.js +13 -0
- package/module/Date/isSameDay.js.map +1 -0
- package/module/Date/isWeekend.d.ts +9 -0
- package/module/Date/isWeekend.js +13 -0
- package/module/Date/isWeekend.js.map +1 -0
- package/module/Date/msByUnit.d.ts +2 -0
- package/module/Date/msByUnit.js +10 -0
- package/module/Date/msByUnit.js.map +1 -0
- package/module/Date/startOf.d.ts +13 -0
- package/module/Date/startOf.js +58 -0
- package/module/Date/startOf.js.map +1 -0
- package/module/Date/subDuration.d.ts +13 -0
- package/module/Date/subDuration.js +14 -0
- package/module/Date/subDuration.js.map +1 -0
- package/module/Error/index.d.ts +0 -1
- package/module/Error/index.js +0 -1
- package/module/Error/index.js.map +1 -1
- package/module/Object/deepClone.js.map +1 -1
- package/module/Object/flattenObject.d.ts +11 -0
- package/module/Object/flattenObject.js +29 -0
- package/module/Object/flattenObject.js.map +1 -0
- package/module/Object/get.d.ts +1 -0
- package/module/Object/get.js +26 -0
- package/module/Object/get.js.map +1 -0
- package/module/Object/has.d.ts +0 -19
- package/module/Object/has.js +4 -4
- package/module/Object/has.js.map +1 -1
- package/module/Object/index.d.ts +8 -0
- package/module/Object/index.js +8 -0
- package/module/Object/index.js.map +1 -1
- package/module/Object/invert.d.ts +12 -0
- package/module/Object/invert.js +20 -0
- package/module/Object/invert.js.map +1 -0
- package/module/Object/mergeDeep.js.map +1 -1
- package/module/Object/omitBy.d.ts +11 -0
- package/module/Object/omitBy.js +21 -0
- package/module/Object/omitBy.js.map +1 -0
- package/module/Object/pathSegments.d.ts +1 -0
- package/module/Object/pathSegments.js +2 -0
- package/module/Object/pathSegments.js.map +1 -0
- package/module/Object/pickBy.d.ts +11 -0
- package/module/Object/pickBy.js +21 -0
- package/module/Object/pickBy.js.map +1 -0
- package/module/Object/set.d.ts +19 -0
- package/module/Object/set.js +38 -0
- package/module/Object/set.js.map +1 -0
- package/module/Object/unflattenObject.d.ts +15 -0
- package/module/Object/unflattenObject.js +23 -0
- package/module/Object/unflattenObject.js.map +1 -0
- package/module/Random/index.d.ts +7 -0
- package/module/Random/index.js +8 -0
- package/module/Random/index.js.map +1 -0
- package/module/Random/randomBoolean.d.ts +9 -0
- package/module/Random/randomBoolean.js +10 -0
- package/module/Random/randomBoolean.js.map +1 -0
- package/module/Random/randomChoice.d.ts +9 -0
- package/module/Random/randomChoice.js +13 -0
- package/module/Random/randomChoice.js.map +1 -0
- package/module/Random/randomFloat.d.ts +9 -0
- package/module/Random/randomFloat.js +10 -0
- package/module/Random/randomFloat.js.map +1 -0
- package/module/Random/randomInt.d.ts +9 -0
- package/module/Random/randomInt.js +14 -0
- package/module/Random/randomInt.js.map +1 -0
- package/module/Random/randomUuid.d.ts +9 -0
- package/module/Random/randomUuid.js +31 -0
- package/module/Random/randomUuid.js.map +1 -0
- package/module/Random/seededRandom.d.ts +11 -0
- package/module/Random/seededRandom.js +31 -0
- package/module/Random/seededRandom.js.map +1 -0
- package/module/Random/weightedChoice.d.ts +15 -0
- package/module/Random/weightedChoice.js +34 -0
- package/module/Random/weightedChoice.js.map +1 -0
- package/module/String/capitalize.d.ts +12 -0
- package/module/String/capitalize.js +18 -0
- package/module/String/capitalize.js.map +1 -0
- package/module/String/capitalizeWord.d.ts +1 -0
- package/module/String/capitalizeWord.js +2 -0
- package/module/String/capitalizeWord.js.map +1 -0
- package/module/String/dedent.d.ts +19 -0
- package/module/String/dedent.js +56 -0
- package/module/String/dedent.js.map +1 -0
- package/module/String/index.d.ts +10 -0
- package/module/String/index.js +10 -0
- package/module/String/index.js.map +1 -1
- package/module/String/mask.d.ts +20 -0
- package/module/String/mask.js +24 -0
- package/module/String/mask.js.map +1 -0
- package/module/String/pascalCase.d.ts +9 -0
- package/module/String/pascalCase.js +14 -0
- package/module/String/pascalCase.js.map +1 -0
- package/module/String/snakeCase.d.ts +9 -0
- package/module/String/snakeCase.js +13 -0
- package/module/String/snakeCase.js.map +1 -0
- package/module/String/titleCase.d.ts +9 -0
- package/module/String/titleCase.js +14 -0
- package/module/String/titleCase.js.map +1 -0
- package/module/String/uncapitalize.d.ts +10 -0
- package/module/String/uncapitalize.js +16 -0
- package/module/String/uncapitalize.js.map +1 -0
- package/module/String/wordCount.d.ts +10 -0
- package/module/String/wordCount.js +12 -0
- package/module/String/wordCount.js.map +1 -0
- package/module/String/words.d.ts +12 -0
- package/module/String/words.js +21 -0
- package/module/String/words.js.map +1 -0
- package/module/Tool/createPipeline.d.ts +1 -1
- package/module/Tool/createPipeline.js +8 -6
- package/module/Tool/createPipeline.js.map +1 -1
- package/module/Tool/pipe.js.map +1 -1
- package/module/URL/buildUrl.d.ts +10 -0
- package/module/URL/buildUrl.js +10 -4
- package/module/URL/buildUrl.js.map +1 -1
- package/module/URL/parseQueryString.d.ts +6 -0
- package/module/URL/parseQueryString.js +6 -4
- package/module/URL/parseQueryString.js.map +1 -1
- package/module/Validate/isNumber.js.map +1 -1
- package/module/Validate/object/core.js +0 -1
- package/module/Validate/object/core.js.map +1 -1
- package/module/es5/Async/debounceAsync.d.ts +18 -0
- package/module/es5/Async/debounceAsync.js +103 -0
- package/module/es5/Async/index.d.ts +5 -0
- package/module/es5/Async/index.js +55 -0
- package/module/es5/Async/pSettled.d.ts +19 -0
- package/module/es5/Async/pSettled.js +68 -0
- package/module/es5/Async/retry.d.ts +22 -0
- package/module/es5/Async/retry.js +106 -0
- package/module/es5/Async/throttleAsync.d.ts +18 -0
- package/module/es5/Async/throttleAsync.js +46 -0
- package/module/es5/Async/waitFor.d.ts +18 -0
- package/module/es5/{Error/retry.js → Async/waitFor.js} +68 -74
- package/module/es5/Date/addDuration.d.ts +15 -0
- package/module/es5/Date/addDuration.js +45 -0
- package/module/es5/Date/diff.d.ts +14 -0
- package/module/es5/Date/diff.js +40 -0
- package/module/es5/Date/durationUnit.d.ts +12 -0
- package/module/es5/Date/durationUnit.js +5 -0
- package/module/es5/Date/endOf.d.ts +13 -0
- package/module/es5/Date/endOf.js +72 -0
- package/module/es5/Date/formatRelative.d.ts +13 -0
- package/module/es5/Date/formatRelative.js +61 -0
- package/module/es5/Date/index.d.ts +10 -0
- package/module/es5/Date/index.js +110 -0
- package/module/es5/Date/isBusinessDay.d.ts +10 -0
- package/module/es5/Date/isBusinessDay.js +26 -0
- package/module/es5/Date/isSameDay.d.ts +10 -0
- package/module/es5/Date/isSameDay.js +18 -0
- package/module/es5/Date/isWeekend.d.ts +9 -0
- package/module/es5/Date/isWeekend.js +18 -0
- package/module/es5/Date/msByUnit.d.ts +2 -0
- package/module/es5/Date/msByUnit.js +15 -0
- package/module/es5/Date/startOf.d.ts +13 -0
- package/module/es5/Date/startOf.js +72 -0
- package/module/es5/Date/subDuration.d.ts +13 -0
- package/module/es5/Date/subDuration.js +21 -0
- package/module/es5/Error/index.d.ts +0 -1
- package/module/es5/Error/index.js +0 -11
- package/module/es5/Object/flattenObject.d.ts +11 -0
- package/module/es5/Object/flattenObject.js +35 -0
- package/module/es5/Object/get.d.ts +1 -0
- package/module/es5/Object/get.js +42 -0
- package/module/es5/Object/has.d.ts +0 -19
- package/module/es5/Object/has.js +4 -4
- package/module/es5/Object/index.d.ts +8 -0
- package/module/es5/Object/index.js +88 -0
- package/module/es5/Object/invert.d.ts +12 -0
- package/module/es5/Object/invert.js +26 -0
- package/module/es5/Object/omitBy.d.ts +11 -0
- package/module/es5/Object/omitBy.js +27 -0
- package/module/es5/Object/pathSegments.d.ts +1 -0
- package/module/es5/Object/pathSegments.js +9 -0
- package/module/es5/Object/pickBy.d.ts +11 -0
- package/module/es5/Object/pickBy.js +27 -0
- package/module/es5/Object/set.d.ts +19 -0
- package/module/es5/Object/set.js +44 -0
- package/module/es5/Object/unflattenObject.d.ts +15 -0
- package/module/es5/Object/unflattenObject.js +30 -0
- package/module/es5/Random/index.d.ts +7 -0
- package/module/es5/Random/index.js +82 -0
- package/module/es5/Random/randomBoolean.d.ts +9 -0
- package/module/es5/Random/randomBoolean.js +18 -0
- package/module/es5/Random/randomChoice.d.ts +9 -0
- package/module/es5/Random/randomChoice.js +18 -0
- package/module/es5/Random/randomFloat.d.ts +9 -0
- package/module/es5/Random/randomFloat.js +17 -0
- package/module/es5/Random/randomInt.d.ts +9 -0
- package/module/es5/Random/randomInt.js +19 -0
- package/module/es5/Random/randomUuid.d.ts +9 -0
- package/module/es5/Random/randomUuid.js +38 -0
- package/module/es5/Random/seededRandom.d.ts +11 -0
- package/module/es5/Random/seededRandom.js +46 -0
- package/module/es5/Random/weightedChoice.d.ts +15 -0
- package/module/es5/Random/weightedChoice.js +50 -0
- package/module/es5/String/capitalize.d.ts +12 -0
- package/module/es5/String/capitalize.js +35 -0
- package/module/es5/String/capitalizeWord.d.ts +1 -0
- package/module/es5/String/capitalizeWord.js +9 -0
- package/module/es5/String/dedent.d.ts +19 -0
- package/module/es5/String/dedent.js +82 -0
- package/module/es5/String/index.d.ts +10 -0
- package/module/es5/String/index.js +110 -0
- package/module/es5/String/mask.d.ts +20 -0
- package/module/es5/String/mask.js +39 -0
- package/module/es5/String/pascalCase.d.ts +9 -0
- package/module/es5/String/pascalCase.js +21 -0
- package/module/es5/String/snakeCase.d.ts +9 -0
- package/module/es5/String/snakeCase.js +20 -0
- package/module/es5/String/titleCase.d.ts +9 -0
- package/module/es5/String/titleCase.js +21 -0
- package/module/es5/String/uncapitalize.d.ts +10 -0
- package/module/es5/String/uncapitalize.js +33 -0
- package/module/es5/String/wordCount.d.ts +10 -0
- package/module/es5/String/wordCount.js +19 -0
- package/module/es5/String/words.d.ts +12 -0
- package/module/es5/String/words.js +25 -0
- package/module/es5/Tool/createPipeline.d.ts +1 -1
- package/module/es5/Tool/createPipeline.js +7 -10
- package/module/es5/URL/buildUrl.d.ts +10 -0
- package/module/es5/URL/buildUrl.js +10 -4
- package/module/es5/URL/parseQueryString.d.ts +6 -0
- package/module/es5/URL/parseQueryString.js +6 -4
- package/module/es5/Validate/object/core.js +0 -1
- package/module/es5/index.d.ts +1 -0
- package/module/es5/index.js +20 -9
- package/module/index.d.ts +1 -0
- package/module/index.js +1 -0
- package/module/index.js.map +1 -1
- package/package.json +30 -25
- package/module/Error/retry.d.ts +0 -37
- package/module/Error/retry.js +0 -47
- package/module/Error/retry.js.map +0 -1
- package/module/es5/Error/retry.d.ts +0 -37
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DurationUnit } from "./durationUnit";
|
|
2
|
+
/**
|
|
3
|
+
* Adds a duration to a date and returns a new Date.
|
|
4
|
+
* Calendar-aware for "M" (months) and "y" (years), so end-of-month
|
|
5
|
+
* is preserved (e.g. Jan 31 + 1 month = Feb 28/29).
|
|
6
|
+
*
|
|
7
|
+
* @param {Date} date - Base date
|
|
8
|
+
* @param {number} amount - Amount to add (can be negative)
|
|
9
|
+
* @param {DurationUnit} unit - Unit of the amount
|
|
10
|
+
* @returns {Date} A new Date with the duration added
|
|
11
|
+
* @example
|
|
12
|
+
* addDuration(new Date("2025-01-31"), 1, "M"); // 2025-02-28
|
|
13
|
+
* addDuration(new Date("2025-01-01"), 7, "d"); // 2025-01-08
|
|
14
|
+
*/
|
|
15
|
+
export declare const addDuration: (date: Date, amount: number, unit: DurationUnit) => Date;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.addDuration = void 0;
|
|
7
|
+
var _msByUnit = require("./msByUnit");
|
|
8
|
+
/**
|
|
9
|
+
* Adds a duration to a date and returns a new Date.
|
|
10
|
+
* Calendar-aware for "M" (months) and "y" (years), so end-of-month
|
|
11
|
+
* is preserved (e.g. Jan 31 + 1 month = Feb 28/29).
|
|
12
|
+
*
|
|
13
|
+
* @param {Date} date - Base date
|
|
14
|
+
* @param {number} amount - Amount to add (can be negative)
|
|
15
|
+
* @param {DurationUnit} unit - Unit of the amount
|
|
16
|
+
* @returns {Date} A new Date with the duration added
|
|
17
|
+
* @example
|
|
18
|
+
* addDuration(new Date("2025-01-31"), 1, "M"); // 2025-02-28
|
|
19
|
+
* addDuration(new Date("2025-01-01"), 7, "d"); // 2025-01-08
|
|
20
|
+
*/
|
|
21
|
+
var addDuration = exports.addDuration = function addDuration(date, amount, unit) {
|
|
22
|
+
var ms = _msByUnit.msByUnit[unit];
|
|
23
|
+
if (ms !== undefined) {
|
|
24
|
+
return new Date(date.getTime() + amount * ms);
|
|
25
|
+
}
|
|
26
|
+
var result = new Date(date);
|
|
27
|
+
if (unit === "M") {
|
|
28
|
+
var targetMonth = result.getMonth() + amount;
|
|
29
|
+
var _day = result.getDate();
|
|
30
|
+
result.setDate(1);
|
|
31
|
+
result.setMonth(targetMonth);
|
|
32
|
+
var _lastDayOfTargetMonth = new Date(result.getFullYear(), result.getMonth() + 1, 0).getDate();
|
|
33
|
+
result.setDate(Math.min(_day, _lastDayOfTargetMonth));
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
var targetYear = result.getFullYear() + amount;
|
|
37
|
+
var month = result.getMonth();
|
|
38
|
+
var day = result.getDate();
|
|
39
|
+
result.setDate(1);
|
|
40
|
+
result.setFullYear(targetYear);
|
|
41
|
+
result.setMonth(month);
|
|
42
|
+
var lastDayOfTargetMonth = new Date(targetYear, month + 1, 0).getDate();
|
|
43
|
+
result.setDate(Math.min(day, lastDayOfTargetMonth));
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DurationUnit } from "./durationUnit";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the difference between two dates in the given unit, truncated toward zero.
|
|
4
|
+
* Calendar-aware for "M" (months) and "y" (years).
|
|
5
|
+
*
|
|
6
|
+
* @param {Date} left - End date
|
|
7
|
+
* @param {Date} right - Start date
|
|
8
|
+
* @param {DurationUnit} unit - Unit of the result
|
|
9
|
+
* @returns {number} The difference, truncated toward zero
|
|
10
|
+
* @example
|
|
11
|
+
* diff(new Date("2025-12-31"), new Date("2025-01-01"), "d"); // 364
|
|
12
|
+
* diff(new Date("2026-01-01"), new Date("2025-01-01"), "y"); // 1
|
|
13
|
+
*/
|
|
14
|
+
export declare const diff: (left: Date, right: Date, unit: DurationUnit) => number;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.diff = void 0;
|
|
7
|
+
var _clock = require("../Consts/clock");
|
|
8
|
+
var _msByUnit = require("./msByUnit");
|
|
9
|
+
/**
|
|
10
|
+
* Returns the difference between two dates in the given unit, truncated toward zero.
|
|
11
|
+
* Calendar-aware for "M" (months) and "y" (years).
|
|
12
|
+
*
|
|
13
|
+
* @param {Date} left - End date
|
|
14
|
+
* @param {Date} right - Start date
|
|
15
|
+
* @param {DurationUnit} unit - Unit of the result
|
|
16
|
+
* @returns {number} The difference, truncated toward zero
|
|
17
|
+
* @example
|
|
18
|
+
* diff(new Date("2025-12-31"), new Date("2025-01-01"), "d"); // 364
|
|
19
|
+
* diff(new Date("2026-01-01"), new Date("2025-01-01"), "y"); // 1
|
|
20
|
+
*/
|
|
21
|
+
var diff = exports.diff = function diff(left, right, unit) {
|
|
22
|
+
var ms = _msByUnit.msByUnit[unit];
|
|
23
|
+
if (ms !== undefined) {
|
|
24
|
+
return Math.trunc((left.getTime() - right.getTime()) / ms);
|
|
25
|
+
}
|
|
26
|
+
var yearsDelta = left.getFullYear() - right.getFullYear();
|
|
27
|
+
var monthsDelta = left.getMonth() - right.getMonth();
|
|
28
|
+
var dayDelta = left.getDate() - right.getDate();
|
|
29
|
+
var subDayDelta = left.getHours() * _clock.OneHourMs + left.getMinutes() * _clock.OneMinuteMs + left.getSeconds() * _clock.OneSecondMs + left.getMilliseconds() - (right.getHours() * _clock.OneHourMs + right.getMinutes() * _clock.OneMinuteMs + right.getSeconds() * _clock.OneSecondMs + right.getMilliseconds());
|
|
30
|
+
var calendarMonths = yearsDelta * 12 + monthsDelta;
|
|
31
|
+
if (calendarMonths > 0 && (dayDelta < 0 || dayDelta === 0 && subDayDelta < 0)) {
|
|
32
|
+
calendarMonths -= 1;
|
|
33
|
+
} else if (calendarMonths < 0 && (dayDelta > 0 || dayDelta === 0 && subDayDelta > 0)) {
|
|
34
|
+
calendarMonths += 1;
|
|
35
|
+
}
|
|
36
|
+
if (unit === "M") {
|
|
37
|
+
return calendarMonths;
|
|
38
|
+
}
|
|
39
|
+
return Math.trunc(calendarMonths / 12);
|
|
40
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported duration units for date arithmetic.
|
|
3
|
+
* - ms: milliseconds
|
|
4
|
+
* - s: seconds
|
|
5
|
+
* - m: minutes
|
|
6
|
+
* - h: hours
|
|
7
|
+
* - d: days
|
|
8
|
+
* - w: weeks
|
|
9
|
+
* - M: months (calendar-aware)
|
|
10
|
+
* - y: years (calendar-aware)
|
|
11
|
+
*/
|
|
12
|
+
export type DurationUnit = "ms" | "s" | "m" | "h" | "d" | "w" | "M" | "y";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DateBoundaryUnit } from "./startOf";
|
|
2
|
+
/**
|
|
3
|
+
* Returns a new Date set to the end of the given unit.
|
|
4
|
+
* Week ends on Saturday at 23:59:59.999.
|
|
5
|
+
*
|
|
6
|
+
* @param {Date} date - Base date
|
|
7
|
+
* @param {DateBoundaryUnit} unit - Boundary unit
|
|
8
|
+
* @returns {Date} A new Date at the end of the specified unit
|
|
9
|
+
* @example
|
|
10
|
+
* endOf(new Date("2025-04-15T10:30:00"), "day"); // 2025-04-15T23:59:59.999
|
|
11
|
+
* endOf(new Date("2025-04-15"), "month"); // 2025-04-30T23:59:59.999
|
|
12
|
+
*/
|
|
13
|
+
export declare const endOf: (date: Date, unit: DateBoundaryUnit) => Date;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.endOf = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Returns a new Date set to the end of the given unit.
|
|
9
|
+
* Week ends on Saturday at 23:59:59.999.
|
|
10
|
+
*
|
|
11
|
+
* @param {Date} date - Base date
|
|
12
|
+
* @param {DateBoundaryUnit} unit - Boundary unit
|
|
13
|
+
* @returns {Date} A new Date at the end of the specified unit
|
|
14
|
+
* @example
|
|
15
|
+
* endOf(new Date("2025-04-15T10:30:00"), "day"); // 2025-04-15T23:59:59.999
|
|
16
|
+
* endOf(new Date("2025-04-15"), "month"); // 2025-04-30T23:59:59.999
|
|
17
|
+
*/
|
|
18
|
+
var endOf = exports.endOf = function endOf(date, unit) {
|
|
19
|
+
var result = new Date(date);
|
|
20
|
+
switch (unit) {
|
|
21
|
+
case "second":
|
|
22
|
+
{
|
|
23
|
+
result.setMilliseconds(999);
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
case "minute":
|
|
27
|
+
{
|
|
28
|
+
result.setSeconds(59, 999);
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
case "hour":
|
|
32
|
+
{
|
|
33
|
+
result.setMinutes(59, 59, 999);
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
case "day":
|
|
37
|
+
{
|
|
38
|
+
result.setHours(23, 59, 59, 999);
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
case "week":
|
|
42
|
+
{
|
|
43
|
+
var dayOfWeek = result.getDay();
|
|
44
|
+
result.setDate(result.getDate() + (6 - dayOfWeek));
|
|
45
|
+
result.setHours(23, 59, 59, 999);
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
case "month":
|
|
49
|
+
{
|
|
50
|
+
result.setMonth(result.getMonth() + 1, 0);
|
|
51
|
+
result.setHours(23, 59, 59, 999);
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
case "quarter":
|
|
55
|
+
{
|
|
56
|
+
var quarterEndMonth = Math.floor(result.getMonth() / 3) * 3 + 2;
|
|
57
|
+
result.setMonth(quarterEndMonth + 1, 0);
|
|
58
|
+
result.setHours(23, 59, 59, 999);
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
case "year":
|
|
62
|
+
{
|
|
63
|
+
result.setMonth(11, 31);
|
|
64
|
+
result.setHours(23, 59, 59, 999);
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
default:
|
|
68
|
+
{
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats a date relative to a base date using Intl.RelativeTimeFormat.
|
|
3
|
+
* Picks the largest unit that fits the absolute delta.
|
|
4
|
+
*
|
|
5
|
+
* @param {Date} date - The target date
|
|
6
|
+
* @param {Date} [baseDate=new Date()] - Reference date (defaults to now)
|
|
7
|
+
* @param {string} [locale] - BCP 47 locale tag; uses system locale if omitted
|
|
8
|
+
* @returns {string} Localized relative-time string
|
|
9
|
+
* @example
|
|
10
|
+
* formatRelative(new Date(Date.now() - 3600_000), new Date(), "en"); // "1 hour ago"
|
|
11
|
+
* formatRelative(new Date(Date.now() + 86_400_000), new Date(), "ja"); // "1 日後"
|
|
12
|
+
*/
|
|
13
|
+
export declare const formatRelative: (date: Date, baseDate?: Date, locale?: string) => string;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.formatRelative = void 0;
|
|
7
|
+
var _clock = require("../Consts/clock");
|
|
8
|
+
var THRESHOLDS = [{
|
|
9
|
+
unit: "year",
|
|
10
|
+
ms: _clock.OneYearMs
|
|
11
|
+
}, {
|
|
12
|
+
unit: "month",
|
|
13
|
+
ms: _clock.OneMonthMs
|
|
14
|
+
}, {
|
|
15
|
+
unit: "week",
|
|
16
|
+
ms: _clock.OneWeekMs
|
|
17
|
+
}, {
|
|
18
|
+
unit: "day",
|
|
19
|
+
ms: _clock.OneDayMs
|
|
20
|
+
}, {
|
|
21
|
+
unit: "hour",
|
|
22
|
+
ms: _clock.OneHourMs
|
|
23
|
+
}, {
|
|
24
|
+
unit: "minute",
|
|
25
|
+
ms: _clock.OneMinuteMs
|
|
26
|
+
}, {
|
|
27
|
+
unit: "second",
|
|
28
|
+
ms: _clock.OneSecondMs
|
|
29
|
+
}];
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Formats a date relative to a base date using Intl.RelativeTimeFormat.
|
|
33
|
+
* Picks the largest unit that fits the absolute delta.
|
|
34
|
+
*
|
|
35
|
+
* @param {Date} date - The target date
|
|
36
|
+
* @param {Date} [baseDate=new Date()] - Reference date (defaults to now)
|
|
37
|
+
* @param {string} [locale] - BCP 47 locale tag; uses system locale if omitted
|
|
38
|
+
* @returns {string} Localized relative-time string
|
|
39
|
+
* @example
|
|
40
|
+
* formatRelative(new Date(Date.now() - 3600_000), new Date(), "en"); // "1 hour ago"
|
|
41
|
+
* formatRelative(new Date(Date.now() + 86_400_000), new Date(), "ja"); // "1 日後"
|
|
42
|
+
*/
|
|
43
|
+
var formatRelative = exports.formatRelative = function formatRelative(date) {
|
|
44
|
+
var baseDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();
|
|
45
|
+
var locale = arguments.length > 2 ? arguments[2] : undefined;
|
|
46
|
+
var deltaMs = date.getTime() - baseDate.getTime();
|
|
47
|
+
var absDelta = Math.abs(deltaMs);
|
|
48
|
+
var formatter = new Intl.RelativeTimeFormat(locale, {
|
|
49
|
+
numeric: "auto"
|
|
50
|
+
});
|
|
51
|
+
for (var _i = 0, _THRESHOLDS = THRESHOLDS; _i < _THRESHOLDS.length; _i++) {
|
|
52
|
+
var _THRESHOLDS$_i = _THRESHOLDS[_i],
|
|
53
|
+
unit = _THRESHOLDS$_i.unit,
|
|
54
|
+
ms = _THRESHOLDS$_i.ms;
|
|
55
|
+
if (absDelta >= ms) {
|
|
56
|
+
var value = Math.round(deltaMs / ms);
|
|
57
|
+
return formatter.format(value, unit);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return formatter.format(0, "second");
|
|
61
|
+
};
|
|
@@ -1,9 +1,19 @@
|
|
|
1
|
+
export * from "./addDuration";
|
|
1
2
|
export * from "./birthday";
|
|
2
3
|
export * from "./dateRange";
|
|
3
4
|
export * from "./dayOfWeek";
|
|
5
|
+
export * from "./diff";
|
|
6
|
+
export * from "./durationUnit";
|
|
7
|
+
export * from "./endOf";
|
|
4
8
|
export * from "./format";
|
|
9
|
+
export * from "./formatRelative";
|
|
5
10
|
export * from "./getDay";
|
|
6
11
|
export * from "./getTimezoneOffsetString";
|
|
12
|
+
export * from "./isBusinessDay";
|
|
7
13
|
export * from "./isLeapYear";
|
|
14
|
+
export * from "./isSameDay";
|
|
15
|
+
export * from "./isWeekend";
|
|
8
16
|
export * from "./new";
|
|
9
17
|
export * from "./now";
|
|
18
|
+
export * from "./startOf";
|
|
19
|
+
export * from "./subDuration";
|
package/module/es5/Date/index.js
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
var _addDuration = require("./addDuration");
|
|
7
|
+
Object.keys(_addDuration).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _addDuration[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function get() {
|
|
13
|
+
return _addDuration[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
6
17
|
var _birthday = require("./birthday");
|
|
7
18
|
Object.keys(_birthday).forEach(function (key) {
|
|
8
19
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -36,6 +47,39 @@ Object.keys(_dayOfWeek).forEach(function (key) {
|
|
|
36
47
|
}
|
|
37
48
|
});
|
|
38
49
|
});
|
|
50
|
+
var _diff = require("./diff");
|
|
51
|
+
Object.keys(_diff).forEach(function (key) {
|
|
52
|
+
if (key === "default" || key === "__esModule") return;
|
|
53
|
+
if (key in exports && exports[key] === _diff[key]) return;
|
|
54
|
+
Object.defineProperty(exports, key, {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function get() {
|
|
57
|
+
return _diff[key];
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
var _durationUnit = require("./durationUnit");
|
|
62
|
+
Object.keys(_durationUnit).forEach(function (key) {
|
|
63
|
+
if (key === "default" || key === "__esModule") return;
|
|
64
|
+
if (key in exports && exports[key] === _durationUnit[key]) return;
|
|
65
|
+
Object.defineProperty(exports, key, {
|
|
66
|
+
enumerable: true,
|
|
67
|
+
get: function get() {
|
|
68
|
+
return _durationUnit[key];
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
var _endOf = require("./endOf");
|
|
73
|
+
Object.keys(_endOf).forEach(function (key) {
|
|
74
|
+
if (key === "default" || key === "__esModule") return;
|
|
75
|
+
if (key in exports && exports[key] === _endOf[key]) return;
|
|
76
|
+
Object.defineProperty(exports, key, {
|
|
77
|
+
enumerable: true,
|
|
78
|
+
get: function get() {
|
|
79
|
+
return _endOf[key];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
39
83
|
var _format = require("./format");
|
|
40
84
|
Object.keys(_format).forEach(function (key) {
|
|
41
85
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -47,6 +91,17 @@ Object.keys(_format).forEach(function (key) {
|
|
|
47
91
|
}
|
|
48
92
|
});
|
|
49
93
|
});
|
|
94
|
+
var _formatRelative = require("./formatRelative");
|
|
95
|
+
Object.keys(_formatRelative).forEach(function (key) {
|
|
96
|
+
if (key === "default" || key === "__esModule") return;
|
|
97
|
+
if (key in exports && exports[key] === _formatRelative[key]) return;
|
|
98
|
+
Object.defineProperty(exports, key, {
|
|
99
|
+
enumerable: true,
|
|
100
|
+
get: function get() {
|
|
101
|
+
return _formatRelative[key];
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
50
105
|
var _getDay = require("./getDay");
|
|
51
106
|
Object.keys(_getDay).forEach(function (key) {
|
|
52
107
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -69,6 +124,17 @@ Object.keys(_getTimezoneOffsetString).forEach(function (key) {
|
|
|
69
124
|
}
|
|
70
125
|
});
|
|
71
126
|
});
|
|
127
|
+
var _isBusinessDay = require("./isBusinessDay");
|
|
128
|
+
Object.keys(_isBusinessDay).forEach(function (key) {
|
|
129
|
+
if (key === "default" || key === "__esModule") return;
|
|
130
|
+
if (key in exports && exports[key] === _isBusinessDay[key]) return;
|
|
131
|
+
Object.defineProperty(exports, key, {
|
|
132
|
+
enumerable: true,
|
|
133
|
+
get: function get() {
|
|
134
|
+
return _isBusinessDay[key];
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
});
|
|
72
138
|
var _isLeapYear = require("./isLeapYear");
|
|
73
139
|
Object.keys(_isLeapYear).forEach(function (key) {
|
|
74
140
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -80,6 +146,28 @@ Object.keys(_isLeapYear).forEach(function (key) {
|
|
|
80
146
|
}
|
|
81
147
|
});
|
|
82
148
|
});
|
|
149
|
+
var _isSameDay = require("./isSameDay");
|
|
150
|
+
Object.keys(_isSameDay).forEach(function (key) {
|
|
151
|
+
if (key === "default" || key === "__esModule") return;
|
|
152
|
+
if (key in exports && exports[key] === _isSameDay[key]) return;
|
|
153
|
+
Object.defineProperty(exports, key, {
|
|
154
|
+
enumerable: true,
|
|
155
|
+
get: function get() {
|
|
156
|
+
return _isSameDay[key];
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
var _isWeekend = require("./isWeekend");
|
|
161
|
+
Object.keys(_isWeekend).forEach(function (key) {
|
|
162
|
+
if (key === "default" || key === "__esModule") return;
|
|
163
|
+
if (key in exports && exports[key] === _isWeekend[key]) return;
|
|
164
|
+
Object.defineProperty(exports, key, {
|
|
165
|
+
enumerable: true,
|
|
166
|
+
get: function get() {
|
|
167
|
+
return _isWeekend[key];
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
});
|
|
83
171
|
var _new = require("./new");
|
|
84
172
|
Object.keys(_new).forEach(function (key) {
|
|
85
173
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -101,4 +189,26 @@ Object.keys(_now).forEach(function (key) {
|
|
|
101
189
|
return _now[key];
|
|
102
190
|
}
|
|
103
191
|
});
|
|
192
|
+
});
|
|
193
|
+
var _startOf = require("./startOf");
|
|
194
|
+
Object.keys(_startOf).forEach(function (key) {
|
|
195
|
+
if (key === "default" || key === "__esModule") return;
|
|
196
|
+
if (key in exports && exports[key] === _startOf[key]) return;
|
|
197
|
+
Object.defineProperty(exports, key, {
|
|
198
|
+
enumerable: true,
|
|
199
|
+
get: function get() {
|
|
200
|
+
return _startOf[key];
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
var _subDuration = require("./subDuration");
|
|
205
|
+
Object.keys(_subDuration).forEach(function (key) {
|
|
206
|
+
if (key === "default" || key === "__esModule") return;
|
|
207
|
+
if (key in exports && exports[key] === _subDuration[key]) return;
|
|
208
|
+
Object.defineProperty(exports, key, {
|
|
209
|
+
enumerable: true,
|
|
210
|
+
get: function get() {
|
|
211
|
+
return _subDuration[key];
|
|
212
|
+
}
|
|
213
|
+
});
|
|
104
214
|
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true when the given date is a weekday and not in the holidays list.
|
|
3
|
+
* @param {Date} date - The date to check
|
|
4
|
+
* @param {Date[]} [holidays=[]] - Optional list of holiday dates
|
|
5
|
+
* @returns {boolean} True when weekday and not a listed holiday
|
|
6
|
+
* @example
|
|
7
|
+
* isBusinessDay(new Date("2025-04-21")); // true (Monday)
|
|
8
|
+
* isBusinessDay(new Date("2025-04-21"), [new Date("2025-04-21")]); // false
|
|
9
|
+
*/
|
|
10
|
+
export declare const isBusinessDay: (date: Date, holidays?: Date[]) => boolean;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isBusinessDay = void 0;
|
|
7
|
+
var _isSameDay = require("./isSameDay");
|
|
8
|
+
var _isWeekend = require("./isWeekend");
|
|
9
|
+
/**
|
|
10
|
+
* Returns true when the given date is a weekday and not in the holidays list.
|
|
11
|
+
* @param {Date} date - The date to check
|
|
12
|
+
* @param {Date[]} [holidays=[]] - Optional list of holiday dates
|
|
13
|
+
* @returns {boolean} True when weekday and not a listed holiday
|
|
14
|
+
* @example
|
|
15
|
+
* isBusinessDay(new Date("2025-04-21")); // true (Monday)
|
|
16
|
+
* isBusinessDay(new Date("2025-04-21"), [new Date("2025-04-21")]); // false
|
|
17
|
+
*/
|
|
18
|
+
var isBusinessDay = exports.isBusinessDay = function isBusinessDay(date) {
|
|
19
|
+
var holidays = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
20
|
+
if ((0, _isWeekend.isWeekend)(date)) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return !holidays.some(function (holiday) {
|
|
24
|
+
return (0, _isSameDay.isSameDay)(holiday, date);
|
|
25
|
+
});
|
|
26
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true when two dates represent the same calendar day in local time.
|
|
3
|
+
* @param {Date} left - First date
|
|
4
|
+
* @param {Date} right - Second date
|
|
5
|
+
* @returns {boolean} True if same year/month/day in local time
|
|
6
|
+
* @example
|
|
7
|
+
* isSameDay(new Date("2025-04-15T01:00"), new Date("2025-04-15T23:00")); // true
|
|
8
|
+
* isSameDay(new Date("2025-04-15"), new Date("2025-04-16")); // false
|
|
9
|
+
*/
|
|
10
|
+
export declare const isSameDay: (left: Date, right: Date) => boolean;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isSameDay = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Returns true when two dates represent the same calendar day in local time.
|
|
9
|
+
* @param {Date} left - First date
|
|
10
|
+
* @param {Date} right - Second date
|
|
11
|
+
* @returns {boolean} True if same year/month/day in local time
|
|
12
|
+
* @example
|
|
13
|
+
* isSameDay(new Date("2025-04-15T01:00"), new Date("2025-04-15T23:00")); // true
|
|
14
|
+
* isSameDay(new Date("2025-04-15"), new Date("2025-04-16")); // false
|
|
15
|
+
*/
|
|
16
|
+
var isSameDay = exports.isSameDay = function isSameDay(left, right) {
|
|
17
|
+
return left.getFullYear() === right.getFullYear() && left.getMonth() === right.getMonth() && left.getDate() === right.getDate();
|
|
18
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true when the given date is Saturday or Sunday.
|
|
3
|
+
* @param {Date} date - The date to check
|
|
4
|
+
* @returns {boolean} True if Saturday or Sunday, false otherwise
|
|
5
|
+
* @example
|
|
6
|
+
* isWeekend(new Date("2025-04-19")); // true (Saturday)
|
|
7
|
+
* isWeekend(new Date("2025-04-21")); // false (Monday)
|
|
8
|
+
*/
|
|
9
|
+
export declare const isWeekend: (date: Date) => boolean;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isWeekend = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Returns true when the given date is Saturday or Sunday.
|
|
9
|
+
* @param {Date} date - The date to check
|
|
10
|
+
* @returns {boolean} True if Saturday or Sunday, false otherwise
|
|
11
|
+
* @example
|
|
12
|
+
* isWeekend(new Date("2025-04-19")); // true (Saturday)
|
|
13
|
+
* isWeekend(new Date("2025-04-21")); // false (Monday)
|
|
14
|
+
*/
|
|
15
|
+
var isWeekend = exports.isWeekend = function isWeekend(date) {
|
|
16
|
+
var dayOfWeek = date.getDay();
|
|
17
|
+
return dayOfWeek === 0 || dayOfWeek === 6;
|
|
18
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.msByUnit = void 0;
|
|
7
|
+
var _clock = require("../Consts/clock");
|
|
8
|
+
var msByUnit = exports.msByUnit = {
|
|
9
|
+
ms: 1,
|
|
10
|
+
s: _clock.OneSecondMs,
|
|
11
|
+
m: _clock.OneMinuteMs,
|
|
12
|
+
h: _clock.OneHourMs,
|
|
13
|
+
d: _clock.OneDayMs,
|
|
14
|
+
w: _clock.OneWeekMs
|
|
15
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type DateBoundaryUnit = "second" | "minute" | "hour" | "day" | "week" | "month" | "quarter" | "year";
|
|
2
|
+
/**
|
|
3
|
+
* Returns a new Date set to the start of the given unit.
|
|
4
|
+
* Week start is Sunday (day 0).
|
|
5
|
+
*
|
|
6
|
+
* @param {Date} date - Base date
|
|
7
|
+
* @param {DateBoundaryUnit} unit - Boundary unit
|
|
8
|
+
* @returns {Date} A new Date at the start of the specified unit
|
|
9
|
+
* @example
|
|
10
|
+
* startOf(new Date("2025-04-15T10:30:00"), "day"); // 2025-04-15T00:00:00
|
|
11
|
+
* startOf(new Date("2025-04-15"), "month"); // 2025-04-01T00:00:00
|
|
12
|
+
*/
|
|
13
|
+
export declare const startOf: (date: Date, unit: DateBoundaryUnit) => Date;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.startOf = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Returns a new Date set to the start of the given unit.
|
|
9
|
+
* Week start is Sunday (day 0).
|
|
10
|
+
*
|
|
11
|
+
* @param {Date} date - Base date
|
|
12
|
+
* @param {DateBoundaryUnit} unit - Boundary unit
|
|
13
|
+
* @returns {Date} A new Date at the start of the specified unit
|
|
14
|
+
* @example
|
|
15
|
+
* startOf(new Date("2025-04-15T10:30:00"), "day"); // 2025-04-15T00:00:00
|
|
16
|
+
* startOf(new Date("2025-04-15"), "month"); // 2025-04-01T00:00:00
|
|
17
|
+
*/
|
|
18
|
+
var startOf = exports.startOf = function startOf(date, unit) {
|
|
19
|
+
var result = new Date(date);
|
|
20
|
+
switch (unit) {
|
|
21
|
+
case "second":
|
|
22
|
+
{
|
|
23
|
+
result.setMilliseconds(0);
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
case "minute":
|
|
27
|
+
{
|
|
28
|
+
result.setSeconds(0, 0);
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
case "hour":
|
|
32
|
+
{
|
|
33
|
+
result.setMinutes(0, 0, 0);
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
case "day":
|
|
37
|
+
{
|
|
38
|
+
result.setHours(0, 0, 0, 0);
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
case "week":
|
|
42
|
+
{
|
|
43
|
+
var dayOfWeek = result.getDay();
|
|
44
|
+
result.setDate(result.getDate() - dayOfWeek);
|
|
45
|
+
result.setHours(0, 0, 0, 0);
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
case "month":
|
|
49
|
+
{
|
|
50
|
+
result.setDate(1);
|
|
51
|
+
result.setHours(0, 0, 0, 0);
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
case "quarter":
|
|
55
|
+
{
|
|
56
|
+
var quarterStartMonth = Math.floor(result.getMonth() / 3) * 3;
|
|
57
|
+
result.setMonth(quarterStartMonth, 1);
|
|
58
|
+
result.setHours(0, 0, 0, 0);
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
case "year":
|
|
62
|
+
{
|
|
63
|
+
result.setMonth(0, 1);
|
|
64
|
+
result.setHours(0, 0, 0, 0);
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
default:
|
|
68
|
+
{
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|