@dereekb/date 10.0.4 → 10.0.6

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 (136) hide show
  1. package/index.cjs.d.ts +1 -0
  2. package/index.cjs.default.js +1 -0
  3. package/index.cjs.js +9264 -0
  4. package/index.cjs.mjs +2 -0
  5. package/index.esm.js +9957 -0
  6. package/package.json +13 -3
  7. package/src/lib/date/date.calendar.d.ts +1 -1
  8. package/src/lib/date/date.cell.d.ts +3 -3
  9. package/src/lib/date/date.cell.factory.d.ts +5 -5
  10. package/src/lib/date/date.cell.filter.d.ts +3 -3
  11. package/src/lib/date/date.cell.index.d.ts +4 -3
  12. package/src/lib/date/date.cell.schedule.d.ts +7 -7
  13. package/src/lib/date/date.cell.schedule.day.d.ts +2 -2
  14. package/src/lib/date/date.cell.validator.d.ts +2 -2
  15. package/src/lib/date/date.cell.week.d.ts +3 -3
  16. package/src/lib/date/date.d.ts +1 -1
  17. package/src/lib/date/date.day.d.ts +3 -3
  18. package/src/lib/date/date.duration.d.ts +2 -2
  19. package/src/lib/date/date.format.d.ts +3 -4
  20. package/src/lib/date/date.logical.d.ts +1 -1
  21. package/src/lib/date/date.range.d.ts +1 -1
  22. package/src/lib/date/date.range.string.d.ts +2 -2
  23. package/src/lib/date/date.range.timezone.d.ts +2 -2
  24. package/src/lib/date/date.rxjs.d.ts +3 -3
  25. package/src/lib/date/date.sort.d.ts +2 -2
  26. package/src/lib/date/date.time.d.ts +3 -3
  27. package/src/lib/date/date.time.limit.d.ts +3 -3
  28. package/src/lib/date/date.time.minute.d.ts +4 -4
  29. package/src/lib/date/date.timezone.d.ts +2 -2
  30. package/src/lib/date/date.unix.d.ts +1 -1
  31. package/src/lib/date/date.week.d.ts +3 -3
  32. package/src/lib/expires/expires.d.ts +1 -1
  33. package/src/lib/expires/expires.rxjs.d.ts +3 -3
  34. package/src/lib/query/query.builder.d.ts +2 -2
  35. package/src/lib/query/query.builder.mongo.d.ts +2 -2
  36. package/src/lib/query/query.filter.d.ts +2 -2
  37. package/src/lib/query/query.request.d.ts +2 -2
  38. package/src/lib/rrule/date.recurrence.d.ts +4 -4
  39. package/src/lib/rrule/date.rrule.d.ts +5 -5
  40. package/src/lib/rrule/date.rrule.extension.d.ts +1 -1
  41. package/src/lib/rrule/date.rrule.parse.d.ts +2 -2
  42. package/src/lib/timezone/timezone.d.ts +1 -1
  43. package/src/lib/timezone/timezone.validator.d.ts +2 -2
  44. package/CHANGELOG.md +0 -1484
  45. package/src/index.js +0 -5
  46. package/src/index.js.map +0 -1
  47. package/src/lib/date/date.calendar.js +0 -65
  48. package/src/lib/date/date.calendar.js.map +0 -1
  49. package/src/lib/date/date.cell.factory.js +0 -493
  50. package/src/lib/date/date.cell.factory.js.map +0 -1
  51. package/src/lib/date/date.cell.filter.js +0 -65
  52. package/src/lib/date/date.cell.filter.js.map +0 -1
  53. package/src/lib/date/date.cell.index.js +0 -731
  54. package/src/lib/date/date.cell.index.js.map +0 -1
  55. package/src/lib/date/date.cell.js +0 -574
  56. package/src/lib/date/date.cell.js.map +0 -1
  57. package/src/lib/date/date.cell.schedule.day.js +0 -15
  58. package/src/lib/date/date.cell.schedule.day.js.map +0 -1
  59. package/src/lib/date/date.cell.schedule.js +0 -711
  60. package/src/lib/date/date.cell.schedule.js.map +0 -1
  61. package/src/lib/date/date.cell.validator.js +0 -67
  62. package/src/lib/date/date.cell.validator.js.map +0 -1
  63. package/src/lib/date/date.cell.week.js +0 -40
  64. package/src/lib/date/date.cell.week.js.map +0 -1
  65. package/src/lib/date/date.day.js +0 -207
  66. package/src/lib/date/date.day.js.map +0 -1
  67. package/src/lib/date/date.duration.js +0 -56
  68. package/src/lib/date/date.duration.js.map +0 -1
  69. package/src/lib/date/date.format.js +0 -231
  70. package/src/lib/date/date.format.js.map +0 -1
  71. package/src/lib/date/date.hashset.js +0 -11
  72. package/src/lib/date/date.hashset.js.map +0 -1
  73. package/src/lib/date/date.js +0 -267
  74. package/src/lib/date/date.js.map +0 -1
  75. package/src/lib/date/date.logical.js +0 -61
  76. package/src/lib/date/date.logical.js.map +0 -1
  77. package/src/lib/date/date.range.js +0 -643
  78. package/src/lib/date/date.range.js.map +0 -1
  79. package/src/lib/date/date.range.string.js +0 -19
  80. package/src/lib/date/date.range.string.js.map +0 -1
  81. package/src/lib/date/date.range.timezone.js +0 -29
  82. package/src/lib/date/date.range.timezone.js.map +0 -1
  83. package/src/lib/date/date.round.js +0 -49
  84. package/src/lib/date/date.round.js.map +0 -1
  85. package/src/lib/date/date.rxjs.js +0 -40
  86. package/src/lib/date/date.rxjs.js.map +0 -1
  87. package/src/lib/date/date.sort.js +0 -43
  88. package/src/lib/date/date.sort.js.map +0 -1
  89. package/src/lib/date/date.time.js +0 -240
  90. package/src/lib/date/date.time.js.map +0 -1
  91. package/src/lib/date/date.time.limit.js +0 -99
  92. package/src/lib/date/date.time.limit.js.map +0 -1
  93. package/src/lib/date/date.time.minute.js +0 -144
  94. package/src/lib/date/date.time.minute.js.map +0 -1
  95. package/src/lib/date/date.timezone.js +0 -494
  96. package/src/lib/date/date.timezone.js.map +0 -1
  97. package/src/lib/date/date.unix.js +0 -41
  98. package/src/lib/date/date.unix.js.map +0 -1
  99. package/src/lib/date/date.week.js +0 -263
  100. package/src/lib/date/date.week.js.map +0 -1
  101. package/src/lib/date/index.js +0 -30
  102. package/src/lib/date/index.js.map +0 -1
  103. package/src/lib/expires/expires.js +0 -81
  104. package/src/lib/expires/expires.js.map +0 -1
  105. package/src/lib/expires/expires.rxjs.js +0 -61
  106. package/src/lib/expires/expires.rxjs.js.map +0 -1
  107. package/src/lib/expires/index.js +0 -6
  108. package/src/lib/expires/index.js.map +0 -1
  109. package/src/lib/index.js +0 -9
  110. package/src/lib/index.js.map +0 -1
  111. package/src/lib/query/index.js +0 -8
  112. package/src/lib/query/index.js.map +0 -1
  113. package/src/lib/query/query.builder.js +0 -85
  114. package/src/lib/query/query.builder.js.map +0 -1
  115. package/src/lib/query/query.builder.mongo.js +0 -41
  116. package/src/lib/query/query.builder.mongo.js.map +0 -1
  117. package/src/lib/query/query.filter.js +0 -3
  118. package/src/lib/query/query.filter.js.map +0 -1
  119. package/src/lib/query/query.request.js +0 -3
  120. package/src/lib/query/query.request.js.map +0 -1
  121. package/src/lib/rrule/date.recurrence.js +0 -93
  122. package/src/lib/rrule/date.recurrence.js.map +0 -1
  123. package/src/lib/rrule/date.rrule.extension.js +0 -151
  124. package/src/lib/rrule/date.rrule.extension.js.map +0 -1
  125. package/src/lib/rrule/date.rrule.js +0 -187
  126. package/src/lib/rrule/date.rrule.js.map +0 -1
  127. package/src/lib/rrule/date.rrule.parse.js +0 -135
  128. package/src/lib/rrule/date.rrule.parse.js.map +0 -1
  129. package/src/lib/rrule/index.js +0 -8
  130. package/src/lib/rrule/index.js.map +0 -1
  131. package/src/lib/timezone/index.js +0 -6
  132. package/src/lib/timezone/index.js.map +0 -1
  133. package/src/lib/timezone/timezone.js +0 -66
  134. package/src/lib/timezone/timezone.js.map +0 -1
  135. package/src/lib/timezone/timezone.validator.js +0 -26
  136. package/src/lib/timezone/timezone.validator.js.map +0 -1
@@ -1,144 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dateTimeMinuteDecisionFunction = exports.DateTimeMinuteInstance = void 0;
4
- const date_fns_1 = require("date-fns");
5
- const date_1 = require("./date");
6
- const date_round_1 = require("./date.round");
7
- const date_cell_schedule_1 = require("./date.cell.schedule");
8
- const date_time_limit_1 = require("./date.time.limit");
9
- const date_logical_1 = require("./date.logical");
10
- /**
11
- * Instance for working with a single date/time.
12
- *
13
- * Can step the date forward/backwards, and validate.
14
- */
15
- class DateTimeMinuteInstance {
16
- constructor(config = {}, dateOverride) {
17
- var _a;
18
- this.config = config;
19
- this._date = (dateOverride == undefined ? config.date : dateOverride) || new Date();
20
- this._step = (_a = config.step) !== null && _a !== void 0 ? _a : 1;
21
- this._limit = new date_time_limit_1.LimitDateTimeInstance(config);
22
- this._dateFilter = config.schedule ? (0, date_cell_schedule_1.dateCellScheduleDateFilter)(config.schedule) : () => true;
23
- }
24
- get date() {
25
- return this._date;
26
- }
27
- set date(date) {
28
- this._date = date;
29
- }
30
- get step() {
31
- return this._step;
32
- }
33
- set step(step) {
34
- this._step = step;
35
- }
36
- /**
37
- * Returns true if the input is within the range and in the schedule.
38
- *
39
- * @param date
40
- * @returns
41
- */
42
- isInValidRange(date) {
43
- const result = this.getStatus(date);
44
- return result.isAfterMinimum && result.isBeforeMaximum && result.isInSchedule;
45
- }
46
- /**
47
- * Returns true if the status is completely valid.
48
- *
49
- * @param date
50
- * @returns
51
- */
52
- isValid(date) {
53
- const result = this.getStatus(date);
54
- return result.isAfterMinimum && result.isBeforeMaximum && result.inFuture && result.inFutureMinutes && result.inPast && result.isInSchedule;
55
- }
56
- getStatus(date = this.date) {
57
- let isBeforeMaximum = true;
58
- let isAfterMinimum = true;
59
- let inFuture = true;
60
- let inFutureMinutes = true;
61
- let inPast = true;
62
- let isInSchedule = true;
63
- const { limits = {} } = this._limit.config;
64
- const { minimumMinutesIntoFuture } = this._limit;
65
- const now = (0, date_1.roundDownToMinute)(new Date());
66
- // Min/Future
67
- if (limits.min) {
68
- const logicalMin = (0, date_logical_1.dateFromLogicalDate)(limits.min);
69
- isAfterMinimum = !(0, date_fns_1.isBefore)(date, logicalMin);
70
- }
71
- if (minimumMinutesIntoFuture) {
72
- const minFutureDateTime = (0, date_fns_1.addMinutes)(now, minimumMinutesIntoFuture);
73
- inFutureMinutes = !(0, date_fns_1.isBefore)(now, minFutureDateTime);
74
- }
75
- else if (limits.isFuture) {
76
- inFuture = (0, date_fns_1.isAfter)(date, now);
77
- }
78
- // Max/Past
79
- if (limits.max) {
80
- const logicalMax = (0, date_logical_1.dateFromLogicalDate)(limits.max);
81
- isBeforeMaximum = !(0, date_fns_1.isAfter)(date, logicalMax);
82
- }
83
- if (limits.isPast) {
84
- inPast = (0, date_fns_1.isBefore)(date, now);
85
- }
86
- // Schedule
87
- isInSchedule = this._dateFilter(date);
88
- return {
89
- isBeforeMaximum,
90
- isAfterMinimum,
91
- inFuture,
92
- inFutureMinutes,
93
- inPast,
94
- isInSchedule
95
- };
96
- }
97
- round(round) {
98
- var _a;
99
- let date = (0, date_round_1.roundDateTimeDownToSteps)(this.date, Object.assign(Object.assign({}, round), { step: (_a = round.step) !== null && _a !== void 0 ? _a : this.step }));
100
- if (round.roundToBound) {
101
- date = this._takeBoundedDate(date);
102
- }
103
- return date;
104
- }
105
- clamp(date = this.date) {
106
- return this._limit.clamp(date);
107
- }
108
- _takeBoundedDate(date = this.date) {
109
- return this._takeMaximumBoundedDate(this._takeMinimumBoundedDate(date));
110
- }
111
- _takeMinimumBoundedDate(date = this.date) {
112
- var _a;
113
- if (((_a = this.config.behavior) === null || _a === void 0 ? void 0 : _a.capToMinLimit) !== false) {
114
- const min = (0, date_logical_1.dateFromLogicalDate)(this._limit.min);
115
- if (min && (0, date_fns_1.isBefore)(date, min)) {
116
- date = min;
117
- }
118
- }
119
- return date;
120
- }
121
- _takeMaximumBoundedDate(date = this.date) {
122
- var _a;
123
- if (((_a = this.config.behavior) === null || _a === void 0 ? void 0 : _a.capToMaxLimit) !== false) {
124
- const max = (0, date_logical_1.dateFromLogicalDate)(this._limit.max);
125
- if (max && (0, date_fns_1.isAfter)(date, max)) {
126
- date = max;
127
- }
128
- }
129
- return date;
130
- }
131
- }
132
- exports.DateTimeMinuteInstance = DateTimeMinuteInstance;
133
- /**
134
- * Creates a DecisionFunction for the input Date value.
135
- *
136
- * @param config
137
- * @returns
138
- */
139
- function dateTimeMinuteDecisionFunction(config) {
140
- const instance = new DateTimeMinuteInstance(config, null);
141
- return (date) => instance.isValid(date);
142
- }
143
- exports.dateTimeMinuteDecisionFunction = dateTimeMinuteDecisionFunction;
144
- //# sourceMappingURL=date.time.minute.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.time.minute.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.time.minute.ts"],"names":[],"mappings":"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"}
@@ -1,494 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.copyHoursAndMinutesFromDateWithTimezoneNormal = exports.copyHoursAndMinutesFromNowWithTimezoneNormal = exports.startOfDayInTimezoneFromISO8601DayString = exports.startOfDayInTimezoneDayStringFactory = exports.transformDateRangeInTimezoneNormalFunction = exports.transformDateRangeToTimezoneFunction = exports.transformDateInTimezoneNormalFunction = exports.systemExperiencesDaylightSavings = exports.systemNormalDateToBaseDateOffset = exports.systemBaseDateToNormalDateOffset = exports.systemNormalDateToBaseDate = exports.systemBaseDateToNormalDate = exports.targetDateToBaseDate = exports.baseDateToTargetDate = exports.systemDateTimezoneUtcNormal = exports.UTC_DATE_TIMEZONE_UTC_NORMAL_INSTANCE = exports.SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE = exports.dateTimezoneUtcNormal = exports.DateTimezoneUtcNormalInstance = exports.inverseDateTimezoneUtcNormalInstanceTransformType = exports.calculateAllConversions = exports.getCurrentSystemOffsetInMinutes = exports.getCurrentSystemOffsetInHours = exports.getCurrentSystemOffsetInMs = exports.isSameDateTimezoneConversionConfig = exports.isValidDateTimezoneConversionConfig = void 0;
4
- const date_fns_1 = require("date-fns");
5
- const util_1 = require("@dereekb/util");
6
- const date_fns_tz_1 = require("date-fns-tz");
7
- const date_1 = require("./date");
8
- const date_range_1 = require("./date.range");
9
- const date_format_1 = require("./date.format");
10
- /**
11
- * Returns true if any DateTimezoneConversionConfig configuration value is provided.
12
- *
13
- * @param input
14
- * @returns
15
- */
16
- function isValidDateTimezoneConversionConfig(input) {
17
- return input.useSystemTimezone || input.timezone != null || input.timezoneOffset != null || input.noConversion || false;
18
- }
19
- exports.isValidDateTimezoneConversionConfig = isValidDateTimezoneConversionConfig;
20
- /**
21
- * Returns true if both inputs are considered equivalent.
22
- *
23
- * @param a
24
- * @param b
25
- * @returns
26
- */
27
- function isSameDateTimezoneConversionConfig(a, b) {
28
- let isSame = false;
29
- if (a.useSystemTimezone || b.useSystemTimezone || a.timezoneOffset || b.timezoneOffset) {
30
- isSame = (0, util_1.isSameNonNullValue)(a.useSystemTimezone, b.useSystemTimezone) || (0, util_1.isSameNonNullValue)(a.timezoneOffset, b.timezoneOffset);
31
- }
32
- else {
33
- isSame = ((0, util_1.isConsideredUtcTimezoneString)(a.timezone) && (0, util_1.isConsideredUtcTimezoneString)(b.timezone)) || (a != null && a === b);
34
- }
35
- return isSame;
36
- }
37
- exports.isSameDateTimezoneConversionConfig = isSameDateTimezoneConversionConfig;
38
- /**
39
- * Returns the current offset in milliseconds.
40
- *
41
- * The offset corresponds positively with the UTC offset, so UTC-6 is negative 6 hours, in milliseconds.
42
- *
43
- * @param date Date is required to get the correct offset for the given date.
44
- * @returns
45
- */
46
- function getCurrentSystemOffsetInMs(date) {
47
- return (0, date_1.minutesToMs)(getCurrentSystemOffsetInMinutes(date));
48
- }
49
- exports.getCurrentSystemOffsetInMs = getCurrentSystemOffsetInMs;
50
- /**
51
- * Returns the current system time offset in hours.
52
- *
53
- * @param date
54
- * @returns
55
- */
56
- function getCurrentSystemOffsetInHours(date) {
57
- return (0, date_fns_1.minutesToHours)(getCurrentSystemOffsetInMinutes(date));
58
- }
59
- exports.getCurrentSystemOffsetInHours = getCurrentSystemOffsetInHours;
60
- /**
61
- * Equivalent to -date.getTimezoneOffset().
62
- *
63
- * @param date
64
- * @returns
65
- */
66
- function getCurrentSystemOffsetInMinutes(date) {
67
- return -date.getTimezoneOffset();
68
- }
69
- exports.getCurrentSystemOffsetInMinutes = getCurrentSystemOffsetInMinutes;
70
- function calculateAllConversions(date, converter, map = ((x) => x)) {
71
- const options = ['target', 'base', 'system'];
72
- const conversions = {};
73
- options.forEach((from) => {
74
- options.forEach((to) => {
75
- if (from !== to) {
76
- conversions[`${from}-${to}`] = map(converter.getCurrentOffset(date, from, to));
77
- }
78
- });
79
- });
80
- return conversions;
81
- }
82
- exports.calculateAllConversions = calculateAllConversions;
83
- function inverseDateTimezoneUtcNormalInstanceTransformType(input) {
84
- let result;
85
- switch (input) {
86
- case 'baseDateToSystemDate':
87
- result = 'systemDateToBaseDate';
88
- break;
89
- case 'baseDateToTargetDate':
90
- result = 'targetDateToBaseDate';
91
- break;
92
- case 'systemDateToBaseDate':
93
- result = 'baseDateToSystemDate';
94
- break;
95
- case 'systemDateToTargetDate':
96
- result = 'targetDateToSystemDate';
97
- break;
98
- case 'targetDateToBaseDate':
99
- result = 'baseDateToTargetDate';
100
- break;
101
- case 'targetDateToSystemDate':
102
- result = 'systemDateToTargetDate';
103
- break;
104
- }
105
- return result;
106
- }
107
- exports.inverseDateTimezoneUtcNormalInstanceTransformType = inverseDateTimezoneUtcNormalInstanceTransformType;
108
- /**
109
- * Used for converting Dates to/from a UTC "base date" to a "normal date".
110
- *
111
- * This can generally be used for converting from/to the target offset as well.
112
- */
113
- class DateTimezoneUtcNormalInstance {
114
- get hasConfiguredTimezoneString() {
115
- return this.config.timezone != null;
116
- }
117
- get usesSystemTimezone() {
118
- return this.config.useSystemTimezone === true;
119
- }
120
- get configuredTimezoneString() {
121
- const { timezone } = this.config;
122
- return timezone !== null && timezone !== void 0 ? timezone : (this.config.useSystemTimezone ? (0, date_1.guessCurrentTimezone)() : undefined);
123
- }
124
- constructor(config) {
125
- let getOffsetInMsFn;
126
- function useTimezone(timezone) {
127
- getOffsetInMsFn = (date) => {
128
- const tzOffset = (0, date_fns_tz_1.getTimezoneOffset)(timezone, date);
129
- return tzOffset;
130
- };
131
- }
132
- if (config == null || typeof config === 'string') {
133
- const timezone = config !== null && config !== void 0 ? config : util_1.UTC_TIMEZONE_STRING;
134
- config = { timezone };
135
- useTimezone(timezone);
136
- }
137
- else if (config.useSystemTimezone === true) {
138
- getOffsetInMsFn = getCurrentSystemOffsetInMs;
139
- }
140
- else if (config.timezoneOffset != null) {
141
- getOffsetInMsFn = () => this.config.timezoneOffset;
142
- }
143
- else if (config.timezone != null) {
144
- useTimezone(config.timezone);
145
- }
146
- else {
147
- config = { noConversion: true };
148
- }
149
- this.config = config;
150
- const hasConversion = !config.noConversion;
151
- function calculateOffset(date, fn = getOffsetInMsFn) {
152
- const offset = fn(date);
153
- return offset;
154
- }
155
- function calculateSystemNormalDifference(date) {
156
- const normalOffset = calculateOffset(date);
157
- const systemOffset = getCurrentSystemOffsetInMs(date);
158
- return -normalOffset + systemOffset;
159
- }
160
- if (hasConversion) {
161
- this._getOffset = function getCurrentOffset(x, from, to) {
162
- if (from === to) {
163
- return 0;
164
- }
165
- else {
166
- const target = `${from}-${to}`;
167
- let offset;
168
- switch (target) {
169
- case 'target-base':
170
- offset = -calculateOffset(x);
171
- break;
172
- case 'base-target':
173
- offset = calculateOffset(x);
174
- break;
175
- case 'target-system':
176
- offset = calculateSystemNormalDifference(x);
177
- break;
178
- case 'system-target':
179
- offset = -calculateSystemNormalDifference(x);
180
- break;
181
- case 'base-system':
182
- offset = getCurrentSystemOffsetInMs(x);
183
- break;
184
- case 'system-base':
185
- offset = -getCurrentSystemOffsetInMs(x);
186
- break;
187
- default:
188
- throw new Error(`unexpected offset target "${target}"`);
189
- }
190
- // console.log('Offset: ', { date: x, target, offset, offsetInHours: millisecondsToHours(offset) });
191
- return offset;
192
- }
193
- };
194
- }
195
- else {
196
- this._getOffset = () => 0;
197
- }
198
- this.hasConversion = hasConversion;
199
- }
200
- _computeOffsetDate(date, from, to) {
201
- return (0, date_fns_1.addMilliseconds)(date, this._getOffset(date, from, to));
202
- }
203
- // MARK: DateTimezoneBaseDateConverter
204
- getCurrentOffset(date, from, to) {
205
- return this._getOffset(date, from, to);
206
- }
207
- transform(date, transform) {
208
- return this[transform](date);
209
- }
210
- transformFunction(transform) {
211
- return (date) => this.transform(date, transform);
212
- }
213
- transformDateRangeToTimezoneFunction(transformType) {
214
- return transformDateRangeToTimezoneFunction(this, transformType);
215
- }
216
- targetDateToBaseDate(date) {
217
- return this._computeOffsetDate(date, 'target', 'base');
218
- }
219
- baseDateToTargetDate(date) {
220
- return this._computeOffsetDate(date, 'base', 'target');
221
- }
222
- baseDateToSystemDate(date) {
223
- return this._computeOffsetDate(date, 'base', 'system');
224
- }
225
- systemDateToBaseDate(date) {
226
- return this._computeOffsetDate(date, 'system', 'base');
227
- }
228
- targetDateToSystemDate(date) {
229
- return this._computeOffsetDate(date, 'target', 'system');
230
- }
231
- systemDateToTargetDate(date) {
232
- return this._computeOffsetDate(date, 'system', 'target');
233
- }
234
- getOffset(date, transform) {
235
- return this[`${transform}Offset`](date);
236
- }
237
- offsetFunction(transform) {
238
- return (date) => this.getOffset(date, transform);
239
- }
240
- targetDateToBaseDateOffset(date) {
241
- return this._getOffset(date, 'target', 'base');
242
- }
243
- baseDateToTargetDateOffset(date) {
244
- return this._getOffset(date, 'base', 'target');
245
- }
246
- baseDateToSystemDateOffset(date) {
247
- return this._getOffset(date, 'base', 'system');
248
- }
249
- systemDateToBaseDateOffset(date) {
250
- return this._getOffset(date, 'system', 'base');
251
- }
252
- targetDateToSystemDateOffset(date) {
253
- return this._getOffset(date, 'target', 'system');
254
- }
255
- systemDateToTargetDateOffset(date) {
256
- return this._getOffset(date, 'system', 'target');
257
- }
258
- calculateAllOffsets(date, map) {
259
- return calculateAllConversions(date, this, map);
260
- }
261
- /**
262
- * Returns true if the input is midnight in the target timezone.
263
- *
264
- * @param date
265
- */
266
- isStartOfDayInTargetTimezone(date) {
267
- const utcNormal = this.baseDateToTargetDate(date);
268
- return (0, date_1.isStartOfDayInUTC)(utcNormal);
269
- }
270
- /**
271
- * Start of the given day in the target timezone.
272
- *
273
- * @param date The input is treated as an instant in time.
274
- */
275
- startOfDayInTargetTimezone(date) {
276
- const baseDay = this.startOfDayInBaseDate(date);
277
- return this.targetDateToBaseDate(baseDay);
278
- }
279
- /**
280
- * Start of the given day in UTC.
281
- *
282
- * @param date
283
- */
284
- startOfDayInBaseDate(date) {
285
- if (typeof date === 'string') {
286
- return (0, date_format_1.parseISO8601DayStringToUTCDate)(date);
287
- }
288
- else {
289
- const startOfDayForSystem = (0, date_fns_1.startOfDay)(date !== null && date !== void 0 ? date : new Date());
290
- return this.baseDateToSystemDate(startOfDayForSystem);
291
- }
292
- }
293
- /**
294
- * Start of the given day for the system.
295
- *
296
- * @param date
297
- * @returns
298
- */
299
- startOfDayInSystemDate(date) {
300
- if (typeof date === 'string') {
301
- const utcDate = (0, date_format_1.parseISO8601DayStringToUTCDate)(date);
302
- return this.systemDateToBaseDate(utcDate);
303
- }
304
- else {
305
- return (0, date_fns_1.startOfDay)(date !== null && date !== void 0 ? date : new Date());
306
- }
307
- }
308
- /**
309
- * Whether or not the system experiences daylight savings for the given year.
310
- *
311
- * @param year
312
- */
313
- targetTimezoneExperiencesDaylightSavings(year = new Date()) {
314
- const yearNumber = typeof year === 'number' ? year : year.getFullYear();
315
- const jan = new Date(yearNumber, 0, 1); // off
316
- const jul = new Date(yearNumber, 6, 1); // on
317
- return Math.abs(this.targetDateToBaseDateOffset(jul) - this.targetDateToBaseDateOffset(jan)) !== 0;
318
- }
319
- /**
320
- * Creates a TransformDateInTimezoneNormalFunction using this normal instance.
321
- *
322
- * @param transformType
323
- * @returns
324
- */
325
- transformDateInTimezoneNormalFunction(transformType) {
326
- return transformDateInTimezoneNormalFunction(this, transformType);
327
- }
328
- transformDateInTimezoneNormal(date, transform, transformType) {
329
- return this.transformDateInTimezoneNormalFunction(transformType)(date, transform);
330
- }
331
- transformDateRangeInTimezoneNormalFunction(transform) {
332
- return transformDateRangeInTimezoneNormalFunction(this, transform);
333
- }
334
- }
335
- exports.DateTimezoneUtcNormalInstance = DateTimezoneUtcNormalInstance;
336
- function dateTimezoneUtcNormal(config) {
337
- let instance;
338
- if (config instanceof DateTimezoneUtcNormalInstance) {
339
- instance = config;
340
- }
341
- else {
342
- const type = typeof config;
343
- switch (type) {
344
- case 'object':
345
- instance = new DateTimezoneUtcNormalInstance(config);
346
- break;
347
- case 'number':
348
- instance = new DateTimezoneUtcNormalInstance({ timezoneOffset: config });
349
- break;
350
- case 'string':
351
- instance = new DateTimezoneUtcNormalInstance({ timezone: config });
352
- break;
353
- default:
354
- throw new Error('Invalid input passed to dateTimezoneUtcNormal()');
355
- }
356
- }
357
- return instance;
358
- }
359
- exports.dateTimezoneUtcNormal = dateTimezoneUtcNormal;
360
- /**
361
- * Default DateTimezoneUtcNormalInstance configured with useSystemTimezone=true
362
- */
363
- exports.SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE = new DateTimezoneUtcNormalInstance({ useSystemTimezone: true });
364
- /**
365
- * Default DateTimezoneUtcNormalInstance configured with useSystemTimezone=true
366
- */
367
- exports.UTC_DATE_TIMEZONE_UTC_NORMAL_INSTANCE = new DateTimezoneUtcNormalInstance({ timezone: util_1.UTC_TIMEZONE_STRING });
368
- /**
369
- * Returns a DateTimezoneUtcNormalInstance configured with useSystemTimezone=true.
370
- *
371
- * @returns
372
- */
373
- function systemDateTimezoneUtcNormal() {
374
- return exports.SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE;
375
- }
376
- exports.systemDateTimezoneUtcNormal = systemDateTimezoneUtcNormal;
377
- function baseDateToTargetDate(date, timezone) {
378
- const instance = new DateTimezoneUtcNormalInstance(timezone);
379
- const result = instance.baseDateToTargetDate(date);
380
- return result;
381
- }
382
- exports.baseDateToTargetDate = baseDateToTargetDate;
383
- function targetDateToBaseDate(date, timezone) {
384
- return new DateTimezoneUtcNormalInstance(timezone).targetDateToBaseDate(date);
385
- }
386
- exports.targetDateToBaseDate = targetDateToBaseDate;
387
- function systemBaseDateToNormalDate(date) {
388
- return exports.SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE.baseDateToTargetDate(date);
389
- }
390
- exports.systemBaseDateToNormalDate = systemBaseDateToNormalDate;
391
- function systemNormalDateToBaseDate(date) {
392
- return exports.SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE.targetDateToBaseDate(date);
393
- }
394
- exports.systemNormalDateToBaseDate = systemNormalDateToBaseDate;
395
- function systemBaseDateToNormalDateOffset(date) {
396
- return exports.SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE.baseDateToTargetDateOffset(date);
397
- }
398
- exports.systemBaseDateToNormalDateOffset = systemBaseDateToNormalDateOffset;
399
- function systemNormalDateToBaseDateOffset(date) {
400
- return exports.SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE.targetDateToBaseDateOffset(date);
401
- }
402
- exports.systemNormalDateToBaseDateOffset = systemNormalDateToBaseDateOffset;
403
- function systemExperiencesDaylightSavings(year) {
404
- return exports.SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE.targetTimezoneExperiencesDaylightSavings(year);
405
- }
406
- exports.systemExperiencesDaylightSavings = systemExperiencesDaylightSavings;
407
- function transformDateInTimezoneNormalFunction(timezoneInput, transformType = 'systemDateToTargetDate') {
408
- const timezoneInstance = dateTimezoneUtcNormal(timezoneInput);
409
- const transformToNormal = timezoneInstance.transformFunction(transformType);
410
- const transformFromNormal = timezoneInstance.transformFunction(inverseDateTimezoneUtcNormalInstanceTransformType(transformType));
411
- const fn = ((inputRange, transform) => {
412
- const inputNormal = transformToNormal(inputRange);
413
- const normalResult = transform(inputNormal);
414
- return transformFromNormal(normalResult);
415
- });
416
- fn._timezoneInstance = timezoneInstance;
417
- fn._transformType = transformType;
418
- return fn;
419
- }
420
- exports.transformDateInTimezoneNormalFunction = transformDateInTimezoneNormalFunction;
421
- function transformDateRangeToTimezoneFunction(timezoneInput, transformType = 'systemDateToTargetDate') {
422
- const timezoneInstance = dateTimezoneUtcNormal(timezoneInput);
423
- const fn = (0, date_range_1.transformDateRangeDatesFunction)(timezoneInstance.transformFunction(transformType));
424
- fn._timezoneInstance = timezoneInstance;
425
- fn._transformType = transformType;
426
- return fn;
427
- }
428
- exports.transformDateRangeToTimezoneFunction = transformDateRangeToTimezoneFunction;
429
- function transformDateRangeInTimezoneNormalFunction(timezoneInput, transformType = 'systemDateToTargetDate') {
430
- const timezoneInstance = dateTimezoneUtcNormal(timezoneInput);
431
- const transformToNormal = (0, date_range_1.transformDateRangeDatesFunction)(timezoneInstance.transformFunction(transformType));
432
- const transformFromNormal = (0, date_range_1.transformDateRangeDatesFunction)(timezoneInstance.transformFunction(inverseDateTimezoneUtcNormalInstanceTransformType(transformType)));
433
- const fn = ((inputRange, transform) => {
434
- const inputNormal = transformToNormal(inputRange);
435
- const normalResult = transform(inputNormal);
436
- return transformFromNormal(normalResult);
437
- });
438
- fn._timezoneInstance = timezoneInstance;
439
- fn._transformType = transformType;
440
- return fn;
441
- }
442
- exports.transformDateRangeInTimezoneNormalFunction = transformDateRangeInTimezoneNormalFunction;
443
- function startOfDayInTimezoneDayStringFactory(timezone) {
444
- const timezoneInstance = dateTimezoneUtcNormal(timezone);
445
- return (day) => timezoneInstance.startOfDayInTargetTimezone(day);
446
- }
447
- exports.startOfDayInTimezoneDayStringFactory = startOfDayInTimezoneDayStringFactory;
448
- /**
449
- * Loads the start of the day in the given timezone.
450
- *
451
- * @param day
452
- * @param timezone
453
- * @returns
454
- */
455
- function startOfDayInTimezoneFromISO8601DayString(day, timezone) {
456
- return startOfDayInTimezoneDayStringFactory(timezone)(day);
457
- }
458
- exports.startOfDayInTimezoneFromISO8601DayString = startOfDayInTimezoneFromISO8601DayString;
459
- // MARK: Timezone Utilities
460
- /**
461
- * Convenience function for calling copyHoursAndMinutesFromDatesWithTimezoneNormal() with now.
462
- *
463
- * @param input
464
- * @param timezone
465
- * @returns
466
- */
467
- function copyHoursAndMinutesFromNowWithTimezoneNormal(input, timezone) {
468
- return copyHoursAndMinutesFromDateWithTimezoneNormal(input, new Date(), timezone);
469
- }
470
- exports.copyHoursAndMinutesFromNowWithTimezoneNormal = copyHoursAndMinutesFromNowWithTimezoneNormal;
471
- /**
472
- * Converts the two input dates, which are dates in the same timezone/normal but than the current system, using the input DateTimezoneUtcNormalFunctionInput.
473
- *
474
- * This converts the dates to the system timezone normal, copies the values, then back to the original timezone normal.
475
- *
476
- * @param input
477
- * @param copyFrom
478
- * @param timezone
479
- */
480
- function copyHoursAndMinutesFromDateWithTimezoneNormal(input, copyFrom, timezone) {
481
- const timezoneInstance = dateTimezoneUtcNormal(timezone);
482
- const inputInSystemTimezone = timezoneInstance.systemDateToTargetDate(input);
483
- const copyFromInSystemTimezone = timezoneInstance.systemDateToTargetDate(copyFrom);
484
- // handle the potential system date time offset when the system's timezone offset changes between dates...
485
- const inputInSystemTimezoneOffset = inputInSystemTimezone.getTimezoneOffset();
486
- const copyFromInSystemTimezoneOffset = copyFromInSystemTimezone.getTimezoneOffset();
487
- const offsetDifference = inputInSystemTimezoneOffset - copyFromInSystemTimezoneOffset;
488
- // copy the minutes then add the offset difference to get the appropriate time.
489
- const copiedInSystemTimezone = (0, date_fns_1.addMinutes)((0, date_1.copyHoursAndMinutesFromDate)(inputInSystemTimezone, copyFromInSystemTimezone), offsetDifference);
490
- const result = timezoneInstance.targetDateToSystemDate(copiedInSystemTimezone);
491
- return result;
492
- }
493
- exports.copyHoursAndMinutesFromDateWithTimezoneNormal = copyHoursAndMinutesFromDateWithTimezoneNormal;
494
- //# sourceMappingURL=date.timezone.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.timezone.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.timezone.ts"],"names":[],"mappings":"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"}