iamcal 3.1.0 → 4.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.
@@ -1,6 +1,7 @@
1
- import { CalendarDateOrTime } from 'src/date';
1
+ import { CalendarDateOrTime } from '../date';
2
+ import { CalendarDuration } from '../duration';
2
3
  import { AlarmTriggerRelationship, CalendarUserType, Encoding, FreeBusyTimeType, ParticipationRole, ParticipationStatus, RecurrenceIdentifierRange, RelationshipType, RsvpExpectation } from './parameter';
3
- import { AllowedValueType } from './valueType';
4
+ import { AllowedValueType, KnownValueType } from './valueType';
4
5
  /**
5
6
  * Represents a property of a calendar component as described by RFC 5545 in
6
7
  * Section 3.5.
@@ -16,6 +17,17 @@ export declare class Property {
16
17
  [k: string]: string | string[];
17
18
  });
18
19
  static fromDate(name: string, value: CalendarDateOrTime): Property;
20
+ static fromDuration(name: string, value: CalendarDuration): Property;
21
+ /**
22
+ * Get the value of this property, converted into the appropriate class if possible.
23
+ * @returns The value as a string or appropriate class.
24
+ */
25
+ getValue(): string | CalendarDateOrTime | CalendarDuration;
26
+ /**
27
+ * Set the value of this property and change the value type if a class is used.
28
+ * @param value The new value as a string or class.
29
+ */
30
+ setValue(value: string | CalendarDateOrTime | CalendarDuration): void;
19
31
  setParameter(name: string, value: string | string[]): void;
20
32
  /**
21
33
  * Get the values of a parameter on this property.
@@ -63,6 +75,16 @@ export declare class Property {
63
75
  * @returns The value type of this property.
64
76
  */
65
77
  getValueType(): AllowedValueType;
78
+ /**
79
+ * Get the value type of this property.
80
+ * @returns The value type of this property, or `undefined` if unset.
81
+ */
82
+ getExplicitValueType(): AllowedValueType | undefined;
83
+ /**
84
+ * Get the default value type for this property.
85
+ * @returns The default value type based on the name of this property.
86
+ */
87
+ getDefaultValueType(): KnownValueType;
66
88
  /**
67
89
  * Check whether this property has an explicit value type set.
68
90
  * @returns Whether this property has the VALUE parameter.
@@ -1 +1 @@
1
- {"version":3,"file":"Property.d.ts","sourceRoot":"","sources":["../../src/property/Property.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAM7C,OAAO,EACH,wBAAwB,EACxB,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EAClB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,gBAAgB,EAAuB,MAAM,aAAa,CAAA;AAEnE;;;GAGG;AACH,qBAAa,QAAQ;IACjB,OAAO,CAAC,KAAK,CAAQ;IACrB,IAAW,IAAI,IAAI,MAAM,CAExB;IACD,IAAW,IAAI,CAAC,KAAK,EAAE,MAAM,EAE5B;IAED,KAAK,EAAE,MAAM,CAAA;IAEb,OAAO,CAAC,WAAW,CAAuB;IAC1C,IAAW,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAE7C;gBAGG,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,GAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAO;IAanD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,QAAQ;IAQlE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAOnD;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAIhD;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInD;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM;IAI5B;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC;;;OAGG;IACH,SAAS,IAAI,MAAM;IAgBnB;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,gBAAgB;IAIxC;;;;OAIG;IACH,eAAe;IAIf;;;;;OAKG;IACH,YAAY,IAAI,gBAAgB;IAKhC;;;OAGG;IACH,YAAY,IAAI,OAAO;IAIvB;;;OAGG;IACH,8BAA8B,CAAC,GAAG,EAAE,MAAM;IAK1C;;;OAGG;IACH,8BAA8B,IAAI,MAAM,GAAG,SAAS;IAIpD;;OAEG;IACH,iCAAiC;IAIjC;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM;IAIhC;;;OAGG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC;;OAEG;IACH,gBAAgB;IAIhB;;;OAGG;IACH,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB;IAI9C;;;OAGG;IACH,mBAAmB,IAAI,gBAAgB,GAAG,SAAS;IAInD;;OAEG;IACH,sBAAsB;IAItB;;;OAGG;IACH,aAAa,CAAC,GAAG,UAAU,EAAE,MAAM,EAAE;IAKrC;;;OAGG;IACH,aAAa,IAAI,MAAM,EAAE,GAAG,SAAS;IAIrC;;OAEG;IACH,gBAAgB;IAIhB;;;OAGG;IACH,0BAA0B,CAAC,GAAG,EAAE,MAAM;IAKtC;;;OAGG;IACH,0BAA0B,IAAI,MAAM,GAAG,SAAS;IAIhD;;OAEG;IACH,6BAA6B;IAI7B;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAI9B;;;OAGG;IACH,WAAW,IAAI,QAAQ,GAAG,SAAS;IAInC;;OAEG;IACH,cAAc;IAId;;;;;OAKG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM;IAKjC;;;OAGG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC;;OAEG;IACH,gBAAgB;IAIhB;;;OAGG;IACH,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB;IAI9C;;;OAGG;IACH,mBAAmB,IAAI,gBAAgB,GAAG,SAAS;IAInD;;OAEG;IACH,sBAAsB;IAItB;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM;IAI5B;;;OAGG;IACH,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC;;OAEG;IACH,cAAc;IAId;;;;;;OAMG;IACH,aAAa,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE;IAKjC;;;OAGG;IACH,aAAa,IAAI,MAAM,EAAE,GAAG,SAAS;IAIrC;;OAEG;IACH,gBAAgB;IAIhB;;;OAGG;IACH,sBAAsB,CAAC,MAAM,EAAE,mBAAmB;IAIlD;;;OAGG;IACH,sBAAsB,IAAI,mBAAmB,GAAG,SAAS;IAMzD;;OAEG;IACH,yBAAyB;IAIzB;;;OAGG;IACH,4BAA4B,CAAC,KAAK,EAAE,yBAAyB;IAI7D;;;OAGG;IACH,4BAA4B,IAAI,yBAAyB,GAAG,SAAS;IAMrE;;OAEG;IACH,+BAA+B;IAI/B;;;OAGG;IACH,2BAA2B,CAAC,YAAY,EAAE,wBAAwB;IAIlE;;;OAGG;IACH,2BAA2B,IAAI,wBAAwB,GAAG,SAAS;IAMnE;;OAEG;IACH,8BAA8B;IAI9B;;;;;;OAMG;IACH,mBAAmB,CAAC,YAAY,EAAE,gBAAgB;IAIlD;;;OAGG;IACH,mBAAmB,IAAI,gBAAgB,GAAG,SAAS;IAInD;;OAEG;IACH,sBAAsB;IAItB;;;;;;OAMG;IACH,oBAAoB,CAAC,IAAI,EAAE,iBAAiB;IAI5C;;;OAGG;IACH,oBAAoB,IAAI,iBAAiB,GAAG,SAAS;IAIrD;;OAEG;IACH,uBAAuB;IAIvB;;;;;;OAMG;IACH,kBAAkB,CAAC,IAAI,EAAE,eAAe;IAIxC;;;OAGG;IACH,kBAAkB,IAAI,eAAe,GAAG,SAAS;IAIjD;;OAEG;IACH,qBAAqB;IAIrB;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM;IAKxB;;;OAGG;IACH,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B;;OAEG;IACH,YAAY;IAIZ;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM;IAK1B;;;OAGG;IACH,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC;;OAEG;IACH,cAAc;CAGjB"}
1
+ {"version":3,"file":"Property.d.ts","sourceRoot":"","sources":["../../src/property/Property.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Property = void 0;
4
+ const date_1 = require("../date");
5
+ const duration_1 = require("../duration");
4
6
  const escape_1 = require("./escape");
5
7
  const validate_1 = require("./validate");
6
8
  const valueType_1 = require("./valueType");
@@ -30,7 +32,59 @@ class Property {
30
32
  }
31
33
  }
32
34
  static fromDate(name, value) {
33
- return new Property(name, value.getValue(), value.isFullDay() ? { VALUE: 'DATE' } : undefined);
35
+ const valueType = value.isFullDay() ? 'DATE' : 'DATE-TIME';
36
+ let properties = undefined;
37
+ if ((0, valueType_1.getDefaultValueType)(name) !== valueType) {
38
+ properties = { VALUE: valueType };
39
+ }
40
+ return new Property(name, value.getValue(), properties);
41
+ }
42
+ static fromDuration(name, value) {
43
+ return new Property(name, value.getValue(), { VALUE: 'CALENDARDATE' });
44
+ }
45
+ /**
46
+ * Get the value of this property, converted into the appropriate class if possible.
47
+ * @returns The value as a string or appropriate class.
48
+ */
49
+ getValue() {
50
+ const valueType = this.getValueType();
51
+ switch (valueType) {
52
+ case 'DATE':
53
+ return new date_1.CalendarDate(this.value);
54
+ case 'DATE-TIME':
55
+ return new date_1.CalendarDateTime(this.value);
56
+ case 'DURATION':
57
+ return new duration_1.CalendarDuration(this.value);
58
+ default:
59
+ return this.value;
60
+ }
61
+ }
62
+ /**
63
+ * Set the value of this property and change the value type if a class is used.
64
+ * @param value The new value as a string or class.
65
+ */
66
+ setValue(value) {
67
+ const valueTypeBefore = this.getExplicitValueType();
68
+ if (typeof value === 'string') {
69
+ // Set string
70
+ this.value = value;
71
+ }
72
+ else if ((0, date_1.isCalendarDateOrTime)(value)) {
73
+ // Set date
74
+ this.value = value.getValue();
75
+ this.setValueType(value.isFullDay() ? 'DATE' : 'DATE-TIME');
76
+ }
77
+ else {
78
+ // Set duration
79
+ this.value = value.getValue();
80
+ this.setValueType('DURATION');
81
+ }
82
+ // Remove value type if set to default, unless it was already set
83
+ const valueType = this.getExplicitValueType();
84
+ const defaultValueType = this.getDefaultValueType();
85
+ if (valueType === defaultValueType && valueType !== valueTypeBefore) {
86
+ this.removeValueType();
87
+ }
34
88
  }
35
89
  setParameter(name, value) {
36
90
  this._parameters.set(name.toUpperCase(), typeof value === 'string' ? [value] : value);
@@ -106,8 +160,21 @@ class Property {
106
160
  * @returns The value type of this property.
107
161
  */
108
162
  getValueType() {
109
- const assignedValueType = this.getParameter('VALUE')?.[0].toUpperCase();
110
- return assignedValueType ?? (0, valueType_1.getDefaultValueType)(this.name);
163
+ return this.getExplicitValueType() ?? this.getDefaultValueType();
164
+ }
165
+ /**
166
+ * Get the value type of this property.
167
+ * @returns The value type of this property, or `undefined` if unset.
168
+ */
169
+ getExplicitValueType() {
170
+ return this.getParameter('VALUE')?.[0].toUpperCase();
171
+ }
172
+ /**
173
+ * Get the default value type for this property.
174
+ * @returns The default value type based on the name of this property.
175
+ */
176
+ getDefaultValueType() {
177
+ return (0, valueType_1.getDefaultValueType)(this.name);
111
178
  }
112
179
  /**
113
180
  * Check whether this property has an explicit value type set.
@@ -505,4 +572,4 @@ class Property {
505
572
  }
506
573
  }
507
574
  exports.Property = Property;
508
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvcGVydHkvUHJvcGVydHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscUNBSWlCO0FBWWpCLHlDQUE2RTtBQUM3RSwyQ0FBbUU7QUFFbkU7OztHQUdHO0FBQ0gsTUFBYSxRQUFRO0lBQ1QsS0FBSyxDQUFRO0lBQ3JCLElBQVcsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQTtJQUNyQixDQUFDO0lBQ0QsSUFBVyxJQUFJLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsS0FBSyxDQUFRO0lBRUwsV0FBVyxDQUF1QjtJQUMxQyxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFBO0lBQzNCLENBQUM7SUFFRCxZQUNJLElBQVksRUFDWixLQUFhLEVBQ2IsU0FBNkMsRUFBRTtRQUUvQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7UUFDNUIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FDaEIsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUNqQixPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDOUMsQ0FBQTtRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZLEVBQUUsS0FBeUI7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
575
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvcGVydHkvUHJvcGVydHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0NBQWtHO0FBQ2xHLDBDQUE4QztBQUM5QyxxQ0FJaUI7QUFZakIseUNBQTZFO0FBQzdFLDJDQUFtRjtBQUVuRjs7O0dBR0c7QUFDSCxNQUFhLFFBQVE7SUFDVCxLQUFLLENBQVE7SUFDckIsSUFBVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBO0lBQ3JCLENBQUM7SUFDRCxJQUFXLElBQUksQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFFRCxLQUFLLENBQVE7SUFFTCxXQUFXLENBQXVCO0lBQzFDLElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDM0IsQ0FBQztJQUVELFlBQ0ksSUFBWSxFQUNaLEtBQWEsRUFDYixTQUE2QyxFQUFFO1FBRS9DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUM1QixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUNoQixHQUFHLENBQUMsV0FBVyxFQUFFLEVBQ2pCLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUM5QyxDQUFBO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMs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
@@ -126,7 +126,7 @@ function validateDateTime(value) {
126
126
  (0, date_1.parseDateTimeString)(value);
127
127
  }
128
128
  catch {
129
- throw new PropertyValidationError(`${value} does not match pattern for DATETIME`);
129
+ throw new PropertyValidationError(`${value} does not match pattern for DATE-TIME`);
130
130
  }
131
131
  }
132
132
  /**
@@ -314,4 +314,4 @@ function validateProperty(property) {
314
314
  validateValue(property.value, valueType);
315
315
  }
316
316
  /* eslint-enable jsdoc/require-description-complete-sentence */
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvcGVydHkvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLHdDQUtDO0FBT0QsMENBS0M7QUFPRCxrRUFRQztBQU9ELG9DQVFDO0FBT0QsNENBUUM7QUFPRCw0Q0FLQztBQU9ELHNDQUtDO0FBT0QsMENBS0M7QUFPRCx3Q0FLQztBQVFELHdEQUVDO0FBT0Qsb0NBS0M7QUFPRCxvQ0FLQztBQU9ELGtDQVFDO0FBT0QsOENBS0M7QUFRRCxzQ0FnREM7QUFPRCxrREFLQztBQW9CRCw0Q0FzQkM7QUFyVEQsa0NBQThEO0FBQzlELHNEQUF1QztBQUN2QywwQ0FBZ0Q7QUFFaEQsbUNBQXFFO0FBQ3JFLDJDQUF3RTtBQUV4RSw2RUFBNkU7QUFDN0UsTUFBYSx1QkFBd0IsU0FBUSxLQUFLO0lBQzlDLFlBQVksT0FBZTtRQUN2QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLHlCQUF5QixDQUFBO0lBQ3pDLENBQUM7Q0FDSjtBQUxELDBEQUtDO0FBRUQsMEVBQTBFO0FBQzFFLE1BQWEsb0JBQXFCLFNBQVEsS0FBSztJQUMzQyxZQUFZLE9BQWU7UUFDdkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQTtJQUN0QyxDQUFDO0NBQ0o7QUFMRCxvREFLQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixjQUFjLENBQUMsS0FBYTtJQUN4QyxJQUFJLENBQUMsSUFBQSw2QkFBa0IsRUFBQyxRQUFRLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQztRQUNwRCxNQUFNLElBQUksdUJBQXVCLENBQzdCLEdBQUcsS0FBSyxvQ0FBb0MsQ0FDL0MsQ0FBQTtBQUNULENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLEtBQWE7SUFDekMsSUFBSSxDQUFDLElBQUEsNkJBQWtCLEVBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQztRQUNyRCxNQUFNLElBQUksdUJBQXVCLENBQzdCLEdBQUcsS0FBSyxxQ0FBcUMsQ0FDaEQsQ0FBQTtBQUNULENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsS0FBYTtJQUNyRCxJQUFJLENBQUM7UUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNsQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ0wsTUFBTSxJQUFJLHVCQUF1QixDQUM3QixHQUFHLEtBQUsseUNBQXlDLENBQ3BELENBQUE7SUFDTCxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixZQUFZLENBQUMsS0FBYTtJQUN0QyxJQUFJLENBQUM7UUFDRCxJQUFBLHNCQUFlLEVBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNMLE1BQU0sSUFBSSx1QkFBdUIsQ0FDN0IsR0FBRyxLQUFLLGtDQUFrQyxDQUM3QyxDQUFBO0lBQ0wsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBYTtJQUMxQyxJQUFJLENBQUM7UUFDRCxJQUFBLDBCQUFtQixFQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxNQUFNLElBQUksdUJBQXVCLENBQzdCLEdBQUcsS0FBSyxzQ0FBc0MsQ0FDakQsQ0FBQTtJQUNMLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEtBQWE7SUFDMUMsSUFBSSxDQUFDLElBQUEsNkJBQWtCLEVBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQztRQUN0RCxNQUFNLElBQUksdUJBQXVCLENBQzdCLEdBQUcsS0FBSyxzQ0FBc0MsQ0FDakQsQ0FBQTtBQUNULENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLEtBQWE7SUFDdkMsSUFBSSxDQUFDLElBQUEsNkJBQWtCLEVBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUM7UUFDbkQsTUFBTSxJQUFJLHVCQUF1QixDQUM3QixHQUFHLEtBQUssbUNBQW1DLENBQzlDLENBQUE7QUFDVCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxLQUFhO0lBQ3pDLElBQUksQ0FBQyxJQUFBLDZCQUFrQixFQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUM7UUFDckQsTUFBTSxJQUFJLHVCQUF1QixDQUM3QixHQUFHLEtBQUsscUNBQXFDLENBQ2hELENBQUE7QUFDVCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxLQUFhO0lBQ3hDLElBQUksQ0FBQyxJQUFBLDZCQUFrQixFQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDO1FBQ3BELE1BQU0sSUFBSSx1QkFBdUIsQ0FDN0IsR0FBRyxLQUFLLG9DQUFvQyxDQUMvQyxDQUFBO0FBQ1QsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCw2REFBNkQ7QUFDN0QsU0FBZ0Isc0JBQXNCLENBQUMsS0FBYTtJQUNoRCx3QkFBd0I7QUFDNUIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixZQUFZLENBQUMsS0FBYTtJQUN0QyxJQUFJLENBQUMsSUFBQSw2QkFBa0IsRUFBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztRQUNsRCxNQUFNLElBQUksdUJBQXVCLENBQzdCLEdBQUcsS0FBSyxrQ0FBa0MsQ0FDN0MsQ0FBQTtBQUNULENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLEtBQWE7SUFDdEMsSUFBSSxDQUFDLElBQUEsNkJBQWtCLEVBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7UUFDbEQsTUFBTSxJQUFJLHVCQUF1QixDQUM3QixHQUFHLEtBQUssa0NBQWtDLENBQzdDLENBQUE7QUFDVCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxLQUFhO0lBQ3JDLElBQUksQ0FBQztRQUNELElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2xCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxNQUFNLElBQUksdUJBQXVCLENBQzdCLEdBQUcsS0FBSyxpQ0FBaUMsQ0FDNUMsQ0FBQTtJQUNMLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLEtBQWE7SUFDM0MsSUFBSSxDQUFDLElBQUEsNkJBQWtCLEVBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQztRQUN2RCxNQUFNLElBQUksdUJBQXVCLENBQzdCLEdBQUcsS0FBSyx3Q0FBd0MsQ0FDbkQsQ0FBQTtBQUNULENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxLQUFhLEVBQUUsSUFBc0I7SUFDL0QsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNYLEtBQUssUUFBUTtZQUNULGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNyQixNQUFLO1FBQ1QsS0FBSyxTQUFTO1lBQ1YsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3RCLE1BQUs7UUFDVCxLQUFLLGFBQWE7WUFDZCwyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNsQyxNQUFLO1FBQ1QsS0FBSyxNQUFNO1lBQ1AsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ25CLE1BQUs7UUFDVCxLQUFLLFdBQVc7WUFDWixnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN2QixNQUFLO1FBQ1QsS0FBSyxVQUFVO1lBQ1gsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDdkIsTUFBSztRQUNULEtBQUssT0FBTztZQUNSLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNwQixNQUFLO1FBQ1QsS0FBSyxTQUFTO1lBQ1YsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3RCLE1BQUs7UUFDVCxLQUFLLFFBQVE7WUFDVCxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDckIsTUFBSztRQUNULEtBQUssT0FBTztZQUNSLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzdCLE1BQUs7UUFDVCxLQUFLLE1BQU07WUFDUCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDbkIsTUFBSztRQUNULEtBQUssTUFBTTtZQUNQLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNuQixNQUFLO1FBQ1QsS0FBSyxLQUFLO1lBQ04sV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2xCLE1BQUs7UUFDVCxLQUFLLFlBQVk7WUFDYixpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN4QixNQUFLO1FBQ1Q7WUFDSSxPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQzNELE1BQUs7SUFDYixDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxLQUFhO0lBQzdDLElBQUksQ0FBQyxJQUFBLDZCQUFrQixFQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO1FBQ2hELE1BQU0sSUFBSSx1QkFBdUIsQ0FDN0IsR0FBRyxLQUFLLDBDQUEwQyxDQUNyRCxDQUFBO0FBQ1QsQ0FBQztBQUVEOztJQUVJO0FBRUo7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLFFBQWtCO0lBQy9DLGtDQUFrQztJQUNsQyxJQUFJLGNBQWMsR0FBbUMsU0FBUyxDQUFBO0lBQzlELElBQUksSUFBQSwyQkFBbUIsRUFBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBc0IsUUFBUSxDQUFDLElBQUksQ0FBQTtRQUM3QyxjQUFjLEdBQUcsK0JBQW1CLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUE7SUFFekMscURBQXFEO0lBQ3JELElBQUksY0FBYyxLQUFLLFNBQVMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN0RSxNQUFNLElBQUksdUJBQXVCLENBQzdCLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN2QixDQUFDLENBQUMsWUFBWSxRQUFRLENBQUMsSUFBSSwrQkFBK0IsU0FBUyxhQUFhLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuRyxDQUFDLENBQUMsWUFBWSxRQUFRLENBQUMsSUFBSSwrQkFBK0IsU0FBUyxvQkFBb0IsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN6SCxDQUFBO0lBQ0wsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUM1QyxDQUFDO0FBQ0QsK0RBQStEIn0=
317
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvcGVydHkvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLHdDQUtDO0FBT0QsMENBS0M7QUFPRCxrRUFRQztBQU9ELG9DQVFDO0FBT0QsNENBUUM7QUFPRCw0Q0FLQztBQU9ELHNDQUtDO0FBT0QsMENBS0M7QUFPRCx3Q0FLQztBQVFELHdEQUVDO0FBT0Qsb0NBS0M7QUFPRCxvQ0FLQztBQU9ELGtDQVFDO0FBT0QsOENBS0M7QUFRRCxzQ0FnREM7QUFPRCxrREFLQztBQW9CRCw0Q0FzQkM7QUFyVEQsa0NBQThEO0FBQzlELHNEQUF1QztBQUN2QywwQ0FBZ0Q7QUFFaEQsbUNBQXFFO0FBQ3JFLDJDQUF3RTtBQUV4RSw2RUFBNkU7QUFDN0UsTUFBYSx1QkFBd0IsU0FBUSxLQUFLO0lBQzlDLFlBQVksT0FBZTtRQUN2QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLHlCQUF5QixDQUFBO0lBQ3pDLENBQUM7Q0FDSjtBQUxELDBEQUtDO0FBRUQsMEVBQTBFO0FBQzFFLE1BQWEsb0JBQXFCLFNBQVEsS0FBSztJQUMzQyxZQUFZLE9BQWU7UUFDdkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQTtJQUN0QyxDQUFDO0NBQ0o7QUFMRCxvREFLQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixjQUFjLENBQUMsS0FBYTtJQUN4QyxJQUFJLENBQUMsSUFBQSw2QkFBa0IsRUFBQyxRQUFRLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQztRQUNwRCxNQUFNLElBQUksdUJBQXVCLENBQzdCLEdBQUcsS0FBSyxvQ0FBb0MsQ0FDL0MsQ0FBQTtBQUNULENBQUM7QUFFRDs7OztHQUlHO0FBQ0gs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iamcal",
3
- "version": "3.1.0",
3
+ "version": "4.1.0",
4
4
  "description": "Read and write ICalendar files",
5
5
  "files": [
6
6
  "/lib",
@@ -51,5 +51,8 @@
51
51
  "ts-jest": "^29.4.0",
52
52
  "typescript": "^5.7.2",
53
53
  "typescript-eslint": "^8.38.0"
54
+ },
55
+ "dependencies": {
56
+ "timezones-ical-library": "^2.1.2"
54
57
  }
55
58
  }
package/src/component.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { CalendarDateOrTime } from './date'
1
+ import { CalendarDateOrTime, isCalendarDateOrTime } from './date'
2
+ import { CalendarDuration } from './duration'
2
3
  import { Property } from './property/Property'
3
4
  import type { AllowedPropertyName, KnownPropertyName } from './property/names'
4
5
  import {
@@ -83,33 +84,24 @@ export class Component {
83
84
  return null
84
85
  }
85
86
 
86
- setProperty(name: string, value: string | CalendarDateOrTime): this {
87
+ setProperty(name: string, value: string | CalendarDateOrTime | CalendarDuration): this {
87
88
  for (const property of this.properties) {
88
89
  if (property.name !== name) continue
89
-
90
- if (typeof value === 'string') {
91
- property.value = value
92
- return this
93
- }
94
-
95
- const dateProperty = Property.fromDate(name, value)
96
-
97
- // Update value type
98
- if (dateProperty.getValueType() === 'DATE')
99
- property.setValueType('DATE')
100
- else property.removeValueType()
101
-
102
- // Update value
103
- property.value = dateProperty.value
104
-
90
+ property.setValue(value)
105
91
  return this
106
92
  }
107
93
  // Property is new
108
- this.properties.push(
109
- typeof value === 'string'
110
- ? new Property(name, value)
111
- : Property.fromDate(name, value)
112
- )
94
+ let property: Property
95
+
96
+ if (typeof value === 'string') {
97
+ property = new Property(name, value)
98
+ } else if (isCalendarDateOrTime(value)) {
99
+ property = Property.fromDate(name, value)
100
+ } else {
101
+ property = Property.fromDuration(name, value)
102
+ }
103
+
104
+ this.properties.push(property)
113
105
  return this
114
106
  }
115
107
 
@@ -6,9 +6,22 @@ import {
6
6
  parseDateProperty,
7
7
  toDateTimeString,
8
8
  } from '../date'
9
+ import { CalendarDuration } from '../duration'
9
10
  import { KnownPropertyName } from '../property/names'
10
11
  import { PropertyValidationError } from '../property/validate'
11
12
 
13
+ export const DEFAULT_EVENT_DURATION_DATE_TIME: CalendarDuration = new CalendarDuration('PT0S')
14
+ export const DEFAULT_EVENT_DURATION_DATE: CalendarDuration = new CalendarDuration('P1D')
15
+
16
+ /**
17
+ * Get the default event duration for an event without an end nor duration.
18
+ * @param isFullDay Whether the event is a full day event.
19
+ * @returns `DEFAULT_EVENT_DURATION_DATE` for full day events, `DEFAULT_EVENT_DURATION_DATE_TIME` for other events.
20
+ */
21
+ export function getDefaultEventDuration(isFullDay: boolean): CalendarDuration {
22
+ return isFullDay ? DEFAULT_EVENT_DURATION_DATE : DEFAULT_EVENT_DURATION_DATE_TIME
23
+ }
24
+
12
25
  /**
13
26
  * Represents a VEVENT component, representing an event in a calendar.
14
27
  */
@@ -138,10 +151,36 @@ export class CalendarEvent extends Component {
138
151
  }
139
152
 
140
153
  /**
141
- * Get the non-inclusive end of the event.
154
+ * Check if this event is a full day event.
155
+ * @returns `true` if the event is a full day event, `false` if not.
156
+ */
157
+ isFullDay(): boolean {
158
+ return this.getStart().isFullDay()
159
+ }
160
+
161
+ /**
162
+ * Get the non-inclusive end of the event, implies value from duration if unset.
142
163
  * @returns The end date of the event as a {@link CalendarDateOrTime} or `undefined` if not set.
143
164
  */
144
- getEnd(): CalendarDateOrTime | undefined {
165
+ getEnd(): CalendarDateOrTime {
166
+ const explicit = this.getExplicitEnd()
167
+ if (explicit) return explicit
168
+
169
+ // Calculate end from start and duration
170
+ const start = this.getStart()
171
+ let duration = this.getExplicitDuration()
172
+ if (!duration) {
173
+ duration = getDefaultEventDuration(this.isFullDay())
174
+ }
175
+
176
+ return start.offset(duration)
177
+ }
178
+
179
+ /**
180
+ * Get the DTEND property of the event, representing the non-inclusive end of the event.
181
+ * @returns The end date of the event as a {@link CalendarDateOrTime} or `undefined` if not set.
182
+ */
183
+ getExplicitEnd(): CalendarDateOrTime | undefined {
145
184
  const property = this.getProperty('DTEND')
146
185
  if (!property) return
147
186
  return parseDateProperty(property)
@@ -178,25 +217,49 @@ export class CalendarEvent extends Component {
178
217
  }
179
218
 
180
219
  /**
181
- * Get the duration of the event as a string formatted according to the iCalendar specification.
182
- * @returns The duration of the event, or `undefined` if not set.
220
+ * Get the duration of the event, implies value from end or default if unset.
221
+ * @returns The duration of the event as a {@link CalendarDuration}.
183
222
  */
184
- getDuration(): string | undefined {
185
- return this.getProperty('DURATION')?.value
223
+ getDuration(): CalendarDuration {
224
+ const explicit = this.getExplicitDuration()
225
+ if (explicit) return explicit
226
+
227
+ // Calculate duration from start and end
228
+ const start = this.getStart()
229
+ const end = this.getExplicitEnd()
230
+ if (!end) {
231
+ return getDefaultEventDuration(this.isFullDay())
232
+ }
233
+ return CalendarDuration.fromDifference(start, end)
234
+ }
235
+
236
+ /**
237
+ * Get the DURATION property of the event.
238
+ * @returns The duration of the event as a {@link CalendarDuration}, or `undefined` if not set.
239
+ */
240
+ getExplicitDuration(): CalendarDuration | undefined {
241
+ const property = this.getProperty('DURATION')?.value
242
+ if (property == undefined) return undefined
186
243
  }
187
244
 
188
245
  /**
189
246
  * Set the duration of the event.
190
247
  *
191
- * Will remove 'end' if present.
192
- * @param value The duration of the event as a string in the format defined by RFC5545.
248
+ * Will remove 'DTEND' if present.
249
+ *
250
+ * If DTSTART is of type DATE the duration will be floored to the nearest day.
251
+ * @param value The duration of the event as a {@link CalendarDuration} duration string.
193
252
  * @returns The CalendarEvent instance for chaining.
194
253
  * @example
195
254
  * // Set duration to 1 hour and 30 minutes.
196
255
  * event.setDuration(`PT1H30M`)
197
256
  */
198
- setDuration(value: string): this {
257
+ setDuration(value: string | CalendarDuration): this {
199
258
  this.removeEnd()
259
+ if (typeof value === 'string')
260
+ value = new CalendarDuration(value)
261
+ if (this.getStart().isFullDay())
262
+ value = value.floor('D')
200
263
  return this.setProperty('DURATION', value)
201
264
  }
202
265
 
@@ -242,3 +305,4 @@ export class CalendarEvent extends Component {
242
305
  this.removePropertiesWithName('GEO')
243
306
  }
244
307
  }
308
+
@@ -2,6 +2,8 @@ import { Component, ComponentValidationError } from '../component'
2
2
  import { CalendarDateOrTime, parseDateProperty } from '../date'
3
3
  import { KnownPropertyName } from '../property/names'
4
4
  import { TimeZoneOffset } from './TimeZoneOffset'
5
+ import { deserializeComponentString } from '../parse'
6
+ import { tzlib_get_ical_block } from 'timezones-ical-library'
5
7
 
6
8
  /**
7
9
  * Represents a VTIMEZONE component, containing time zone definitions.
@@ -31,6 +33,16 @@ export class TimeZone extends Component {
31
33
  this.validateAllProperties(requiredProperties)
32
34
  }
33
35
 
36
+ static fromName(tzName: string): TimeZone {
37
+ const serializedTimezone = tzlib_get_ical_block(tzName)
38
+ const timezone = deserializeComponentString(
39
+ typeof serializedTimezone === 'string'
40
+ ? serializedTimezone
41
+ : serializedTimezone[0]
42
+ )
43
+ return new TimeZone(timezone)
44
+ }
45
+
34
46
  getId(): string {
35
47
  return this.getProperty('TZID')!.value
36
48
  }