@duplojs/utils 1.4.57 → 1.4.59
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/array/group.cjs +11 -11
- package/dist/array/group.d.ts +1 -1
- package/dist/array/group.mjs +11 -11
- package/dist/clean/constraint/base.d.ts +6 -4
- package/dist/clean/constraint/defaultConstraint/index.d.ts +1 -0
- package/dist/clean/constraint/defaultConstraint/number.d.ts +6 -6
- package/dist/clean/constraint/defaultConstraint/string.d.ts +4 -4
- package/dist/clean/constraint/defaultConstraint/time.cjs +19 -0
- package/dist/clean/constraint/defaultConstraint/time.d.ts +61 -0
- package/dist/clean/constraint/defaultConstraint/time.mjs +16 -0
- package/dist/clean/constraint/set.d.ts +6 -4
- package/dist/clean/entity.d.ts +2 -1
- package/dist/clean/index.cjs +3 -0
- package/dist/clean/index.mjs +1 -0
- package/dist/clean/newType.d.ts +7 -5
- package/dist/clean/primitive/base.d.ts +25 -34
- package/dist/clean/primitive/operations/date/dateAddTime.d.ts +7 -11
- package/dist/clean/primitive/operations/date/dateGreaterThan.d.ts +9 -7
- package/dist/clean/primitive/operations/date/dateLessThan.d.ts +9 -7
- package/dist/clean/primitive/operations/date/dateMax.d.ts +3 -10
- package/dist/clean/primitive/operations/date/dateMin.d.ts +3 -10
- package/dist/clean/primitive/operations/date/dateSubtractTime.d.ts +7 -11
- package/dist/clean/primitive/operations/equal.cjs +1 -1
- package/dist/clean/primitive/operations/equal.d.ts +3 -3
- package/dist/clean/primitive/operations/equal.mjs +1 -1
- package/dist/clean/primitive/operations/sort.d.ts +8 -10
- package/dist/clean/primitive/operations/time/timeGreaterThan.d.ts +11 -9
- package/dist/clean/primitive/operations/time/timeLessThan.d.ts +11 -9
- package/dist/clean/primitive/operations/time/timeMax.cjs +2 -2
- package/dist/clean/primitive/operations/time/timeMax.d.ts +10 -17
- package/dist/clean/primitive/operations/time/timeMax.mjs +2 -2
- package/dist/clean/primitive/operations/time/timeMin.cjs +3 -3
- package/dist/clean/primitive/operations/time/timeMin.d.ts +10 -17
- package/dist/clean/primitive/operations/time/timeMin.mjs +3 -3
- package/dist/clean/unwrapEntity.cjs +13 -3
- package/dist/clean/unwrapEntity.d.ts +57 -5
- package/dist/clean/unwrapEntity.mjs +13 -3
- package/dist/common/index.d.ts +3 -4
- package/dist/common/kind.d.ts +1 -0
- package/dist/common/path.cjs +13 -13
- package/dist/common/path.d.ts +17 -11
- package/dist/common/path.mjs +13 -13
- package/dist/common/toRegExp.cjs +19 -0
- package/dist/common/toRegExp.d.ts +31 -0
- package/dist/common/toRegExp.mjs +17 -0
- package/dist/common/transformer.cjs +45 -0
- package/dist/common/transformer.d.ts +61 -0
- package/dist/common/transformer.mjs +40 -0
- package/dist/common/types/DeepReadonly.d.ts +1 -1
- package/dist/common/types/toLargeEnsemble.d.ts +2 -2
- package/dist/dataParser/error.cjs +4 -2
- package/dist/dataParser/error.d.ts +4 -2
- package/dist/dataParser/error.mjs +4 -2
- package/dist/dataParser/extended/date.d.ts +9 -4
- package/dist/dataParser/extended/time.d.ts +28 -12
- package/dist/dataParser/identifier.d.ts +20 -8
- package/dist/dataParser/parsers/date.cjs +16 -12
- package/dist/dataParser/parsers/date.d.ts +15 -9
- package/dist/dataParser/parsers/date.mjs +16 -12
- package/dist/dataParser/parsers/time/checkers/max.cjs +3 -0
- package/dist/dataParser/parsers/time/checkers/max.d.ts +28 -0
- package/dist/dataParser/parsers/time/checkers/max.mjs +3 -0
- package/dist/dataParser/parsers/time/checkers/min.cjs +3 -0
- package/dist/dataParser/parsers/time/checkers/min.d.ts +28 -0
- package/dist/dataParser/parsers/time/checkers/min.mjs +3 -0
- package/dist/dataParser/parsers/time/index.cjs +14 -10
- package/dist/dataParser/parsers/time/index.d.ts +15 -9
- package/dist/dataParser/parsers/time/index.mjs +14 -10
- package/dist/date/applyTimezone.cjs +4 -4
- package/dist/date/applyTimezone.d.ts +18 -16
- package/dist/date/applyTimezone.mjs +2 -2
- package/dist/date/closestTo.cjs +6 -2
- package/dist/date/closestTo.d.ts +15 -15
- package/dist/date/closestTo.mjs +6 -2
- package/dist/date/constants.cjs +4 -4
- package/dist/date/constants.d.ts +2 -2
- package/dist/date/constants.mjs +3 -3
- package/dist/date/create.cjs +20 -10
- package/dist/date/create.d.ts +24 -38
- package/dist/date/create.mjs +21 -11
- package/dist/date/createOrThrow.d.ts +18 -20
- package/dist/date/createTime.cjs +16 -7
- package/dist/date/createTime.d.ts +19 -18
- package/dist/date/createTime.mjs +17 -8
- package/dist/date/createTimeOrThrow.d.ts +17 -20
- package/dist/date/each.cjs +6 -4
- package/dist/date/each.d.ts +21 -19
- package/dist/date/each.mjs +6 -4
- package/dist/date/format.d.ts +17 -15
- package/dist/date/formatTime.d.ts +17 -16
- package/dist/date/getTimezoneOffset.cjs +6 -3
- package/dist/date/getTimezoneOffset.d.ts +17 -18
- package/dist/date/getTimezoneOffset.mjs +6 -3
- package/dist/date/getters/getDayOfMonth.cjs +3 -3
- package/dist/date/getters/getDayOfMonth.d.ts +20 -14
- package/dist/date/getters/getDayOfMonth.mjs +3 -3
- package/dist/date/getters/getDayOfWeek.cjs +3 -3
- package/dist/date/getters/getDayOfWeek.d.ts +15 -12
- package/dist/date/getters/getDayOfWeek.mjs +3 -3
- package/dist/date/getters/getDayOfYear.cjs +6 -6
- package/dist/date/getters/getDayOfYear.d.ts +21 -13
- package/dist/date/getters/getDayOfYear.mjs +6 -6
- package/dist/date/getters/getFirstDayOfMonth.cjs +2 -3
- package/dist/date/getters/getFirstDayOfMonth.d.ts +16 -10
- package/dist/date/getters/getFirstDayOfMonth.mjs +2 -3
- package/dist/date/getters/getFirstDayOfWeek.cjs +2 -3
- package/dist/date/getters/getFirstDayOfWeek.d.ts +17 -10
- package/dist/date/getters/getFirstDayOfWeek.mjs +2 -3
- package/dist/date/getters/getHour.cjs +3 -3
- package/dist/date/getters/getHour.d.ts +16 -14
- package/dist/date/getters/getHour.mjs +3 -3
- package/dist/date/getters/getLastDayOfMonth.cjs +2 -3
- package/dist/date/getters/getLastDayOfMonth.d.ts +16 -10
- package/dist/date/getters/getLastDayOfMonth.mjs +2 -3
- package/dist/date/getters/getLastDayOfWeek.cjs +2 -3
- package/dist/date/getters/getLastDayOfWeek.d.ts +17 -10
- package/dist/date/getters/getLastDayOfWeek.mjs +2 -3
- package/dist/date/getters/getMilliseconds.cjs +2 -2
- package/dist/date/getters/getMilliseconds.d.ts +11 -9
- package/dist/date/getters/getMilliseconds.mjs +2 -2
- package/dist/date/getters/getMinute.cjs +3 -3
- package/dist/date/getters/getMinute.d.ts +17 -15
- package/dist/date/getters/getMinute.mjs +3 -3
- package/dist/date/getters/getMonth.cjs +3 -3
- package/dist/date/getters/getMonth.d.ts +20 -15
- package/dist/date/getters/getMonth.mjs +3 -3
- package/dist/date/getters/getSecond.cjs +3 -3
- package/dist/date/getters/getSecond.d.ts +17 -15
- package/dist/date/getters/getSecond.mjs +3 -3
- package/dist/date/getters/getWeekOfYear.cjs +12 -11
- package/dist/date/getters/getWeekOfYear.d.ts +17 -11
- package/dist/date/getters/getWeekOfYear.mjs +12 -11
- package/dist/date/getters/getYear.cjs +3 -3
- package/dist/date/getters/getYear.d.ts +16 -15
- package/dist/date/getters/getYear.mjs +3 -3
- package/dist/date/index.cjs +12 -6
- package/dist/date/index.d.ts +5 -2
- package/dist/date/index.mjs +6 -3
- package/dist/date/is.cjs +3 -8
- package/dist/date/is.d.ts +9 -14
- package/dist/date/is.mjs +3 -8
- package/dist/date/isSafeTimeValue.d.ts +9 -13
- package/dist/date/isSafeTimestamp.d.ts +7 -16
- package/dist/date/isSerializedTheDate.cjs +20 -0
- package/dist/date/isSerializedTheDate.d.ts +31 -0
- package/dist/date/isSerializedTheDate.mjs +18 -0
- package/dist/date/isSerializedTheTime.cjs +20 -0
- package/dist/date/isSerializedTheTime.d.ts +31 -0
- package/dist/date/isSerializedTheTime.mjs +18 -0
- package/dist/date/isTime.cjs +3 -8
- package/dist/date/isTime.d.ts +7 -14
- package/dist/date/isTime.mjs +3 -8
- package/dist/date/kind.cjs +9 -0
- package/dist/date/kind.d.ts +1 -0
- package/dist/date/kind.mjs +7 -0
- package/dist/date/makeSafeTimeValue.d.ts +12 -11
- package/dist/date/makeSafeTimestamp.d.ts +12 -11
- package/dist/date/max.cjs +2 -2
- package/dist/date/max.d.ts +13 -13
- package/dist/date/max.mjs +2 -2
- package/dist/date/maxTime.cjs +2 -2
- package/dist/date/maxTime.d.ts +13 -21
- package/dist/date/maxTime.mjs +2 -2
- package/dist/date/min.cjs +2 -2
- package/dist/date/min.d.ts +13 -13
- package/dist/date/min.mjs +2 -2
- package/dist/date/minTime.cjs +2 -2
- package/dist/date/minTime.d.ts +13 -21
- package/dist/date/minTime.mjs +2 -2
- package/dist/date/now.cjs +3 -1
- package/dist/date/now.d.ts +9 -7
- package/dist/date/now.mjs +3 -1
- package/dist/date/operators/addDays.cjs +3 -5
- package/dist/date/operators/addDays.d.ts +14 -11
- package/dist/date/operators/addDays.mjs +3 -5
- package/dist/date/operators/addHours.cjs +3 -5
- package/dist/date/operators/addHours.d.ts +14 -11
- package/dist/date/operators/addHours.mjs +3 -5
- package/dist/date/operators/addMilliseconds.cjs +3 -5
- package/dist/date/operators/addMilliseconds.d.ts +14 -11
- package/dist/date/operators/addMilliseconds.mjs +3 -5
- package/dist/date/operators/addMinutes.cjs +3 -5
- package/dist/date/operators/addMinutes.d.ts +14 -11
- package/dist/date/operators/addMinutes.mjs +3 -5
- package/dist/date/operators/addMonths.cjs +2 -2
- package/dist/date/operators/addMonths.d.ts +13 -13
- package/dist/date/operators/addMonths.mjs +2 -2
- package/dist/date/operators/addSeconds.cjs +3 -5
- package/dist/date/operators/addSeconds.d.ts +14 -11
- package/dist/date/operators/addSeconds.mjs +3 -5
- package/dist/date/operators/addTime.cjs +13 -6
- package/dist/date/operators/addTime.d.ts +20 -18
- package/dist/date/operators/addTime.mjs +13 -6
- package/dist/date/operators/addWeeks.cjs +6 -5
- package/dist/date/operators/addWeeks.d.ts +14 -11
- package/dist/date/operators/addWeeks.mjs +6 -5
- package/dist/date/operators/addYears.cjs +2 -2
- package/dist/date/operators/addYears.d.ts +13 -13
- package/dist/date/operators/addYears.mjs +2 -2
- package/dist/date/operators/between.d.ts +11 -11
- package/dist/date/operators/betweenThan.d.ts +11 -11
- package/dist/date/operators/betweenThanTime.d.ts +18 -22
- package/dist/date/operators/betweenTime.d.ts +17 -21
- package/dist/date/operators/greater.d.ts +12 -9
- package/dist/date/operators/greaterThan.d.ts +14 -11
- package/dist/date/operators/greaterThanTime.d.ts +17 -21
- package/dist/date/operators/greaterTime.d.ts +16 -20
- package/dist/date/operators/less.d.ts +12 -9
- package/dist/date/operators/lessThan.d.ts +13 -10
- package/dist/date/operators/lessThanTime.d.ts +17 -21
- package/dist/date/operators/lessTime.d.ts +16 -20
- package/dist/date/operators/subtractDays.cjs +3 -5
- package/dist/date/operators/subtractDays.d.ts +14 -11
- package/dist/date/operators/subtractDays.mjs +3 -5
- package/dist/date/operators/subtractHours.cjs +3 -5
- package/dist/date/operators/subtractHours.d.ts +14 -11
- package/dist/date/operators/subtractHours.mjs +3 -5
- package/dist/date/operators/subtractMilliseconds.cjs +3 -5
- package/dist/date/operators/subtractMilliseconds.d.ts +14 -11
- package/dist/date/operators/subtractMilliseconds.mjs +3 -5
- package/dist/date/operators/subtractMinutes.cjs +3 -5
- package/dist/date/operators/subtractMinutes.d.ts +14 -11
- package/dist/date/operators/subtractMinutes.mjs +3 -5
- package/dist/date/operators/subtractMonths.cjs +2 -2
- package/dist/date/operators/subtractMonths.d.ts +17 -11
- package/dist/date/operators/subtractMonths.mjs +2 -2
- package/dist/date/operators/subtractSeconds.cjs +3 -5
- package/dist/date/operators/subtractSeconds.d.ts +14 -11
- package/dist/date/operators/subtractSeconds.mjs +3 -5
- package/dist/date/operators/subtractTime.cjs +13 -6
- package/dist/date/operators/subtractTime.d.ts +20 -18
- package/dist/date/operators/subtractTime.mjs +13 -6
- package/dist/date/operators/subtractWeeks.cjs +3 -5
- package/dist/date/operators/subtractWeeks.d.ts +14 -11
- package/dist/date/operators/subtractWeeks.mjs +3 -5
- package/dist/date/operators/subtractYears.cjs +2 -2
- package/dist/date/operators/subtractYears.d.ts +17 -11
- package/dist/date/operators/subtractYears.mjs +2 -2
- package/dist/date/round.cjs +2 -2
- package/dist/date/round.d.ts +11 -14
- package/dist/date/round.mjs +2 -2
- package/dist/date/serialize.cjs +14 -0
- package/dist/date/serialize.d.ts +41 -0
- package/dist/date/serialize.mjs +12 -0
- package/dist/date/sort.cjs +2 -2
- package/dist/date/sort.d.ts +16 -15
- package/dist/date/sort.mjs +2 -2
- package/dist/date/sortTimes.cjs +2 -2
- package/dist/date/sortTimes.d.ts +15 -21
- package/dist/date/sortTimes.mjs +2 -2
- package/dist/date/theDate.cjs +124 -0
- package/dist/date/theDate.d.ts +114 -0
- package/dist/date/theDate.mjs +122 -0
- package/dist/date/theTime.cjs +36 -0
- package/dist/date/theTime.d.ts +53 -0
- package/dist/date/theTime.mjs +34 -0
- package/dist/date/timezone.cjs +3 -0
- package/dist/date/timezone.d.ts +27 -0
- package/dist/date/timezone.mjs +3 -0
- package/dist/date/toISOString.cjs +5 -2
- package/dist/date/toISOString.d.ts +12 -10
- package/dist/date/toISOString.mjs +5 -2
- package/dist/date/toNative.cjs +4 -0
- package/dist/date/toNative.d.ts +12 -10
- package/dist/date/toNative.mjs +4 -0
- package/dist/date/toTimeValue.cjs +6 -2
- package/dist/date/toTimeValue.d.ts +14 -12
- package/dist/date/toTimeValue.mjs +6 -2
- package/dist/date/toTimestamp.cjs +5 -3
- package/dist/date/toTimestamp.d.ts +11 -9
- package/dist/date/toTimestamp.mjs +6 -4
- package/dist/date/today.cjs +3 -1
- package/dist/date/today.d.ts +14 -7
- package/dist/date/today.mjs +3 -1
- package/dist/date/tomorrow.cjs +2 -1
- package/dist/date/tomorrow.d.ts +12 -7
- package/dist/date/tomorrow.mjs +2 -1
- package/dist/date/types/index.d.ts +2 -2
- package/dist/date/types/serializedTheDate.d.ts +1 -0
- package/dist/date/types/serializedTheTime.d.ts +42 -0
- package/dist/date/types/spoolingDate.d.ts +2 -1
- package/dist/date/yesterday.cjs +2 -1
- package/dist/date/yesterday.d.ts +12 -7
- package/dist/date/yesterday.mjs +2 -1
- package/dist/generator/asyncGroup.cjs +31 -0
- package/dist/generator/asyncGroup.d.ts +39 -0
- package/dist/generator/asyncGroup.mjs +29 -0
- package/dist/generator/group.cjs +39 -0
- package/dist/generator/group.d.ts +101 -0
- package/dist/generator/group.mjs +36 -0
- package/dist/generator/index.cjs +5 -0
- package/dist/generator/index.d.ts +3 -0
- package/dist/generator/index.mjs +2 -0
- package/dist/index.cjs +7 -6
- package/dist/index.mjs +2 -3
- package/dist/metadata.json +94 -40
- package/dist/object/entries.cjs +7 -2
- package/dist/object/entries.mjs +7 -2
- package/dist/object/keys.cjs +7 -2
- package/dist/object/keys.d.ts +1 -1
- package/dist/object/keys.mjs +7 -2
- package/package.json +1 -1
- package/dist/common/toJSON.cjs +0 -37
- package/dist/common/toJSON.d.ts +0 -44
- package/dist/common/toJSON.mjs +0 -35
- package/dist/common/toString.cjs +0 -10
- package/dist/common/toString.d.ts +0 -17
- package/dist/common/toString.mjs +0 -8
- package/dist/common/toTransform.cjs +0 -37
- package/dist/common/toTransform.d.ts +0 -50
- package/dist/common/toTransform.mjs +0 -35
- package/dist/date/createTheDate.cjs +0 -13
- package/dist/date/createTheDate.d.ts +0 -28
- package/dist/date/createTheDate.mjs +0 -11
- package/dist/date/createTheTime.cjs +0 -13
- package/dist/date/createTheTime.d.ts +0 -25
- package/dist/date/createTheTime.mjs +0 -11
- package/dist/date/types/theDate.d.ts +0 -11
- package/dist/date/types/theTime.d.ts +0 -10
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var createOrThrow = require('./createOrThrow.cjs');
|
|
4
3
|
var getTimezoneOffset = require('./getTimezoneOffset.cjs');
|
|
5
4
|
var toTimestamp = require('./toTimestamp.cjs');
|
|
5
|
+
var theDate = require('./theDate.cjs');
|
|
6
6
|
|
|
7
7
|
function applyTimezone(...args) {
|
|
8
8
|
if (args.length === 1) {
|
|
9
9
|
const [timeZone] = args;
|
|
10
10
|
return (theDate) => applyTimezone(theDate, timeZone);
|
|
11
11
|
}
|
|
12
|
-
const [theDate, timeZone] = args;
|
|
13
|
-
const timestamp = toTimestamp.toTimestamp(theDate);
|
|
14
|
-
return
|
|
12
|
+
const [theDate$1, timeZone] = args;
|
|
13
|
+
const timestamp = toTimestamp.toTimestamp(theDate$1);
|
|
14
|
+
return theDate.TheDate.new(timestamp - getTimezoneOffset.getTimezoneOffset(theDate$1, timeZone));
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
exports.applyTimezone = applyTimezone;
|
|
@@ -1,33 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { Timezone } from "./timezone";
|
|
2
|
+
import { TheDate } from "./theDate";
|
|
3
|
+
import type { SerializedTheDate } from "./types";
|
|
3
4
|
/**
|
|
4
|
-
* Applies a timezone to a date
|
|
5
|
+
* Applies a timezone offset to a date and returns the shifted `TheDate`.
|
|
5
6
|
*
|
|
6
7
|
* **Supported call styles:**
|
|
7
|
-
* - Classic: `applyTimezone(timeZone)` →
|
|
8
|
-
* - Curried: `applyTimezone(
|
|
8
|
+
* - Classic: `applyTimezone(input, timeZone)` → `TheDate`
|
|
9
|
+
* - Curried: `applyTimezone(timeZone)` → `(input) => TheDate`
|
|
9
10
|
*
|
|
10
|
-
*
|
|
11
|
+
* `input` accepts `TheDate` or `SerializedTheDate`.
|
|
11
12
|
*
|
|
12
13
|
* ```ts
|
|
13
|
-
* const
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* const input = D.create("2024-01-01", {
|
|
15
|
+
* hour: "00",
|
|
16
|
+
* });
|
|
16
17
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* D.applyTimezone("America/New_York"),
|
|
20
|
-
* ); // shiftedDate: "date1704085200000+"
|
|
18
|
+
* const shifted = D.applyTimezone(input, "America/New_York");
|
|
19
|
+
* // shifted: TheDate
|
|
21
20
|
*
|
|
21
|
+
* pipe(
|
|
22
|
+
* input,
|
|
23
|
+
* D.applyTimezone("Europe/Paris"),
|
|
22
24
|
* ```
|
|
23
25
|
*
|
|
24
26
|
* @remarks
|
|
25
|
-
* -
|
|
27
|
+
* - This is a timestamp shift based on the target timezone offset.
|
|
26
28
|
*
|
|
27
29
|
* @see https://utils.duplojs.dev/en/v1/api/date/applyTimezone
|
|
28
30
|
*
|
|
29
31
|
* @namespace D
|
|
30
32
|
*
|
|
31
33
|
*/
|
|
32
|
-
export declare function applyTimezone(timeZone: Timezone): (
|
|
33
|
-
export declare function applyTimezone(
|
|
34
|
+
export declare function applyTimezone(timeZone: Timezone): (input: TheDate | SerializedTheDate) => TheDate;
|
|
35
|
+
export declare function applyTimezone(input: TheDate | SerializedTheDate, timeZone: Timezone): TheDate;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createOrThrow } from './createOrThrow.mjs';
|
|
2
1
|
import { getTimezoneOffset } from './getTimezoneOffset.mjs';
|
|
3
2
|
import { toTimestamp } from './toTimestamp.mjs';
|
|
3
|
+
import { TheDate } from './theDate.mjs';
|
|
4
4
|
|
|
5
5
|
function applyTimezone(...args) {
|
|
6
6
|
if (args.length === 1) {
|
|
@@ -9,7 +9,7 @@ function applyTimezone(...args) {
|
|
|
9
9
|
}
|
|
10
10
|
const [theDate, timeZone] = args;
|
|
11
11
|
const timestamp = toTimestamp(theDate);
|
|
12
|
-
return
|
|
12
|
+
return TheDate.new(timestamp - getTimezoneOffset(theDate, timeZone));
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export { applyTimezone };
|
package/dist/date/closestTo.cjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var theDate = require('./theDate.cjs');
|
|
3
4
|
var toTimestamp = require('./toTimestamp.cjs');
|
|
4
5
|
|
|
5
6
|
function closestTo(...args) {
|
|
6
|
-
if (typeof args[0] === "string") {
|
|
7
|
+
if (typeof args[0] === "string" || args[0] instanceof theDate.TheDate) {
|
|
7
8
|
const [target, params] = args;
|
|
8
9
|
return (input) => closestTo(input, target, params);
|
|
9
10
|
}
|
|
@@ -23,7 +24,10 @@ function closestTo(...args) {
|
|
|
23
24
|
const distance = Math.abs(valueTimestamp - targetTimestamp);
|
|
24
25
|
if (distance < smallestDiff) {
|
|
25
26
|
smallestDiff = distance;
|
|
26
|
-
|
|
27
|
+
if (value instanceof theDate.TheDate) {
|
|
28
|
+
closest = value;
|
|
29
|
+
}
|
|
30
|
+
closest = theDate.TheDate.new(valueTimestamp);
|
|
27
31
|
}
|
|
28
32
|
}
|
|
29
33
|
return closest;
|
package/dist/date/closestTo.d.ts
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { TheDate } from "./theDate";
|
|
2
|
+
import type { SerializedTheDate } from "./types";
|
|
2
3
|
interface ClosestToParams {
|
|
3
4
|
tieBreaker?: "favorPast" | "favorFuture";
|
|
4
5
|
}
|
|
5
6
|
/**
|
|
6
|
-
* Finds the closest date to a target.
|
|
7
|
+
* Finds the closest date from an iterable relative to a target date.
|
|
7
8
|
*
|
|
8
9
|
* **Supported call styles:**
|
|
9
|
-
* - Classic: `closestTo(input, target, params?)` →
|
|
10
|
-
* - Curried: `closestTo(target, params?)` →
|
|
11
|
-
*
|
|
12
|
-
* The input value is not mutated.
|
|
10
|
+
* - Classic: `closestTo(input, target, params?)` → `TheDate | undefined`
|
|
11
|
+
* - Curried: `closestTo(target, params?)` → `(input) => TheDate | undefined`
|
|
13
12
|
*
|
|
14
13
|
* ```ts
|
|
15
14
|
* const inputs = [
|
|
@@ -19,24 +18,25 @@ interface ClosestToParams {
|
|
|
19
18
|
* ] as const;
|
|
20
19
|
*
|
|
21
20
|
* const target = D.create("2024-06-15");
|
|
22
|
-
* const
|
|
23
|
-
* //
|
|
21
|
+
* const nearest = D.closestTo(inputs, target);
|
|
22
|
+
* // nearest: TheDate | undefined
|
|
24
23
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
24
|
+
* const nearestPast = D.closestTo(inputs, target, {
|
|
25
|
+
* tieBreaker: "favorPast",
|
|
26
|
+
* });
|
|
27
|
+
* // nearestPast: TheDate | undefined
|
|
29
28
|
*
|
|
30
29
|
* ```
|
|
31
30
|
*
|
|
32
31
|
* @remarks
|
|
33
|
-
* - `tieBreaker
|
|
32
|
+
* - `tieBreaker: "favorPast"` ignores future candidates.
|
|
33
|
+
* - `tieBreaker: "favorFuture"` ignores past candidates.
|
|
34
34
|
*
|
|
35
35
|
* @see https://utils.duplojs.dev/en/v1/api/date/closestTo
|
|
36
36
|
*
|
|
37
37
|
* @namespace D
|
|
38
38
|
*
|
|
39
39
|
*/
|
|
40
|
-
export declare function closestTo<GenericIterable extends Iterable<TheDate>>(target: TheDate, params?: ClosestToParams): (input: GenericIterable) => TheDate | undefined;
|
|
41
|
-
export declare function closestTo<GenericIterable extends Iterable<TheDate>>(input: GenericIterable, target: TheDate, params?: ClosestToParams): TheDate | undefined;
|
|
40
|
+
export declare function closestTo<GenericIterable extends Iterable<TheDate | SerializedTheDate>>(target: TheDate | SerializedTheDate, params?: ClosestToParams): (input: GenericIterable) => TheDate | undefined;
|
|
41
|
+
export declare function closestTo<GenericIterable extends Iterable<TheDate | SerializedTheDate>>(input: GenericIterable, target: TheDate | SerializedTheDate, params?: ClosestToParams): TheDate | undefined;
|
|
42
42
|
export {};
|
package/dist/date/closestTo.mjs
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { TheDate } from './theDate.mjs';
|
|
1
2
|
import { toTimestamp } from './toTimestamp.mjs';
|
|
2
3
|
|
|
3
4
|
function closestTo(...args) {
|
|
4
|
-
if (typeof args[0] === "string") {
|
|
5
|
+
if (typeof args[0] === "string" || args[0] instanceof TheDate) {
|
|
5
6
|
const [target, params] = args;
|
|
6
7
|
return (input) => closestTo(input, target, params);
|
|
7
8
|
}
|
|
@@ -21,7 +22,10 @@ function closestTo(...args) {
|
|
|
21
22
|
const distance = Math.abs(valueTimestamp - targetTimestamp);
|
|
22
23
|
if (distance < smallestDiff) {
|
|
23
24
|
smallestDiff = distance;
|
|
24
|
-
|
|
25
|
+
if (value instanceof TheDate) {
|
|
26
|
+
closest = value;
|
|
27
|
+
}
|
|
28
|
+
closest = TheDate.new(valueTimestamp);
|
|
25
29
|
}
|
|
26
30
|
}
|
|
27
31
|
return closest;
|
package/dist/date/constants.cjs
CHANGED
|
@@ -14,9 +14,9 @@ const monthsInOneYear = 12;
|
|
|
14
14
|
const minutesInOneHour = 60;
|
|
15
15
|
const secondsInOneMinute = 60;
|
|
16
16
|
const hoursInOneDay = 24;
|
|
17
|
-
const
|
|
17
|
+
const serializeTheDateRegex = /^date-?(?<value>\d{1,16})(?<sign>[+-])$/;
|
|
18
18
|
const isoDateRegex = /^(?<year>-?[0-9]{4})-(?<month>[0-9]{2})-(?<date>[0-9]{2})(?:T(?<hour>[0-9]{2}):(?<minute>[0-9]{2}):(?<second>[0-9]{2})(?:\.(?<millisecond>[0-9]{3}))?Z?)?$/;
|
|
19
|
-
const
|
|
19
|
+
const serializeTheTimeRegex = /^time-?(?<value>\d{1,16})(?<sign>[+-])$/;
|
|
20
20
|
const isoTimeRegex = /^(?<sign>[+-])?(?<hour>[0-9]{2}):(?<minute>[0-9]{2})(?::(?<second>[0-9]{2})(?:\.(?<millisecond>[0-9]{3}))?Z?)?$/;
|
|
21
21
|
|
|
22
22
|
exports.daysInOneWeek = daysInOneWeek;
|
|
@@ -35,5 +35,5 @@ exports.minTimestamp = minTimestamp;
|
|
|
35
35
|
exports.minutesInOneHour = minutesInOneHour;
|
|
36
36
|
exports.monthsInOneYear = monthsInOneYear;
|
|
37
37
|
exports.secondsInOneMinute = secondsInOneMinute;
|
|
38
|
-
exports.
|
|
39
|
-
exports.
|
|
38
|
+
exports.serializeTheDateRegex = serializeTheDateRegex;
|
|
39
|
+
exports.serializeTheTimeRegex = serializeTheTimeRegex;
|
package/dist/date/constants.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare const monthsInOneYear = 12;
|
|
|
12
12
|
export declare const minutesInOneHour = 60;
|
|
13
13
|
export declare const secondsInOneMinute = 60;
|
|
14
14
|
export declare const hoursInOneDay = 24;
|
|
15
|
-
export declare const
|
|
15
|
+
export declare const serializeTheDateRegex: RegExp;
|
|
16
16
|
export declare const isoDateRegex: RegExp;
|
|
17
|
-
export declare const
|
|
17
|
+
export declare const serializeTheTimeRegex: RegExp;
|
|
18
18
|
export declare const isoTimeRegex: RegExp;
|
package/dist/date/constants.mjs
CHANGED
|
@@ -12,9 +12,9 @@ const monthsInOneYear = 12;
|
|
|
12
12
|
const minutesInOneHour = 60;
|
|
13
13
|
const secondsInOneMinute = 60;
|
|
14
14
|
const hoursInOneDay = 24;
|
|
15
|
-
const
|
|
15
|
+
const serializeTheDateRegex = /^date-?(?<value>\d{1,16})(?<sign>[+-])$/;
|
|
16
16
|
const isoDateRegex = /^(?<year>-?[0-9]{4})-(?<month>[0-9]{2})-(?<date>[0-9]{2})(?:T(?<hour>[0-9]{2}):(?<minute>[0-9]{2}):(?<second>[0-9]{2})(?:\.(?<millisecond>[0-9]{3}))?Z?)?$/;
|
|
17
|
-
const
|
|
17
|
+
const serializeTheTimeRegex = /^time-?(?<value>\d{1,16})(?<sign>[+-])$/;
|
|
18
18
|
const isoTimeRegex = /^(?<sign>[+-])?(?<hour>[0-9]{2}):(?<minute>[0-9]{2})(?::(?<second>[0-9]{2})(?:\.(?<millisecond>[0-9]{3}))?Z?)?$/;
|
|
19
19
|
|
|
20
|
-
export { daysInOneWeek, hoursInOneDay, isoDateRegex, isoTimeRegex, maxTimeValue, maxTimestamp, millisecondInOneHour, millisecondInOneMinute, millisecondInOneWeek, millisecondsInOneDay, millisecondsInOneSecond, minTimeValue, minTimestamp, minutesInOneHour, monthsInOneYear, secondsInOneMinute,
|
|
20
|
+
export { daysInOneWeek, hoursInOneDay, isoDateRegex, isoTimeRegex, maxTimeValue, maxTimestamp, millisecondInOneHour, millisecondInOneMinute, millisecondInOneWeek, millisecondsInOneDay, millisecondsInOneSecond, minTimeValue, minTimestamp, minutesInOneHour, monthsInOneYear, secondsInOneMinute, serializeTheDateRegex, serializeTheTimeRegex };
|
package/dist/date/create.cjs
CHANGED
|
@@ -5,7 +5,7 @@ var isSafeTimestamp = require('./isSafeTimestamp.cjs');
|
|
|
5
5
|
var applyTimezone = require('./applyTimezone.cjs');
|
|
6
6
|
var is = require('./is.cjs');
|
|
7
7
|
var toNative = require('./toNative.cjs');
|
|
8
|
-
var
|
|
8
|
+
var theDate = require('./theDate.cjs');
|
|
9
9
|
var create$1 = require('../either/right/create.cjs');
|
|
10
10
|
var is$1 = require('../either/left/is.cjs');
|
|
11
11
|
var create$2 = require('../either/left/create.cjs');
|
|
@@ -21,28 +21,38 @@ function create(input, params) {
|
|
|
21
21
|
if (input instanceof Date) {
|
|
22
22
|
return createFromTimestamp(input.getTime());
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
const serializeTheDateMatch = typeof input === "string" && input.match(constants.serializeTheDateRegex);
|
|
25
|
+
if (serializeTheDateMatch) {
|
|
26
|
+
const { value, sign } = serializeTheDateMatch.groups;
|
|
27
|
+
return createFromTimestamp(Number(sign === "-"
|
|
28
|
+
? `-${value}`
|
|
29
|
+
: value));
|
|
26
30
|
}
|
|
27
31
|
const safeDateMatch = typeof input === "string" && input.match(safeDateRegex);
|
|
28
32
|
if (safeDateMatch) {
|
|
29
33
|
const { year, monthWithDay } = safeDateMatch.groups;
|
|
30
34
|
const date = new Date(`0000-${monthWithDay}T${params?.hour ?? "00"}:${params?.minute ?? "00"}:${params?.second ?? "00"}.${params?.millisecond ?? "000"}Z`);
|
|
31
35
|
date.setUTCFullYear(Number(year));
|
|
32
|
-
|
|
33
|
-
return `date${Math.abs(timestamp)}${timestamp < 0 ? "-" : "+"}`;
|
|
36
|
+
return theDate.TheDate.new(date.getTime());
|
|
34
37
|
}
|
|
35
38
|
if (typeof input === "object") {
|
|
36
39
|
let inputValueResult = undefined;
|
|
37
|
-
|
|
40
|
+
const serializeTheDateMatch = typeof input.value === "string" && input.value.match(constants.serializeTheDateRegex);
|
|
41
|
+
if (serializeTheDateMatch) {
|
|
42
|
+
const { value, sign } = serializeTheDateMatch.groups;
|
|
43
|
+
inputValueResult = createFromTimestamp(Number(sign === "-"
|
|
44
|
+
? `-${value}`
|
|
45
|
+
: value));
|
|
46
|
+
}
|
|
47
|
+
else if (is.is(input.value)) {
|
|
48
|
+
inputValueResult = create$1.right("date-created", input.value);
|
|
49
|
+
}
|
|
50
|
+
else if (input.value instanceof Date) {
|
|
38
51
|
inputValueResult = createFromTimestamp(input.value.getTime());
|
|
39
52
|
}
|
|
40
53
|
else if (typeof input.value === "number") {
|
|
41
54
|
inputValueResult = createFromTimestamp(input.value);
|
|
42
55
|
}
|
|
43
|
-
else if (is.is(input.value)) {
|
|
44
|
-
inputValueResult = create$1.right("date-created", input.value);
|
|
45
|
-
}
|
|
46
56
|
else {
|
|
47
57
|
const isoDateMatch = input.value.match(constants.isoDateRegex);
|
|
48
58
|
if (isoDateMatch) {
|
|
@@ -77,7 +87,7 @@ function createFromTimestamp(input) {
|
|
|
77
87
|
if (!isSafeTimestamp.isSafeTimestamp(input)) {
|
|
78
88
|
return create$2.left("date-created-error", null);
|
|
79
89
|
}
|
|
80
|
-
return create$1.right("date-created",
|
|
90
|
+
return create$1.right("date-created", theDate.TheDate.new(input));
|
|
81
91
|
}
|
|
82
92
|
|
|
83
93
|
exports.create = create;
|
package/dist/date/create.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type { Hour, IsLeapYear, IsSafeYear, Millisecond, Minute, Second,
|
|
1
|
+
import type { Hour, IsLeapYear, IsSafeYear, Millisecond, Minute, Second, MonthWithDay, SpoolingDate } from "./types";
|
|
2
2
|
import * as DEither from "../either";
|
|
3
3
|
import type * as DString from "../string";
|
|
4
4
|
import { type And, type IsEqual, type Not, type IsExtends } from "../common";
|
|
5
|
+
import { TheDate } from "./theDate";
|
|
6
|
+
import type { SerializedTheDate } from "./types/serializedTheDate";
|
|
5
7
|
export type MayBe = DEither.Right<"date-created", TheDate> | DEither.Left<"date-created-error", null>;
|
|
6
8
|
type SafeDate = `${number}-${MonthWithDay}`;
|
|
7
9
|
declare const SymbolForbiddenDate: unique symbol;
|
|
@@ -22,58 +24,42 @@ interface SafeDateParams {
|
|
|
22
24
|
millisecond?: Millisecond;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
|
-
* Creates a TheDate from
|
|
27
|
+
* Creates a `TheDate` from date-like inputs.
|
|
26
28
|
*
|
|
27
|
-
* Signature: `create(input)` →
|
|
29
|
+
* Signature: `create(input, params?)` → `TheDate | MaybeEither<TheDate>`
|
|
28
30
|
*
|
|
29
|
-
* The
|
|
31
|
+
* The return type depends on the overload:
|
|
32
|
+
* - Safe literal date strings (`YYYY-MM-DD`) return `TheDate` directly.
|
|
33
|
+
* - Runtime inputs (`number`, `Date`, `SerializedTheDate`, `SpoolingDate`, other strings) return `Either`.
|
|
30
34
|
*
|
|
31
35
|
* ```ts
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* );
|
|
36
|
+
* const direct = D.create("2024-02-29", {
|
|
37
|
+
* hour: "10",
|
|
38
|
+
* minute: "30",
|
|
39
|
+
* });
|
|
40
|
+
* // direct: TheDate
|
|
36
41
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* 1_700_000_000_000,
|
|
40
|
-
* );
|
|
41
|
-
*
|
|
42
|
-
* // "date1709183400000+"
|
|
43
|
-
* const dateFromSafeFormat = D.create(
|
|
44
|
-
* "2024-02-29",
|
|
45
|
-
* {
|
|
46
|
-
* hour: "10",
|
|
47
|
-
* minute: "30",
|
|
48
|
-
* },
|
|
49
|
-
* );
|
|
50
|
-
*
|
|
51
|
-
* const dateWrongLeapYear = D.create(
|
|
52
|
-
* // @ts-expect-error Safe with leap year.
|
|
53
|
-
* "2023-02-29",
|
|
54
|
-
* );
|
|
55
|
-
*
|
|
56
|
-
* const dateWrongRangeYear = D.create(
|
|
57
|
-
* // @ts-expect-error Safe against dates that fall outside the supported date range.
|
|
58
|
-
* "-596126-12-30",
|
|
59
|
-
* );
|
|
60
|
-
*
|
|
61
|
-
* pipe(
|
|
62
|
-
* "2024-02-29",
|
|
63
|
-
* D.create,
|
|
64
|
-
* ); // "date1709183400000+"
|
|
42
|
+
* const mayBeFromTimestamp = D.create(1_700_000_000_000);
|
|
43
|
+
* // mayBeFromTimestamp: Either.Right<"date-created", TheDate> | DEither.Left<"date-created-error", null>
|
|
65
44
|
*
|
|
45
|
+
* const mayBeFromSpooling = D.create({
|
|
46
|
+
* value: "2024-06-20T12:00:00Z",
|
|
47
|
+
* timezone: "Europe/Paris",
|
|
48
|
+
* });
|
|
49
|
+
* // mayBeFromSpooling: Either<"date-created", TheDate>
|
|
66
50
|
* ```
|
|
67
51
|
*
|
|
68
52
|
* @remarks
|
|
69
|
-
* -
|
|
53
|
+
* - Use this API when you want a non-throwing creation flow.
|
|
54
|
+
* - For throwing behavior, use `createOrThrow`.
|
|
70
55
|
*
|
|
71
56
|
* @see https://utils.duplojs.dev/en/v1/api/date/create
|
|
57
|
+
* @see https://utils.duplojs.dev/en/v1/api/date/createOrThrow
|
|
72
58
|
*
|
|
73
59
|
* @namespace D
|
|
74
60
|
*
|
|
75
61
|
*/
|
|
76
|
-
export declare function create<GenericInput extends TheDate | Date | number>(input: GenericInput): MayBe;
|
|
62
|
+
export declare function create<GenericInput extends TheDate | Date | number | SerializedTheDate>(input: GenericInput): MayBe;
|
|
77
63
|
export declare function create<GenericInput extends SpoolingDate>(input: GenericInput): MayBe;
|
|
78
64
|
export declare function create<GenericInput extends SafeDate>(input: GenericInput & ForbiddenDate<GenericInput>, params?: SafeDateParams): TheDate;
|
|
79
65
|
export {};
|
package/dist/date/create.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { isoDateRegex } from './constants.mjs';
|
|
1
|
+
import { serializeTheDateRegex, isoDateRegex } from './constants.mjs';
|
|
2
2
|
import { isSafeTimestamp } from './isSafeTimestamp.mjs';
|
|
3
3
|
import { applyTimezone } from './applyTimezone.mjs';
|
|
4
4
|
import { is } from './is.mjs';
|
|
5
5
|
import { toNative } from './toNative.mjs';
|
|
6
|
-
import {
|
|
6
|
+
import { TheDate } from './theDate.mjs';
|
|
7
7
|
import { right } from '../either/right/create.mjs';
|
|
8
8
|
import { isLeft } from '../either/left/is.mjs';
|
|
9
9
|
import { left } from '../either/left/create.mjs';
|
|
@@ -19,28 +19,38 @@ function create(input, params) {
|
|
|
19
19
|
if (input instanceof Date) {
|
|
20
20
|
return createFromTimestamp(input.getTime());
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
const serializeTheDateMatch = typeof input === "string" && input.match(serializeTheDateRegex);
|
|
23
|
+
if (serializeTheDateMatch) {
|
|
24
|
+
const { value, sign } = serializeTheDateMatch.groups;
|
|
25
|
+
return createFromTimestamp(Number(sign === "-"
|
|
26
|
+
? `-${value}`
|
|
27
|
+
: value));
|
|
24
28
|
}
|
|
25
29
|
const safeDateMatch = typeof input === "string" && input.match(safeDateRegex);
|
|
26
30
|
if (safeDateMatch) {
|
|
27
31
|
const { year, monthWithDay } = safeDateMatch.groups;
|
|
28
32
|
const date = new Date(`0000-${monthWithDay}T${params?.hour ?? "00"}:${params?.minute ?? "00"}:${params?.second ?? "00"}.${params?.millisecond ?? "000"}Z`);
|
|
29
33
|
date.setUTCFullYear(Number(year));
|
|
30
|
-
|
|
31
|
-
return `date${Math.abs(timestamp)}${timestamp < 0 ? "-" : "+"}`;
|
|
34
|
+
return TheDate.new(date.getTime());
|
|
32
35
|
}
|
|
33
36
|
if (typeof input === "object") {
|
|
34
37
|
let inputValueResult = undefined;
|
|
35
|
-
|
|
38
|
+
const serializeTheDateMatch = typeof input.value === "string" && input.value.match(serializeTheDateRegex);
|
|
39
|
+
if (serializeTheDateMatch) {
|
|
40
|
+
const { value, sign } = serializeTheDateMatch.groups;
|
|
41
|
+
inputValueResult = createFromTimestamp(Number(sign === "-"
|
|
42
|
+
? `-${value}`
|
|
43
|
+
: value));
|
|
44
|
+
}
|
|
45
|
+
else if (is(input.value)) {
|
|
46
|
+
inputValueResult = right("date-created", input.value);
|
|
47
|
+
}
|
|
48
|
+
else if (input.value instanceof Date) {
|
|
36
49
|
inputValueResult = createFromTimestamp(input.value.getTime());
|
|
37
50
|
}
|
|
38
51
|
else if (typeof input.value === "number") {
|
|
39
52
|
inputValueResult = createFromTimestamp(input.value);
|
|
40
53
|
}
|
|
41
|
-
else if (is(input.value)) {
|
|
42
|
-
inputValueResult = right("date-created", input.value);
|
|
43
|
-
}
|
|
44
54
|
else {
|
|
45
55
|
const isoDateMatch = input.value.match(isoDateRegex);
|
|
46
56
|
if (isoDateMatch) {
|
|
@@ -75,7 +85,7 @@ function createFromTimestamp(input) {
|
|
|
75
85
|
if (!isSafeTimestamp(input)) {
|
|
76
86
|
return left("date-created-error", null);
|
|
77
87
|
}
|
|
78
|
-
return right("date-created",
|
|
88
|
+
return right("date-created", TheDate.new(input));
|
|
79
89
|
}
|
|
80
90
|
|
|
81
91
|
export { create };
|
|
@@ -1,46 +1,44 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SerializedTheDate, SpoolingDate } from "./types";
|
|
2
|
+
import type { TheDate } from "./theDate";
|
|
2
3
|
declare const CreateTheDateError_base: new (params: {
|
|
3
4
|
"@DuplojsUtilsError/create-the-date-error"?: unknown;
|
|
4
5
|
}, parentParams: readonly [message?: string | undefined, options?: ErrorOptions | undefined]) => Error & import("../common").Kind<import("../common").KindDefinition<"create-the-date-error", unknown>, unknown> & import("../common").Kind<import("../common").KindDefinition<"@DuplojsUtilsError/create-the-date-error", unknown>, unknown>;
|
|
5
6
|
export declare class CreateTheDateError extends CreateTheDateError_base {
|
|
6
|
-
input: string | Date | number | SpoolingDate;
|
|
7
|
-
constructor(input: string | Date | number | SpoolingDate);
|
|
7
|
+
input: string | Date | number | SpoolingDate | TheDate;
|
|
8
|
+
constructor(input: string | Date | number | SpoolingDate | TheDate);
|
|
8
9
|
}
|
|
9
10
|
/**
|
|
10
|
-
* Creates a TheDate
|
|
11
|
+
* Creates a `TheDate` and throws when input cannot be parsed or normalized.
|
|
11
12
|
*
|
|
12
|
-
* Signature: `createOrThrow(input)` →
|
|
13
|
+
* Signature: `createOrThrow(input)` → `TheDate`
|
|
13
14
|
*
|
|
14
|
-
*
|
|
15
|
+
* `input` accepts the same runtime shapes as `create` (`Date`, `number`, `SerializedTheDate`, `SpoolingDate`, strings).
|
|
15
16
|
*
|
|
16
17
|
* ```ts
|
|
17
|
-
* const
|
|
18
|
-
*
|
|
19
|
-
* // result: "date1700000000000+"
|
|
18
|
+
* const fromTimestamp = D.createOrThrow(1_700_000_000_000);
|
|
19
|
+
* // fromTimestamp: TheDate
|
|
20
20
|
*
|
|
21
|
-
* const
|
|
22
|
-
*
|
|
23
|
-
* // result2: "date1700000000000+"
|
|
21
|
+
* const fromSerialized = D.createOrThrow("date1700000000000+");
|
|
22
|
+
* // fromSerialized: TheDate
|
|
24
23
|
*
|
|
25
|
-
* const
|
|
26
|
-
*
|
|
27
|
-
* // result3: "date1718884800000+"
|
|
24
|
+
* const fromDate = D.createOrThrow(new Date("2024-06-20T12:00:00Z"));
|
|
25
|
+
* // fromDate: TheDate
|
|
28
26
|
*
|
|
29
27
|
* pipe(
|
|
30
|
-
*
|
|
28
|
+
* fromTimestamp,
|
|
31
29
|
* (value) => D.createOrThrow(value),
|
|
32
|
-
* ); //
|
|
33
|
-
*
|
|
30
|
+
* ); // TheDate
|
|
34
31
|
* ```
|
|
35
32
|
*
|
|
36
33
|
* @remarks
|
|
37
|
-
* - Throws
|
|
34
|
+
* - Throws `CreateTheDateError` on invalid input.
|
|
38
35
|
*
|
|
39
36
|
* @see https://utils.duplojs.dev/en/v1/api/date/createOrThrow
|
|
37
|
+
* @see https://utils.duplojs.dev/en/v1/api/date/create
|
|
40
38
|
*
|
|
41
39
|
* @namespace D
|
|
42
40
|
*
|
|
43
41
|
*/
|
|
44
|
-
export declare function createOrThrow<GenericInput extends TheDate | Date | number>(input: GenericInput): TheDate;
|
|
42
|
+
export declare function createOrThrow<GenericInput extends TheDate | Date | number | SerializedTheDate>(input: GenericInput): TheDate;
|
|
45
43
|
export declare function createOrThrow<GenericInput extends SpoolingDate>(input: GenericInput): TheDate;
|
|
46
44
|
export {};
|
package/dist/date/createTime.cjs
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var constants = require('./constants.cjs');
|
|
4
|
-
var createTheTime = require('./createTheTime.cjs');
|
|
5
4
|
var isSafeTimeValue = require('./isSafeTimeValue.cjs');
|
|
6
|
-
var
|
|
5
|
+
var theTime = require('./theTime.cjs');
|
|
7
6
|
var create = require('../either/left/create.cjs');
|
|
8
7
|
var create$1 = require('../either/right/create.cjs');
|
|
9
8
|
|
|
@@ -16,14 +15,24 @@ const unitsMapper = {
|
|
|
16
15
|
millisecond: 1,
|
|
17
16
|
};
|
|
18
17
|
function createTime(input, unit) {
|
|
19
|
-
if (
|
|
20
|
-
return
|
|
18
|
+
if (input instanceof theTime.TheTime) {
|
|
19
|
+
return input;
|
|
21
20
|
}
|
|
22
21
|
if (typeof input === "number") {
|
|
22
|
+
if (unit) {
|
|
23
|
+
return theTime.TheTime.new(input * unitsMapper[unit]);
|
|
24
|
+
}
|
|
23
25
|
return createFromTimeValue(input * unitsMapper[unit ?? "millisecond"]);
|
|
24
26
|
}
|
|
25
|
-
if (typeof input === "string"
|
|
26
|
-
|
|
27
|
+
if (typeof input === "string") {
|
|
28
|
+
const serializeTheTimeMatch = input.match(constants.serializeTheTimeRegex);
|
|
29
|
+
if (!serializeTheTimeMatch) {
|
|
30
|
+
return create.left("time-created-error", null);
|
|
31
|
+
}
|
|
32
|
+
const { value, sign } = serializeTheTimeMatch.groups;
|
|
33
|
+
return createFromTimeValue(Number(sign === "-"
|
|
34
|
+
? `-${value}`
|
|
35
|
+
: value));
|
|
27
36
|
}
|
|
28
37
|
const { value = 0, week = 0, day = 0, hour = 0, minute = 0, second = 0, millisecond = 0, } = input;
|
|
29
38
|
let fromValue = 0;
|
|
@@ -55,7 +64,7 @@ function createFromTimeValue(input) {
|
|
|
55
64
|
if (!isSafeTimeValue.isSafeTimeValue(input)) {
|
|
56
65
|
return create.left("time-created-error", null);
|
|
57
66
|
}
|
|
58
|
-
return create$1.right("time-created",
|
|
67
|
+
return create$1.right("time-created", theTime.TheTime.new(input));
|
|
59
68
|
}
|
|
60
69
|
|
|
61
70
|
exports.createTime = createTime;
|