@lbd-sh/date-tz 1.0.11 → 1.0.12

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.
@@ -0,0 +1,41 @@
1
+ import { IDateTz } from "./idate-tz";
2
+ export declare class DateTz implements IDateTz {
3
+ timestamp: number;
4
+ timezone: string;
5
+ private offsetCache?;
6
+ static defaultFormat: string;
7
+ constructor(value: IDateTz);
8
+ constructor(value: number, tz?: string);
9
+ get timezoneOffset(): import("./timezones").TimezoneOffset;
10
+ compare(other: IDateTz): number;
11
+ isComparable(other: IDateTz): boolean;
12
+ toString(): string;
13
+ toString(pattern: string): string;
14
+ add(value: number, unit: 'minute' | 'hour' | 'day' | 'month' | 'year'): this;
15
+ private _year;
16
+ private _month;
17
+ private _day;
18
+ private _hour;
19
+ private _minute;
20
+ private _dayOfWeek;
21
+ convertToTimezone(tz: string): this;
22
+ cloneToTimezone(tz: string): DateTz;
23
+ private stripSMs;
24
+ private invalidateOffsetCache;
25
+ private getOffsetSeconds;
26
+ private getOffsetInfo;
27
+ private computeOffsetInfo;
28
+ private getIntlOffsetSeconds;
29
+ set(value: number, unit: 'year' | 'month' | 'day' | 'hour' | 'minute'): this;
30
+ private isLeapYear;
31
+ private daysInYear;
32
+ static parse(dateString: string, pattern?: string, tz?: string): DateTz;
33
+ static now(tz?: string): DateTz;
34
+ get isDst(): boolean;
35
+ get year(): number;
36
+ get month(): number;
37
+ get day(): number;
38
+ get hour(): number;
39
+ get minute(): number;
40
+ get dayOfWeek(): number;
41
+ }
@@ -0,0 +1,503 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateTz = void 0;
4
+ const timezones_1 = require("./timezones");
5
+ const MS_PER_MINUTE = 60000;
6
+ const MS_PER_HOUR = 3600000;
7
+ const MS_PER_DAY = 86400000;
8
+ const epochYear = 1970;
9
+ const daysPerMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
10
+ class DateTz {
11
+ constructor(value, tz) {
12
+ if (typeof value === 'object') {
13
+ this.timestamp = value.timestamp;
14
+ this.timezone = value.timezone || 'UTC';
15
+ if (!timezones_1.timezones[this.timezone]) {
16
+ throw new Error(`Invalid timezone: ${value.timezone}`);
17
+ }
18
+ }
19
+ else {
20
+ this.timezone = tz || 'UTC';
21
+ if (!timezones_1.timezones[this.timezone]) {
22
+ throw new Error(`Invalid timezone: ${tz}`);
23
+ }
24
+ this.timestamp = this.stripSMs(value);
25
+ }
26
+ this.invalidateOffsetCache();
27
+ }
28
+ get timezoneOffset() {
29
+ return timezones_1.timezones[this.timezone];
30
+ }
31
+ compare(other) {
32
+ if (this.isComparable(other)) {
33
+ return this.timestamp - other.timestamp;
34
+ }
35
+ throw new Error('Cannot compare dates with different timezones');
36
+ }
37
+ isComparable(other) {
38
+ return this.timezone === other.timezone;
39
+ }
40
+ toString(pattern, locale) {
41
+ if (!pattern)
42
+ pattern = 'YYYY-MM-DD HH:mm:ss';
43
+ const offsetInfo = this.getOffsetInfo();
44
+ const offset = offsetInfo.offsetSeconds * 1000;
45
+ let remainingMs = this.timestamp + offset;
46
+ let year = epochYear;
47
+ while (true) {
48
+ const daysInYear = this.isLeapYear(year) ? 366 : 365;
49
+ const msInYear = daysInYear * MS_PER_DAY;
50
+ if (remainingMs >= msInYear) {
51
+ remainingMs -= msInYear;
52
+ year++;
53
+ }
54
+ else {
55
+ break;
56
+ }
57
+ }
58
+ let month = 0;
59
+ while (month < 12) {
60
+ const daysInMonth = month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month];
61
+ const msInMonth = daysInMonth * MS_PER_DAY;
62
+ if (remainingMs >= msInMonth) {
63
+ remainingMs -= msInMonth;
64
+ month++;
65
+ }
66
+ else {
67
+ break;
68
+ }
69
+ }
70
+ const day = Math.floor(remainingMs / MS_PER_DAY) + 1;
71
+ remainingMs %= MS_PER_DAY;
72
+ const hour = Math.floor(remainingMs / MS_PER_HOUR);
73
+ remainingMs %= MS_PER_HOUR;
74
+ const minute = Math.floor(remainingMs / MS_PER_MINUTE);
75
+ remainingMs %= MS_PER_MINUTE;
76
+ const second = Math.floor(remainingMs / 1000);
77
+ const pm = hour >= 12 ? 'PM' : 'AM';
78
+ const hour12 = hour % 12 || 12;
79
+ if (!locale)
80
+ locale = 'en';
81
+ let monthStr = new Date(year, month, 3).toLocaleString(locale || 'en', { month: 'long' });
82
+ monthStr = monthStr.charAt(0).toUpperCase() + monthStr.slice(1);
83
+ const tokens = {
84
+ YYYY: year,
85
+ YY: String(year).slice(-2),
86
+ yyyy: year.toString(),
87
+ yy: String(year).slice(-2),
88
+ MM: String(month + 1).padStart(2, '0'),
89
+ LM: monthStr,
90
+ DD: String(day).padStart(2, '0'),
91
+ HH: String(hour).padStart(2, '0'),
92
+ mm: String(minute).padStart(2, '0'),
93
+ ss: String(second).padStart(2, '0'),
94
+ aa: pm.toLowerCase(),
95
+ AA: pm,
96
+ hh: hour12.toString().padStart(2, '0'),
97
+ tz: this.timezone,
98
+ };
99
+ return pattern.replace(/YYYY|yyyy|YY|yy|MM|LM|DD|HH|hh|mm|ss|aa|AA|tz/g, (match) => tokens[match]);
100
+ }
101
+ add(value, unit) {
102
+ let remainingMs = this.timestamp;
103
+ let year = 1970;
104
+ let days = Math.floor(remainingMs / MS_PER_DAY);
105
+ remainingMs %= MS_PER_DAY;
106
+ let hour = Math.floor(remainingMs / MS_PER_HOUR);
107
+ remainingMs %= MS_PER_HOUR;
108
+ let minute = Math.floor(remainingMs / MS_PER_MINUTE);
109
+ let second = Math.floor((remainingMs % MS_PER_MINUTE) / 1000);
110
+ while (days >= this.daysInYear(year)) {
111
+ days -= this.daysInYear(year);
112
+ year++;
113
+ }
114
+ let month = 0;
115
+ while (days >= (month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month])) {
116
+ days -= month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month];
117
+ month++;
118
+ }
119
+ let day = days + 1;
120
+ switch (unit) {
121
+ case 'minute':
122
+ minute += value;
123
+ break;
124
+ case 'hour':
125
+ hour += value;
126
+ break;
127
+ case 'day':
128
+ day += value;
129
+ break;
130
+ case 'month':
131
+ month += value;
132
+ break;
133
+ case 'year':
134
+ year += value;
135
+ break;
136
+ default:
137
+ throw new Error(`Unsupported unit: ${unit}`);
138
+ }
139
+ while (minute >= 60) {
140
+ minute -= 60;
141
+ hour++;
142
+ }
143
+ while (hour >= 24) {
144
+ hour -= 24;
145
+ day++;
146
+ }
147
+ while (month >= 12) {
148
+ month -= 12;
149
+ year++;
150
+ }
151
+ while (day > (month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month])) {
152
+ day -= month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month];
153
+ month++;
154
+ if (month >= 12) {
155
+ month = 0;
156
+ year++;
157
+ }
158
+ }
159
+ const newTimestamp = (() => {
160
+ let totalMs = 0;
161
+ for (let y = 1970; y < year; y++) {
162
+ totalMs += this.daysInYear(y) * MS_PER_DAY;
163
+ }
164
+ for (let m = 0; m < month; m++) {
165
+ totalMs += (m === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[m]) * MS_PER_DAY;
166
+ }
167
+ totalMs += (day - 1) * MS_PER_DAY;
168
+ totalMs += hour * MS_PER_HOUR;
169
+ totalMs += minute * MS_PER_MINUTE;
170
+ totalMs += second * 1000;
171
+ return totalMs;
172
+ })();
173
+ this.timestamp = newTimestamp;
174
+ this.invalidateOffsetCache();
175
+ return this;
176
+ }
177
+ _year(considerDst = false) {
178
+ const offset = this.getOffsetSeconds(considerDst) * 1000;
179
+ let remainingMs = this.timestamp + offset;
180
+ let year = 1970;
181
+ let days = Math.floor(remainingMs / MS_PER_DAY);
182
+ while (days >= this.daysInYear(year)) {
183
+ days -= this.daysInYear(year);
184
+ year++;
185
+ }
186
+ return year;
187
+ }
188
+ _month(considerDst = false) {
189
+ const offset = this.getOffsetSeconds(considerDst) * 1000;
190
+ let remainingMs = this.timestamp + offset;
191
+ let year = 1970;
192
+ let days = Math.floor(remainingMs / MS_PER_DAY);
193
+ while (days >= this.daysInYear(year)) {
194
+ days -= this.daysInYear(year);
195
+ year++;
196
+ }
197
+ let month = 0;
198
+ while (days >= (month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month])) {
199
+ days -= month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month];
200
+ month++;
201
+ }
202
+ return month;
203
+ }
204
+ _day(considerDst = false) {
205
+ const offset = this.getOffsetSeconds(considerDst) * 1000;
206
+ let remainingMs = this.timestamp + offset;
207
+ let year = 1970;
208
+ let days = Math.floor(remainingMs / MS_PER_DAY);
209
+ while (days >= this.daysInYear(year)) {
210
+ days -= this.daysInYear(year);
211
+ year++;
212
+ }
213
+ let month = 0;
214
+ while (days >= (month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month])) {
215
+ days -= month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month];
216
+ month++;
217
+ }
218
+ return days + 1;
219
+ }
220
+ _hour(considerDst = false) {
221
+ const offset = this.getOffsetSeconds(considerDst) * 1000;
222
+ let remainingMs = this.timestamp + offset;
223
+ remainingMs %= MS_PER_DAY;
224
+ let hour = Math.floor(remainingMs / MS_PER_HOUR);
225
+ return hour;
226
+ }
227
+ _minute(considerDst = false) {
228
+ const offset = this.getOffsetSeconds(considerDst) * 1000;
229
+ let remainingMs = this.timestamp + offset;
230
+ remainingMs %= MS_PER_HOUR;
231
+ let minute = Math.floor(remainingMs / MS_PER_MINUTE);
232
+ return minute;
233
+ }
234
+ _dayOfWeek(considerDst = false) {
235
+ const offset = this.getOffsetSeconds(considerDst) * 1000;
236
+ let remainingMs = this.timestamp + offset;
237
+ const date = new Date(remainingMs);
238
+ return date.getDay();
239
+ }
240
+ convertToTimezone(tz) {
241
+ if (!timezones_1.timezones[tz]) {
242
+ throw new Error(`Invalid timezone: ${tz}`);
243
+ }
244
+ this.timezone = tz;
245
+ this.invalidateOffsetCache();
246
+ return this;
247
+ }
248
+ cloneToTimezone(tz) {
249
+ if (!timezones_1.timezones[tz]) {
250
+ throw new Error(`Invalid timezone: ${tz}`);
251
+ }
252
+ const clone = new DateTz(this);
253
+ clone.timezone = tz;
254
+ clone.invalidateOffsetCache();
255
+ return clone;
256
+ }
257
+ stripSMs(timestamp) {
258
+ const days = Math.floor(timestamp / MS_PER_DAY);
259
+ const remainingAfterDays = timestamp % MS_PER_DAY;
260
+ const hours = Math.floor(remainingAfterDays / MS_PER_HOUR);
261
+ const remainingAfterHours = remainingAfterDays % MS_PER_HOUR;
262
+ const minutes = Math.floor(remainingAfterHours / MS_PER_MINUTE);
263
+ return days * MS_PER_DAY + hours * MS_PER_HOUR + minutes * MS_PER_MINUTE;
264
+ }
265
+ invalidateOffsetCache() {
266
+ this.offsetCache = undefined;
267
+ }
268
+ getOffsetSeconds(considerDst) {
269
+ const tzInfo = timezones_1.timezones[this.timezone];
270
+ if (!tzInfo) {
271
+ throw new Error(`Invalid timezone: ${this.timezone}`);
272
+ }
273
+ if (!considerDst) {
274
+ return tzInfo.sdt;
275
+ }
276
+ return this.getOffsetInfo().offsetSeconds;
277
+ }
278
+ getOffsetInfo() {
279
+ if (this.offsetCache && this.offsetCache.timestamp === this.timestamp) {
280
+ return this.offsetCache.info;
281
+ }
282
+ const info = this.computeOffsetInfo();
283
+ this.offsetCache = { timestamp: this.timestamp, info };
284
+ return info;
285
+ }
286
+ computeOffsetInfo() {
287
+ const tzInfo = timezones_1.timezones[this.timezone];
288
+ if (!tzInfo) {
289
+ throw new Error(`Invalid timezone: ${this.timezone}`);
290
+ }
291
+ if (tzInfo.dst === tzInfo.sdt) {
292
+ return { offsetSeconds: tzInfo.sdt, isDst: false };
293
+ }
294
+ const actual = this.getIntlOffsetSeconds(this.timestamp);
295
+ if (actual !== null) {
296
+ if (actual !== tzInfo.sdt && actual !== tzInfo.dst) {
297
+ return { offsetSeconds: actual, isDst: actual > tzInfo.sdt };
298
+ }
299
+ return { offsetSeconds: actual, isDst: actual === tzInfo.dst };
300
+ }
301
+ return { offsetSeconds: tzInfo.sdt, isDst: false };
302
+ }
303
+ getIntlOffsetSeconds(timestamp) {
304
+ try {
305
+ const formatter = new Intl.DateTimeFormat('en-US', {
306
+ timeZone: this.timezone,
307
+ hour12: false,
308
+ year: 'numeric',
309
+ month: '2-digit',
310
+ day: '2-digit',
311
+ hour: '2-digit',
312
+ minute: '2-digit',
313
+ second: '2-digit'
314
+ });
315
+ const parts = formatter.formatToParts(new Date(timestamp));
316
+ const lookup = (type) => {
317
+ const part = parts.find(p => p.type === type);
318
+ if (!part) {
319
+ throw new Error(`Missing part ${type}`);
320
+ }
321
+ return Number(part.value);
322
+ };
323
+ const adjusted = Date.UTC(lookup('year'), lookup('month') - 1, lookup('day'), lookup('hour'), lookup('minute'), lookup('second'));
324
+ return Math.round((adjusted - timestamp) / 1000);
325
+ }
326
+ catch {
327
+ return null;
328
+ }
329
+ }
330
+ set(value, unit) {
331
+ let remainingMs = this.timestamp;
332
+ let year = 1970;
333
+ let days = Math.floor(remainingMs / MS_PER_DAY);
334
+ remainingMs %= MS_PER_DAY;
335
+ let hour = Math.floor(remainingMs / MS_PER_HOUR);
336
+ remainingMs %= MS_PER_HOUR;
337
+ let minute = Math.floor(remainingMs / MS_PER_MINUTE);
338
+ let second = Math.floor((remainingMs % MS_PER_MINUTE) / 1000);
339
+ while (days >= this.daysInYear(year)) {
340
+ days -= this.daysInYear(year);
341
+ year++;
342
+ }
343
+ let month = 0;
344
+ while (days >= (month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month])) {
345
+ days -= month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month];
346
+ month++;
347
+ }
348
+ let day = days + 1;
349
+ switch (unit) {
350
+ case 'year':
351
+ year = value;
352
+ break;
353
+ case 'month':
354
+ month = value - 1;
355
+ break;
356
+ case 'day':
357
+ day = value;
358
+ break;
359
+ case 'hour':
360
+ hour = value;
361
+ break;
362
+ case 'minute':
363
+ minute = value;
364
+ break;
365
+ default:
366
+ throw new Error(`Unsupported unit: ${unit}`);
367
+ }
368
+ while (month >= 12) {
369
+ month -= 12;
370
+ year++;
371
+ }
372
+ while (day > (month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month])) {
373
+ day -= month === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[month];
374
+ month++;
375
+ if (month >= 12) {
376
+ month = 0;
377
+ year++;
378
+ }
379
+ }
380
+ const newTimestamp = (() => {
381
+ let totalMs = 0;
382
+ for (let y = 1970; y < year; y++) {
383
+ totalMs += this.daysInYear(y) * MS_PER_DAY;
384
+ }
385
+ for (let m = 0; m < month; m++) {
386
+ totalMs += (m === 1 && this.isLeapYear(year) ? 29 : daysPerMonth[m]) * MS_PER_DAY;
387
+ }
388
+ totalMs += (day - 1) * MS_PER_DAY;
389
+ totalMs += hour * MS_PER_HOUR;
390
+ totalMs += minute * MS_PER_MINUTE;
391
+ totalMs += second * 1000;
392
+ return totalMs;
393
+ })();
394
+ this.timestamp = newTimestamp;
395
+ this.invalidateOffsetCache();
396
+ return this;
397
+ }
398
+ isLeapYear(year) {
399
+ return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
400
+ }
401
+ daysInYear(year) {
402
+ return this.isLeapYear(year) ? 366 : 365;
403
+ }
404
+ static parse(dateString, pattern, tz) {
405
+ if (!pattern)
406
+ pattern = DateTz.defaultFormat;
407
+ if (!tz)
408
+ tz = 'UTC';
409
+ if (!timezones_1.timezones[tz]) {
410
+ throw new Error(`Invalid timezone: ${tz}`);
411
+ }
412
+ if (pattern.includes('hh') && (!pattern.includes('aa') || !pattern.includes('AA'))) {
413
+ throw new Error('AM/PM marker (aa or AA) is required when using 12-hour format (hh)');
414
+ }
415
+ const regex = /YYYY|yyyy|MM|DD|HH|hh|mm|ss|aa|AA/g;
416
+ const dateComponents = {
417
+ YYYY: 1970,
418
+ yyyy: 1970,
419
+ MM: 0,
420
+ DD: 0,
421
+ HH: 0,
422
+ hh: 0,
423
+ aa: 'am',
424
+ AA: "AM",
425
+ mm: 0,
426
+ ss: 0,
427
+ };
428
+ let match;
429
+ let index = 0;
430
+ while ((match = regex.exec(pattern)) !== null) {
431
+ const token = match[0];
432
+ const value = parseInt(dateString.substring(match.index, match.index + token.length), 10);
433
+ dateComponents[token] = value;
434
+ index += token.length + 1;
435
+ }
436
+ const year = dateComponents.YYYY || dateComponents.yyyy;
437
+ const month = dateComponents.MM - 1;
438
+ const day = dateComponents.DD;
439
+ let hour = 0;
440
+ const ampm = (dateComponents.a || dateComponents.A);
441
+ if (ampm) {
442
+ hour = ampm.toUpperCase() === 'AM' ? dateComponents.hh : dateComponents.hh + 12;
443
+ }
444
+ else {
445
+ hour = dateComponents.HH;
446
+ }
447
+ const minute = dateComponents.mm;
448
+ const second = dateComponents.ss;
449
+ const daysInYear = (year) => (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0) ? 366 : 365;
450
+ const daysInMonth = (year, month) => month === 1 && daysInYear(year) === 366 ? 29 : daysPerMonth[month];
451
+ let timestamp = 0;
452
+ for (let y = 1970; y < year; y++) {
453
+ timestamp += daysInYear(y) * MS_PER_DAY;
454
+ }
455
+ for (let m = 0; m < month; m++) {
456
+ timestamp += daysInMonth(year, m) * MS_PER_DAY;
457
+ }
458
+ timestamp += (day - 1) * MS_PER_DAY;
459
+ timestamp += hour * MS_PER_HOUR;
460
+ timestamp += minute * MS_PER_MINUTE;
461
+ timestamp += second * 1000;
462
+ const offset = (timezones_1.timezones[tz].sdt) * 1000;
463
+ let remainingMs = timestamp - offset;
464
+ const date = new DateTz(remainingMs, tz);
465
+ date.timestamp -= date.isDst ? (timezones_1.timezones[tz].dst - timezones_1.timezones[tz].sdt) * 1000 : 0;
466
+ date.invalidateOffsetCache();
467
+ return date;
468
+ }
469
+ static now(tz) {
470
+ if (!tz)
471
+ tz = 'UTC';
472
+ const timezone = timezones_1.timezones[tz];
473
+ if (!timezone) {
474
+ throw new Error(`Invalid timezone: ${tz}`);
475
+ }
476
+ const date = new DateTz(Date.now(), tz);
477
+ return date;
478
+ }
479
+ get isDst() {
480
+ return this.getOffsetInfo().isDst;
481
+ }
482
+ get year() {
483
+ return this._year(true);
484
+ }
485
+ get month() {
486
+ return this._month(true);
487
+ }
488
+ get day() {
489
+ return this._day(true);
490
+ }
491
+ get hour() {
492
+ return this._hour(true);
493
+ }
494
+ get minute() {
495
+ return this._minute(true);
496
+ }
497
+ get dayOfWeek() {
498
+ return this._dayOfWeek(true);
499
+ }
500
+ }
501
+ exports.DateTz = DateTz;
502
+ DateTz.defaultFormat = 'YYYY-MM-DD HH:mm:ss';
503
+ //# sourceMappingURL=date-tz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-tz.js","sourceRoot":"","sources":["../src/date-tz.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { TimezoneOffset } from "./timezones";
2
+ export interface IDateTz {
3
+ timestamp: number;
4
+ timezone?: string;
5
+ readonly timezoneOffset?: TimezoneOffset;
6
+ compare?(other: IDateTz): number;
7
+ isComparable?(other: IDateTz): boolean;
8
+ toString?(): string;
9
+ toString?(pattern: string): string;
10
+ toString?(pattern: string, locale?: string): string;
11
+ add?(value: number, unit: 'minute' | 'hour' | 'day' | 'month' | 'year'): IDateTz;
12
+ set?(value: number, unit: 'year' | 'month' | 'day' | 'hour' | 'minute'): IDateTz;
13
+ convertToTimezone?(tz: string): IDateTz;
14
+ cloneToTimezone?(tz: string): IDateTz;
15
+ readonly isDst?: boolean;
16
+ readonly year?: number;
17
+ readonly month?: number;
18
+ readonly day?: number;
19
+ readonly hour?: number;
20
+ readonly minute?: number;
21
+ readonly dayOfWeek?: number;
22
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=idate-tz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idate-tz.js","sourceRoot":"","sources":["../src/idate-tz.ts"],"names":[],"mappings":""}
@@ -1,4 +1,3 @@
1
1
  export * from './date-tz';
2
2
  export * from './idate-tz';
3
3
  export * from './timezones';
4
-
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./date-tz"), exports);
18
+ __exportStar(require("./idate-tz"), exports);
19
+ __exportStar(require("./timezones"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B"}
@@ -0,0 +1,8 @@
1
+ export type TimezoneOffset = {
2
+ sdt: number;
3
+ dst: number;
4
+ };
5
+ export type Timezone = {
6
+ [k: string]: TimezoneOffset;
7
+ };
8
+ export declare const timezones: Timezone;