iamcal 1.1.1 → 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.
- package/README.md +47 -11
- package/lib/component.d.ts +62 -0
- package/lib/component.d.ts.map +1 -0
- package/lib/component.js +208 -0
- package/lib/components/Calendar.d.ts +66 -0
- package/lib/components/Calendar.d.ts.map +1 -0
- package/lib/components/Calendar.js +121 -0
- package/lib/components/CalendarEvent.d.ts +109 -0
- package/lib/components/CalendarEvent.d.ts.map +1 -0
- package/lib/components/CalendarEvent.js +223 -0
- package/lib/components/TimeZone.d.ts +74 -0
- package/lib/components/TimeZone.d.ts.map +1 -0
- package/lib/components/TimeZone.js +127 -0
- package/lib/components/TimeZoneOffset.d.ts +103 -0
- package/lib/components/TimeZoneOffset.d.ts.map +1 -0
- package/lib/components/TimeZoneOffset.js +148 -0
- package/lib/components/index.d.ts +5 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/index.js +21 -0
- package/lib/date.d.ts +165 -0
- package/lib/date.d.ts.map +1 -0
- package/lib/date.js +373 -0
- package/lib/index.d.ts +6 -153
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +21 -469
- package/lib/io.d.ts +10 -8
- package/lib/io.d.ts.map +1 -1
- package/lib/io.js +18 -13
- package/lib/parse.d.ts +33 -16
- package/lib/parse.d.ts.map +1 -1
- package/lib/parse.js +59 -56
- package/lib/patterns.d.ts +36 -0
- package/lib/patterns.d.ts.map +1 -0
- package/lib/patterns.js +50 -0
- package/lib/property.d.ts +149 -0
- package/lib/property.d.ts.map +1 -0
- package/lib/property.js +450 -0
- package/package.json +48 -43
- package/src/component.ts +248 -0
- package/src/components/Calendar.ts +162 -0
- package/src/components/CalendarEvent.ts +270 -0
- package/src/components/TimeZone.ts +152 -0
- package/src/components/TimeZoneOffset.ts +187 -0
- package/src/components/index.ts +4 -0
- package/src/date.ts +395 -0
- package/src/index.ts +6 -576
- package/src/io.ts +17 -13
- package/src/parse.ts +72 -52
- package/src/patterns.ts +69 -0
- package/src/property.ts +492 -0
- package/lib/types.d.ts +0 -6
- package/lib/types.d.ts.map +0 -1
- package/lib/types.js +0 -3
- package/src/types.ts +0 -5
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# iamcal [](https://github.com/olillin/iamcal/actions/workflows/npm-test.yml) [](https://github.com/olillin/iamcal/actions/workflows/npm-test.yml) [](https://www.npmjs.com/package/iamcal)
|
|
2
2
|
|
|
3
|
-
A library for reading, modifying and writing [
|
|
3
|
+
A library for reading, modifying and writing [iCalendar](https://en.wikipedia.org/wiki/ICalendar) files.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -14,12 +14,10 @@ npm install iamcal
|
|
|
14
14
|
|
|
15
15
|
### Parsing and editing a calendar
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Below is an example of editing a calendar file.
|
|
18
18
|
|
|
19
19
|
```typescript
|
|
20
|
-
import { Calendar } from 'iamcal'
|
|
21
|
-
import { dump } from 'iamcal/io'
|
|
22
|
-
import { parseCalendar } from 'iamcal/parse'
|
|
20
|
+
import { Calendar, dump, parseCalendar } from 'iamcal'
|
|
23
21
|
|
|
24
22
|
const calendar: Calendar = await parseCalendar(`
|
|
25
23
|
BEGIN:VCALENDAR
|
|
@@ -36,16 +34,16 @@ END:VEVENT
|
|
|
36
34
|
END:VCALENDAR
|
|
37
35
|
`)
|
|
38
36
|
|
|
39
|
-
calendar.
|
|
40
|
-
if (event.
|
|
41
|
-
event.setLocation(
|
|
37
|
+
calendar.getEvents().forEach(event => {
|
|
38
|
+
if (event.getSummary() === '🎉iamcal release party') {
|
|
39
|
+
event.setLocation('My house (budget cuts sorry)')
|
|
42
40
|
}
|
|
43
41
|
})
|
|
44
42
|
|
|
45
|
-
await dump(calendar,
|
|
43
|
+
await dump(calendar, './new_calendar.ics')
|
|
46
44
|
```
|
|
47
45
|
|
|
48
|
-
|
|
46
|
+
Running the code will produce the file `new_calendar.ics`:
|
|
49
47
|
|
|
50
48
|
```icalendar
|
|
51
49
|
BEGIN:VCALENDAR
|
|
@@ -63,3 +61,41 @@ END:VCALENDAR
|
|
|
63
61
|
```
|
|
64
62
|
|
|
65
63
|
### Creating a new calendar
|
|
64
|
+
|
|
65
|
+
Below is an example of creating a new calendar from scratch.
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
const calendar = new Calendar('example')
|
|
69
|
+
|
|
70
|
+
const uid = '6c9fabd0-cc8f-4900-b795-40e3d125b233'
|
|
71
|
+
const stamp = new CalendarDateTime('2025-07-06T12:00:00')
|
|
72
|
+
const start = new CalendarDateTime('2025-07-08T17:00:00')
|
|
73
|
+
const end = new CalendarDateTime('2025-07-08T20:00:00')
|
|
74
|
+
|
|
75
|
+
const event = new CalendarEvent(uid, stamp, start)
|
|
76
|
+
.setEnd(end)
|
|
77
|
+
.setSummary('Celebrating my new calendar!')
|
|
78
|
+
.setDescription('I made it with iamcal')
|
|
79
|
+
|
|
80
|
+
calendar.addComponent(event)
|
|
81
|
+
|
|
82
|
+
const calendarText = calendar.serialize()
|
|
83
|
+
console.log(calendarText)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Running the code above will produce the following output:
|
|
87
|
+
|
|
88
|
+
```icalendar
|
|
89
|
+
BEGIN:VCALENDAR
|
|
90
|
+
PRODID:example
|
|
91
|
+
VERSION:2.0
|
|
92
|
+
BEGIN:VEVENT
|
|
93
|
+
UID:6c9fabd0-cc8f-4900-b795-40e3d125b233
|
|
94
|
+
DTSTAMP:20250706T120000
|
|
95
|
+
DTSTART:20250708T170000
|
|
96
|
+
DTEND:20250708T200000
|
|
97
|
+
SUMMARY:Celebrating my new calendar!
|
|
98
|
+
DESCRIPTION:I made it with iamcal
|
|
99
|
+
END:VEVENT
|
|
100
|
+
END:VCALENDAR
|
|
101
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { CalendarDateOrTime } from './date';
|
|
2
|
+
import { AllowedPropertyName, Property } from './property';
|
|
3
|
+
/** Represents an error which occurs while validating a calendar component. */
|
|
4
|
+
export declare class ComponentValidationError extends Error {
|
|
5
|
+
constructor(message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare class Component {
|
|
8
|
+
name: string;
|
|
9
|
+
properties: Property[];
|
|
10
|
+
components: Component[];
|
|
11
|
+
constructor(name: string, properties?: Property[], components?: Component[]);
|
|
12
|
+
serialize(): string;
|
|
13
|
+
getProperty(name: string): Property | null;
|
|
14
|
+
setProperty(name: string, value: string | CalendarDateOrTime): this;
|
|
15
|
+
hasProperty(name: string, value?: string): boolean;
|
|
16
|
+
removePropertiesWithName(name: string): void;
|
|
17
|
+
getPropertyParams(name: string): string[] | null;
|
|
18
|
+
setPropertyParams(name: string, params: string[]): this;
|
|
19
|
+
addComponent(component: Component): this;
|
|
20
|
+
addComponents(components: Component[]): this;
|
|
21
|
+
/**
|
|
22
|
+
* Remove a component from this component.
|
|
23
|
+
* @param component The component to remove.
|
|
24
|
+
* @returns `true` if the component was removed. `false` if the component was not present.
|
|
25
|
+
*/
|
|
26
|
+
removeComponent(component: Component): boolean;
|
|
27
|
+
getComponentsWithName(name: string): Component[];
|
|
28
|
+
/**
|
|
29
|
+
* Validate the component according to the rules of the iCalendar
|
|
30
|
+
* specification.
|
|
31
|
+
*
|
|
32
|
+
* This method should be overridden by subclasses to
|
|
33
|
+
* implement specific validation logic. The methods
|
|
34
|
+
* {@link validateRequiredProperty} and {@link validateOptionalProperty} may
|
|
35
|
+
* help with this.
|
|
36
|
+
* @throws {ComponentValidationError} If the component is invalid.
|
|
37
|
+
*/
|
|
38
|
+
validate(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Validate that a property exists and is valid using {@link validateProperty}.
|
|
41
|
+
* @param propertyName The name of the property to validate.
|
|
42
|
+
* @throws {MissingPropertyError} If the property doesn't exist on this component.
|
|
43
|
+
* @throws {PropertyValidationError} If the property exists but is invalid.
|
|
44
|
+
*/
|
|
45
|
+
validateRequiredProperty(propertyName: AllowedPropertyName): void;
|
|
46
|
+
/**
|
|
47
|
+
* Validate that a property is valid using {@link validateProperty} if it exists.
|
|
48
|
+
* @param propertyName The name of the property to validate.
|
|
49
|
+
* @throws {PropertyValidationError} If the property exists and is invalid.
|
|
50
|
+
*/
|
|
51
|
+
validateOptionalProperty(propertyName: AllowedPropertyName): void;
|
|
52
|
+
/**
|
|
53
|
+
* Validate all properties on this component.
|
|
54
|
+
*
|
|
55
|
+
* If a property is in `requiredProperties` it is
|
|
56
|
+
* validated with {@link validateRequiredProperty}, otherwise it is
|
|
57
|
+
* validated with {@link validateOptionalProperty}.
|
|
58
|
+
* @param requiredProperties A list of property names which are required on this component.
|
|
59
|
+
*/
|
|
60
|
+
validateAllProperties(requiredProperties?: AllowedPropertyName[]): void;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAC3C,OAAO,EACH,mBAAmB,EAGnB,QAAQ,EAGX,MAAM,YAAY,CAAA;AAEnB,8EAA8E;AAC9E,qBAAa,wBAAyB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI9B;AAKD,qBAAa,SAAS;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,QAAQ,EAAE,CAAA;IACtB,UAAU,EAAE,SAAS,EAAE,CAAA;gBAGnB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,QAAQ,EAAE,EACvB,UAAU,CAAC,EAAE,SAAS,EAAE;IAe5B,SAAS,IAAI,MAAM;IA+BnB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAS1C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAyBnE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAYlD,wBAAwB,CAAC,IAAI,EAAE,MAAM;IAOrC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAShD,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IASvD,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKxC,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IAK5C;;;;OAIG;IACH,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAU9C,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE;IAYhD;;;;;;;;;OASG;IACH,QAAQ,IAAI,IAAI;IAEhB;;;;;OAKG;IACH,wBAAwB,CAAC,YAAY,EAAE,mBAAmB;IAS1D;;;;OAIG;IACH,wBAAwB,CAAC,YAAY,EAAE,mBAAmB;IAK1D;;;;;;;OAOG;IACH,qBAAqB,CAAC,kBAAkB,CAAC,EAAE,mBAAmB,EAAE;CAmBnE"}
|
package/lib/component.js
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Component = exports.ComponentValidationError = void 0;
|
|
4
|
+
const property_1 = require("./property");
|
|
5
|
+
/** Represents an error which occurs while validating a calendar component. */
|
|
6
|
+
class ComponentValidationError extends Error {
|
|
7
|
+
constructor(message) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = 'ComponentValidationError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.ComponentValidationError = ComponentValidationError;
|
|
13
|
+
// Max line length as defined by RFC 5545 3.1.
|
|
14
|
+
const MAX_LINE_LENGTH = 75;
|
|
15
|
+
class Component {
|
|
16
|
+
name;
|
|
17
|
+
properties;
|
|
18
|
+
components;
|
|
19
|
+
constructor(name, properties, components) {
|
|
20
|
+
this.name = name;
|
|
21
|
+
if (properties) {
|
|
22
|
+
this.properties = properties;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
this.properties = [];
|
|
26
|
+
}
|
|
27
|
+
if (components) {
|
|
28
|
+
this.components = components;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
this.components = [];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
serialize() {
|
|
35
|
+
// Create lines
|
|
36
|
+
const lines = [`BEGIN:${this.name}`];
|
|
37
|
+
for (const property of this.properties) {
|
|
38
|
+
let line = property['name'] + //
|
|
39
|
+
property.params.map(p => ';' + p).join('') +
|
|
40
|
+
':' +
|
|
41
|
+
property['value'];
|
|
42
|
+
// Wrap lines
|
|
43
|
+
while (line.length > MAX_LINE_LENGTH) {
|
|
44
|
+
lines.push(line.substring(0, MAX_LINE_LENGTH));
|
|
45
|
+
line = ' ' + line.substring(MAX_LINE_LENGTH);
|
|
46
|
+
}
|
|
47
|
+
lines.push(line);
|
|
48
|
+
}
|
|
49
|
+
for (const component of this.components) {
|
|
50
|
+
lines.push(component.serialize());
|
|
51
|
+
}
|
|
52
|
+
lines.push(`END:${this.name}`);
|
|
53
|
+
// Join lines
|
|
54
|
+
const serialized = lines.join('\n');
|
|
55
|
+
return serialized;
|
|
56
|
+
}
|
|
57
|
+
getProperty(name) {
|
|
58
|
+
for (const property of this.properties) {
|
|
59
|
+
if (property.name === name) {
|
|
60
|
+
return property;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
setProperty(name, value) {
|
|
66
|
+
for (const property of this.properties) {
|
|
67
|
+
if (property.name === name) {
|
|
68
|
+
if (typeof value === 'string') {
|
|
69
|
+
property.value = value;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
const prop = value.toProperty(name);
|
|
73
|
+
property.params = prop.params;
|
|
74
|
+
property.value = prop.value;
|
|
75
|
+
}
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
this.properties.push(typeof value === 'string'
|
|
80
|
+
? {
|
|
81
|
+
name: name,
|
|
82
|
+
params: [],
|
|
83
|
+
value: value,
|
|
84
|
+
}
|
|
85
|
+
: value.toProperty(name));
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
hasProperty(name, value) {
|
|
89
|
+
for (const property of this.properties) {
|
|
90
|
+
if (property.name === name &&
|
|
91
|
+
(value === undefined || property.value === value)) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
removePropertiesWithName(name) {
|
|
98
|
+
const index = this.properties.findIndex(p => p.name === name);
|
|
99
|
+
if (index === -1)
|
|
100
|
+
return;
|
|
101
|
+
// Remove property at index
|
|
102
|
+
this.properties.splice(index, 1);
|
|
103
|
+
}
|
|
104
|
+
getPropertyParams(name) {
|
|
105
|
+
for (const property of this.properties) {
|
|
106
|
+
if (property.name === name) {
|
|
107
|
+
return property.params;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
setPropertyParams(name, params) {
|
|
113
|
+
for (const property of this.properties) {
|
|
114
|
+
if (property.name === name) {
|
|
115
|
+
property.params = params;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
addComponent(component) {
|
|
121
|
+
this.components.push(component);
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
addComponents(components) {
|
|
125
|
+
this.components.push(...components);
|
|
126
|
+
return this;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Remove a component from this component.
|
|
130
|
+
* @param component The component to remove.
|
|
131
|
+
* @returns `true` if the component was removed. `false` if the component was not present.
|
|
132
|
+
*/
|
|
133
|
+
removeComponent(component) {
|
|
134
|
+
const index = this.components.indexOf(component);
|
|
135
|
+
if (index === -1)
|
|
136
|
+
return false;
|
|
137
|
+
// Remove element at index from list
|
|
138
|
+
this.components.splice(index, 1);
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
getComponentsWithName(name) {
|
|
142
|
+
const components = [];
|
|
143
|
+
for (const component of this.components) {
|
|
144
|
+
if (component.name === name) {
|
|
145
|
+
components.push(component);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return components;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Validate the component according to the rules of the iCalendar
|
|
152
|
+
* specification.
|
|
153
|
+
*
|
|
154
|
+
* This method should be overridden by subclasses to
|
|
155
|
+
* implement specific validation logic. The methods
|
|
156
|
+
* {@link validateRequiredProperty} and {@link validateOptionalProperty} may
|
|
157
|
+
* help with this.
|
|
158
|
+
* @throws {ComponentValidationError} If the component is invalid.
|
|
159
|
+
*/
|
|
160
|
+
validate() { }
|
|
161
|
+
/**
|
|
162
|
+
* Validate that a property exists and is valid using {@link validateProperty}.
|
|
163
|
+
* @param propertyName The name of the property to validate.
|
|
164
|
+
* @throws {MissingPropertyError} If the property doesn't exist on this component.
|
|
165
|
+
* @throws {PropertyValidationError} If the property exists but is invalid.
|
|
166
|
+
*/
|
|
167
|
+
validateRequiredProperty(propertyName) {
|
|
168
|
+
const property = this.getProperty(propertyName);
|
|
169
|
+
if (property == null)
|
|
170
|
+
throw new property_1.MissingPropertyError(`Missing required property ${propertyName}`);
|
|
171
|
+
(0, property_1.validateProperty)(property);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Validate that a property is valid using {@link validateProperty} if it exists.
|
|
175
|
+
* @param propertyName The name of the property to validate.
|
|
176
|
+
* @throws {PropertyValidationError} If the property exists and is invalid.
|
|
177
|
+
*/
|
|
178
|
+
validateOptionalProperty(propertyName) {
|
|
179
|
+
const property = this.getProperty(propertyName);
|
|
180
|
+
if (property != null)
|
|
181
|
+
(0, property_1.validateProperty)(property);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Validate all properties on this component.
|
|
185
|
+
*
|
|
186
|
+
* If a property is in `requiredProperties` it is
|
|
187
|
+
* validated with {@link validateRequiredProperty}, otherwise it is
|
|
188
|
+
* validated with {@link validateOptionalProperty}.
|
|
189
|
+
* @param requiredProperties A list of property names which are required on this component.
|
|
190
|
+
*/
|
|
191
|
+
validateAllProperties(requiredProperties) {
|
|
192
|
+
requiredProperties?.forEach(propertyName => {
|
|
193
|
+
if (!this.hasProperty(propertyName)) {
|
|
194
|
+
throw new property_1.MissingPropertyError(`Missing required property ${propertyName}`);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
this.properties.forEach(property => {
|
|
198
|
+
if (requiredProperties?.includes(property.name)) {
|
|
199
|
+
this.validateRequiredProperty(property.name);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
this.validateOptionalProperty(property.name);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
exports.Component = Component;
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FPbUI7QUFFbkIsOEVBQThFO0FBQzlFLE1BQWEsd0JBQXlCLFNBQVEsS0FBSztJQUMvQyxZQUFZLE9BQWU7UUFDdkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRywwQkFBMEIsQ0FBQTtJQUMxQyxDQUFDO0NBQ0o7QUFMRCw0REFLQztBQUVELDhDQUE4QztBQUM5QyxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUE7QUFFMUIsTUFBYSxTQUFTO0lBQ2xCLElBQUksQ0FBUTtJQUNaLFVBQVUsQ0FBWTtJQUN0QixVQUFVLENBQWE7SUFFdkIsWUFDSSxJQUFZLEVBQ1osVUFBdUIsRUFDdkIsVUFBd0I7UUFFeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUE7UUFDeEIsQ0FBQztRQUNELElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFBO1FBQ3hCLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNMLGVBQWU7UUFDZixNQUFNLEtBQUssR0FBRyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFFcEMsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckMsSUFBSSxJQUFJLEdBQ0osUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVB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
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Component } from '../component';
|
|
2
|
+
import { CalendarEvent } from './CalendarEvent';
|
|
3
|
+
/**
|
|
4
|
+
* Represents a VCALENDAR component, the root component of an iCalendar file.
|
|
5
|
+
*/
|
|
6
|
+
export declare class Calendar extends Component {
|
|
7
|
+
name: string;
|
|
8
|
+
/**
|
|
9
|
+
* @param prodid A unique identifier of the program creating the calendar.
|
|
10
|
+
* @example
|
|
11
|
+
* new Calendar('-//Google Inc//Google Calendar 70.9054//EN')
|
|
12
|
+
*/
|
|
13
|
+
constructor(prodid: string);
|
|
14
|
+
/**
|
|
15
|
+
* @param prodid A unique identifier of the program creating the calendar.
|
|
16
|
+
* @param version The version of the iCalendar specification that this calendar uses.
|
|
17
|
+
* @example
|
|
18
|
+
* new Calendar('-//Google Inc//Google Calendar 70.9054//EN')
|
|
19
|
+
*/
|
|
20
|
+
constructor(prodid: string, version: string);
|
|
21
|
+
/**
|
|
22
|
+
* @param component A VCALENDAR component.
|
|
23
|
+
*/
|
|
24
|
+
constructor(component: Component);
|
|
25
|
+
validate(): void;
|
|
26
|
+
getEvents(): CalendarEvent[];
|
|
27
|
+
removeEvent(event: CalendarEvent): boolean;
|
|
28
|
+
removeEvent(uid: string): boolean;
|
|
29
|
+
getProductId(): string;
|
|
30
|
+
setProductId(value: string): this;
|
|
31
|
+
getVersion(): string;
|
|
32
|
+
setVersion(value: string): this;
|
|
33
|
+
getCalendarScale(): string | undefined;
|
|
34
|
+
setCalendarScale(value: string): this;
|
|
35
|
+
removeCalendarScale(): void;
|
|
36
|
+
getMethod(): string | undefined;
|
|
37
|
+
setMethod(value: string): this;
|
|
38
|
+
removeMethod(): void;
|
|
39
|
+
getCalendarName(): string | undefined;
|
|
40
|
+
setCalendarName(value: string): this;
|
|
41
|
+
removeCalendarName(): void;
|
|
42
|
+
getCalendarDescription(): string | undefined;
|
|
43
|
+
setCalendarDescription(value: string): this;
|
|
44
|
+
removeCalendarDescription(): void;
|
|
45
|
+
/** @deprecated use {@link getEvents} instead */
|
|
46
|
+
events: () => CalendarEvent[];
|
|
47
|
+
/** @deprecated use {@link getProductId} instead */
|
|
48
|
+
prodId: () => string;
|
|
49
|
+
/** @deprecated use {@link setProductId} instead */
|
|
50
|
+
setProdId: (value: string) => this;
|
|
51
|
+
/** @deprecated use {@link getVersion} instead */
|
|
52
|
+
version: () => string;
|
|
53
|
+
/** @deprecated use {@link getCalendarScale} instead */
|
|
54
|
+
calScale: () => string | undefined;
|
|
55
|
+
/** @deprecated use {@link setCalendarScale} instead */
|
|
56
|
+
setCalScale: (value: string) => this;
|
|
57
|
+
/** @deprecated use {@link removeCalendarScale} instead */
|
|
58
|
+
removeCalScale: () => void;
|
|
59
|
+
/** @deprecated use {@link getMethod} instead */
|
|
60
|
+
method: () => string | undefined;
|
|
61
|
+
/** @deprecated use {@link getCalendarName} instead */
|
|
62
|
+
calendarName: () => string | undefined;
|
|
63
|
+
/** @deprecated use {@link getCalendarDescription} instead */
|
|
64
|
+
calendarDescription: () => string | undefined;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=Calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/components/Calendar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA4B,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C;;GAEG;AACH,qBAAa,QAAS,SAAQ,SAAS;IACnC,IAAI,SAAc;IAElB;;;;OAIG;gBACS,MAAM,EAAE,MAAM;IAE1B;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAE3C;;OAEG;gBACS,SAAS,EAAE,SAAS;IAgBhC,QAAQ;IASR,SAAS,IAAI,aAAa,EAAE;IAM5B,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAC1C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAejC,YAAY,IAAI,MAAM;IAItB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,UAAU,IAAI,MAAM;IAIpB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/B,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAItC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIrC,mBAAmB;IAInB,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,YAAY;IAIZ,eAAe,IAAI,MAAM,GAAG,SAAS;IAIrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIpC,kBAAkB;IAIlB,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAI5C,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3C,yBAAyB;IAMzB,gDAAgD;IAChD,MAAM,QAzFO,aAAa,EAAE,CAyFL;IACvB,mDAAmD;IACnD,MAAM,QArEU,MAAM,CAqEI;IAC1B,mDAAmD;IACnD,SAAS,UAnEW,MAAM,KAAG,IAAI,CAmEJ;IAC7B,iDAAiD;IACjD,OAAO,QAjEO,MAAM,CAiEK;IACzB,uDAAuD;IACvD,QAAQ,QA3DY,MAAM,GAAG,SAAS,CA2DN;IAChC,uDAAuD;IACvD,WAAW,UAzDa,MAAM,KAAG,IAAI,CAyDF;IACnC,0DAA0D;IAC1D,cAAc,aAA2B;IACzC,gDAAgD;IAChD,MAAM,QArDO,MAAM,GAAG,SAAS,CAqDR;IACvB,sDAAsD;IACtD,YAAY,QA3CO,MAAM,GAAG,SAAS,CA2CF;IACnC,6DAA6D;IAC7D,mBAAmB,QAjCO,MAAM,GAAG,SAAS,CAiCK;CACpD"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Calendar = void 0;
|
|
4
|
+
const component_1 = require("../component");
|
|
5
|
+
const CalendarEvent_1 = require("./CalendarEvent");
|
|
6
|
+
/**
|
|
7
|
+
* Represents a VCALENDAR component, the root component of an iCalendar file.
|
|
8
|
+
*/
|
|
9
|
+
class Calendar extends component_1.Component {
|
|
10
|
+
name = 'VCALENDAR';
|
|
11
|
+
constructor(a, b) {
|
|
12
|
+
let component;
|
|
13
|
+
if (a instanceof component_1.Component) {
|
|
14
|
+
component = a;
|
|
15
|
+
Calendar.prototype.validate.call(component);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
const prodid = a;
|
|
19
|
+
const version = b ?? '2.0';
|
|
20
|
+
component = new component_1.Component('VCALENDAR');
|
|
21
|
+
component.setProperty('PRODID', prodid);
|
|
22
|
+
component.setProperty('VERSION', version);
|
|
23
|
+
}
|
|
24
|
+
super(component.name, component.properties, component.components);
|
|
25
|
+
}
|
|
26
|
+
validate() {
|
|
27
|
+
if (this.name !== 'VCALENDAR')
|
|
28
|
+
throw new component_1.ComponentValidationError('Component name must be VCALENDAR');
|
|
29
|
+
const requiredProperties = ['PRODID', 'VERSION'];
|
|
30
|
+
this.validateAllProperties(requiredProperties);
|
|
31
|
+
}
|
|
32
|
+
getEvents() {
|
|
33
|
+
return this.getComponentsWithName('VEVENT').map(c => new CalendarEvent_1.CalendarEvent(c));
|
|
34
|
+
}
|
|
35
|
+
removeEvent(a) {
|
|
36
|
+
if (a instanceof CalendarEvent_1.CalendarEvent) {
|
|
37
|
+
const event = a;
|
|
38
|
+
return this.removeComponent(event);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const uid = a;
|
|
42
|
+
for (const event of this.getEvents()) {
|
|
43
|
+
if (event.getUid() !== uid)
|
|
44
|
+
continue;
|
|
45
|
+
return this.removeComponent(event);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
getProductId() {
|
|
51
|
+
return this.getProperty('PRODID').value;
|
|
52
|
+
}
|
|
53
|
+
setProductId(value) {
|
|
54
|
+
return this.setProperty('PRODID', value);
|
|
55
|
+
}
|
|
56
|
+
getVersion() {
|
|
57
|
+
return this.getProperty('VERSION').value;
|
|
58
|
+
}
|
|
59
|
+
setVersion(value) {
|
|
60
|
+
return this.setProperty('VERSION', value);
|
|
61
|
+
}
|
|
62
|
+
getCalendarScale() {
|
|
63
|
+
return this.getProperty('CALSCALE')?.value;
|
|
64
|
+
}
|
|
65
|
+
setCalendarScale(value) {
|
|
66
|
+
return this.setProperty('CALSCALE', value);
|
|
67
|
+
}
|
|
68
|
+
removeCalendarScale() {
|
|
69
|
+
this.removePropertiesWithName('CALSCALE');
|
|
70
|
+
}
|
|
71
|
+
getMethod() {
|
|
72
|
+
return this.getProperty('METHOD')?.value;
|
|
73
|
+
}
|
|
74
|
+
setMethod(value) {
|
|
75
|
+
return this.setProperty('METHOD', value);
|
|
76
|
+
}
|
|
77
|
+
removeMethod() {
|
|
78
|
+
this.removePropertiesWithName('METHOD');
|
|
79
|
+
}
|
|
80
|
+
getCalendarName() {
|
|
81
|
+
return this.getProperty('X-WR-CALNAME')?.value;
|
|
82
|
+
}
|
|
83
|
+
setCalendarName(value) {
|
|
84
|
+
return this.setProperty('X-WR-CALNAME', value);
|
|
85
|
+
}
|
|
86
|
+
removeCalendarName() {
|
|
87
|
+
this.removePropertiesWithName('X-WR-CALNAME');
|
|
88
|
+
}
|
|
89
|
+
getCalendarDescription() {
|
|
90
|
+
return this.getProperty('X-WR-CALDESC')?.value;
|
|
91
|
+
}
|
|
92
|
+
setCalendarDescription(value) {
|
|
93
|
+
return this.setProperty('X-WR-CALDESC', value);
|
|
94
|
+
}
|
|
95
|
+
removeCalendarDescription() {
|
|
96
|
+
this.removePropertiesWithName('X-WR-CALDESC');
|
|
97
|
+
}
|
|
98
|
+
/* eslint-disable */
|
|
99
|
+
/** @deprecated use {@link getEvents} instead */
|
|
100
|
+
events = this.getEvents;
|
|
101
|
+
/** @deprecated use {@link getProductId} instead */
|
|
102
|
+
prodId = this.getProductId;
|
|
103
|
+
/** @deprecated use {@link setProductId} instead */
|
|
104
|
+
setProdId = this.setProductId;
|
|
105
|
+
/** @deprecated use {@link getVersion} instead */
|
|
106
|
+
version = this.getVersion;
|
|
107
|
+
/** @deprecated use {@link getCalendarScale} instead */
|
|
108
|
+
calScale = this.getCalendarScale;
|
|
109
|
+
/** @deprecated use {@link setCalendarScale} instead */
|
|
110
|
+
setCalScale = this.setCalendarScale;
|
|
111
|
+
/** @deprecated use {@link removeCalendarScale} instead */
|
|
112
|
+
removeCalScale = this.removeCalendarScale;
|
|
113
|
+
/** @deprecated use {@link getMethod} instead */
|
|
114
|
+
method = this.getMethod;
|
|
115
|
+
/** @deprecated use {@link getCalendarName} instead */
|
|
116
|
+
calendarName = this.getCalendarName;
|
|
117
|
+
/** @deprecated use {@link getCalendarDescription} instead */
|
|
118
|
+
calendarDescription = this.getCalendarDescription;
|
|
119
|
+
}
|
|
120
|
+
exports.Calendar = Calendar;
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw0Q0FBa0U7QUFDbEUsbURBQStDO0FBRS9DOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEscUJBQVM7SUFDbkMsSUFBSSxHQUFHLFdBQVcsQ0FBQTtJQXFCbEIsWUFBWSxDQUFzQixFQUFFLENBQVU7UUFDMUMsSUFBSSxTQUFvQixDQUFBO1FBQ3hCLElBQUksQ0FBQyxZQUFZLHFCQUFTLEVBQUUsQ0FBQztZQUN6QixTQUFTLEdBQUcsQ0FBYyxDQUFBO1lBQzFCLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sTUFBTSxHQUFHLENBQVcsQ0FBQTtZQUMxQixNQUFNLE9BQU8sR0FBSSxDQUFZLElBQUksS0FBSyxDQUFBO1lBQ3RDLFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDdEMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDdkMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDN0MsQ0FBQztRQUNELEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3JFLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVc7WUFDekIsTUFBTSxJQUFJLG9DQUF3QixDQUM5QixrQ0FBa0MsQ0FDckMsQ0FBQTtRQUNMLE1BQU0sa0JBQWtCLEdBQXdCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ3JFLElBQUksQ0FBQyxxQkFBcUIsQ0FB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
|