iamcal 2.0.0 → 2.1.0

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 (50) hide show
  1. package/README.md +47 -11
  2. package/lib/component.d.ts +46 -9
  3. package/lib/component.d.ts.map +1 -1
  4. package/lib/component.js +105 -17
  5. package/lib/components/Calendar.d.ts +35 -14
  6. package/lib/components/Calendar.d.ts.map +1 -1
  7. package/lib/components/Calendar.js +43 -15
  8. package/lib/components/CalendarEvent.d.ts +84 -22
  9. package/lib/components/CalendarEvent.d.ts.map +1 -1
  10. package/lib/components/CalendarEvent.js +142 -67
  11. package/lib/components/TimeZone.d.ts +62 -39
  12. package/lib/components/TimeZone.d.ts.map +1 -1
  13. package/lib/components/TimeZone.js +81 -86
  14. package/lib/components/TimeZoneOffset.d.ts +103 -0
  15. package/lib/components/TimeZoneOffset.d.ts.map +1 -0
  16. package/lib/components/TimeZoneOffset.js +148 -0
  17. package/lib/components/index.d.ts +1 -0
  18. package/lib/components/index.d.ts.map +1 -1
  19. package/lib/components/index.js +2 -1
  20. package/lib/date.d.ts +165 -0
  21. package/lib/date.d.ts.map +1 -0
  22. package/lib/date.js +373 -0
  23. package/lib/index.d.ts +3 -1
  24. package/lib/index.d.ts.map +1 -1
  25. package/lib/index.js +4 -2
  26. package/lib/io.d.ts +9 -7
  27. package/lib/io.d.ts.map +1 -1
  28. package/lib/io.js +16 -11
  29. package/lib/parse.d.ts +32 -15
  30. package/lib/parse.d.ts.map +1 -1
  31. package/lib/parse.js +55 -53
  32. package/lib/patterns.d.ts +36 -0
  33. package/lib/patterns.d.ts.map +1 -0
  34. package/lib/patterns.js +50 -0
  35. package/lib/property.d.ts +149 -0
  36. package/lib/property.d.ts.map +1 -0
  37. package/lib/property.js +450 -0
  38. package/package.json +50 -38
  39. package/src/component.ts +132 -23
  40. package/src/components/Calendar.ts +58 -20
  41. package/src/components/CalendarEvent.ts +170 -66
  42. package/src/components/TimeZone.ts +86 -96
  43. package/src/components/TimeZoneOffset.ts +187 -0
  44. package/src/components/index.ts +2 -1
  45. package/src/date.ts +395 -0
  46. package/src/index.ts +3 -1
  47. package/src/io.ts +16 -11
  48. package/src/parse.ts +71 -51
  49. package/src/patterns.ts +69 -0
  50. package/src/property.ts +492 -0
@@ -1,47 +1,109 @@
1
- import { Component } from "../component";
1
+ import { Component } from '../component';
2
+ import { CalendarDateTime, CalendarDateOrTime } from '../date';
2
3
  /**
3
4
  * Represents a VEVENT component, representing an event in a calendar.
4
5
  */
5
6
  export declare class CalendarEvent extends Component {
6
7
  name: string;
7
- constructor(uid: string, dtstamp: Date);
8
+ constructor(uid: string, dtstamp: CalendarDateTime | Date, dtstart: CalendarDateOrTime | Date);
8
9
  constructor(component: Component);
9
- stamp(): Date;
10
- setStamp(value: Date, fullDay?: boolean): this;
11
- uid(): string;
10
+ serialize(): string;
11
+ validate(): void;
12
+ getStamp(): CalendarDateTime;
13
+ setStamp(value: CalendarDateTime | Date): this;
14
+ getUid(): string;
12
15
  setUid(value: string): this;
13
- summary(): string;
16
+ getSummary(): string | undefined;
14
17
  setSummary(value: string): this;
15
18
  removeSummary(): void;
16
- description(): string;
19
+ getDescription(): string | undefined;
17
20
  setDescription(value: string): this;
18
21
  removeDescription(): void;
19
- location(): string | undefined;
22
+ getLocation(): string | undefined;
20
23
  setLocation(value: string): this;
21
24
  removeLocation(): void;
22
25
  /**
23
- * Get the start of the event.
24
- * If set as a full day the time will be at the start of the day.
26
+ * Get the start date or time of the event.
27
+ * @returns The start date or time of the event as a {@link CalendarDateOrTime}.
25
28
  */
26
- start(): Date;
27
- /** Set the start of the event. */
28
- setStart(value: Date, fullDay?: boolean): this;
29
- removeStart(): void;
29
+ getStart(): CalendarDateOrTime;
30
+ /**
31
+ * Set the start date or time of the event.
32
+ * @param value The start date of the event as a {@link CalendarDateOrTime} or `Date`.
33
+ * @returns The CalendarEvent instance for chaining.
34
+ */
35
+ setStart(value: CalendarDateOrTime | Date): this;
30
36
  /**
31
37
  * Get the non-inclusive end of the event.
32
- * If set as a full day the time will be at the start of the day.
38
+ * @returns The end date of the event as a {@link CalendarDateOrTime} or `undefined` if not set.
33
39
  */
34
- end(): Date;
40
+ getEnd(): CalendarDateOrTime | undefined;
35
41
  /**
36
- * Set the non-inclusive end of the event.
42
+ * Set the exclusive end of the event.
43
+ *
44
+ * Will remove 'duration' if present.
45
+ * @param value The end date of the event as a {@link CalendarDateOrTime} or `Date`.
46
+ * @returns The CalendarEvent instance for chaining.
47
+ * @throws If the end date is a full day date and the start date is a date-time, or vice versa.
48
+ */
49
+ setEnd(value: CalendarDateOrTime | Date): this;
50
+ /**
51
+ * Remove the end of the event.
52
+ *
53
+ * NOTE: An event must have either an end or a duration set.
37
54
  */
38
- setEnd(value: Date, fullDay?: boolean): this;
39
55
  removeEnd(): void;
40
- created(): Date | undefined;
56
+ /**
57
+ * Get the duration of the event as a string formatted according to the iCalendar specification.
58
+ * @returns The duration of the event, or `undefined` if not set.
59
+ */
60
+ getDuration(): string | undefined;
61
+ /**
62
+ * Set the duration of the event.
63
+ *
64
+ * Will remove 'end' if present.
65
+ * @param value The duration of the event as a string in the format defined by RFC5545.
66
+ * @returns The CalendarEvent instance for chaining.
67
+ * @example
68
+ * // Set duration to 1 hour and 30 minutes.
69
+ * event.setDuration(`PT1H30M`)
70
+ */
71
+ setDuration(value: string): this;
72
+ /**
73
+ * Remove the duration of the event.
74
+ *
75
+ * NOTE: An event must have either an end or a duration set.
76
+ */
77
+ removeDuration(): void;
78
+ getCreated(): CalendarDateOrTime | undefined;
41
79
  setCreated(value: Date): this;
42
80
  removeCreated(): void;
43
- geo(): [number, number] | undefined;
44
- setGeo(latitude: number, longitude: number): this;
45
- removeGeo(): void;
81
+ getGeographicPosition(): [number, number] | undefined;
82
+ setGeographicPosition(latitude: number, longitude: number): this;
83
+ removeGeographicLocation(): void;
84
+ /** @deprecated use {@link getStamp} instead */
85
+ stamp: () => CalendarDateTime;
86
+ /** @deprecated use {@link getUid} instead */
87
+ uid: () => string;
88
+ /** @deprecated use {@link getSummary} instead */
89
+ summary: () => string | undefined;
90
+ /** @deprecated use {@link getDescription} instead */
91
+ description: () => string | undefined;
92
+ /** @deprecated use {@link getLocation} instead */
93
+ location: () => string | undefined;
94
+ /** @deprecated use {@link getStart} instead */
95
+ start: () => CalendarDateOrTime;
96
+ /** @deprecated use {@link getEnd} instead */
97
+ end: () => CalendarDateOrTime | undefined;
98
+ /** @deprecated use {@link getDuration} instead */
99
+ duration: () => string | undefined;
100
+ /** @deprecated use {@link getCreated} instead */
101
+ created: () => CalendarDateOrTime | undefined;
102
+ /** @deprecated use {@link getGeographicPosition} instead */
103
+ geo: () => [number, number] | undefined;
104
+ /** @deprecated use {@link setGeographicPosition} instead */
105
+ setGeo: (latitude: number, longitude: number) => this;
106
+ /** @deprecated use {@link removeGeographicLocation} instead */
107
+ removeGeo: () => void;
46
108
  }
47
109
  //# sourceMappingURL=CalendarEvent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarEvent.d.ts","sourceRoot":"","sources":["../../src/components/CalendarEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC;;GAEG;AACH,qBAAa,aAAc,SAAQ,SAAS;IACxC,IAAI,SAAY;gBAEJ,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI;gBAC1B,SAAS,EAAE,SAAS;IAehC,KAAK,IAAI,IAAI;IAIb,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,GAAE,OAAe,GAAG,IAAI;IAUrD,GAAG,IAAI,MAAM;IAIb,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,IAAI,MAAM;IAIjB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/B,aAAa;IAIb,WAAW,IAAI,MAAM;IAIrB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,iBAAiB;IAIjB,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,cAAc;IAId;;;OAGG;IACH,KAAK,IAAI,IAAI;IAIb,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,GAAE,OAAe,GAAG,IAAI;IAUrD,WAAW;IAIX;;;OAGG;IACH,GAAG,IAAI,IAAI;IAIX;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,GAAE,OAAe,GAAG,IAAI;IAUnD,SAAS;IAIT,OAAO,IAAI,IAAI,GAAG,SAAS;IAM3B,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAI7B,aAAa;IAIb,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;IASnC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKjD,SAAS;CAGZ"}
1
+ {"version":3,"file":"CalendarEvent.d.ts","sourceRoot":"","sources":["../../src/components/CalendarEvent.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,SAAS,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EACH,gBAAgB,EAEhB,kBAAkB,EAGrB,MAAM,SAAS,CAAA;AAEhB;;GAEG;AACH,qBAAa,aAAc,SAAQ,SAAS;IACxC,IAAI,SAAW;gBAGX,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,gBAAgB,GAAG,IAAI,EAChC,OAAO,EAAE,kBAAkB,GAAG,IAAI;gBAE1B,SAAS,EAAE,SAAS;IAsBhC,SAAS,IAAI,MAAM;IASnB,QAAQ;IAWR,QAAQ,IAAI,gBAAgB;IAM5B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;IAQ9C,MAAM,IAAI,MAAM;IAIhB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3B,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/B,aAAa;IAIb,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,iBAAiB;IAIjB,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,cAAc;IAId;;;OAGG;IACH,QAAQ,IAAI,kBAAkB;IAI9B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI;IAIhD;;;OAGG;IACH,MAAM,IAAI,kBAAkB,GAAG,SAAS;IAMxC;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI;IAa9C;;;;OAIG;IACH,SAAS;IAIT;;;OAGG;IACH,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC;;;;;;;;;OASG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC;;;;OAIG;IACH,cAAc;IAId,UAAU,IAAI,kBAAkB,GAAG,SAAS;IAM5C,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAI7B,aAAa;IAIb,qBAAqB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;IAUrD,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKhE,wBAAwB;IAMxB,+CAA+C;IAC/C,KAAK,QAvLO,gBAAgB,CAuLP;IACrB,6CAA6C;IAC7C,GAAG,QA3KO,MAAM,CA2KC;IACjB,iDAAiD;IACjD,OAAO,QArKO,MAAM,GAAG,SAAS,CAqKP;IACzB,qDAAqD;IACrD,WAAW,QA3JO,MAAM,GAAG,SAAS,CA2JH;IACjC,kDAAkD;IAClD,QAAQ,QAjJO,MAAM,GAAG,SAAS,CAiJN;IAC3B,+CAA+C;IAC/C,KAAK,QAnIO,kBAAkB,CAmIT;IACrB,6CAA6C;IAC7C,GAAG,QApHO,kBAAkB,GAAG,SAAS,CAoHvB;IACjB,kDAAkD;IAClD,QAAQ,QA9EO,MAAM,GAAG,SAAS,CA8EN;IAC3B,iDAAiD;IACjD,OAAO,QApDO,kBAAkB,GAAG,SAAS,CAoDnB;IACzB,4DAA4D;IAC5D,GAAG,QAxCsB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAwCrB;IAChC,4DAA4D;IAC5D,MAAM,aAhC0B,MAAM,aAAa,MAAM,KAAG,IAAI,CAgC7B;IACnC,+DAA+D;IAC/D,SAAS,aAAgC;CAC5C"}
@@ -1,48 +1,65 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CalendarEvent = void 0;
4
+ const property_1 = require("../property");
4
5
  const component_1 = require("../component");
5
- const parse_1 = require("../parse");
6
+ const date_1 = require("../date");
6
7
  /**
7
8
  * Represents a VEVENT component, representing an event in a calendar.
8
9
  */
9
10
  class CalendarEvent extends component_1.Component {
10
11
  name = 'VEVENT';
11
- constructor(a, b) {
12
- var component;
13
- if (b) {
12
+ constructor(a, b, c) {
13
+ let component;
14
+ if (a instanceof component_1.Component) {
15
+ component = a;
16
+ CalendarEvent.prototype.validate.call(component);
17
+ }
18
+ else {
14
19
  const uid = a;
15
- const dtstamp = b;
20
+ const dtstamp = (0, date_1.convertDate)(b, false);
21
+ const dtstart = (0, date_1.convertDate)(c);
16
22
  component = new component_1.Component('VEVENT');
17
23
  component.setProperty('UID', uid);
18
- component.setProperty('DTSTAMP', (0, parse_1.toDateTimeString)(dtstamp));
19
- }
20
- else {
21
- component = a;
24
+ component.setProperty('DTSTAMP', dtstamp);
25
+ component.setProperty('DTSTART', dtstart);
22
26
  }
23
27
  super(component.name, component.properties, component.components);
24
28
  }
25
- stamp() {
26
- return (0, parse_1.parseDate)(this.getProperty('DTSTAMP'));
27
- }
28
- setStamp(value, fullDay = false) {
29
- if (fullDay) {
30
- this.setProperty('DTSTAMP', (0, parse_1.toDateString)(value));
31
- this.setPropertyParams('DTSTAMP', ['VALUE=DATE']);
29
+ serialize() {
30
+ if (!this.getEnd() && !this.duration()) {
31
+ throw new Error('Failed to serialize calendar event, end or duration must be set');
32
32
  }
33
- else {
34
- this.setProperty('DTSTAMP', (0, parse_1.toDateTimeString)(value));
33
+ return super.serialize();
34
+ }
35
+ validate() {
36
+ if (this.name !== 'VEVENT')
37
+ throw new component_1.ComponentValidationError('Component name must be VEVENT');
38
+ const requiredProperties = [
39
+ 'UID',
40
+ 'DTSTAMP',
41
+ 'DTSTART',
42
+ ];
43
+ this.validateAllProperties(requiredProperties);
44
+ }
45
+ getStamp() {
46
+ return (0, date_1.parseDateProperty)(this.getProperty('DTSTAMP'));
47
+ }
48
+ setStamp(value) {
49
+ const converted = (0, date_1.convertDate)(value, false);
50
+ if (converted.isFullDay()) {
51
+ throw new property_1.PropertyValidationError('DTSTAMP cannot be of type DATE');
35
52
  }
36
- return this;
53
+ return this.setProperty('DTSTAMP', converted);
37
54
  }
38
- uid() {
55
+ getUid() {
39
56
  return this.getProperty('UID').value;
40
57
  }
41
58
  setUid(value) {
42
59
  return this.setProperty('UID', value);
43
60
  }
44
- summary() {
45
- return this.getProperty('SUMMARY').value;
61
+ getSummary() {
62
+ return this.getProperty('SUMMARY')?.value;
46
63
  }
47
64
  setSummary(value) {
48
65
  return this.setProperty('SUMMARY', value);
@@ -50,8 +67,8 @@ class CalendarEvent extends component_1.Component {
50
67
  removeSummary() {
51
68
  this.removePropertiesWithName('SUMMARY');
52
69
  }
53
- description() {
54
- return this.getProperty('DESCRIPTION').value;
70
+ getDescription() {
71
+ return this.getProperty('DESCRIPTION')?.value;
55
72
  }
56
73
  setDescription(value) {
57
74
  return this.setProperty('DESCRIPTION', value);
@@ -59,7 +76,7 @@ class CalendarEvent extends component_1.Component {
59
76
  removeDescription() {
60
77
  this.removePropertiesWithName('DESCRIPTION');
61
78
  }
62
- location() {
79
+ getLocation() {
63
80
  return this.getProperty('LOCATION')?.value;
64
81
  }
65
82
  setLocation(value) {
@@ -69,80 +86,138 @@ class CalendarEvent extends component_1.Component {
69
86
  this.removePropertiesWithName('LOCATION');
70
87
  }
71
88
  /**
72
- * Get the start of the event.
73
- * If set as a full day the time will be at the start of the day.
89
+ * Get the start date or time of the event.
90
+ * @returns The start date or time of the event as a {@link CalendarDateOrTime}.
74
91
  */
75
- start() {
76
- return (0, parse_1.parseDate)(this.getProperty('DTSTART'));
77
- }
78
- /** Set the start of the event. */
79
- setStart(value, fullDay = false) {
80
- if (fullDay) {
81
- this.setProperty('DTSTART', (0, parse_1.toDateString)(value));
82
- this.setPropertyParams('DTSTART', ['VALUE=DATE']);
83
- }
84
- else {
85
- this.setProperty('DTSTART', (0, parse_1.toDateTimeString)(value));
86
- }
87
- return this;
92
+ getStart() {
93
+ return (0, date_1.parseDateProperty)(this.getProperty('DTSTART'));
88
94
  }
89
- removeStart() {
90
- this.removePropertiesWithName('DTSTART');
95
+ /**
96
+ * Set the start date or time of the event.
97
+ * @param value The start date of the event as a {@link CalendarDateOrTime} or `Date`.
98
+ * @returns The CalendarEvent instance for chaining.
99
+ */
100
+ setStart(value) {
101
+ return this.setProperty('DTSTART', (0, date_1.convertDate)(value));
91
102
  }
92
103
  /**
93
104
  * Get the non-inclusive end of the event.
94
- * If set as a full day the time will be at the start of the day.
105
+ * @returns The end date of the event as a {@link CalendarDateOrTime} or `undefined` if not set.
95
106
  */
96
- end() {
97
- return (0, parse_1.parseDate)(this.getProperty('DTEND'));
107
+ getEnd() {
108
+ const property = this.getProperty('DTEND');
109
+ if (!property)
110
+ return;
111
+ return (0, date_1.parseDateProperty)(property);
98
112
  }
99
113
  /**
100
- * Set the non-inclusive end of the event.
114
+ * Set the exclusive end of the event.
115
+ *
116
+ * Will remove 'duration' if present.
117
+ * @param value The end date of the event as a {@link CalendarDateOrTime} or `Date`.
118
+ * @returns The CalendarEvent instance for chaining.
119
+ * @throws If the end date is a full day date and the start date is a date-time, or vice versa.
101
120
  */
102
- setEnd(value, fullDay = false) {
103
- if (fullDay) {
104
- this.setProperty('DTEND', (0, parse_1.toDateString)(value));
105
- this.setPropertyParams('DTEND', ['VALUE=DATE']);
106
- }
107
- else {
108
- this.setProperty('DTEND', (0, parse_1.toDateTimeString)(value));
121
+ setEnd(value) {
122
+ const date = (0, date_1.convertDate)(value);
123
+ const start = this.getStart();
124
+ if (date.isFullDay() !== start.isFullDay()) {
125
+ throw new Error(`End must be same date type as start. Start is ${start.isFullDay() ? 'date' : 'datetime'} but new end value is ${date.isFullDay() ? 'date' : 'datetime'}`);
109
126
  }
110
- return this;
127
+ this.removeDuration();
128
+ return this.setProperty('DTEND', date);
111
129
  }
130
+ /**
131
+ * Remove the end of the event.
132
+ *
133
+ * NOTE: An event must have either an end or a duration set.
134
+ */
112
135
  removeEnd() {
113
136
  this.removePropertiesWithName('DTEND');
114
137
  }
115
- created() {
138
+ /**
139
+ * Get the duration of the event as a string formatted according to the iCalendar specification.
140
+ * @returns The duration of the event, or `undefined` if not set.
141
+ */
142
+ getDuration() {
143
+ return this.getProperty('DURATION')?.value;
144
+ }
145
+ /**
146
+ * Set the duration of the event.
147
+ *
148
+ * Will remove 'end' if present.
149
+ * @param value The duration of the event as a string in the format defined by RFC5545.
150
+ * @returns The CalendarEvent instance for chaining.
151
+ * @example
152
+ * // Set duration to 1 hour and 30 minutes.
153
+ * event.setDuration(`PT1H30M`)
154
+ */
155
+ setDuration(value) {
156
+ this.removeEnd();
157
+ return this.setProperty('DURATION', value);
158
+ }
159
+ /**
160
+ * Remove the duration of the event.
161
+ *
162
+ * NOTE: An event must have either an end or a duration set.
163
+ */
164
+ removeDuration() {
165
+ this.removePropertiesWithName('DURATION');
166
+ }
167
+ getCreated() {
116
168
  const property = this.getProperty('CREATED');
117
169
  if (!property)
118
170
  return;
119
- return (0, parse_1.parseDate)(property);
171
+ return (0, date_1.parseDateProperty)(property);
120
172
  }
121
173
  setCreated(value) {
122
- return this.setProperty('CREATED', (0, parse_1.toDateTimeString)(value));
174
+ return this.setProperty('CREATED', (0, date_1.toDateTimeString)(value));
123
175
  }
124
176
  removeCreated() {
125
177
  this.removePropertiesWithName('CREATED');
126
178
  }
127
- geo() {
179
+ getGeographicPosition() {
128
180
  const text = this.getProperty('GEO')?.value;
129
181
  if (!text)
130
182
  return;
131
- const pattern = /^[+-]?\d+(\.\d+)?,[+-]?\d+(\.\d+)?$/;
132
- if (!pattern.test(text))
183
+ const validGeoPattern = /^[+-]?\d+(\.\d+)?;[+-]?\d+(\.\d+)?$/;
184
+ if (!validGeoPattern.test(text))
133
185
  throw new Error(`Failed to parse GEO property: ${text}`);
134
186
  const [longitude, latitude] = text.split(',');
135
187
  return [parseFloat(longitude), parseFloat(latitude)];
136
188
  }
137
- setGeo(latitude, longitude) {
138
- const text = `${latitude},${longitude}`;
139
- return this;
189
+ setGeographicPosition(latitude, longitude) {
190
+ const text = `${latitude};${longitude}`;
191
+ return this.setProperty('GEO', text);
140
192
  }
141
- removeGeo() {
193
+ removeGeographicLocation() {
142
194
  this.removePropertiesWithName('GEO');
143
195
  }
196
+ /* eslint-disable */
197
+ /** @deprecated use {@link getStamp} instead */
198
+ stamp = this.getStamp;
199
+ /** @deprecated use {@link getUid} instead */
200
+ uid = this.getUid;
201
+ /** @deprecated use {@link getSummary} instead */
202
+ summary = this.getSummary;
203
+ /** @deprecated use {@link getDescription} instead */
204
+ description = this.getDescription;
205
+ /** @deprecated use {@link getLocation} instead */
206
+ location = this.getLocation;
207
+ /** @deprecated use {@link getStart} instead */
208
+ start = this.getStart;
209
+ /** @deprecated use {@link getEnd} instead */
210
+ end = this.getEnd;
211
+ /** @deprecated use {@link getDuration} instead */
212
+ duration = this.getDuration;
213
+ /** @deprecated use {@link getCreated} instead */
214
+ created = this.getCreated;
215
+ /** @deprecated use {@link getGeographicPosition} instead */
216
+ geo = this.getGeographicPosition;
217
+ /** @deprecated use {@link setGeographicPosition} instead */
218
+ setGeo = this.setGeographicPosition;
219
+ /** @deprecated use {@link removeGeographicLocation} instead */
220
+ removeGeo = this.removeGeographicLocation;
144
221
  }
145
222
  exports.CalendarEvent = CalendarEvent;
146
- const event = new CalendarEvent('abc', new Date());
147
- event.getPropertyParams('DTEND')?.includes('VALUE=DATE');
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsZW5kYXJFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0NhbGVuZGFyRXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQXdDO0FBQ3hDLG9DQUFvRTtBQUVwRTs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLHFCQUFTO0lBQ3hDLElBQUksR0FBRyxRQUFRLENBQUM7SUFJaEIsWUFBWSxDQUFxQixFQUFFLENBQVE7UUFDdkMsSUFBSSxTQUFvQixDQUFBO1FBQ3hCLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDSixNQUFNLEdBQUcsR0FBRyxDQUFXLENBQUE7WUFDdkIsTUFBTSxPQUFPLEdBQUcsQ0FBUyxDQUFBO1lBQ3pCLFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDbkMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDakMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBQSx3QkFBZ0IsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQy9ELENBQUM7YUFBTSxDQUFDO1lBQ0osU0FBUyxHQUFHLENBQWMsQ0FBQTtRQUM5QixDQUFDO1FBQ0QsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDckUsQ0FBQztJQUVELEtBQUs7UUFDRCxPQUFPLElBQUEsaUJBQVMsRUFBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBRSxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFXLEVBQUUsVUFBbUIsS0FBSztRQUMxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFD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
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsZW5kYXJFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0NhbGVuZGFyRXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMENBQXdFO0FBQ3hFLDRDQUFrRTtBQUNsRSxrQ0FNZ0I7QUFFaEI7O0dBRUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxxQkFBUztJQUN4QyxJQUFJLEdBQUcsUUFBUSxDQUFBO0lBUWYsWUFDSSxDQUFxQixFQUNyQixDQUEyQixFQUMzQixDQUE2QjtRQUU3QixJQUFJLFNBQW9CLENBQUE7UUFDeEIsSUFBSSxDQUFDLFlBQVkscUJBQVMsRUFBRSxDQUFDO1lBQ3pCLFNBQVMsR0FBRyxDQUFjLENBQUE7WUFDMUIsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3BELENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxHQUFHLEdBQUcsQ0FBVyxDQUFBO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHLElBQUEsa0JBQVcsRUFBQyxDQUFFLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBQSxrQkFBVyxFQUFDLENBQUUsQ0FBQyxDQUFBO1lBQy9CLFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDbkMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDakMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDekMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDN0MsQ0FBQztRQUNELEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3JFLENBQUM7SUFFRCxTQUFTO1FB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
@@ -1,51 +1,74 @@
1
1
  import { Component } from '../component';
2
+ import { CalendarDateOrTime } from '../date';
3
+ import { TimeZoneOffset } from './TimeZoneOffset';
2
4
  /**
3
5
  * Represents a VTIMEZONE component, containing time zone definitions.
4
6
  */
5
7
  export declare class TimeZone extends Component {
8
+ name: string;
6
9
  constructor(id: string);
7
10
  constructor(component: Component);
8
- id(): string;
11
+ validate(): void;
12
+ getId(): string;
9
13
  setId(value: string): this;
10
- lastMod(): Date | undefined;
11
- setLastMod(value: Date): this;
12
- removeLastMod(): void;
13
- url(): string | undefined;
14
+ getLastModified(): CalendarDateOrTime | undefined;
15
+ setLastModified(value: Date): this;
16
+ removeLastModified(): void;
17
+ getUrl(): string | undefined;
14
18
  setUrl(value: string): this;
15
19
  removeUrl(): void;
16
- /** Get all time offsets. */
17
- offsets(): TimeZoneOffset[];
18
- /** Get standard/winter time offsets. */
19
- standardOffsets(): TimeZoneOffset[];
20
- /** Get daylight savings time offsets. */
21
- daylightOffsets(): TimeZoneOffset[];
22
- }
23
- export type OffsetType = 'DAYLIGHT' | 'STANDARD';
24
- type Digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
25
- export type Offset = `${'-' | '+'}${Digit}${Digit}${Digit}${Digit}`;
26
- /** Represents a STANDARD or DAYLIGHT component, defining a time zone offset. */
27
- declare class TimeZoneOffset extends Component {
28
- /**
29
- *
30
- * @param type If this is a STANDARD or DAYLIGHT component.
31
- * @param start From when this offset is active.
32
- * @param offsetFrom The offset that is in use prior to this time zone observance.
33
- * @param offsetTo The offset that is in use during this time zone observance.
34
- */
35
- constructor(type: OffsetType, start: Date, offsetFrom: Offset, offsetTo: Offset);
36
- constructor(component: Component);
37
- start(): Date;
38
- setStart(value: Date, fullDay?: boolean): this;
39
- offsetFrom(): Offset;
40
- setOffsetFrom(value: Offset): this;
41
- offsetTo(): Offset;
42
- setOffsetTo(value: Offset): this;
43
- comment(): string | undefined;
44
- setComment(value: string): this;
45
- removeComment(): void;
46
- timeZoneName(): string | undefined;
47
- setTimeZoneName(value: string): this;
48
- removeTimeZoneName(): void;
20
+ /**
21
+ * Get all time offsets.
22
+ * @returns An array of time zone offsets defined in this time zone.
23
+ */
24
+ getOffsets(): TimeZoneOffset[];
25
+ /**
26
+ * Get standard/winter time offsets.
27
+ * @returns An array of time zone offsets defined in this time zone that are of type STANDARD.
28
+ */
29
+ getStandardOffsets(): TimeZoneOffset[];
30
+ /**
31
+ * Get daylight savings time offsets.
32
+ * @returns An array of time zone offsets defined in this time zone that are of type DAYLIGHT.
33
+ */
34
+ getDaylightOffsets(): TimeZoneOffset[];
35
+ /**
36
+ * @deprecated Use {@link getId} instead.
37
+ */
38
+ id: () => string;
39
+ /**
40
+ * @deprecated Use {@link getLastModified} instead.
41
+ */
42
+ lastMod: () => CalendarDateOrTime | undefined;
43
+ /**
44
+ * @deprecated Use {@link setLastModified} instead.
45
+ */
46
+ setLastMod: (value: Date) => this;
47
+ /**
48
+ * @deprecated Use {@link removeLastModified} instead.
49
+ */
50
+ removeLastMod: () => void;
51
+ /**
52
+ * @deprecated Use {@link getUrl} instead.
53
+ */
54
+ url: () => string | undefined;
55
+ /**
56
+ * Get all time offsets.
57
+ * @returns An array of time zone offsets defined in this time zone.
58
+ * @deprecated Use {@link getOffsets} instead.
59
+ */
60
+ offsets: () => TimeZoneOffset[];
61
+ /**
62
+ * Get standard/winter time offsets.
63
+ * @returns An array of time zone offsets defined in this time zone that are of type STANDARD.
64
+ * @deprecated Use {@link getStandardOffsets} instead.
65
+ */
66
+ standardOffsets: () => TimeZoneOffset[];
67
+ /**
68
+ * Get daylight savings time offsets.
69
+ * @returns An array of time zone offsets defined in this time zone that are of type DAYLIGHT.
70
+ * @deprecated Use {@link getDaylightOffsets} instead.
71
+ */
72
+ daylightOffsets: () => TimeZoneOffset[];
49
73
  }
50
- export {};
51
74
  //# sourceMappingURL=TimeZone.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimeZone.d.ts","sourceRoot":"","sources":["../../src/components/TimeZone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC;;GAEG;AACH,qBAAa,QAAS,SAAQ,SAAS;gBACvB,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,SAAS;IAahC,EAAE,IAAI,MAAM;IAIZ,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI1B,OAAO,IAAI,IAAI,GAAG,SAAS;IAM3B,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAI7B,aAAa;IAIb,GAAG,IAAI,MAAM,GAAG,SAAS;IAIzB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3B,SAAS;IAIT,4BAA4B;IAC5B,OAAO,IAAI,cAAc,EAAE;IAU3B,wCAAwC;IACxC,eAAe,IAAI,cAAc,EAAE;IAInC,yCAAyC;IACzC,eAAe,IAAI,cAAc,EAAE;CAGtC;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;AAChD,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AACtE,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,CAAA;AACnE,gFAAgF;AAChF,cAAM,cAAe,SAAQ,SAAS;IAClC;;;;;;OAMG;gBACS,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;gBACnE,SAAS,EAAE,SAAS;IAkBhC,KAAK,IAAI,IAAI;IAIb,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,GAAE,OAAe,GAAG,IAAI;IAUrD,UAAU,IAAI,MAAM;IAIpB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlC,QAAQ,IAAI,MAAM;IAIlB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,OAAO,IAAI,MAAM,GAAG,SAAS;IAI7B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/B,aAAa;IAIb,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIpC,kBAAkB;CAGrB"}
1
+ {"version":3,"file":"TimeZone.d.ts","sourceRoot":"","sources":["../../src/components/TimeZone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA4B,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAqB,MAAM,SAAS,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;GAEG;AACH,qBAAa,QAAS,SAAQ,SAAS;IACnC,IAAI,SAAc;gBAEN,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,SAAS;IAchC,QAAQ;IAOR,KAAK,IAAI,MAAM;IAIf,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI1B,eAAe,IAAI,kBAAkB,GAAG,SAAS;IAMjD,eAAe,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAIlC,kBAAkB;IAIlB,MAAM,IAAI,MAAM,GAAG,SAAS;IAI5B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3B,SAAS;IAIT;;;OAGG;IACH,UAAU,IAAI,cAAc,EAAE;IAa9B;;;OAGG;IACH,kBAAkB,IAAI,cAAc,EAAE;IAMtC;;;OAGG;IACH,kBAAkB,IAAI,cAAc,EAAE;IAQtC;;OAEG;IACH,EAAE,QA5EO,MAAM,CA4EA;IAEf;;OAEG;IACH,OAAO,QAzEY,kBAAkB,GAAG,SAAS,CAyEnB;IAE9B;;OAEG;IACH,UAAU,UAxEa,IAAI,KAAG,IAAI,CAwED;IAEjC;;OAEG;IACH,aAAa,aAA0B;IAEvC;;OAEG;IACH,GAAG,QA1EO,MAAM,GAAG,SAAS,CA0EX;IAEjB;;;;OAIG;IACH,OAAO,QAjEO,cAAc,EAAE,CAiEL;IAEzB;;;;OAIG;IACH,eAAe,QAvDO,cAAc,EAAE,CAuDG;IAEzC;;;;OAIG;IACH,eAAe,QApDO,cAAc,EAAE,CAoDG;CAC5C"}