@bereasoftware/time-guard 1.0.3 → 2.0.3

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.
Files changed (54) hide show
  1. package/README.en.md +40 -12
  2. package/README.md +159 -135
  3. package/dist/calendars.cjs +1 -0
  4. package/dist/calendars.es.js +319 -0
  5. package/dist/full.cjs +1 -0
  6. package/dist/full.es.js +4341 -0
  7. package/dist/locales.cjs +1 -0
  8. package/dist/locales.es.js +2797 -0
  9. package/dist/plugin-advanced-format.cjs +1 -0
  10. package/dist/plugin-advanced-format.es.js +132 -0
  11. package/dist/plugin-duration.cjs +1 -0
  12. package/dist/plugin-duration.es.js +145 -0
  13. package/dist/plugin-relative-time.cjs +1 -0
  14. package/dist/plugin-relative-time.es.js +122 -0
  15. package/dist/time-guard.cjs +1 -1
  16. package/dist/time-guard.es.js +76 -3569
  17. package/dist/time-guard.iife.js +1 -1
  18. package/dist/time-guard.umd.js +1 -1
  19. package/dist/types/calendars.d.ts +1 -0
  20. package/dist/types/locales.d.ts +1 -0
  21. package/dist/types/plugin-advanced-format.d.ts +1 -0
  22. package/dist/types/plugin-duration.d.ts +1 -0
  23. package/dist/types/plugin-relative-time.d.ts +1 -0
  24. package/dist/types/src/adapters/temporal.adapter.d.ts +60 -0
  25. package/dist/types/src/calendars/calendar.manager.d.ts +52 -0
  26. package/dist/types/src/calendars/index.d.ts +81 -0
  27. package/dist/types/src/formatters/date.formatter.d.ts +21 -0
  28. package/dist/types/src/full.d.ts +8 -0
  29. package/dist/types/src/index.d.ts +23 -0
  30. package/dist/types/src/locales/additional.locale.d.ts +5 -0
  31. package/dist/types/src/locales/asian.locale.d.ts +9 -0
  32. package/dist/types/src/locales/english.locale.d.ts +6 -0
  33. package/dist/types/src/locales/european.locale.d.ts +9 -0
  34. package/dist/types/src/locales/index.d.ts +17 -0
  35. package/dist/types/src/locales/locale.manager.d.ts +42 -0
  36. package/dist/types/src/locales/locales-data.d.ts +17 -0
  37. package/dist/types/src/locales/middle-eastern.locale.d.ts +5 -0
  38. package/dist/types/src/locales/nordic.locale.d.ts +6 -0
  39. package/dist/types/src/locales/romance.locale.d.ts +7 -0
  40. package/dist/types/src/locales/slavic.locale.d.ts +6 -0
  41. package/dist/types/src/locales/spanish.locale.d.ts +5 -0
  42. package/dist/types/src/plugins/advanced-format/index.d.ts +47 -0
  43. package/dist/types/src/plugins/duration/index.d.ts +107 -0
  44. package/dist/types/src/plugins/duration/types.d.ts +85 -0
  45. package/dist/types/src/plugins/index.d.ts +10 -0
  46. package/dist/types/src/plugins/manager.d.ts +58 -0
  47. package/dist/types/src/plugins/relative-time/index.d.ts +39 -0
  48. package/dist/types/src/plugins/relative-time/types.d.ts +27 -0
  49. package/dist/types/src/polyfill-loader.d.ts +5 -0
  50. package/dist/types/src/time-guard.d.ts +154 -0
  51. package/dist/types/src/types/index.d.ts +301 -0
  52. package/dist/types/time-guard.d.ts +1 -0
  53. package/package.json +37 -6
  54. package/dist/types/index.d.ts +0 -1112
@@ -0,0 +1,6 @@
1
+ import { ILocale } from '../types';
2
+ export declare const EN_LOCALE_DATA: ILocale;
3
+ export declare const EN_AU_LOCALE_DATA: ILocale;
4
+ export declare const EN_GB_LOCALE_DATA: ILocale;
5
+ export declare const EN_CA_LOCALE_DATA: ILocale;
6
+ export declare const ENGLISH_LOCALES: Record<string, ILocale>;
@@ -0,0 +1,9 @@
1
+ import { ILocale } from '../types';
2
+ export declare const DE_LOCALE_DATA: ILocale;
3
+ export declare const NL_LOCALE_DATA: ILocale;
4
+ export declare const EL_LOCALE_DATA: ILocale;
5
+ export declare const HU_LOCALE_DATA: ILocale;
6
+ export declare const EU_LOCALE_DATA: ILocale;
7
+ export declare const CA_LOCALE_DATA: ILocale;
8
+ export declare const TR_LOCALE_DATA: ILocale;
9
+ export declare const EUROPEAN_LOCALES: Record<string, ILocale>;
@@ -0,0 +1,17 @@
1
+ import { ILocale } from '../types';
2
+ /**
3
+ * Aggregated locale data from all modules
4
+ */
5
+ export declare const ALL_LOCALES: Record<string, ILocale>;
6
+ /**
7
+ * Register all locales into a locale map
8
+ */
9
+ export declare function registerAllLocales(localeMap: Map<string, ILocale> | Record<string, ILocale>): void;
10
+ /**
11
+ * Get all available locales
12
+ */
13
+ export declare function getAvailableLocales(): string[];
14
+ /**
15
+ * Total locales count (minimum 40 required)
16
+ */
17
+ export declare const LOCALES_COUNT = 40;
@@ -0,0 +1,42 @@
1
+ import { ILocale, ILocaleManager } from '../types';
2
+ /**
3
+ * English locale data
4
+ */
5
+ export declare const EN_LOCALE: ILocale;
6
+ /**
7
+ * Spanish locale data (sample for i18n support)
8
+ */
9
+ export declare const ES_LOCALE: ILocale;
10
+ /**
11
+ * Locale Manager - implements ILocaleManager
12
+ */
13
+ export declare class LocaleManager implements ILocaleManager {
14
+ private static instance;
15
+ private locales;
16
+ private currentLocale;
17
+ /**
18
+ * Singleton pattern
19
+ */
20
+ static getInstance(): LocaleManager;
21
+ private constructor();
22
+ /**
23
+ * Set or register a locale
24
+ */
25
+ setLocale(locale: string, data?: ILocale): void;
26
+ /**
27
+ * Get locale information
28
+ */
29
+ getLocale(locale?: string): ILocale;
30
+ /**
31
+ * List all registered locales
32
+ */
33
+ listLocales(): string[];
34
+ /**
35
+ * Get current locale
36
+ */
37
+ getCurrentLocale(): string;
38
+ /**
39
+ * Load multiple locales
40
+ */
41
+ loadLocales(locales: Record<string, ILocale>): void;
42
+ }
@@ -0,0 +1,17 @@
1
+ import { ILocale } from '../types';
2
+ /**
3
+ * Locale data record for all supported languages
4
+ */
5
+ export declare const LOCALES_DATA: Record<string, ILocale>;
6
+ /**
7
+ * Dynamically register all locales
8
+ */
9
+ export declare function registerAllLocales(localeMap: Map<string, ILocale> | Record<string, ILocale>): void;
10
+ /**
11
+ * Get all available locales
12
+ */
13
+ export declare function getAvailableLocales(): string[];
14
+ /**
15
+ * Total locales count
16
+ */
17
+ export declare const LOCALES_COUNT: number;
@@ -0,0 +1,5 @@
1
+ import { ILocale } from '../types';
2
+ export declare const AR_LOCALE_DATA: ILocale;
3
+ export declare const HE_LOCALE_DATA: ILocale;
4
+ export declare const HI_LOCALE_DATA: ILocale;
5
+ export declare const MIDDLE_EASTERN_LOCALES: Record<string, ILocale>;
@@ -0,0 +1,6 @@
1
+ import { ILocale } from '../types';
2
+ export declare const SV_LOCALE_DATA: ILocale;
3
+ export declare const NB_LOCALE_DATA: ILocale;
4
+ export declare const DA_LOCALE_DATA: ILocale;
5
+ export declare const FI_LOCALE_DATA: ILocale;
6
+ export declare const NORDIC_LOCALES: Record<string, ILocale>;
@@ -0,0 +1,7 @@
1
+ import { ILocale } from '../types';
2
+ export declare const FR_LOCALE_DATA: ILocale;
3
+ export declare const IT_LOCALE_DATA: ILocale;
4
+ export declare const PT_LOCALE_DATA: ILocale;
5
+ export declare const PT_BR_LOCALE_DATA: ILocale;
6
+ export declare const RO_LOCALE_DATA: ILocale;
7
+ export declare const ROMANCE_LOCALES: Record<string, ILocale>;
@@ -0,0 +1,6 @@
1
+ import { ILocale } from '../types';
2
+ export declare const RU_LOCALE_DATA: ILocale;
3
+ export declare const PL_LOCALE_DATA: ILocale;
4
+ export declare const CS_LOCALE_DATA: ILocale;
5
+ export declare const SK_LOCALE_DATA: ILocale;
6
+ export declare const SLAVIC_LOCALES: Record<string, ILocale>;
@@ -0,0 +1,5 @@
1
+ import { ILocale } from '../types';
2
+ export declare const ES_LOCALE_DATA: ILocale;
3
+ export declare const ES_MX_LOCALE_DATA: ILocale;
4
+ export declare const ES_US_LOCALE_DATA: ILocale;
5
+ export declare const SPANISH_LOCALES: Record<string, ILocale>;
@@ -0,0 +1,47 @@
1
+ import { ITimeGuardPlugin } from '../../types';
2
+ import { TimeGuard } from '../../time-guard';
3
+ export declare class AdvancedFormatPlugin implements ITimeGuardPlugin {
4
+ name: string;
5
+ version: string;
6
+ /**
7
+ * Install plugin into TimeGuard
8
+ */
9
+ install(TimeGuardClass: typeof TimeGuard): void;
10
+ /**
11
+ * Get ordinal suffix (1st, 2nd, 3rd, etc.)
12
+ */
13
+ private getOrdinal;
14
+ /**
15
+ * Pad number with leading zeros
16
+ */
17
+ private padNumber;
18
+ /**
19
+ * Get ISO week number
20
+ */
21
+ private getISOWeek;
22
+ /**
23
+ * Get week of year (locale-based)
24
+ */
25
+ private getWeekOfYear;
26
+ /**
27
+ * Get ISO week year
28
+ */
29
+ private getISOWeekYear;
30
+ /**
31
+ * Get week year
32
+ */
33
+ private getWeekYear;
34
+ /**
35
+ * Get timezone offset short form
36
+ */
37
+ private getTimezoneOffset;
38
+ /**
39
+ * Get timezone offset long form
40
+ */
41
+ private getTimezoneOffsetLong;
42
+ }
43
+ /**
44
+ * Create and export default instance
45
+ */
46
+ declare const _default: AdvancedFormatPlugin;
47
+ export default _default;
@@ -0,0 +1,107 @@
1
+ import { ITimeGuardPlugin } from '../../types';
2
+ import { TimeGuard } from '../../time-guard';
3
+ import { DurationInput, DurationObject, DurationUnit, IDuration } from './types';
4
+ /**
5
+ * Duration class - represents time span following ISO 8601 standard
6
+ */
7
+ export declare class Duration implements IDuration {
8
+ private years;
9
+ private months;
10
+ private weeks;
11
+ private days;
12
+ private hours;
13
+ private minutes;
14
+ private seconds;
15
+ private milliseconds;
16
+ constructor(input: DurationInput);
17
+ /**
18
+ * Create Duration from ISO 8601 string
19
+ * @example Duration.fromISO("P3Y6M4DT12H30M5S")
20
+ */
21
+ static fromISO(iso: string): Duration;
22
+ /**
23
+ * Create a Duration between this date and another
24
+ */
25
+ static between(from: TimeGuard, to: TimeGuard): Duration;
26
+ /**
27
+ * Create Duration from milliseconds
28
+ */
29
+ static fromMilliseconds(ms: number): Duration;
30
+ /**
31
+ * Get duration in specific unit
32
+ */
33
+ as(unit: DurationUnit): number;
34
+ /**
35
+ * Get duration as milliseconds
36
+ */
37
+ asMilliseconds(): number;
38
+ /**
39
+ * Get duration as seconds
40
+ */
41
+ asSeconds(): number;
42
+ /**
43
+ * Get duration as minutes
44
+ */
45
+ asMinutes(): number;
46
+ /**
47
+ * Get duration as hours
48
+ */
49
+ asHours(): number;
50
+ /**
51
+ * Get duration as days
52
+ */
53
+ asDays(): number;
54
+ /**
55
+ * Get duration as weeks
56
+ */
57
+ asWeeks(): number;
58
+ /**
59
+ * Get duration as months
60
+ */
61
+ asMonths(): number;
62
+ /**
63
+ * Get duration as years
64
+ */
65
+ asYears(): number;
66
+ /**
67
+ * Get all components
68
+ */
69
+ toObject(): DurationObject;
70
+ /**
71
+ * Get ISO 8601 string representation
72
+ * @example "P3Y6M4DT12H30M5S"
73
+ */
74
+ toISO(): string;
75
+ /**
76
+ * Get human-readable string
77
+ */
78
+ humanize(): string;
79
+ /**
80
+ * Check if duration is negative
81
+ */
82
+ isNegative(): boolean;
83
+ /**
84
+ * Get absolute duration
85
+ */
86
+ abs(): Duration;
87
+ /**
88
+ * String representation
89
+ */
90
+ toString(): string;
91
+ }
92
+ /**
93
+ * Duration Plugin
94
+ */
95
+ export declare class DurationPlugin implements ITimeGuardPlugin {
96
+ name: string;
97
+ version: string;
98
+ /**
99
+ * Install plugin into TimeGuard
100
+ */
101
+ install(TimeGuardClass: typeof TimeGuard): void;
102
+ }
103
+ /**
104
+ * Create and export default instance
105
+ */
106
+ export declare const durationPlugin: DurationPlugin;
107
+ export default durationPlugin;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Duration Plugin Types
3
+ */
4
+ export type DurationUnit = 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds' | 'milliseconds';
5
+ export interface DurationInput {
6
+ years?: number;
7
+ months?: number;
8
+ weeks?: number;
9
+ days?: number;
10
+ hours?: number;
11
+ minutes?: number;
12
+ seconds?: number;
13
+ milliseconds?: number;
14
+ }
15
+ export interface DurationObject {
16
+ years: number;
17
+ months: number;
18
+ weeks: number;
19
+ days: number;
20
+ hours: number;
21
+ minutes: number;
22
+ seconds: number;
23
+ milliseconds: number;
24
+ }
25
+ /**
26
+ * Duration class for ISO 8601 durations
27
+ */
28
+ export interface IDuration {
29
+ /**
30
+ * Get duration in specific unit
31
+ */
32
+ as(unit: DurationUnit): number;
33
+ /**
34
+ * Get duration as milliseconds
35
+ */
36
+ asMilliseconds(): number;
37
+ /**
38
+ * Get duration as seconds
39
+ */
40
+ asSeconds(): number;
41
+ /**
42
+ * Get duration as minutes
43
+ */
44
+ asMinutes(): number;
45
+ /**
46
+ * Get duration as hours
47
+ */
48
+ asHours(): number;
49
+ /**
50
+ * Get duration as days
51
+ */
52
+ asDays(): number;
53
+ /**
54
+ * Get duration as weeks
55
+ */
56
+ asWeeks(): number;
57
+ /**
58
+ * Get duration as months
59
+ */
60
+ asMonths(): number;
61
+ /**
62
+ * Get duration as years
63
+ */
64
+ asYears(): number;
65
+ /**
66
+ * Get all components
67
+ */
68
+ toObject(): DurationObject;
69
+ /**
70
+ * Get ISO 8601 string representation
71
+ */
72
+ toISO(): string;
73
+ /**
74
+ * Get human-readable string
75
+ */
76
+ humanize(): string;
77
+ /**
78
+ * Check if duration is negative
79
+ */
80
+ isNegative(): boolean;
81
+ /**
82
+ * Get absolute duration
83
+ */
84
+ abs(): IDuration;
85
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * TimeGuard Plugins
3
+ * Central export point for all plugins
4
+ */
5
+ export { PluginManager } from './manager';
6
+ export { RelativeTimePlugin, default as relativeTimePlugin } from './relative-time';
7
+ export { DurationPlugin, Duration, default as durationPlugin } from './duration';
8
+ export { AdvancedFormatPlugin, default as advancedFormatPlugin } from './advanced-format';
9
+ export type { RelativeTimeConfig, RelativeTimeFormats, RelativeTimeThreshold } from './relative-time/types';
10
+ export type { IDuration, DurationInput, DurationObject, DurationUnit } from './duration/types';
@@ -0,0 +1,58 @@
1
+ import { ITimeGuardPlugin } from '../types';
2
+ import { TimeGuard } from '../time-guard';
3
+ /**
4
+ * Plugin Manager - handles plugin registration and initialization
5
+ * Uses Singleton pattern to ensure single instance across application
6
+ */
7
+ export declare class PluginManager {
8
+ private static instance;
9
+ private plugins;
10
+ /**
11
+ * Get singleton instance
12
+ */
13
+ static getInstance(): PluginManager;
14
+ /**
15
+ * Register a plugin
16
+ * @param plugin - The plugin to register
17
+ * @param timeGuardClass - Reference to TimeGuard class
18
+ * @param config - Optional plugin configuration
19
+ */
20
+ static use(plugin: ITimeGuardPlugin, timeGuardClass: typeof TimeGuard, config?: unknown): void;
21
+ /**
22
+ * Register multiple plugins at once
23
+ * @param plugins - Array of plugins to register
24
+ * @param timeGuardClass - Reference to TimeGuard class
25
+ * @param config - Optional plugin configuration
26
+ */
27
+ static useMultiple(plugins: ITimeGuardPlugin[], timeGuardClass: typeof TimeGuard, config?: unknown): void;
28
+ /**
29
+ * Get registered plugin by name
30
+ * @param name - Plugin name
31
+ * @returns Plugin instance or undefined
32
+ */
33
+ static getPlugin(name: string): ITimeGuardPlugin | undefined;
34
+ /**
35
+ * Check if plugin is registered
36
+ * @param name - Plugin name
37
+ * @returns True if plugin is registered
38
+ */
39
+ static hasPlugin(name: string): boolean;
40
+ /**
41
+ * Get all registered plugins
42
+ * @returns Array of registered plugin names
43
+ */
44
+ static listPlugins(): string[];
45
+ /**
46
+ * Unregister a plugin
47
+ * @param name - Plugin name
48
+ */
49
+ static unuse(name: string): boolean;
50
+ /**
51
+ * Clear all plugins
52
+ */
53
+ static clear(): void;
54
+ /**
55
+ * Internal register method
56
+ */
57
+ private register;
58
+ }
@@ -0,0 +1,39 @@
1
+ import { ITimeGuardPlugin } from '../../types';
2
+ import { TimeGuard } from '../../time-guard';
3
+ import { RelativeTimeConfig, RelativeTimeFormats } from './types';
4
+ export declare class RelativeTimePlugin implements ITimeGuardPlugin {
5
+ name: string;
6
+ version: string;
7
+ private config;
8
+ private formats;
9
+ constructor(config?: RelativeTimeConfig);
10
+ /**
11
+ * Install plugin into TimeGuard
12
+ */
13
+ install(TimeGuardClass: typeof TimeGuard): void;
14
+ /**
15
+ * Format relative time
16
+ */
17
+ private formatRelativeTime;
18
+ /**
19
+ * Get relative time string based on milliseconds
20
+ */
21
+ private getRelativeTimeString;
22
+ /**
23
+ * Get milliseconds per unit
24
+ */
25
+ private getUnitMilliseconds;
26
+ /**
27
+ * Set format strings
28
+ */
29
+ setFormats(formats: Partial<RelativeTimeFormats>): void;
30
+ /**
31
+ * Get current formats
32
+ */
33
+ getFormats(): RelativeTimeFormats;
34
+ }
35
+ /**
36
+ * Create and export default instance
37
+ */
38
+ declare const _default: RelativeTimePlugin;
39
+ export default _default;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * RelativeTime Plugin Types
3
+ */
4
+ export interface RelativeTimeConfig {
5
+ thresholds?: RelativeTimeThreshold[];
6
+ rounding?: (value: number) => number;
7
+ }
8
+ export interface RelativeTimeThreshold {
9
+ l: string;
10
+ r?: number;
11
+ d?: string;
12
+ }
13
+ export interface RelativeTimeFormats {
14
+ future: string;
15
+ past: string;
16
+ s: string;
17
+ m: string;
18
+ mm: string;
19
+ h: string;
20
+ hh: string;
21
+ d: string;
22
+ dd: string;
23
+ M: string;
24
+ MM: string;
25
+ y: string;
26
+ yy: string;
27
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Polyfill Loader - Verifies Temporal API availability
3
+ * The actual polyfill is loaded via `import '@js-temporal/polyfill'` in index.ts
4
+ */
5
+ export {};
@@ -0,0 +1,154 @@
1
+ import { ITimeGuard, ITimeGuardConfig, Unit, FormatPreset, IRoundOptions } from './types';
2
+ /**
3
+ * TimeGuard implementation - Main facade class
4
+ */
5
+ export declare class TimeGuard implements ITimeGuard {
6
+ private temporal;
7
+ private config;
8
+ private formatterInstance;
9
+ constructor(input?: unknown, config?: ITimeGuardConfig);
10
+ /**
11
+ * Static factory methods
12
+ */
13
+ static now(config?: ITimeGuardConfig): TimeGuard;
14
+ static from(input: unknown, config?: ITimeGuardConfig): TimeGuard;
15
+ static fromTemporal(temporal: any, // Temporal.PlainDateTime | Temporal.ZonedDateTime
16
+ config?: ITimeGuardConfig): TimeGuard;
17
+ toTemporal(): any;
18
+ toDate(): Date;
19
+ toISOString(): string;
20
+ valueOf(): number;
21
+ unix(): number;
22
+ toJSON(): string;
23
+ toString(): string;
24
+ locale(): string;
25
+ locale(locale: string): TimeGuard;
26
+ timezone(): string | null;
27
+ timezone(timezone: string): TimeGuard;
28
+ format(pattern: string | FormatPreset): string;
29
+ get(component: Unit): number;
30
+ add(units: Partial<Record<Unit, number>>): TimeGuard;
31
+ subtract(units: Partial<Record<Unit, number>>): TimeGuard;
32
+ diff(other: TimeGuard, unit?: Unit): number;
33
+ isBefore(other: TimeGuard): boolean;
34
+ isAfter(other: TimeGuard): boolean;
35
+ isSame(other: TimeGuard, unit?: Unit): boolean;
36
+ isBetween(start: TimeGuard, end: TimeGuard, unit?: Unit, inclusivity?: '[)' | '()' | '[]' | '(]'): boolean;
37
+ clone(): TimeGuard;
38
+ startOf(unit: Unit): TimeGuard;
39
+ endOf(unit: Unit): TimeGuard;
40
+ set(values: Partial<Record<Unit, number>>): TimeGuard;
41
+ year(): number;
42
+ month(): number;
43
+ day(): number;
44
+ hour(): number;
45
+ minute(): number;
46
+ second(): number;
47
+ millisecond(): number;
48
+ dayOfWeek(): number;
49
+ dayOfYear(): number;
50
+ weekOfYear(): number;
51
+ daysInMonth(): number;
52
+ daysInYear(): number;
53
+ inLeapYear(): boolean;
54
+ /**
55
+ * Calculate duration until another TimeGuard
56
+ */
57
+ until(other: TimeGuard): {
58
+ years: number;
59
+ months: number;
60
+ days: number;
61
+ hours: number;
62
+ minutes: number;
63
+ seconds: number;
64
+ milliseconds: number;
65
+ };
66
+ /**
67
+ * Round to a specific unit with optional rounding mode
68
+ */
69
+ round(options?: IRoundOptions): TimeGuard;
70
+ /**
71
+ * Convert to PlainDate (removes time information)
72
+ */
73
+ toPlainDate(): {
74
+ year: number;
75
+ month: number;
76
+ day: number;
77
+ dayOfWeek: number;
78
+ };
79
+ /**
80
+ * Convert to PlainTime (removes date information)
81
+ */
82
+ toPlainTime(): {
83
+ hour: number;
84
+ minute: number;
85
+ second: number;
86
+ millisecond: number;
87
+ };
88
+ /**
89
+ * Create new TimeGuard with only date, keeping time from parameter
90
+ */
91
+ withDate(year: number, month: number, day: number): TimeGuard;
92
+ /**
93
+ * Create new TimeGuard with only time, keeping date
94
+ */
95
+ withTime(hour: number, minute?: number, second?: number, millisecond?: number): TimeGuard;
96
+ /**
97
+ * Get timezone offset in format ±HH:mm
98
+ */
99
+ getOffset(): string;
100
+ /**
101
+ * Get timezone offset in nanoseconds
102
+ */
103
+ getOffsetNanoseconds(): number;
104
+ /**
105
+ * Get timezone ID
106
+ */
107
+ getTimeZoneId(): string | null;
108
+ /**
109
+ * Start of the day in current timezone
110
+ */
111
+ startOfDay(): TimeGuard;
112
+ /**
113
+ * End of the day in current timezone
114
+ */
115
+ endOfDay(): TimeGuard;
116
+ /**
117
+ * Calculate duration from another TimeGuard (inverse of until)
118
+ * Returns negative values if other is before this
119
+ */
120
+ since(other: TimeGuard): {
121
+ years: number;
122
+ months: number;
123
+ days: number;
124
+ hours: number;
125
+ minutes: number;
126
+ seconds: number;
127
+ milliseconds: number;
128
+ };
129
+ /**
130
+ * Get ISO 8601 duration string
131
+ * Example: P1Y2M3DT4H5M6S
132
+ */
133
+ toDurationString(other?: TimeGuard): string;
134
+ /**
135
+ * Check if this date is in the past
136
+ */
137
+ isPast(): boolean;
138
+ /**
139
+ * Check if this date is in the future
140
+ */
141
+ isFuture(): boolean;
142
+ /**
143
+ * Check if this date is today
144
+ */
145
+ isToday(): boolean;
146
+ /**
147
+ * Check if this date is tomorrow
148
+ */
149
+ isTomorrow(): boolean;
150
+ /**
151
+ * Check if this date is yesterday
152
+ */
153
+ isYesterday(): boolean;
154
+ }