@bereasoftware/time-guard 2.0.3 → 2.0.5

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 (57) hide show
  1. package/README.en.md +10 -2
  2. package/README.md +17 -7
  3. package/dist/{calendars.es.js → calendars/index.es.js} +1 -1
  4. package/dist/full.cjs +1 -1
  5. package/dist/full.es.js +2 -2
  6. package/dist/{locales.es.js → locales/index.es.js} +1 -1
  7. package/dist/{plugin-advanced-format.es.js → plugins/advanced-format.es.js} +1 -1
  8. package/dist/{plugin-duration.es.js → plugins/duration.es.js} +1 -1
  9. package/dist/{plugin-relative-time.es.js → plugins/relative-time.es.js} +1 -1
  10. package/dist/time-guard.cjs +1 -1
  11. package/dist/time-guard.es.js +2 -2
  12. package/dist/time-guard.iife.js +1 -1
  13. package/dist/time-guard.umd.js +1 -1
  14. package/dist/types/calendars.d.ts +1 -1
  15. package/dist/types/full.d.ts +1 -0
  16. package/dist/types/locales.d.ts +1 -1
  17. package/dist/types/plugins/advanced-format.d.ts +2 -0
  18. package/dist/types/plugins/duration.d.ts +3 -0
  19. package/dist/types/plugins/relative-time.d.ts +3 -0
  20. package/dist/types/time-guard.d.ts +1 -1
  21. package/package.json +24 -23
  22. package/dist/types/plugin-advanced-format.d.ts +0 -1
  23. package/dist/types/plugin-duration.d.ts +0 -1
  24. package/dist/types/plugin-relative-time.d.ts +0 -1
  25. package/dist/types/src/adapters/temporal.adapter.d.ts +0 -60
  26. package/dist/types/src/calendars/calendar.manager.d.ts +0 -52
  27. package/dist/types/src/calendars/index.d.ts +0 -81
  28. package/dist/types/src/formatters/date.formatter.d.ts +0 -21
  29. package/dist/types/src/full.d.ts +0 -8
  30. package/dist/types/src/index.d.ts +0 -23
  31. package/dist/types/src/locales/additional.locale.d.ts +0 -5
  32. package/dist/types/src/locales/asian.locale.d.ts +0 -9
  33. package/dist/types/src/locales/english.locale.d.ts +0 -6
  34. package/dist/types/src/locales/european.locale.d.ts +0 -9
  35. package/dist/types/src/locales/index.d.ts +0 -17
  36. package/dist/types/src/locales/locale.manager.d.ts +0 -42
  37. package/dist/types/src/locales/locales-data.d.ts +0 -17
  38. package/dist/types/src/locales/middle-eastern.locale.d.ts +0 -5
  39. package/dist/types/src/locales/nordic.locale.d.ts +0 -6
  40. package/dist/types/src/locales/romance.locale.d.ts +0 -7
  41. package/dist/types/src/locales/slavic.locale.d.ts +0 -6
  42. package/dist/types/src/locales/spanish.locale.d.ts +0 -5
  43. package/dist/types/src/plugins/advanced-format/index.d.ts +0 -47
  44. package/dist/types/src/plugins/duration/index.d.ts +0 -107
  45. package/dist/types/src/plugins/duration/types.d.ts +0 -85
  46. package/dist/types/src/plugins/index.d.ts +0 -10
  47. package/dist/types/src/plugins/manager.d.ts +0 -58
  48. package/dist/types/src/plugins/relative-time/index.d.ts +0 -39
  49. package/dist/types/src/plugins/relative-time/types.d.ts +0 -27
  50. package/dist/types/src/polyfill-loader.d.ts +0 -5
  51. package/dist/types/src/time-guard.d.ts +0 -154
  52. package/dist/types/src/types/index.d.ts +0 -301
  53. /package/dist/{calendars.cjs → calendars/index.cjs} +0 -0
  54. /package/dist/{locales.cjs → locales/index.cjs} +0 -0
  55. /package/dist/{plugin-advanced-format.cjs → plugins/advanced-format.cjs} +0 -0
  56. /package/dist/{plugin-duration.cjs → plugins/duration.cjs} +0 -0
  57. /package/dist/{plugin-relative-time.cjs → plugins/relative-time.cjs} +0 -0
@@ -1,301 +0,0 @@
1
- /**
2
- * TimeGuard - Core Types and Interfaces
3
- * Following SOLID principles and TypeScript best practices
4
- *
5
- * Temporal types are provided natively by TypeScript (lib.esnext.temporal).
6
- */
7
- /**
8
- * Unit type for date/time operations
9
- */
10
- export type Unit = 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond';
11
- /**
12
- * Format preset strings for common patterns
13
- */
14
- export type FormatPreset = 'iso' | 'date' | 'time' | 'datetime' | 'rfc2822' | 'rfc3339' | 'utc';
15
- /**
16
- * Duration-like object for arithmetic operations
17
- */
18
- export interface IDuration {
19
- years?: number;
20
- months?: number;
21
- weeks?: number;
22
- days?: number;
23
- hours?: number;
24
- minutes?: number;
25
- seconds?: number;
26
- milliseconds?: number;
27
- microseconds?: number;
28
- nanoseconds?: number;
29
- }
30
- /**
31
- * Round options for precision control
32
- */
33
- export interface IRoundOptions {
34
- smallestUnit?: Unit;
35
- roundingMode?: 'ceil' | 'floor' | 'expand' | 'trunc' | 'halfExpand' | 'halfFloor' | 'halfCeil' | 'halfTrunc';
36
- roundingIncrement?: number;
37
- }
38
- /**
39
- * Calendar system interface
40
- */
41
- export interface ICalendarSystem {
42
- id: string;
43
- name: string;
44
- locale?: string;
45
- getMonthName(month: number, short?: boolean): string;
46
- getWeekdayName(day: number, short?: boolean): string;
47
- isLeapYear(year: number): boolean;
48
- daysInMonth(year: number, month: number): number;
49
- daysInYear(year: number): number;
50
- }
51
- /**
52
- * Calendar manager interface
53
- */
54
- export interface ICalendarManager {
55
- register(calendar: ICalendarSystem): void;
56
- get(id: string): ICalendarSystem | undefined;
57
- list(): string[];
58
- setDefault(id: string): void;
59
- getDefault(): ICalendarSystem;
60
- }
61
- /**
62
- * Locale configuration interface
63
- */
64
- export interface ILocale {
65
- name: string;
66
- months: string[];
67
- monthsShort: string[];
68
- weekdays: string[];
69
- weekdaysShort: string[];
70
- weekdaysMin: string[];
71
- meridiem?: {
72
- am: string;
73
- pm: string;
74
- };
75
- formats?: Record<string, string>;
76
- }
77
- /**
78
- * Configuration options for TimeGuard instance
79
- */
80
- export interface ITimeGuardConfig {
81
- locale?: string;
82
- timezone?: string;
83
- strict?: boolean;
84
- }
85
- /**
86
- * Interface for date/time parsing strategy (Strategy Pattern)
87
- */
88
- export interface IDateParser {
89
- parse(input: unknown): any | null;
90
- canHandle(input: unknown): boolean;
91
- }
92
- /**
93
- * Interface for date/time formatting (Strategy Pattern)
94
- */
95
- export interface IDateFormatter {
96
- format(date: any, pattern: string): string;
97
- getPreset(preset: FormatPreset): string;
98
- }
99
- /**
100
- * Interface for locale management (Single Responsibility)
101
- */
102
- export interface ILocaleManager {
103
- setLocale(locale: string, data?: ILocale): void;
104
- getLocale(locale?: string): ILocale;
105
- listLocales(): string[];
106
- }
107
- /**
108
- * Interface for arithmetic operations
109
- */
110
- export interface IDateArithmetic {
111
- add(units: Partial<Record<Unit, number>> | IDuration): TimeGuard;
112
- subtract(units: Partial<Record<Unit, number>> | IDuration): TimeGuard;
113
- diff(other: TimeGuard, unit?: Unit): number;
114
- until(other: TimeGuard, options?: IRoundOptions): IDuration;
115
- round(options: IRoundOptions): TimeGuard;
116
- }
117
- /**
118
- * Interface for query operations
119
- */
120
- export interface IDateQuery {
121
- isBefore(other: TimeGuard): boolean;
122
- isAfter(other: TimeGuard): boolean;
123
- isSame(other: TimeGuard, unit?: Unit): boolean;
124
- isBetween(start: TimeGuard, end: TimeGuard, unit?: Unit, inclusivity?: '[)' | '()' | '[]' | '(]'): boolean;
125
- }
126
- /**
127
- * Interface for manipulation operations
128
- */
129
- export interface IDateManipulation {
130
- clone(): TimeGuard;
131
- startOf(unit: Unit): TimeGuard;
132
- endOf(unit: Unit): TimeGuard;
133
- set(values: Partial<Record<Unit, number>>): TimeGuard;
134
- year(): number;
135
- month(): number;
136
- day(): number;
137
- hour(): number;
138
- minute(): number;
139
- second(): number;
140
- millisecond(): number;
141
- dayOfWeek(): number;
142
- dayOfYear(): number;
143
- weekOfYear(): number;
144
- daysInMonth(): number;
145
- daysInYear(): number;
146
- inLeapYear(): boolean;
147
- }
148
- /**
149
- * Interface for timezone operations
150
- */
151
- export interface ITimezoneAdapter {
152
- toTimezone(date: any, timezone: string): any;
153
- fromTimezone(date: any, targetTimezone: string): any;
154
- getOffset(timezone: string): number;
155
- }
156
- /**
157
- * Main TimeGuard interface (Facade Pattern)
158
- */
159
- export interface ITimeGuard extends IDateArithmetic, IDateQuery, IDateManipulation {
160
- /**
161
- * Get the underlying Temporal date object
162
- */
163
- toTemporal(): any;
164
- /**
165
- * Get as JavaScript Date (compatibility)
166
- */
167
- toDate(): Date;
168
- /**
169
- * Get as ISO string
170
- */
171
- toISOString(): string;
172
- /**
173
- * Get as Unix timestamp (milliseconds)
174
- */
175
- valueOf(): number;
176
- /**
177
- * Format the date with pattern or preset
178
- */
179
- format(pattern: string | FormatPreset): string;
180
- /**
181
- * Get accessor for components
182
- */
183
- get(component: Unit): number;
184
- /**
185
- * Locale of this instance
186
- */
187
- locale(): string;
188
- /**
189
- * Clone with new locale
190
- */
191
- locale(locale: string): TimeGuard;
192
- /**
193
- * Timezone info
194
- */
195
- timezone(): string | null;
196
- /**
197
- * Convert to another timezone
198
- */
199
- timezone(timezone: string): TimeGuard;
200
- /**
201
- * Get Unix timestamp in seconds
202
- */
203
- unix(): number;
204
- /**
205
- * Convert to JSON
206
- */
207
- toJSON(): string;
208
- /**
209
- * String representation
210
- */
211
- toString(): string;
212
- /**
213
- * Convert to PlainDate object
214
- */
215
- toPlainDate(): {
216
- year: number;
217
- month: number;
218
- day: number;
219
- dayOfWeek: number;
220
- };
221
- /**
222
- * Convert to PlainTime object
223
- */
224
- toPlainTime(): {
225
- hour: number;
226
- minute: number;
227
- second: number;
228
- millisecond: number;
229
- };
230
- /**
231
- * Get timezone offset (±HH:mm format or Z)
232
- */
233
- getOffset(): string;
234
- /**
235
- * Get timezone offset in nanoseconds
236
- */
237
- getOffsetNanoseconds(): number;
238
- /**
239
- * Get timezone ID
240
- */
241
- getTimeZoneId(): string | null;
242
- /**
243
- * Start of day
244
- */
245
- startOfDay(): TimeGuard;
246
- /**
247
- * End of day
248
- */
249
- endOfDay(): TimeGuard;
250
- /**
251
- * Duration from another date (inverse of until)
252
- */
253
- since(other: TimeGuard): IDuration;
254
- /**
255
- * ISO 8601 duration string (P1Y2M3DT4H5M6S)
256
- */
257
- toDurationString(other?: TimeGuard): string;
258
- /**
259
- * Check if in past
260
- */
261
- isPast(): boolean;
262
- /**
263
- * Check if in future
264
- */
265
- isFuture(): boolean;
266
- /**
267
- * Check if today
268
- */
269
- isToday(): boolean;
270
- /**
271
- * Check if tomorrow
272
- */
273
- isTomorrow(): boolean;
274
- /**
275
- * Check if yesterday
276
- */
277
- isYesterday(): boolean;
278
- }
279
- /**
280
- * Plugin interface for extending functionality
281
- */
282
- export interface ITimeGuardPlugin {
283
- name: string;
284
- version: string;
285
- install(timeGuard: typeof TimeGuard, config?: unknown): void;
286
- }
287
- /**
288
- * Factory interface
289
- */
290
- export interface ITimeGuardFactory {
291
- create(input?: unknown, config?: ITimeGuardConfig): ITimeGuard;
292
- now(config?: ITimeGuardConfig): ITimeGuard;
293
- fromTemporal(date: any, config?: ITimeGuardConfig): ITimeGuard;
294
- }
295
- /**
296
- * Forward declaration for TimeGuard class
297
- * Implementation is in ./time-guard.ts, exported via ./index.ts
298
- */
299
- export declare class TimeGuard {
300
- constructor(input?: unknown, config?: ITimeGuardConfig);
301
- }
File without changes
File without changes