date-vir 5.2.0 → 5.3.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.
@@ -1,7 +1,8 @@
1
1
  import { AnyDuration } from '../duration/duration';
2
2
  import { FullDate } from '../full-date/full-date-shape';
3
+ import { Timezone } from '../timezone/timezone-names';
3
4
  /**
4
5
  * Calculates a new date starting at the given fullDate and adding the given offsets. Offsets can be
5
6
  * negative to go backwards in time.
6
7
  */
7
- export declare function calculateRelativeDate(fullDate: Readonly<FullDate>, offset: Readonly<AnyDuration>): FullDate;
8
+ export declare function calculateRelativeDate<const SpecificTimezone extends Timezone>(fullDate: Readonly<FullDate<SpecificTimezone>>, offset: Readonly<AnyDuration>): FullDate<SpecificTimezone>;
@@ -1,34 +1,35 @@
1
1
  import { DatePart, FullDate, FullDatePartEnum, TimePart } from '../full-date/full-date-shape';
2
+ import { Timezone } from '../timezone/timezone-names';
2
3
  /** An object containing date and/or time parts or neither. */
3
- type MaybeDateParts = Partial<{
4
- [FullDatePartEnum.Date]: DatePart | undefined | Partial<FullDate>;
5
- [FullDatePartEnum.Time]: TimePart | undefined | Partial<FullDate>;
4
+ type MaybeDateParts<SpecificTimezone extends Timezone> = Partial<{
5
+ [FullDatePartEnum.Date]: DatePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>;
6
+ [FullDatePartEnum.Time]: TimePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>;
6
7
  }>;
7
8
  /** A full date, time or date parts of a date, or undefined. */
8
- export type MaybeDatePart = FullDate | Partial<FullDate> | DatePart | TimePart | undefined;
9
- export declare function combineDateParts(maybeDateParts: {
10
- [FullDatePartEnum.Date]: DatePart;
11
- [FullDatePartEnum.Time]: TimePart;
12
- }): FullDate;
13
- export declare function combineDateParts(maybeDateParts: {
9
+ export type MaybeDatePart<SpecificTimezone extends Timezone> = FullDate<SpecificTimezone> | Partial<FullDate<SpecificTimezone>> | DatePart<SpecificTimezone> | TimePart<SpecificTimezone> | undefined;
10
+ export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: {
11
+ [FullDatePartEnum.Date]: DatePart<SpecificTimezone>;
12
+ [FullDatePartEnum.Time]: TimePart<SpecificTimezone>;
13
+ }): FullDate<SpecificTimezone>;
14
+ export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: {
14
15
  [FullDatePartEnum.Date]?: undefined;
15
16
  [FullDatePartEnum.Time]?: undefined;
16
17
  }): undefined;
17
- export declare function combineDateParts(maybeDateParts: {
18
- [FullDatePartEnum.Date]: DatePart;
18
+ export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: {
19
+ [FullDatePartEnum.Date]: DatePart<SpecificTimezone>;
19
20
  [FullDatePartEnum.Time]?: undefined;
20
- }): DatePart;
21
- export declare function combineDateParts(maybeDateParts: {
22
- [FullDatePartEnum.Date]: DatePart;
23
- [FullDatePartEnum.Time]?: TimePart | undefined | Partial<FullDate>;
24
- }): FullDate | DatePart;
25
- export declare function combineDateParts(maybeDateParts: {
21
+ }): DatePart<SpecificTimezone>;
22
+ export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: {
23
+ [FullDatePartEnum.Date]: DatePart<SpecificTimezone>;
24
+ [FullDatePartEnum.Time]?: TimePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>;
25
+ }): FullDate<SpecificTimezone> | DatePart<SpecificTimezone>;
26
+ export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: {
26
27
  [FullDatePartEnum.Date]?: undefined;
27
- [FullDatePartEnum.Time]: TimePart;
28
- }): TimePart;
29
- export declare function combineDateParts(maybeDateParts: {
30
- [FullDatePartEnum.Date]?: DatePart | undefined | Partial<FullDate>;
31
- [FullDatePartEnum.Time]: TimePart;
32
- }): FullDate | TimePart;
33
- export declare function combineDateParts(maybeDateParts: MaybeDateParts): MaybeDatePart;
28
+ [FullDatePartEnum.Time]: TimePart<SpecificTimezone>;
29
+ }): TimePart<SpecificTimezone>;
30
+ export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: {
31
+ [FullDatePartEnum.Date]?: DatePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>;
32
+ [FullDatePartEnum.Time]: TimePart<SpecificTimezone>;
33
+ }): FullDate<SpecificTimezone> | TimePart<SpecificTimezone>;
34
+ export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: MaybeDateParts<SpecificTimezone>): MaybeDatePart<SpecificTimezone>;
34
35
  export {};
@@ -1,3 +1,4 @@
1
1
  import { FullDate } from '../full-date/full-date-shape';
2
+ import { Timezone } from '../timezone/timezone-names';
2
3
  /** Override the initial provided FullDate with all subsequent FullDate parts. */
3
- export declare function overrideDateParts(date: FullDate, ...overrides: Partial<FullDate>[]): FullDate;
4
+ export declare function overrideDateParts<const SpecificTimezone extends Timezone>(date: FullDate<SpecificTimezone>, ...overrides: Partial<FullDate<SpecificTimezone>>[]): FullDate<SpecificTimezone>;
@@ -1,8 +1,9 @@
1
1
  import { PartialAndUndefined, RequiredAndNotNullBy } from '@augment-vir/common';
2
2
  import { FullDate } from '../full-date/full-date-shape';
3
- export declare function hasDateProps<PartialFullDate extends PartialAndUndefined<FullDate>,
3
+ import { Timezone } from '../timezone/timezone-names';
4
+ export declare function hasDateProps<SpecificTimezone extends Timezone, PartialFullDate extends PartialAndUndefined<FullDate<SpecificTimezone>>,
4
5
  /** A union of strings. */
5
- RequiredKeysUnion extends keyof FullDate>(dateInput: PartialAndUndefined<FullDate>, keys: ReadonlyArray<RequiredKeysUnion>): dateInput is RequiredAndNotNullBy<PartialFullDate, RequiredKeysUnion>;
6
- export declare function assertHasDateProps<PartialFullDate extends PartialAndUndefined<FullDate>,
6
+ RequiredKeysUnion extends keyof FullDate<SpecificTimezone>>(dateInput: PartialAndUndefined<FullDate<SpecificTimezone>>, keys: ReadonlyArray<RequiredKeysUnion>): dateInput is RequiredAndNotNullBy<PartialFullDate, RequiredKeysUnion>;
7
+ export declare function assertHasDateProps<SpecificTimezone extends Timezone, PartialFullDate extends PartialAndUndefined<FullDate<SpecificTimezone>>,
7
8
  /** A union of strings. */
8
- RequiredKeysUnion extends keyof FullDate>(dateInput: PartialAndUndefined<FullDate>, keys: ReadonlyArray<RequiredKeysUnion>): asserts dateInput is RequiredAndNotNullBy<PartialFullDate, RequiredKeysUnion>;
9
+ RequiredKeysUnion extends keyof FullDate<SpecificTimezone>>(dateInput: PartialAndUndefined<FullDate<SpecificTimezone>>, keys: ReadonlyArray<RequiredKeysUnion>): asserts dateInput is RequiredAndNotNullBy<PartialFullDate, RequiredKeysUnion>;
@@ -1,4 +1,5 @@
1
1
  import { FullDate } from '../full-date/full-date-shape';
2
+ import { Timezone } from '../timezone/timezone-names';
2
3
  export declare const zeroDate: {
3
4
  readonly year: 0;
4
5
  readonly month: 1;
@@ -26,5 +27,5 @@ export declare const zeroTime: Pick<{
26
27
  second: 0;
27
28
  millisecond: 0;
28
29
  }, "millisecond" | "second" | "minute" | "hour">;
29
- export declare function clearTime(inputFullDate: Readonly<FullDate>): FullDate;
30
- export declare function clearParts(inputFullDate: Readonly<FullDate>, parts: ReadonlyArray<Exclude<keyof FullDate, 'timezone'>>): FullDate;
30
+ export declare function clearTime<const SpecificTimezone extends Timezone>(inputFullDate: Readonly<FullDate<SpecificTimezone>>): FullDate<SpecificTimezone>;
31
+ export declare function clearParts<const SpecificTimezone extends Timezone>(inputFullDate: Readonly<FullDate<SpecificTimezone>>, parts: ReadonlyArray<Exclude<keyof FullDate, 'timezone'>>): FullDate<SpecificTimezone>;
@@ -8,7 +8,7 @@ export declare function createUtcFullDate(dateLike: Readonly<DateLike>): FullDat
8
8
  * Parses the given dateLike and then reads the fullDate properties from that parsed value as if it
9
9
  * were in the given timezone.
10
10
  */
11
- export declare function createFullDate<const SpecificTimezone extends Timezone = Timezone>(
11
+ export declare function createFullDate<const SpecificTimezone extends Timezone>(
12
12
  /** The original date representation to be converted into a FullDate. */
13
13
  dateLike: Readonly<DateLike>,
14
14
  /** The timezone that this date/time is meant for / originated from. */
@@ -17,5 +17,5 @@ timezone: SpecificTimezone): FullDate<SpecificTimezone>;
17
17
  * Creates and returns a new FullDate object with its values shifted to be the same original time
18
18
  * but represented in a new timezone.
19
19
  */
20
- export declare function toNewTimezone<const SpecificTimezone extends Timezone = Timezone>(fullDate: Readonly<FullDate>, timezone: SpecificTimezone): FullDate<SpecificTimezone>;
21
- export declare function getNowFullDate<const SpecificTimezone extends Timezone = Timezone>(timezone: SpecificTimezone): FullDate<SpecificTimezone>;
20
+ export declare function toNewTimezone<const SpecificTimezone extends Timezone>(fullDate: Readonly<FullDate>, timezone: SpecificTimezone): FullDate<SpecificTimezone>;
21
+ export declare function getNowFullDate<const SpecificTimezone extends Timezone>(timezone: SpecificTimezone): FullDate<SpecificTimezone>;
@@ -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
  /** Types that can be converted into dates. */
4
- export type DateLike = string | Date | number | DateTime | FullDate;
5
+ export type DateLike<SpecificTimezone extends Timezone = Timezone> = string | Date | number | DateTime | FullDate<SpecificTimezone>;
@@ -12,4 +12,4 @@ export declare function toLuxonDateTime(fullDateInput: FullDate): DateTime;
12
12
  * could be helpful if you need it. Usually you should prefer using the createFullDate function
13
13
  * instead.
14
14
  */
15
- export declare function parseLuxonDateTime<const SpecificTimezone extends Timezone = Timezone>(dateTimeInput: DateTime, forcedTimezone?: SpecificTimezone): FullDate<SpecificTimezone>;
15
+ export declare function parseLuxonDateTime<const SpecificTimezone extends Timezone>(dateTimeInput: DateTime, forcedTimezone?: SpecificTimezone): FullDate<SpecificTimezone>;
@@ -9,7 +9,7 @@ import { FullDate } from './full-date-shape';
9
9
  * The formatString input is passed to Luxon. All format options are listed here:
10
10
  * https://moment.github.io/luxon/#/parsing?id=table-of-tokens
11
11
  */
12
- export declare function parseStrangeString({ dateString, formatString, timezone, }: {
12
+ export declare function parseStrangeString<const SpecificTimezone extends Timezone>({ dateString, formatString, timezone, }: {
13
13
  /** The date string to be parsed. */
14
14
  dateString: string;
15
15
  /**
@@ -18,10 +18,10 @@ export declare function parseStrangeString({ dateString, formatString, timezone,
18
18
  */
19
19
  formatString: string;
20
20
  /** The timezone that this date/time is meant for / originated from. */
21
- timezone: Timezone;
22
- }): FullDate;
21
+ timezone: SpecificTimezone;
22
+ }): FullDate<SpecificTimezone>;
23
23
  /**
24
24
  * Read either an HTMLInputElement's value directly, or the value string retrieved from an
25
25
  * HTMLInputElement. Handles both type="date" and type="time" <input> elements.
26
26
  */
27
- export declare function parseInputElementValue<const SpecificTimezone extends Timezone = Timezone>(elementOrValue: HTMLInputElement | string | null | undefined, timezone: SpecificTimezone): FullDate<SpecificTimezone> | undefined;
27
+ export declare function parseInputElementValue<const SpecificTimezone extends Timezone>(elementOrValue: HTMLInputElement | string | null | undefined, timezone: SpecificTimezone): FullDate<SpecificTimezone> | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "date-vir",
3
- "version": "5.2.0",
3
+ "version": "5.3.0",
4
4
  "description": "Easy and explicit dates and times",
5
5
  "keywords": [
6
6
  "date",
@@ -41,27 +41,27 @@
41
41
  "test:watch": "web-test-runner --watch --color --config configs/web-test-runner.config.mjs"
42
42
  },
43
43
  "dependencies": {
44
- "@augment-vir/common": "^28.0.0",
44
+ "@augment-vir/common": "^28.0.2",
45
45
  "@types/luxon": "^3.4.2",
46
46
  "luxon": "^3.4.4",
47
47
  "object-shape-tester": "^2.3.2",
48
- "type-fest": "^4.18.2"
48
+ "type-fest": "^4.18.3"
49
49
  },
50
50
  "devDependencies": {
51
- "@augment-vir/browser": "^28.0.0",
52
- "@augment-vir/browser-testing": "^28.0.0",
51
+ "@augment-vir/browser": "^28.0.2",
52
+ "@augment-vir/browser-testing": "^28.0.2",
53
53
  "@open-wc/testing": "^4.0.0",
54
54
  "@types/chai": "^4.3.16",
55
55
  "@types/mocha": "^10.0.6",
56
56
  "@web/dev-server-esbuild": "^1.0.2",
57
- "@web/test-runner": "^0.18.1",
57
+ "@web/test-runner": "^0.18.2",
58
58
  "@web/test-runner-commands": "^0.9.0",
59
59
  "@web/test-runner-playwright": "^0.11.0",
60
60
  "@web/test-runner-visual-regression": "^0.9.0",
61
- "cspell": "^8.8.1",
61
+ "cspell": "^8.8.3",
62
62
  "dependency-cruiser": "^16.3.2",
63
63
  "element-vir": "^22.2.2",
64
- "esbuild": "^0.21.1",
64
+ "esbuild": "^0.21.4",
65
65
  "istanbul-smart-text-reporter": "^1.1.4",
66
66
  "markdown-code-example-inserter": "^1.0.0",
67
67
  "npm-check-updates": "~16.12.3",
@@ -73,7 +73,7 @@
73
73
  "prettier-plugin-packagejson": "^2.5.0",
74
74
  "prettier-plugin-sort-json": "^4.0.0",
75
75
  "prettier-plugin-toml": "^2.0.1",
76
- "run-time-assertions": "^1.5.0",
76
+ "run-time-assertions": "^1.5.1",
77
77
  "typedoc": "^0.25.13",
78
78
  "typescript": "^5.4.5",
79
79
  "virmator": "^11.5.2"