@dereekb/date 0.0.1
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.
- package/README.md +7 -0
- package/package.json +19 -0
- package/src/index.d.ts +3 -0
- package/src/index.js +7 -0
- package/src/index.js.map +1 -0
- package/src/lib/date/date.calendar.d.ts +29 -0
- package/src/lib/date/date.calendar.js +54 -0
- package/src/lib/date/date.calendar.js.map +1 -0
- package/src/lib/date/date.d.ts +61 -0
- package/src/lib/date/date.duration.d.ts +9 -0
- package/src/lib/date/date.duration.js +35 -0
- package/src/lib/date/date.duration.js.map +1 -0
- package/src/lib/date/date.format.d.ts +11 -0
- package/src/lib/date/date.format.js +60 -0
- package/src/lib/date/date.format.js.map +1 -0
- package/src/lib/date/date.hashset.d.ts +4 -0
- package/src/lib/date/date.hashset.js +11 -0
- package/src/lib/date/date.hashset.js.map +1 -0
- package/src/lib/date/date.js +131 -0
- package/src/lib/date/date.js.map +1 -0
- package/src/lib/date/date.range.d.ts +107 -0
- package/src/lib/date/date.range.js +222 -0
- package/src/lib/date/date.range.js.map +1 -0
- package/src/lib/date/date.round.d.ts +14 -0
- package/src/lib/date/date.round.js +48 -0
- package/src/lib/date/date.round.js.map +1 -0
- package/src/lib/date/date.sort.d.ts +10 -0
- package/src/lib/date/date.sort.js +25 -0
- package/src/lib/date/date.sort.js.map +1 -0
- package/src/lib/date/date.time.d.ts +82 -0
- package/src/lib/date/date.time.js +208 -0
- package/src/lib/date/date.time.js.map +1 -0
- package/src/lib/date/date.time.limit.d.ts +59 -0
- package/src/lib/date/date.time.limit.js +93 -0
- package/src/lib/date/date.time.limit.js.map +1 -0
- package/src/lib/date/date.time.minute.d.ts +73 -0
- package/src/lib/date/date.time.minute.js +104 -0
- package/src/lib/date/date.time.minute.js.map +1 -0
- package/src/lib/date/date.timezone.d.ts +74 -0
- package/src/lib/date/date.timezone.js +126 -0
- package/src/lib/date/date.timezone.js.map +1 -0
- package/src/lib/date/date.unix.d.ts +6 -0
- package/src/lib/date/date.unix.js +41 -0
- package/src/lib/date/date.unix.js.map +1 -0
- package/src/lib/date/index.d.ts +13 -0
- package/src/lib/date/index.js +17 -0
- package/src/lib/date/index.js.map +1 -0
- package/src/lib/date.request.d.ts +22 -0
- package/src/lib/date.request.js +3 -0
- package/src/lib/date.request.js.map +1 -0
- package/src/lib/expires/expires.d.ts +39 -0
- package/src/lib/expires/expires.js +74 -0
- package/src/lib/expires/expires.js.map +1 -0
- package/src/lib/expires/index.d.ts +1 -0
- package/src/lib/expires/index.js +5 -0
- package/src/lib/expires/index.js.map +1 -0
- package/src/lib/rrule/date.recurrence.d.ts +60 -0
- package/src/lib/rrule/date.recurrence.js +84 -0
- package/src/lib/rrule/date.recurrence.js.map +1 -0
- package/src/lib/rrule/date.rrule.d.ts +125 -0
- package/src/lib/rrule/date.rrule.extension.d.ts +74 -0
- package/src/lib/rrule/date.rrule.extension.js +147 -0
- package/src/lib/rrule/date.rrule.extension.js.map +1 -0
- package/src/lib/rrule/date.rrule.js +180 -0
- package/src/lib/rrule/date.rrule.js.map +1 -0
- package/src/lib/rrule/date.rrule.parse.d.ts +114 -0
- package/src/lib/rrule/date.rrule.parse.js +131 -0
- package/src/lib/rrule/date.rrule.parse.js.map +1 -0
- package/src/lib/rrule/index.d.ts +4 -0
- package/src/lib/rrule/index.js +8 -0
- package/src/lib/rrule/index.js.map +1 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DateRRuleUtility = exports.DateRRuleInstance = void 0;
|
|
4
|
+
const rrule_1 = require("rrule");
|
|
5
|
+
const date_1 = require("../date");
|
|
6
|
+
const date_timezone_1 = require("../date/date.timezone");
|
|
7
|
+
const date_rrule_extension_1 = require("./date.rrule.extension");
|
|
8
|
+
const date_rrule_parse_1 = require("./date.rrule.parse");
|
|
9
|
+
class DateRRuleInstance {
|
|
10
|
+
constructor(rrule, options) {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
this.options = options;
|
|
13
|
+
const tzid = rrule.origOptions.tzid;
|
|
14
|
+
let dtstart = rrule.origOptions.dtstart;
|
|
15
|
+
const timezone = tzid || options.timezone;
|
|
16
|
+
this.normalInstance = new date_timezone_1.DateTimezoneUtcNormalInstance(timezone);
|
|
17
|
+
if (dtstart && tzid) {
|
|
18
|
+
// Date was passed to both. The dtstart is the base UTC date, but correct for RRule.
|
|
19
|
+
}
|
|
20
|
+
else if (timezone) {
|
|
21
|
+
const startsAt = (_a = options.date) === null || _a === void 0 ? void 0 : _a.startsAt;
|
|
22
|
+
// If startsAt is provided, need to change it to start from the "weird" UTC date, if any timezone is provided.
|
|
23
|
+
if (startsAt) {
|
|
24
|
+
const baseStartDate = this.normalInstance.normalDateToBaseDate(startsAt);
|
|
25
|
+
dtstart = baseStartDate;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
// If start date is provided without a timezone, assume timezone is UTC. Do nothing.
|
|
30
|
+
dtstart = dtstart !== null && dtstart !== void 0 ? dtstart : (_b = options.date) === null || _b === void 0 ? void 0 : _b.startsAt;
|
|
31
|
+
}
|
|
32
|
+
const rruleOptions = Object.assign(Object.assign({}, rrule.origOptions), {
|
|
33
|
+
// tzid,
|
|
34
|
+
dtstart });
|
|
35
|
+
if (!rruleOptions.dtstart) {
|
|
36
|
+
throw new Error('No start time specified. Must by specified in options as or via DTSTART.');
|
|
37
|
+
}
|
|
38
|
+
this.rrule = new date_rrule_extension_1.DateRRule(rruleOptions, true);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new DateRRuleInstance from the input.
|
|
42
|
+
*/
|
|
43
|
+
static make(params) {
|
|
44
|
+
var _a, _b;
|
|
45
|
+
if (!(params.rruleLines || params.rruleStringLineSet)) {
|
|
46
|
+
throw new Error('Missing rruleLines or rruleStringLineSet input.');
|
|
47
|
+
}
|
|
48
|
+
const rruleStringLineSet = (_a = params.rruleStringLineSet) !== null && _a !== void 0 ? _a : date_rrule_parse_1.DateRRuleParseUtility.toRRuleStringSet(params.rruleLines);
|
|
49
|
+
const rruleOptions = DateRRuleUtility.toRRuleOptions(rruleStringLineSet);
|
|
50
|
+
const exclude = rruleOptions.exdates.addAll((_b = params.options.exclude) === null || _b === void 0 ? void 0 : _b.valuesArray());
|
|
51
|
+
const rrule = new date_rrule_extension_1.DateRRule(rruleOptions.options);
|
|
52
|
+
return new DateRRuleInstance(rrule, Object.assign(Object.assign({}, params.options), { exclude }));
|
|
53
|
+
}
|
|
54
|
+
get timezone() {
|
|
55
|
+
return this.normalInstance.config.timezone;
|
|
56
|
+
}
|
|
57
|
+
nextRecurrenceDate(from = new Date()) {
|
|
58
|
+
const baseFrom = this.normalInstance.normalDateToBaseDate(from);
|
|
59
|
+
const rawNext = this.rrule.next(baseFrom);
|
|
60
|
+
const next = (rawNext) ? this.normalInstance.baseDateToNormalDate(rawNext) : undefined;
|
|
61
|
+
return next;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Expands the input DateRRuleExpansionOptions to a DateRRuleExpansion.
|
|
65
|
+
*
|
|
66
|
+
* @param options
|
|
67
|
+
* @returns
|
|
68
|
+
*/
|
|
69
|
+
expand(options) {
|
|
70
|
+
var _a;
|
|
71
|
+
let between;
|
|
72
|
+
if (options.range || options.rangeParams) {
|
|
73
|
+
between = (_a = options.range) !== null && _a !== void 0 ? _a : (0, date_1.makeDateRange)(options.rangeParams);
|
|
74
|
+
between.start = this.normalInstance.normalDateToBaseDate(between.start);
|
|
75
|
+
between.end = this.normalInstance.normalDateToBaseDate(between.end);
|
|
76
|
+
}
|
|
77
|
+
let startsAtDates;
|
|
78
|
+
if (between) {
|
|
79
|
+
startsAtDates = this.rrule.between(between.start, between.end, true);
|
|
80
|
+
}
|
|
81
|
+
else if (this.hasForeverRange()) {
|
|
82
|
+
throw new Error('Rule expands infinitely. Specify a range.');
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
startsAtDates = this.rrule.all();
|
|
86
|
+
}
|
|
87
|
+
const referenceDate = this.options.date;
|
|
88
|
+
const allDates = startsAtDates.map(startsAt => (Object.assign(Object.assign({}, referenceDate), { startsAt }))); // Inherit calendar time, etc.
|
|
89
|
+
let dates = allDates;
|
|
90
|
+
// Fix Dates w/ Timezones
|
|
91
|
+
if (this.normalInstance.hasConversion) {
|
|
92
|
+
dates = dates.map((x) => (Object.assign(Object.assign({}, x), { startsAt: this.normalInstance.baseDateToNormalDate(x.startsAt) })));
|
|
93
|
+
}
|
|
94
|
+
// Exclude dates
|
|
95
|
+
const exclude = this.options.exclude;
|
|
96
|
+
if (exclude) {
|
|
97
|
+
dates = dates.filter(x => !exclude.has(x.startsAt));
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
between,
|
|
101
|
+
dates
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Returns true if there is a single date within the range.
|
|
106
|
+
*/
|
|
107
|
+
haveRecurrenceInDateRange(dateRange) {
|
|
108
|
+
const baseStart = this.normalInstance.normalDateToBaseDate(dateRange.start);
|
|
109
|
+
const baseEnd = this.normalInstance.normalDateToBaseDate(dateRange.end);
|
|
110
|
+
return this.rrule.any({ minDate: baseStart, maxDate: baseEnd });
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Returns the date range from when the recurrence starts, to the end date.
|
|
114
|
+
*/
|
|
115
|
+
getRecurrenceDateRange() {
|
|
116
|
+
const options = this.rrule.options;
|
|
117
|
+
const forever = this.hasForeverRange();
|
|
118
|
+
let start = this.rrule.options.dtstart;
|
|
119
|
+
let end;
|
|
120
|
+
let finalRecurrenceEndsAt;
|
|
121
|
+
if (forever) {
|
|
122
|
+
end = (0, date_1.maxFutureDate)();
|
|
123
|
+
finalRecurrenceEndsAt = undefined;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
if (options.until) {
|
|
127
|
+
end = this.rrule.before(options.until, true);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
end = this.rrule.last();
|
|
131
|
+
}
|
|
132
|
+
const referenceDate = this.options.date;
|
|
133
|
+
const finalRecurrenceDateRange = (0, date_1.durationSpanToDateRange)(Object.assign(Object.assign({}, referenceDate), { startsAt: end }));
|
|
134
|
+
finalRecurrenceEndsAt = finalRecurrenceDateRange.end;
|
|
135
|
+
}
|
|
136
|
+
// Fix Dates w/ timezone.
|
|
137
|
+
if (this.normalInstance.hasConversion) {
|
|
138
|
+
const [startF, endF] = [start, end].filter(x => Boolean(x)).map(x => this.normalInstance.baseDateToNormalDate(x));
|
|
139
|
+
start = startF;
|
|
140
|
+
end = endF;
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
forever,
|
|
144
|
+
start,
|
|
145
|
+
end,
|
|
146
|
+
finalRecurrenceEndsAt
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
hasForeverRange() {
|
|
150
|
+
const options = this.rrule.options;
|
|
151
|
+
const forever = !options.count && !options.until;
|
|
152
|
+
return forever;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.DateRRuleInstance = DateRRuleInstance;
|
|
156
|
+
class DateRRuleUtility {
|
|
157
|
+
/**
|
|
158
|
+
* Creates the expansion item results based on the input.
|
|
159
|
+
*/
|
|
160
|
+
static expand(options) {
|
|
161
|
+
var _a;
|
|
162
|
+
if (!options.instance && !options.instanceFrom) {
|
|
163
|
+
throw new Error('Rrules be defined for expansion.');
|
|
164
|
+
}
|
|
165
|
+
const dateRrule = (_a = options.instance) !== null && _a !== void 0 ? _a : DateRRuleInstance.make(options.instanceFrom);
|
|
166
|
+
return dateRrule.expand(options);
|
|
167
|
+
}
|
|
168
|
+
static makeInstance(params) {
|
|
169
|
+
return DateRRuleInstance.make(params);
|
|
170
|
+
}
|
|
171
|
+
// MARK: RRule
|
|
172
|
+
static toRRuleOptions(rruleStringLineSet) {
|
|
173
|
+
const rules = date_rrule_parse_1.DateRRuleParseUtility.separateRRuleStringSetValues(rruleStringLineSet);
|
|
174
|
+
const lines = date_rrule_parse_1.DateRRuleParseUtility.toRRuleLines(rules.basic);
|
|
175
|
+
const ruleOptions = rrule_1.RRule.parseString(lines);
|
|
176
|
+
return Object.assign(Object.assign({}, rules), { options: ruleOptions });
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.DateRRuleUtility = DateRRuleUtility;
|
|
180
|
+
//# sourceMappingURL=date.rrule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.rrule.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/rrule/date.rrule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { TimezoneString, CommaSeparatedString, Maybe } from '@dereekb/util';
|
|
2
|
+
import { DateSet } from '../date';
|
|
3
|
+
/**
|
|
4
|
+
* Denotes a single RRule rules string.
|
|
5
|
+
*/
|
|
6
|
+
export declare type RRuleLineString = string;
|
|
7
|
+
/**
|
|
8
|
+
* RRule property name. i.e. DTSTART, RRULE, etc.
|
|
9
|
+
*/
|
|
10
|
+
export declare type RRulePropertyType = string;
|
|
11
|
+
/**
|
|
12
|
+
* Set of RRuleParams, separated by a ";".
|
|
13
|
+
*
|
|
14
|
+
* The first value in this set is the Type of RRule.
|
|
15
|
+
*/
|
|
16
|
+
export declare type RRuleRawParamSetString = string;
|
|
17
|
+
/**
|
|
18
|
+
* Single Param string. Formatted as <ParamName>=<ParamValue>
|
|
19
|
+
*/
|
|
20
|
+
export declare type RRuleRawParamString = string;
|
|
21
|
+
/**
|
|
22
|
+
* Set of values.
|
|
23
|
+
*/
|
|
24
|
+
export declare type RRuleRawValueSetString = CommaSeparatedString;
|
|
25
|
+
export declare type RRuleRawValueString = string;
|
|
26
|
+
/**
|
|
27
|
+
* RRule line broken into a name and value.
|
|
28
|
+
*/
|
|
29
|
+
export interface RRuleRawLine {
|
|
30
|
+
params: RRuleRawParamSetString;
|
|
31
|
+
values: RRuleRawValueSetString;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Single RRuleRawParamString parsed to key-value param.
|
|
35
|
+
*/
|
|
36
|
+
export interface RRuleParam {
|
|
37
|
+
key: string;
|
|
38
|
+
value: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* RRule raw param that is broken into name and raw value.
|
|
42
|
+
*/
|
|
43
|
+
export interface RRuleProperty {
|
|
44
|
+
type: RRulePropertyType;
|
|
45
|
+
params: RRuleParam[];
|
|
46
|
+
values: RRuleRawValueSetString;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Denotes a set of RRule strings.
|
|
50
|
+
*/
|
|
51
|
+
export declare type RRuleStringLineSet = RRuleLineString[];
|
|
52
|
+
/**
|
|
53
|
+
* RFC string for an RRuleStringLineSet.
|
|
54
|
+
*/
|
|
55
|
+
export declare type RRuleLines = string;
|
|
56
|
+
/**
|
|
57
|
+
* Date formatted like "20210611".
|
|
58
|
+
*
|
|
59
|
+
* https://datatracker.ietf.org/doc/html/rfc5545#section-3.3.4
|
|
60
|
+
*/
|
|
61
|
+
export declare type RFC5545DateString = string;
|
|
62
|
+
/**
|
|
63
|
+
* Date formatted like "20210611T110000" or "20210611T110000Z".
|
|
64
|
+
*
|
|
65
|
+
* https://datatracker.ietf.org/doc/html/rfc5545#section-3.3.5
|
|
66
|
+
*/
|
|
67
|
+
export declare type RFC5545DateTimeString = string;
|
|
68
|
+
export interface RRuleStringSetSeparation {
|
|
69
|
+
/**
|
|
70
|
+
* All of the original input.
|
|
71
|
+
*/
|
|
72
|
+
input: RRuleStringLineSet;
|
|
73
|
+
/**
|
|
74
|
+
* Non-exdate rules that are separated out.
|
|
75
|
+
*/
|
|
76
|
+
basic: RRuleStringLineSet;
|
|
77
|
+
/**
|
|
78
|
+
* Exdate values. Relative to UTC.
|
|
79
|
+
*/
|
|
80
|
+
exdates: DateSet;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.1
|
|
84
|
+
*/
|
|
85
|
+
export interface RRuleExdateAttribute {
|
|
86
|
+
/**
|
|
87
|
+
* Parsed timezone, if applicable.
|
|
88
|
+
*/
|
|
89
|
+
timezone?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Dates relative to UTC.
|
|
92
|
+
*/
|
|
93
|
+
dates: Date[];
|
|
94
|
+
}
|
|
95
|
+
export declare const RRuleStringSplitter = ":";
|
|
96
|
+
export declare class DateRRuleParseUtility {
|
|
97
|
+
static separateRRuleStringSetValues(input: RRuleStringLineSet): RRuleStringSetSeparation;
|
|
98
|
+
static parseExdateAttributeFromLine(line: RRuleLineString): RRuleExdateAttribute;
|
|
99
|
+
static parseExdateAttributeFromProperty(property: RRuleProperty): RRuleExdateAttribute;
|
|
100
|
+
/**
|
|
101
|
+
* Parses the input Date-Time string.
|
|
102
|
+
*
|
|
103
|
+
* Timezone used to convert date to UTC if date is not specified in UTC (ends in Z).
|
|
104
|
+
*/
|
|
105
|
+
static parseDateTimeString(rfcDateString: RFC5545DateString | RFC5545DateTimeString, timezone?: Maybe<TimezoneString>): Date;
|
|
106
|
+
static formatDateTimeString(date: Date): RFC5545DateTimeString;
|
|
107
|
+
static parseProperty(line: RRuleLineString): RRuleProperty;
|
|
108
|
+
static propertyFromRawLine(rawLine: RRuleRawLine): RRuleProperty;
|
|
109
|
+
static parseRawParam(param: RRuleRawParamString): RRuleParam;
|
|
110
|
+
static parseRawLine(line: RRuleLineString): RRuleRawLine;
|
|
111
|
+
static toRRuleStringSet(lines: RRuleLines): RRuleStringLineSet;
|
|
112
|
+
static toRRuleLines(rruleStringSet: RRuleStringLineSet): RRuleLines;
|
|
113
|
+
static assertPropertyType(type: RRulePropertyType, property: RRuleProperty): void;
|
|
114
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DateRRuleParseUtility = exports.RRuleStringSplitter = void 0;
|
|
4
|
+
const util_1 = require("@dereekb/util");
|
|
5
|
+
const date_fns_tz_1 = require("date-fns-tz");
|
|
6
|
+
const date_1 = require("../date");
|
|
7
|
+
const date_timezone_1 = require("../date/date.timezone");
|
|
8
|
+
exports.RRuleStringSplitter = ':';
|
|
9
|
+
class DateRRuleParseUtility {
|
|
10
|
+
static separateRRuleStringSetValues(input) {
|
|
11
|
+
const basic = [];
|
|
12
|
+
const exdateRules = [];
|
|
13
|
+
input.forEach((rule) => {
|
|
14
|
+
if (rule.startsWith('EXDATE')) {
|
|
15
|
+
exdateRules.push(rule);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
basic.push(rule);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
let exdates = new date_1.DateSet();
|
|
22
|
+
if (exdateRules.length) {
|
|
23
|
+
exdates = new date_1.DateSet((0, util_1.flattenArray)(exdateRules.map((date) => {
|
|
24
|
+
return DateRRuleParseUtility.parseExdateAttributeFromLine(date).dates;
|
|
25
|
+
})));
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
basic,
|
|
29
|
+
exdates,
|
|
30
|
+
input
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// MARK: Rules Parsing
|
|
34
|
+
static parseExdateAttributeFromLine(line) {
|
|
35
|
+
const property = this.parseProperty(line);
|
|
36
|
+
DateRRuleParseUtility.assertPropertyType('EXDATE', property);
|
|
37
|
+
return DateRRuleParseUtility.parseExdateAttributeFromProperty(property);
|
|
38
|
+
}
|
|
39
|
+
static parseExdateAttributeFromProperty(property) {
|
|
40
|
+
var _a;
|
|
41
|
+
const timezone = (_a = property.params.find(x => x.key === 'TZID')) === null || _a === void 0 ? void 0 : _a.value;
|
|
42
|
+
const rawDates = property.values.split(',');
|
|
43
|
+
const dates = rawDates.map(x => DateRRuleParseUtility.parseDateTimeString(x, timezone));
|
|
44
|
+
return {
|
|
45
|
+
timezone,
|
|
46
|
+
dates
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Parses the input Date-Time string.
|
|
51
|
+
*
|
|
52
|
+
* Timezone used to convert date to UTC if date is not specified in UTC (ends in Z).
|
|
53
|
+
*/
|
|
54
|
+
static parseDateTimeString(rfcDateString, timezone) {
|
|
55
|
+
const RFC5545_DATE_TIME_FORMAT = /^((\d{4})(\d{2})(\d{2}))(T(\d{2})(\d{2})(\d{2})Z?)?$/;
|
|
56
|
+
const isDateString = (rfcDateString.length === 6);
|
|
57
|
+
const isUTCDate = isDateString || rfcDateString.endsWith('Z');
|
|
58
|
+
const parsed = RFC5545_DATE_TIME_FORMAT.exec(rfcDateString);
|
|
59
|
+
if (parsed == null) {
|
|
60
|
+
throw new Error(`Failed parsing input rfcDateString "${rfcDateString}"`);
|
|
61
|
+
}
|
|
62
|
+
const [full, yearDate, yearS, monthS, dayS, time, hourS, minuteS, secondS] = parsed;
|
|
63
|
+
const [year, month, day, hour, minute, second] = [yearS, monthS, dayS, hourS, minuteS, secondS].map(x => (x) ? Number.parseInt(x, 10) : 0);
|
|
64
|
+
const utcDate = new Date(Date.UTC(year, (month - 1), day, hour, minute, second));
|
|
65
|
+
let date = utcDate;
|
|
66
|
+
if (!isUTCDate) {
|
|
67
|
+
// Date was provided in a local timezone value. Convert to UTC.
|
|
68
|
+
if (timezone) {
|
|
69
|
+
date = (0, date_timezone_1.baseDateToNormalDate)(utcDate, timezone);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
throw new Error('No timezone was provided when parsing DateTime string.');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return date;
|
|
76
|
+
}
|
|
77
|
+
static formatDateTimeString(date) {
|
|
78
|
+
return (0, date_fns_tz_1.format)(date, `yyyyMMdd'T'HHmmss'Z'`);
|
|
79
|
+
}
|
|
80
|
+
static parseProperty(line) {
|
|
81
|
+
const rawLine = DateRRuleParseUtility.parseRawLine(line);
|
|
82
|
+
return DateRRuleParseUtility.propertyFromRawLine(rawLine);
|
|
83
|
+
}
|
|
84
|
+
static propertyFromRawLine(rawLine) {
|
|
85
|
+
const typeAndParams = rawLine.params.split(';');
|
|
86
|
+
const type = typeAndParams[0].toUpperCase();
|
|
87
|
+
const params = typeAndParams.slice(1).map(DateRRuleParseUtility.parseRawParam);
|
|
88
|
+
return {
|
|
89
|
+
type,
|
|
90
|
+
params,
|
|
91
|
+
values: rawLine.values
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
static parseRawParam(param) {
|
|
95
|
+
const [key, value] = param.split('=', 2);
|
|
96
|
+
return {
|
|
97
|
+
key,
|
|
98
|
+
value
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
static parseRawLine(line) {
|
|
102
|
+
const [params, values] = line.split(exports.RRuleStringSplitter, 2);
|
|
103
|
+
if (line.length === 1) {
|
|
104
|
+
return {
|
|
105
|
+
params: 'RRULE',
|
|
106
|
+
values: params
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return {
|
|
111
|
+
params,
|
|
112
|
+
values
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// MARK: String
|
|
117
|
+
static toRRuleStringSet(lines) {
|
|
118
|
+
return lines.split('\n');
|
|
119
|
+
}
|
|
120
|
+
static toRRuleLines(rruleStringSet) {
|
|
121
|
+
return rruleStringSet.join('\n');
|
|
122
|
+
}
|
|
123
|
+
// MARK: Assert
|
|
124
|
+
static assertPropertyType(type, property) {
|
|
125
|
+
if (property.type !== type) {
|
|
126
|
+
throw new Error(`Expected type ${type} but got ${property.type}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.DateRRuleParseUtility = DateRRuleParseUtility;
|
|
131
|
+
//# sourceMappingURL=date.rrule.parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.rrule.parse.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/rrule/date.rrule.parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./date.recurrence"), exports);
|
|
5
|
+
(0, tslib_1.__exportStar)(require("./date.rrule.extension"), exports);
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./date.rrule.parse"), exports);
|
|
7
|
+
(0, tslib_1.__exportStar)(require("./date.rrule"), exports);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/rrule/index.ts"],"names":[],"mappings":";;;AAAA,iEAAkC;AAClC,sEAAuC;AACvC,kEAAmC;AACnC,4DAA6B"}
|