date-vir 0.5.0 → 0.7.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/cjs/full-date/create-full-date.js +13 -3
- package/dist/cjs/full-date/date-transforms.js +8 -0
- package/dist/cjs/full-date/luxon-date-time-conversion.js +2 -2
- package/dist/cjs/full-date/string-format-types.js +7 -0
- package/dist/cjs/index.js +1 -0
- package/dist/esm/full-date/create-full-date.d.ts +4 -4
- package/dist/esm/full-date/create-full-date.js +13 -3
- package/dist/esm/full-date/date-transforms.d.ts +3 -0
- package/dist/esm/full-date/date-transforms.js +4 -0
- package/dist/esm/full-date/luxon-date-time-conversion.d.ts +2 -1
- package/dist/esm/full-date/luxon-date-time-conversion.js +2 -2
- package/dist/esm/full-date/string-format-types.d.ts +1 -0
- package/dist/esm/full-date/string-format-types.js +5 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/package.json +1 -1
|
@@ -27,7 +27,7 @@ timezone) {
|
|
|
27
27
|
if (!dateTime || !dateTime.isValid) {
|
|
28
28
|
throw new Error(`Failed to parse date input '${dateLike}'`);
|
|
29
29
|
}
|
|
30
|
-
return (0, luxon_date_time_conversion_1.parseLuxonDateTime)(dateTime);
|
|
30
|
+
return (0, luxon_date_time_conversion_1.parseLuxonDateTime)(dateTime, timezone);
|
|
31
31
|
}
|
|
32
32
|
exports.createFullDate = createFullDate;
|
|
33
33
|
/**
|
|
@@ -41,6 +41,16 @@ function toNewTimezone(fullDate, timezone) {
|
|
|
41
41
|
return createFullDate(fullDate, timezone);
|
|
42
42
|
}
|
|
43
43
|
exports.toNewTimezone = toNewTimezone;
|
|
44
|
+
function lastDitchConversion(dateLike) {
|
|
45
|
+
/** As any cast for last ditch effort to convert the dateLike into a date. */
|
|
46
|
+
const dateTime = luxon_1.DateTime.fromJSDate(new Date(dateLike));
|
|
47
|
+
if (dateTime.isValid) {
|
|
48
|
+
return dateTime;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
44
54
|
function convertDateLikeToLuxonDateTime(dateLike, timezone) {
|
|
45
55
|
if ((0, is_valid_full_date_1.isValidFullDate)(dateLike)) {
|
|
46
56
|
dateLike = (0, luxon_date_time_conversion_1.toLuxonDateTime)(dateLike).toMillis();
|
|
@@ -54,7 +64,7 @@ function convertDateLikeToLuxonDateTime(dateLike, timezone) {
|
|
|
54
64
|
else if ((0, common_1.isRuntimeTypeOf)(dateLike, 'string')) {
|
|
55
65
|
const dateTime = luxon_1.DateTime.fromISO(dateLike, { zone: timezone });
|
|
56
66
|
if (!dateTime.isValid) {
|
|
57
|
-
|
|
67
|
+
return lastDitchConversion(dateLike);
|
|
58
68
|
}
|
|
59
69
|
return dateTime;
|
|
60
70
|
}
|
|
@@ -62,7 +72,7 @@ function convertDateLikeToLuxonDateTime(dateLike, timezone) {
|
|
|
62
72
|
const dateTime = luxon_1.DateTime.fromJSDate(dateLike);
|
|
63
73
|
return dateTime.setZone(timezone);
|
|
64
74
|
}
|
|
65
|
-
return
|
|
75
|
+
return lastDitchConversion(dateLike);
|
|
66
76
|
}
|
|
67
77
|
function getNowFullDate(timezone) {
|
|
68
78
|
return createFullDate(Date.now(), timezone);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.overrideDateParts = void 0;
|
|
4
|
+
/** Override the initial provided FullDate with all subsequent FullDate parts. */
|
|
5
|
+
function overrideDateParts(date, ...overrides) {
|
|
6
|
+
return Object.assign({}, date, ...overrides);
|
|
7
|
+
}
|
|
8
|
+
exports.overrideDateParts = overrideDateParts;
|
|
@@ -25,7 +25,7 @@ exports.toLuxonDateTime = toLuxonDateTime;
|
|
|
25
25
|
* could be helpful if you need it. Usually you should prefer using the createFullDate function
|
|
26
26
|
* instead.
|
|
27
27
|
*/
|
|
28
|
-
function parseLuxonDateTime(dateTimeInput) {
|
|
28
|
+
function parseLuxonDateTime(dateTimeInput, forcedTimezone) {
|
|
29
29
|
if (!dateTimeInput.isValid) {
|
|
30
30
|
throw new Error(`Invalid input: '${dateTimeInput.toISO()}'`);
|
|
31
31
|
}
|
|
@@ -37,7 +37,7 @@ function parseLuxonDateTime(dateTimeInput) {
|
|
|
37
37
|
minute: dateTimeInput.minute,
|
|
38
38
|
second: dateTimeInput.second,
|
|
39
39
|
millisecond: dateTimeInput.millisecond,
|
|
40
|
-
timezone: dateTimeInput.zoneName,
|
|
40
|
+
timezone: forcedTimezone ?? dateTimeInput.zoneName,
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
exports.parseLuxonDateTime = parseLuxonDateTime;
|
|
@@ -1,2 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidIsoString = void 0;
|
|
4
|
+
const luxon_1 = require("luxon");
|
|
5
|
+
function isValidIsoString(input) {
|
|
6
|
+
const datetime = luxon_1.DateTime.fromISO(input);
|
|
7
|
+
return datetime.toISO() === input;
|
|
8
|
+
}
|
|
9
|
+
exports.isValidIsoString = isValidIsoString;
|
package/dist/cjs/index.js
CHANGED
|
@@ -19,6 +19,7 @@ __exportStar(require("./date-operations/combine-dates"), exports);
|
|
|
19
19
|
__exportStar(require("./date-operations/diff-dates"), exports);
|
|
20
20
|
__exportStar(require("./full-date/create-full-date"), exports);
|
|
21
21
|
__exportStar(require("./full-date/date-like"), exports);
|
|
22
|
+
__exportStar(require("./full-date/date-transforms"), exports);
|
|
22
23
|
__exportStar(require("./full-date/format-presets"), exports);
|
|
23
24
|
__exportStar(require("./full-date/full-date-shape"), exports);
|
|
24
25
|
__exportStar(require("./full-date/is-valid-full-date"), exports);
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { Timezone } from '../timezone/timezone-names';
|
|
2
2
|
import { DateLike } from './date-like';
|
|
3
3
|
import { FullDate } from './full-date-shape';
|
|
4
|
-
export declare function createFullDateInUserTimezone(dateLike: DateLike): FullDate;
|
|
5
|
-
export declare function createUtcFullDate(dateLike: DateLike): FullDate;
|
|
4
|
+
export declare function createFullDateInUserTimezone(dateLike: Readonly<DateLike>): FullDate;
|
|
5
|
+
export declare function createUtcFullDate(dateLike: Readonly<DateLike>): FullDate;
|
|
6
6
|
/**
|
|
7
7
|
* Parses the given dateLike and then reads the fullDate properties from that parsed value as if it
|
|
8
8
|
* were in the given timezone.
|
|
9
9
|
*/
|
|
10
10
|
export declare function createFullDate(
|
|
11
11
|
/** The original date representation to be converted into a FullDate. */
|
|
12
|
-
dateLike: DateLike
|
|
12
|
+
dateLike: Readonly<DateLike>,
|
|
13
13
|
/** The timezone that this date/time is meant for / originated from. */
|
|
14
14
|
timezone: Timezone): FullDate;
|
|
15
15
|
/**
|
|
16
16
|
* Creates and returns a new FullDate object with its values shifted to be the same original time
|
|
17
17
|
* but represented in a new timezone.
|
|
18
18
|
*/
|
|
19
|
-
export declare function toNewTimezone(fullDate: FullDate
|
|
19
|
+
export declare function toNewTimezone(fullDate: Readonly<FullDate>, timezone: Timezone): Readonly<FullDate>;
|
|
20
20
|
export declare function getNowFullDate(timezone: Timezone): FullDate;
|
|
@@ -22,7 +22,7 @@ timezone) {
|
|
|
22
22
|
if (!dateTime || !dateTime.isValid) {
|
|
23
23
|
throw new Error(`Failed to parse date input '${dateLike}'`);
|
|
24
24
|
}
|
|
25
|
-
return parseLuxonDateTime(dateTime);
|
|
25
|
+
return parseLuxonDateTime(dateTime, timezone);
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Creates and returns a new FullDate object with its values shifted to be the same original time
|
|
@@ -34,6 +34,16 @@ export function toNewTimezone(fullDate, timezone) {
|
|
|
34
34
|
}
|
|
35
35
|
return createFullDate(fullDate, timezone);
|
|
36
36
|
}
|
|
37
|
+
function lastDitchConversion(dateLike) {
|
|
38
|
+
/** As any cast for last ditch effort to convert the dateLike into a date. */
|
|
39
|
+
const dateTime = DateTime.fromJSDate(new Date(dateLike));
|
|
40
|
+
if (dateTime.isValid) {
|
|
41
|
+
return dateTime;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
37
47
|
function convertDateLikeToLuxonDateTime(dateLike, timezone) {
|
|
38
48
|
if (isValidFullDate(dateLike)) {
|
|
39
49
|
dateLike = toLuxonDateTime(dateLike).toMillis();
|
|
@@ -47,7 +57,7 @@ function convertDateLikeToLuxonDateTime(dateLike, timezone) {
|
|
|
47
57
|
else if (isRuntimeTypeOf(dateLike, 'string')) {
|
|
48
58
|
const dateTime = DateTime.fromISO(dateLike, { zone: timezone });
|
|
49
59
|
if (!dateTime.isValid) {
|
|
50
|
-
|
|
60
|
+
return lastDitchConversion(dateLike);
|
|
51
61
|
}
|
|
52
62
|
return dateTime;
|
|
53
63
|
}
|
|
@@ -55,7 +65,7 @@ function convertDateLikeToLuxonDateTime(dateLike, timezone) {
|
|
|
55
65
|
const dateTime = DateTime.fromJSDate(dateLike);
|
|
56
66
|
return dateTime.setZone(timezone);
|
|
57
67
|
}
|
|
58
|
-
return
|
|
68
|
+
return lastDitchConversion(dateLike);
|
|
59
69
|
}
|
|
60
70
|
export function getNowFullDate(timezone) {
|
|
61
71
|
return createFullDate(Date.now(), timezone);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DateTime } from 'luxon';
|
|
2
|
+
import { Timezone } from '../timezone/timezone-names';
|
|
2
3
|
import { FullDate } from './full-date-shape';
|
|
3
4
|
/**
|
|
4
5
|
* Converts a FullDate object into a Luxon DateTime library. This is only needed if you need complex
|
|
@@ -11,4 +12,4 @@ export declare function toLuxonDateTime(fullDateInput: FullDate): DateTime;
|
|
|
11
12
|
* could be helpful if you need it. Usually you should prefer using the createFullDate function
|
|
12
13
|
* instead.
|
|
13
14
|
*/
|
|
14
|
-
export declare function parseLuxonDateTime(dateTimeInput: DateTime): FullDate;
|
|
15
|
+
export declare function parseLuxonDateTime(dateTimeInput: DateTime, forcedTimezone?: Timezone): FullDate;
|
|
@@ -21,7 +21,7 @@ export function toLuxonDateTime(fullDateInput) {
|
|
|
21
21
|
* could be helpful if you need it. Usually you should prefer using the createFullDate function
|
|
22
22
|
* instead.
|
|
23
23
|
*/
|
|
24
|
-
export function parseLuxonDateTime(dateTimeInput) {
|
|
24
|
+
export function parseLuxonDateTime(dateTimeInput, forcedTimezone) {
|
|
25
25
|
if (!dateTimeInput.isValid) {
|
|
26
26
|
throw new Error(`Invalid input: '${dateTimeInput.toISO()}'`);
|
|
27
27
|
}
|
|
@@ -33,6 +33,6 @@ export function parseLuxonDateTime(dateTimeInput) {
|
|
|
33
33
|
minute: dateTimeInput.minute,
|
|
34
34
|
second: dateTimeInput.second,
|
|
35
35
|
millisecond: dateTimeInput.millisecond,
|
|
36
|
-
timezone: dateTimeInput.zoneName,
|
|
36
|
+
timezone: forcedTimezone ?? dateTimeInput.zoneName,
|
|
37
37
|
};
|
|
38
38
|
}
|
|
@@ -4,3 +4,4 @@ export type JustTimeString = `${number}:${number}`;
|
|
|
4
4
|
export type DateTimeWithSeconds = `${JustDateString}T${JustTimeWithSecondsString}`;
|
|
5
5
|
export type DateTimeString = `${JustDateString}T${JustTimeString}`;
|
|
6
6
|
export type UtcIsoString = `${JustDateString}T${JustTimeWithSecondsString}.${number}Z`;
|
|
7
|
+
export declare function isValidIsoString(input: unknown): input is UtcIsoString;
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from './date-operations/combine-dates';
|
|
|
3
3
|
export * from './date-operations/diff-dates';
|
|
4
4
|
export * from './full-date/create-full-date';
|
|
5
5
|
export * from './full-date/date-like';
|
|
6
|
+
export * from './full-date/date-transforms';
|
|
6
7
|
export * from './full-date/format-presets';
|
|
7
8
|
export * from './full-date/full-date-shape';
|
|
8
9
|
export * from './full-date/is-valid-full-date';
|
package/dist/esm/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export * from './date-operations/combine-dates';
|
|
|
3
3
|
export * from './date-operations/diff-dates';
|
|
4
4
|
export * from './full-date/create-full-date';
|
|
5
5
|
export * from './full-date/date-like';
|
|
6
|
+
export * from './full-date/date-transforms';
|
|
6
7
|
export * from './full-date/format-presets';
|
|
7
8
|
export * from './full-date/full-date-shape';
|
|
8
9
|
export * from './full-date/is-valid-full-date';
|