iamcal 1.0.3 → 1.1.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/lib/index.d.ts +42 -25
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +90 -38
- package/lib/parse.d.ts +5 -0
- package/lib/parse.d.ts.map +1 -1
- package/lib/parse.js +25 -1
- package/package.json +2 -2
- package/src/index.ts +105 -56
- package/src/parse.ts +24 -0
package/lib/index.d.ts
CHANGED
|
@@ -6,11 +6,15 @@ export declare class Component {
|
|
|
6
6
|
constructor(name: string, properties?: Property[], components?: Component[]);
|
|
7
7
|
serialize(): string;
|
|
8
8
|
getProperty(name: string): Property | null;
|
|
9
|
-
setProperty(name: string, value: string):
|
|
10
|
-
removePropertiesWithName(name: string):
|
|
9
|
+
setProperty(name: string, value: string): this;
|
|
10
|
+
removePropertiesWithName(name: string): this | undefined;
|
|
11
11
|
getPropertyParams(name: string): string[] | null;
|
|
12
|
-
setPropertyParams(name: string, params: string[]):
|
|
13
|
-
addComponent(component: Component):
|
|
12
|
+
setPropertyParams(name: string, params: string[]): this;
|
|
13
|
+
addComponent(component: Component): this;
|
|
14
|
+
/**
|
|
15
|
+
* Remove a component from this component
|
|
16
|
+
* @returns `true` if the component was removed. `false` if the component was not present
|
|
17
|
+
*/
|
|
14
18
|
removeComponent(component: Component): boolean;
|
|
15
19
|
getComponents(name: string): Component[];
|
|
16
20
|
}
|
|
@@ -40,11 +44,11 @@ export declare class Calendar extends Component {
|
|
|
40
44
|
removeEvent(event: CalendarEvent): boolean;
|
|
41
45
|
removeEvent(uid: string): boolean;
|
|
42
46
|
prodId(): string;
|
|
43
|
-
setProdId(value: string):
|
|
47
|
+
setProdId(value: string): this;
|
|
44
48
|
version(): string;
|
|
45
|
-
setVersion(value: string):
|
|
49
|
+
setVersion(value: string): this;
|
|
46
50
|
calScale(): string | undefined;
|
|
47
|
-
setCalScale(value: string):
|
|
51
|
+
setCalScale(value: string): this;
|
|
48
52
|
removeCalScale(): void;
|
|
49
53
|
method(): string | undefined;
|
|
50
54
|
setMethod(value: string): void;
|
|
@@ -53,7 +57,7 @@ export declare class Calendar extends Component {
|
|
|
53
57
|
setCalendarName(value: string): void;
|
|
54
58
|
removeCalendarName(): void;
|
|
55
59
|
calendarDescription(): string | undefined;
|
|
56
|
-
setCalendarDescription(value: string):
|
|
60
|
+
setCalendarDescription(value: string): this;
|
|
57
61
|
removeCalendarDescription(): void;
|
|
58
62
|
}
|
|
59
63
|
/**
|
|
@@ -63,12 +67,12 @@ export declare class TimeZone extends Component {
|
|
|
63
67
|
constructor(id: string);
|
|
64
68
|
constructor(component: Component);
|
|
65
69
|
id(): string;
|
|
66
|
-
setId(value: string):
|
|
70
|
+
setId(value: string): this;
|
|
67
71
|
lastMod(): Date | undefined;
|
|
68
|
-
setLastMod(value: Date):
|
|
72
|
+
setLastMod(value: Date): this;
|
|
69
73
|
removeLastMod(): void;
|
|
70
74
|
url(): string | undefined;
|
|
71
|
-
setUrl(value: string):
|
|
75
|
+
setUrl(value: string): this;
|
|
72
76
|
removeUrl(): void;
|
|
73
77
|
/** Get all time offsets. */
|
|
74
78
|
offsets(): TimeZoneOffset[];
|
|
@@ -92,16 +96,16 @@ declare class TimeZoneOffset extends Component {
|
|
|
92
96
|
constructor(type: OffsetType, start: Date, offsetFrom: Offset, offsetTo: Offset);
|
|
93
97
|
constructor(component: Component);
|
|
94
98
|
start(): Date;
|
|
95
|
-
setStart(value: Date):
|
|
99
|
+
setStart(value: Date, fullDay?: boolean): this;
|
|
96
100
|
offsetFrom(): Offset;
|
|
97
|
-
setOffsetFrom(value: Offset):
|
|
101
|
+
setOffsetFrom(value: Offset): this;
|
|
98
102
|
offsetTo(): Offset;
|
|
99
|
-
setOffsetTo(value: Offset):
|
|
103
|
+
setOffsetTo(value: Offset): this;
|
|
100
104
|
comment(): string | undefined;
|
|
101
|
-
setComment(value: string):
|
|
105
|
+
setComment(value: string): this;
|
|
102
106
|
removeComment(): void;
|
|
103
107
|
timeZoneName(): string | undefined;
|
|
104
|
-
setTimeZoneName(value: string):
|
|
108
|
+
setTimeZoneName(value: string): this;
|
|
105
109
|
removeTimeZoneName(): void;
|
|
106
110
|
}
|
|
107
111
|
export declare class CalendarEvent extends Component {
|
|
@@ -109,29 +113,42 @@ export declare class CalendarEvent extends Component {
|
|
|
109
113
|
constructor(uid: string, dtstamp: Date);
|
|
110
114
|
constructor(component: Component);
|
|
111
115
|
stamp(): Date;
|
|
112
|
-
setStamp(value: Date):
|
|
116
|
+
setStamp(value: Date, fullDay?: boolean): this;
|
|
113
117
|
uid(): string;
|
|
114
|
-
setUid(value: string):
|
|
118
|
+
setUid(value: string): this;
|
|
115
119
|
summary(): string;
|
|
116
|
-
setSummary(value: string):
|
|
120
|
+
setSummary(value: string): this;
|
|
117
121
|
removeSummary(): void;
|
|
118
122
|
description(): string;
|
|
119
|
-
setDescription(value: string):
|
|
123
|
+
setDescription(value: string): this;
|
|
120
124
|
removeDescription(): void;
|
|
121
125
|
location(): string | undefined;
|
|
122
|
-
setLocation(value: string):
|
|
126
|
+
setLocation(value: string): this;
|
|
123
127
|
removeLocation(): void;
|
|
128
|
+
/**
|
|
129
|
+
* Get the start of the event.
|
|
130
|
+
* If set as a full day the time will be at the start of the day.
|
|
131
|
+
*/
|
|
124
132
|
start(): Date;
|
|
125
|
-
|
|
133
|
+
/** Set the start of the event. */
|
|
134
|
+
setStart(value: Date, fullDay?: boolean): this;
|
|
126
135
|
removeStart(): void;
|
|
136
|
+
/**
|
|
137
|
+
* Get the non-inclusive end of the event.
|
|
138
|
+
* If set as a full day the time will be at the start of the day.
|
|
139
|
+
*/
|
|
127
140
|
end(): Date;
|
|
128
|
-
|
|
141
|
+
/**
|
|
142
|
+
* Set the non-inclusive end of the event.
|
|
143
|
+
*/
|
|
144
|
+
setEnd(value: Date, fullDay?: boolean): this;
|
|
129
145
|
removeEnd(): void;
|
|
130
146
|
created(): Date | undefined;
|
|
131
|
-
setCreated(value: Date):
|
|
147
|
+
setCreated(value: Date): this;
|
|
132
148
|
removeCreated(): void;
|
|
133
149
|
geo(): [number, number] | undefined;
|
|
134
|
-
setGeo(latitude: number, longitude: number):
|
|
150
|
+
setGeo(latitude: number, longitude: number): this;
|
|
151
|
+
removeGeo(): void;
|
|
135
152
|
}
|
|
136
153
|
export {};
|
|
137
154
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CalendarEvent = exports.TimeZone = exports.Calendar = exports.Component = void 0;
|
|
4
|
+
const parse_1 = require("./parse");
|
|
4
5
|
// Max line length as defined by RFC 5545 3.1.
|
|
5
6
|
const MAX_LINE_LENGTH = 75;
|
|
6
7
|
class Component {
|
|
@@ -57,7 +58,7 @@ class Component {
|
|
|
57
58
|
for (const property of this.properties) {
|
|
58
59
|
if (property.name === name) {
|
|
59
60
|
property.value = value;
|
|
60
|
-
return;
|
|
61
|
+
return this;
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
this.properties.push({
|
|
@@ -65,11 +66,12 @@ class Component {
|
|
|
65
66
|
params: [],
|
|
66
67
|
value: value,
|
|
67
68
|
});
|
|
69
|
+
return this;
|
|
68
70
|
}
|
|
69
71
|
removePropertiesWithName(name) {
|
|
70
72
|
const index = this.properties.findIndex(p => p.name === name);
|
|
71
73
|
if (index === -1)
|
|
72
|
-
return;
|
|
74
|
+
return this;
|
|
73
75
|
// Remove property at index
|
|
74
76
|
this.properties.splice(index, 1);
|
|
75
77
|
}
|
|
@@ -87,10 +89,16 @@ class Component {
|
|
|
87
89
|
property.params = params;
|
|
88
90
|
}
|
|
89
91
|
}
|
|
92
|
+
return this;
|
|
90
93
|
}
|
|
91
94
|
addComponent(component) {
|
|
92
95
|
this.components.push(component);
|
|
96
|
+
return this;
|
|
93
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Remove a component from this component
|
|
100
|
+
* @returns `true` if the component was removed. `false` if the component was not present
|
|
101
|
+
*/
|
|
94
102
|
removeComponent(component) {
|
|
95
103
|
const index = this.components.indexOf(component);
|
|
96
104
|
if (index === -1)
|
|
@@ -151,19 +159,19 @@ class Calendar extends Component {
|
|
|
151
159
|
return this.getProperty('PRODID').value;
|
|
152
160
|
}
|
|
153
161
|
setProdId(value) {
|
|
154
|
-
this.setProperty('PRODID', value);
|
|
162
|
+
return this.setProperty('PRODID', value);
|
|
155
163
|
}
|
|
156
164
|
version() {
|
|
157
165
|
return this.getProperty('VERSION').value;
|
|
158
166
|
}
|
|
159
167
|
setVersion(value) {
|
|
160
|
-
this.setProperty('VERSION', value);
|
|
168
|
+
return this.setProperty('VERSION', value);
|
|
161
169
|
}
|
|
162
170
|
calScale() {
|
|
163
171
|
return this.getProperty('CALSCALE')?.value;
|
|
164
172
|
}
|
|
165
173
|
setCalScale(value) {
|
|
166
|
-
this.setProperty('CALSCALE', value);
|
|
174
|
+
return this.setProperty('CALSCALE', value);
|
|
167
175
|
}
|
|
168
176
|
removeCalScale() {
|
|
169
177
|
this.removePropertiesWithName('CALSCALE');
|
|
@@ -190,7 +198,7 @@ class Calendar extends Component {
|
|
|
190
198
|
return this.getProperty('X-WR-CALDESC')?.value;
|
|
191
199
|
}
|
|
192
200
|
setCalendarDescription(value) {
|
|
193
|
-
this.setProperty('X-WR-CALDESC', value);
|
|
201
|
+
return this.setProperty('X-WR-CALDESC', value);
|
|
194
202
|
}
|
|
195
203
|
removeCalendarDescription() {
|
|
196
204
|
this.removePropertiesWithName('X-WR-CALDESC');
|
|
@@ -217,16 +225,16 @@ class TimeZone extends Component {
|
|
|
217
225
|
return this.getProperty('TZID').value;
|
|
218
226
|
}
|
|
219
227
|
setId(value) {
|
|
220
|
-
this.setProperty('TZID', value);
|
|
228
|
+
return this.setProperty('TZID', value);
|
|
221
229
|
}
|
|
222
230
|
lastMod() {
|
|
223
231
|
const text = this.getProperty('LAST-MOD');
|
|
224
232
|
if (!text)
|
|
225
233
|
return;
|
|
226
|
-
return
|
|
234
|
+
return (0, parse_1.parseDate)(text);
|
|
227
235
|
}
|
|
228
236
|
setLastMod(value) {
|
|
229
|
-
this.setProperty('LAST-MOD', value.toISOString());
|
|
237
|
+
return this.setProperty('LAST-MOD', value.toISOString());
|
|
230
238
|
}
|
|
231
239
|
removeLastMod() {
|
|
232
240
|
this.removePropertiesWithName('LAST-MOD');
|
|
@@ -235,7 +243,7 @@ class TimeZone extends Component {
|
|
|
235
243
|
return this.getProperty('TZURL')?.value;
|
|
236
244
|
}
|
|
237
245
|
setUrl(value) {
|
|
238
|
-
this.setProperty('TZURL', value);
|
|
246
|
+
return this.setProperty('TZURL', value);
|
|
239
247
|
}
|
|
240
248
|
removeUrl() {
|
|
241
249
|
this.removePropertiesWithName('TZURL');
|
|
@@ -273,35 +281,42 @@ class TimeZoneOffset extends Component {
|
|
|
273
281
|
const offsetFrom = c;
|
|
274
282
|
const offsetTo = d;
|
|
275
283
|
component = new Component(name);
|
|
276
|
-
component.setProperty('DTSTART',
|
|
284
|
+
component.setProperty('DTSTART', (0, parse_1.toDateTimeString)(start));
|
|
277
285
|
component.setProperty('TZOFFSETFROM', offsetFrom);
|
|
278
286
|
component.setProperty('TZOFFSETTO', offsetTo);
|
|
279
287
|
}
|
|
280
288
|
super(component.name, component.properties, component.components);
|
|
281
289
|
}
|
|
282
290
|
start() {
|
|
283
|
-
return
|
|
291
|
+
return (0, parse_1.parseDate)(this.getProperty('DTSTART'));
|
|
284
292
|
}
|
|
285
|
-
setStart(value) {
|
|
286
|
-
|
|
293
|
+
setStart(value, fullDay = false) {
|
|
294
|
+
if (fullDay) {
|
|
295
|
+
this.setProperty('DTSTART', (0, parse_1.toDateString)(value));
|
|
296
|
+
this.setPropertyParams('DTSTART', ['VALUE=DATE']);
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
this.setProperty('DTSTART', (0, parse_1.toDateTimeString)(value));
|
|
300
|
+
}
|
|
301
|
+
return this;
|
|
287
302
|
}
|
|
288
303
|
offsetFrom() {
|
|
289
304
|
return this.getProperty('TZOFFSETFROM').value;
|
|
290
305
|
}
|
|
291
306
|
setOffsetFrom(value) {
|
|
292
|
-
this.setProperty('TZOFFSETFROM', value);
|
|
307
|
+
return this.setProperty('TZOFFSETFROM', value);
|
|
293
308
|
}
|
|
294
309
|
offsetTo() {
|
|
295
310
|
return this.getProperty('TZOFFSETTO').value;
|
|
296
311
|
}
|
|
297
312
|
setOffsetTo(value) {
|
|
298
|
-
this.setProperty('TZOFFSETTO', value);
|
|
313
|
+
return this.setProperty('TZOFFSETTO', value);
|
|
299
314
|
}
|
|
300
315
|
comment() {
|
|
301
316
|
return this.getProperty('COMMENT')?.value;
|
|
302
317
|
}
|
|
303
318
|
setComment(value) {
|
|
304
|
-
this.setProperty('COMMENT', value);
|
|
319
|
+
return this.setProperty('COMMENT', value);
|
|
305
320
|
}
|
|
306
321
|
removeComment() {
|
|
307
322
|
this.removePropertiesWithName('COMMENT');
|
|
@@ -310,7 +325,7 @@ class TimeZoneOffset extends Component {
|
|
|
310
325
|
return this.getProperty('TZNAME')?.value;
|
|
311
326
|
}
|
|
312
327
|
setTimeZoneName(value) {
|
|
313
|
-
this.setProperty('TZNAME', value);
|
|
328
|
+
return this.setProperty('TZNAME', value);
|
|
314
329
|
}
|
|
315
330
|
removeTimeZoneName() {
|
|
316
331
|
this.removePropertiesWithName('TZNAME');
|
|
@@ -325,7 +340,7 @@ class CalendarEvent extends Component {
|
|
|
325
340
|
const dtstamp = b;
|
|
326
341
|
component = new Component('VEVENT');
|
|
327
342
|
component.setProperty('UID', uid);
|
|
328
|
-
component.setProperty('DTSTAMP',
|
|
343
|
+
component.setProperty('DTSTAMP', (0, parse_1.toDateTimeString)(dtstamp));
|
|
329
344
|
}
|
|
330
345
|
else {
|
|
331
346
|
component = a;
|
|
@@ -333,22 +348,29 @@ class CalendarEvent extends Component {
|
|
|
333
348
|
super(component.name, component.properties, component.components);
|
|
334
349
|
}
|
|
335
350
|
stamp() {
|
|
336
|
-
return
|
|
351
|
+
return (0, parse_1.parseDate)(this.getProperty('DTSTAMP'));
|
|
337
352
|
}
|
|
338
|
-
setStamp(value) {
|
|
339
|
-
|
|
353
|
+
setStamp(value, fullDay = false) {
|
|
354
|
+
if (fullDay) {
|
|
355
|
+
this.setProperty('DTSTAMP', (0, parse_1.toDateString)(value));
|
|
356
|
+
this.setPropertyParams('DTSTAMP', ['VALUE=DATE']);
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
this.setProperty('DTSTAMP', (0, parse_1.toDateTimeString)(value));
|
|
360
|
+
}
|
|
361
|
+
return this;
|
|
340
362
|
}
|
|
341
363
|
uid() {
|
|
342
364
|
return this.getProperty('UID').value;
|
|
343
365
|
}
|
|
344
366
|
setUid(value) {
|
|
345
|
-
this.setProperty('UID', value);
|
|
367
|
+
return this.setProperty('UID', value);
|
|
346
368
|
}
|
|
347
369
|
summary() {
|
|
348
370
|
return this.getProperty('SUMMARY').value;
|
|
349
371
|
}
|
|
350
372
|
setSummary(value) {
|
|
351
|
-
this.setProperty('SUMMARY', value);
|
|
373
|
+
return this.setProperty('SUMMARY', value);
|
|
352
374
|
}
|
|
353
375
|
removeSummary() {
|
|
354
376
|
this.removePropertiesWithName('SUMMARY');
|
|
@@ -357,7 +379,7 @@ class CalendarEvent extends Component {
|
|
|
357
379
|
return this.getProperty('DESCRIPTION').value;
|
|
358
380
|
}
|
|
359
381
|
setDescription(value) {
|
|
360
|
-
this.setProperty('DESCRIPTION', value);
|
|
382
|
+
return this.setProperty('DESCRIPTION', value);
|
|
361
383
|
}
|
|
362
384
|
removeDescription() {
|
|
363
385
|
this.removePropertiesWithName('DESCRIPTION');
|
|
@@ -366,37 +388,63 @@ class CalendarEvent extends Component {
|
|
|
366
388
|
return this.getProperty('LOCATION')?.value;
|
|
367
389
|
}
|
|
368
390
|
setLocation(value) {
|
|
369
|
-
this.setProperty('LOCATION', value);
|
|
391
|
+
return this.setProperty('LOCATION', value);
|
|
370
392
|
}
|
|
371
393
|
removeLocation() {
|
|
372
394
|
this.removePropertiesWithName('LOCATION');
|
|
373
395
|
}
|
|
396
|
+
/**
|
|
397
|
+
* Get the start of the event.
|
|
398
|
+
* If set as a full day the time will be at the start of the day.
|
|
399
|
+
*/
|
|
374
400
|
start() {
|
|
375
|
-
return
|
|
401
|
+
return (0, parse_1.parseDate)(this.getProperty('DTSTART'));
|
|
376
402
|
}
|
|
377
|
-
|
|
378
|
-
|
|
403
|
+
/** Set the start of the event. */
|
|
404
|
+
setStart(value, fullDay = false) {
|
|
405
|
+
if (fullDay) {
|
|
406
|
+
this.setProperty('DTSTART', (0, parse_1.toDateString)(value));
|
|
407
|
+
this.setPropertyParams('DTSTART', ['VALUE=DATE']);
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
410
|
+
this.setProperty('DTSTART', (0, parse_1.toDateTimeString)(value));
|
|
411
|
+
}
|
|
412
|
+
return this;
|
|
379
413
|
}
|
|
380
414
|
removeStart() {
|
|
381
415
|
this.removePropertiesWithName('DTSTART');
|
|
382
416
|
}
|
|
417
|
+
/**
|
|
418
|
+
* Get the non-inclusive end of the event.
|
|
419
|
+
* If set as a full day the time will be at the start of the day.
|
|
420
|
+
*/
|
|
383
421
|
end() {
|
|
384
|
-
return
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
|
|
422
|
+
return (0, parse_1.parseDate)(this.getProperty('DTEND'));
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Set the non-inclusive end of the event.
|
|
426
|
+
*/
|
|
427
|
+
setEnd(value, fullDay = false) {
|
|
428
|
+
if (fullDay) {
|
|
429
|
+
this.setProperty('DTEND', (0, parse_1.toDateString)(value));
|
|
430
|
+
this.setPropertyParams('DTEND', ['VALUE=DATE']);
|
|
431
|
+
}
|
|
432
|
+
else {
|
|
433
|
+
this.setProperty('DTEND', (0, parse_1.toDateTimeString)(value));
|
|
434
|
+
}
|
|
435
|
+
return this;
|
|
388
436
|
}
|
|
389
437
|
removeEnd() {
|
|
390
438
|
this.removePropertiesWithName('DTEND');
|
|
391
439
|
}
|
|
392
440
|
created() {
|
|
393
|
-
const
|
|
394
|
-
if (!
|
|
441
|
+
const property = this.getProperty('CREATED');
|
|
442
|
+
if (!property)
|
|
395
443
|
return;
|
|
396
|
-
return
|
|
444
|
+
return (0, parse_1.parseDate)(property);
|
|
397
445
|
}
|
|
398
446
|
setCreated(value) {
|
|
399
|
-
this.setProperty('CREATED',
|
|
447
|
+
return this.setProperty('CREATED', (0, parse_1.toDateTimeString)(value));
|
|
400
448
|
}
|
|
401
449
|
removeCreated() {
|
|
402
450
|
this.removePropertiesWithName('CREATED');
|
|
@@ -413,7 +461,11 @@ class CalendarEvent extends Component {
|
|
|
413
461
|
}
|
|
414
462
|
setGeo(latitude, longitude) {
|
|
415
463
|
const text = `${latitude},${longitude}`;
|
|
464
|
+
return this;
|
|
465
|
+
}
|
|
466
|
+
removeGeo() {
|
|
467
|
+
this.removePropertiesWithName('GEO');
|
|
416
468
|
}
|
|
417
469
|
}
|
|
418
470
|
exports.CalendarEvent = CalendarEvent;
|
|
419
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsOENBQThDO0FBQzlDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQTtBQUUxQixNQUFhLFNBQVM7SUFDbEIsSUFBSSxDQUFRO0lBQ1osVUFBVSxDQUFZO0lBQ3RCLFVBQVUsQ0FBYTtJQUV2QixZQUFZLElBQVksRUFBRSxVQUF1QixFQUFFLFVBQXdCO1FBQ3ZFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQTtRQUNqQyxDQUFDO1FBQ0QsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO1FBQ2pDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNMLGVBQWU7UUFDZixNQUFNLEtBQUssR0FBRyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFFcEMsS0FBSyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkMsSUFBSSxJQUFJLEdBQ0osUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ3JCLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLEdBQUc7Z0JBQ0gsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBRXJC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
|
|
471
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1FO0FBR25FLDhDQUE4QztBQUM5QyxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUE7QUFFMUIsTUFBYSxTQUFTO0lBQ2xCLElBQUksQ0FBUTtJQUNaLFVBQVUsQ0FBWTtJQUN0QixVQUFVLENBQWE7SUFFdkIsWUFBWSxJQUFZLEVBQUUsVUFBdUIsRUFBRSxVQUF3QjtRQUN2RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7UUFDakMsQ0FBQztRQUNELElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQTtRQUNqQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDTCxlQUFlO1FBQ2YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBRXBDLEtBQUssSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ25DLElBQUksSUFBSSxHQUNKLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNyQixRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxHQUFHO2dCQUNILFFBQVEsQ0FBQyxPQUFPLENB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
|
package/lib/parse.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import readline from 'readline';
|
|
2
2
|
import { Calendar, CalendarEvent, Component } from '.';
|
|
3
|
+
import { Property } from './types';
|
|
3
4
|
export declare class DeserializationError extends Error {
|
|
4
5
|
name: string;
|
|
5
6
|
}
|
|
@@ -25,4 +26,8 @@ export declare function parseCalendar(text: string): Promise<Calendar>;
|
|
|
25
26
|
* @returns the parsed event
|
|
26
27
|
*/
|
|
27
28
|
export declare function parseEvent(text: string): Promise<CalendarEvent>;
|
|
29
|
+
export declare function parseDate(dateProperty: Property): Date;
|
|
30
|
+
export declare function toTimeString(date: Date): string;
|
|
31
|
+
export declare function toDateString(date: Date): string;
|
|
32
|
+
export declare function toDateTimeString(date: Date): string;
|
|
28
33
|
//# sourceMappingURL=parse.d.ts.map
|
package/lib/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,CAAA;
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,qBAAa,oBAAqB,SAAQ,KAAK;IAC3C,IAAI,SAAyB;CAChC;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAsH/E;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAIxE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAKnE;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAKrE;AAED,wBAAgB,SAAS,CAAC,YAAY,EAAE,QAAQ,GAAG,IAAI,CAStD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE/C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE/C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEnD"}
|
package/lib/parse.js
CHANGED
|
@@ -8,6 +8,10 @@ exports.deserialize = deserialize;
|
|
|
8
8
|
exports.deserializeString = deserializeString;
|
|
9
9
|
exports.parseCalendar = parseCalendar;
|
|
10
10
|
exports.parseEvent = parseEvent;
|
|
11
|
+
exports.parseDate = parseDate;
|
|
12
|
+
exports.toTimeString = toTimeString;
|
|
13
|
+
exports.toDateString = toDateString;
|
|
14
|
+
exports.toDateTimeString = toDateTimeString;
|
|
11
15
|
const readline_1 = __importDefault(require("readline"));
|
|
12
16
|
const stream_1 = require("stream");
|
|
13
17
|
const _1 = require(".");
|
|
@@ -162,4 +166,24 @@ async function parseEvent(text) {
|
|
|
162
166
|
throw new DeserializationError("Not an event");
|
|
163
167
|
return new _1.CalendarEvent(component);
|
|
164
168
|
}
|
|
165
|
-
|
|
169
|
+
function parseDate(dateProperty) {
|
|
170
|
+
const value = dateProperty.value.trim();
|
|
171
|
+
if (dateProperty.params.includes('VALUE=DATE')) {
|
|
172
|
+
// Parse date only
|
|
173
|
+
return new Date(`${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)}`);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// Parse date and time
|
|
177
|
+
return new Date(`${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)} ${value.substring(9, 11)}:${value.substring(11, 13)}:${value.substring(13, 15)}`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function toTimeString(date) {
|
|
181
|
+
return `${date.getHours().toString().padStart(2, '0')}${date.getMinutes().toString().padStart(2, '0')}${date.getSeconds().toString().padStart(2, '0')}`;
|
|
182
|
+
}
|
|
183
|
+
function toDateString(date) {
|
|
184
|
+
return `${date.getFullYear().toString().padStart(4, '0')}${date.getMonth().toString().padStart(2, '0')}${date.getDate().toString().padStart(2, '0')}`;
|
|
185
|
+
}
|
|
186
|
+
function toDateTimeString(date) {
|
|
187
|
+
return `${toDateString(date)}T${toTimeString(date)}`;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBYUEsa0NBc0hDO0FBTUQsOENBSUM7QUFPRCxzQ0FLQztBQU9ELGdDQUtDO0FBRUQsOEJBU0M7QUFFRCxvQ0FFQztBQUVELG9DQUVDO0FBRUQsNENBRUM7QUE1TEQsd0RBQStCO0FBQy9CLG1DQUFpQztBQUNqQyx3QkFBc0Q7QUFHdEQsTUFBYSxvQkFBcUIsU0FBUSxLQUFLO0lBQzNDLElBQUksR0FBRyxzQkFBc0IsQ0FBQTtDQUNoQztBQUZELG9EQUVDO0FBRUQ7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUF5QjtJQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLFlBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNuQyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUE7SUFFaEIsb0RBQW9EO0lBQ3BELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUE7SUFFakMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFBO0lBRTdDLEtBQUssVUFBVSxXQUFXLENBQUMsSUFBWTtRQUNuQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQUUsT0FBTTtRQUU5QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsTUFBTSxJQUFJLG9CQUFvQixDQUFDLG1DQUFtQyxDQUFDLENBQUE7UUFDdkUsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzVCLGtCQUFrQjtZQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDOUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUVoQixJQUFJLEtB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
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { parseDate, toDateString, toDateTimeString } from './parse'
|
|
1
2
|
import { Property } from './types'
|
|
2
3
|
|
|
3
4
|
// Max line length as defined by RFC 5545 3.1.
|
|
@@ -62,11 +63,11 @@ export class Component {
|
|
|
62
63
|
return null
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
setProperty(name: string, value: string) {
|
|
66
|
+
setProperty(name: string, value: string): this {
|
|
66
67
|
for (const property of this.properties) {
|
|
67
68
|
if (property.name === name) {
|
|
68
69
|
property.value = value
|
|
69
|
-
return
|
|
70
|
+
return this
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
this.properties.push({
|
|
@@ -74,11 +75,12 @@ export class Component {
|
|
|
74
75
|
params: [],
|
|
75
76
|
value: value,
|
|
76
77
|
})
|
|
78
|
+
return this
|
|
77
79
|
}
|
|
78
80
|
|
|
79
81
|
removePropertiesWithName(name: string) {
|
|
80
82
|
const index = this.properties.findIndex(p => p.name === name)
|
|
81
|
-
if (index === -1) return
|
|
83
|
+
if (index === -1) return this
|
|
82
84
|
// Remove property at index
|
|
83
85
|
this.properties.splice(index, 1)
|
|
84
86
|
}
|
|
@@ -92,18 +94,24 @@ export class Component {
|
|
|
92
94
|
return null
|
|
93
95
|
}
|
|
94
96
|
|
|
95
|
-
setPropertyParams(name: string, params: string[]) {
|
|
97
|
+
setPropertyParams(name: string, params: string[]): this {
|
|
96
98
|
for (const property of this.properties) {
|
|
97
99
|
if (property.name === name) {
|
|
98
100
|
property.params = params
|
|
99
101
|
}
|
|
100
102
|
}
|
|
103
|
+
return this
|
|
101
104
|
}
|
|
102
105
|
|
|
103
|
-
addComponent(component: Component) {
|
|
106
|
+
addComponent(component: Component): this {
|
|
104
107
|
this.components.push(component)
|
|
108
|
+
return this
|
|
105
109
|
}
|
|
106
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Remove a component from this component
|
|
113
|
+
* @returns `true` if the component was removed. `false` if the component was not present
|
|
114
|
+
*/
|
|
107
115
|
removeComponent(component: Component): boolean {
|
|
108
116
|
const index = this.components.indexOf(component)
|
|
109
117
|
if (index === -1) return false
|
|
@@ -188,24 +196,24 @@ export class Calendar extends Component {
|
|
|
188
196
|
return this.getProperty('PRODID')!.value
|
|
189
197
|
}
|
|
190
198
|
|
|
191
|
-
setProdId(value: string) {
|
|
192
|
-
this.setProperty('PRODID', value)
|
|
199
|
+
setProdId(value: string): this {
|
|
200
|
+
return this.setProperty('PRODID', value)
|
|
193
201
|
}
|
|
194
202
|
|
|
195
203
|
version(): string {
|
|
196
204
|
return this.getProperty('VERSION')!.value
|
|
197
205
|
}
|
|
198
206
|
|
|
199
|
-
setVersion(value: string) {
|
|
200
|
-
this.setProperty('VERSION', value)
|
|
207
|
+
setVersion(value: string): this {
|
|
208
|
+
return this.setProperty('VERSION', value)
|
|
201
209
|
}
|
|
202
210
|
|
|
203
211
|
calScale(): string | undefined {
|
|
204
212
|
return this.getProperty('CALSCALE')?.value
|
|
205
213
|
}
|
|
206
214
|
|
|
207
|
-
setCalScale(value: string) {
|
|
208
|
-
this.setProperty('CALSCALE', value)
|
|
215
|
+
setCalScale(value: string): this {
|
|
216
|
+
return this.setProperty('CALSCALE', value)
|
|
209
217
|
}
|
|
210
218
|
|
|
211
219
|
removeCalScale() {
|
|
@@ -240,8 +248,8 @@ export class Calendar extends Component {
|
|
|
240
248
|
return this.getProperty('X-WR-CALDESC')?.value
|
|
241
249
|
}
|
|
242
250
|
|
|
243
|
-
setCalendarDescription(value: string) {
|
|
244
|
-
this.setProperty('X-WR-CALDESC', value)
|
|
251
|
+
setCalendarDescription(value: string): this {
|
|
252
|
+
return this.setProperty('X-WR-CALDESC', value)
|
|
245
253
|
}
|
|
246
254
|
|
|
247
255
|
removeCalendarDescription() {
|
|
@@ -271,18 +279,18 @@ export class TimeZone extends Component {
|
|
|
271
279
|
return this.getProperty('TZID')!.value
|
|
272
280
|
}
|
|
273
281
|
|
|
274
|
-
setId(value: string) {
|
|
275
|
-
this.setProperty('TZID', value)
|
|
282
|
+
setId(value: string): this {
|
|
283
|
+
return this.setProperty('TZID', value)
|
|
276
284
|
}
|
|
277
285
|
|
|
278
286
|
lastMod(): Date | undefined {
|
|
279
287
|
const text = this.getProperty('LAST-MOD')
|
|
280
288
|
if (!text) return
|
|
281
|
-
return
|
|
289
|
+
return parseDate(text)
|
|
282
290
|
}
|
|
283
291
|
|
|
284
|
-
setLastMod(value: Date) {
|
|
285
|
-
this.setProperty('LAST-MOD', value.toISOString())
|
|
292
|
+
setLastMod(value: Date): this {
|
|
293
|
+
return this.setProperty('LAST-MOD', value.toISOString())
|
|
286
294
|
}
|
|
287
295
|
|
|
288
296
|
removeLastMod() {
|
|
@@ -293,8 +301,8 @@ export class TimeZone extends Component {
|
|
|
293
301
|
return this.getProperty('TZURL')?.value
|
|
294
302
|
}
|
|
295
303
|
|
|
296
|
-
setUrl(value: string) {
|
|
297
|
-
this.setProperty('TZURL', value)
|
|
304
|
+
setUrl(value: string): this {
|
|
305
|
+
return this.setProperty('TZURL', value)
|
|
298
306
|
}
|
|
299
307
|
|
|
300
308
|
removeUrl() {
|
|
@@ -347,7 +355,7 @@ class TimeZoneOffset extends Component {
|
|
|
347
355
|
const offsetFrom = c as Offset
|
|
348
356
|
const offsetTo = d as Offset
|
|
349
357
|
component = new Component(name)
|
|
350
|
-
component.setProperty('DTSTART', start
|
|
358
|
+
component.setProperty('DTSTART', toDateTimeString(start))
|
|
351
359
|
component.setProperty('TZOFFSETFROM', offsetFrom)
|
|
352
360
|
component.setProperty('TZOFFSETTO', offsetTo)
|
|
353
361
|
}
|
|
@@ -355,35 +363,41 @@ class TimeZoneOffset extends Component {
|
|
|
355
363
|
}
|
|
356
364
|
|
|
357
365
|
start(): Date {
|
|
358
|
-
return
|
|
366
|
+
return parseDate(this.getProperty('DTSTART')!)
|
|
359
367
|
}
|
|
360
368
|
|
|
361
|
-
setStart(value: Date) {
|
|
362
|
-
|
|
369
|
+
setStart(value: Date, fullDay: boolean = false): this {
|
|
370
|
+
if (fullDay) {
|
|
371
|
+
this.setProperty('DTSTART', toDateString(value))
|
|
372
|
+
this.setPropertyParams('DTSTART', ['VALUE=DATE'])
|
|
373
|
+
} else {
|
|
374
|
+
this.setProperty('DTSTART', toDateTimeString(value))
|
|
375
|
+
}
|
|
376
|
+
return this
|
|
363
377
|
}
|
|
364
378
|
|
|
365
379
|
offsetFrom(): Offset {
|
|
366
380
|
return this.getProperty('TZOFFSETFROM')!.value as Offset
|
|
367
381
|
}
|
|
368
382
|
|
|
369
|
-
setOffsetFrom(value: Offset) {
|
|
370
|
-
this.setProperty('TZOFFSETFROM', value)
|
|
383
|
+
setOffsetFrom(value: Offset): this {
|
|
384
|
+
return this.setProperty('TZOFFSETFROM', value)
|
|
371
385
|
}
|
|
372
386
|
|
|
373
387
|
offsetTo(): Offset {
|
|
374
388
|
return this.getProperty('TZOFFSETTO')!.value as Offset
|
|
375
389
|
}
|
|
376
390
|
|
|
377
|
-
setOffsetTo(value: Offset) {
|
|
378
|
-
this.setProperty('TZOFFSETTO', value)
|
|
391
|
+
setOffsetTo(value: Offset): this {
|
|
392
|
+
return this.setProperty('TZOFFSETTO', value)
|
|
379
393
|
}
|
|
380
394
|
|
|
381
395
|
comment(): string | undefined {
|
|
382
396
|
return this.getProperty('COMMENT')?.value
|
|
383
397
|
}
|
|
384
398
|
|
|
385
|
-
setComment(value: string) {
|
|
386
|
-
this.setProperty('COMMENT', value)
|
|
399
|
+
setComment(value: string): this {
|
|
400
|
+
return this.setProperty('COMMENT', value)
|
|
387
401
|
}
|
|
388
402
|
|
|
389
403
|
removeComment() {
|
|
@@ -394,8 +408,8 @@ class TimeZoneOffset extends Component {
|
|
|
394
408
|
return this.getProperty('TZNAME')?.value
|
|
395
409
|
}
|
|
396
410
|
|
|
397
|
-
setTimeZoneName(value: string) {
|
|
398
|
-
this.setProperty('TZNAME', value)
|
|
411
|
+
setTimeZoneName(value: string): this {
|
|
412
|
+
return this.setProperty('TZNAME', value)
|
|
399
413
|
}
|
|
400
414
|
|
|
401
415
|
removeTimeZoneName() {
|
|
@@ -415,7 +429,7 @@ export class CalendarEvent extends Component {
|
|
|
415
429
|
const dtstamp = b as Date
|
|
416
430
|
component = new Component('VEVENT')
|
|
417
431
|
component.setProperty('UID', uid)
|
|
418
|
-
component.setProperty('DTSTAMP', dtstamp
|
|
432
|
+
component.setProperty('DTSTAMP', toDateTimeString(dtstamp))
|
|
419
433
|
} else {
|
|
420
434
|
component = a as Component
|
|
421
435
|
}
|
|
@@ -423,27 +437,33 @@ export class CalendarEvent extends Component {
|
|
|
423
437
|
}
|
|
424
438
|
|
|
425
439
|
stamp(): Date {
|
|
426
|
-
return
|
|
440
|
+
return parseDate(this.getProperty('DTSTAMP')!)
|
|
427
441
|
}
|
|
428
442
|
|
|
429
|
-
setStamp(value: Date) {
|
|
430
|
-
|
|
443
|
+
setStamp(value: Date, fullDay: boolean = false): this {
|
|
444
|
+
if (fullDay) {
|
|
445
|
+
this.setProperty('DTSTAMP', toDateString(value))
|
|
446
|
+
this.setPropertyParams('DTSTAMP', ['VALUE=DATE'])
|
|
447
|
+
} else {
|
|
448
|
+
this.setProperty('DTSTAMP', toDateTimeString(value))
|
|
449
|
+
}
|
|
450
|
+
return this
|
|
431
451
|
}
|
|
432
452
|
|
|
433
453
|
uid(): string {
|
|
434
454
|
return this.getProperty('UID')!.value
|
|
435
455
|
}
|
|
436
456
|
|
|
437
|
-
setUid(value: string) {
|
|
438
|
-
this.setProperty('UID', value)
|
|
457
|
+
setUid(value: string): this {
|
|
458
|
+
return this.setProperty('UID', value)
|
|
439
459
|
}
|
|
440
460
|
|
|
441
461
|
summary(): string {
|
|
442
462
|
return this.getProperty('SUMMARY')!.value
|
|
443
463
|
}
|
|
444
464
|
|
|
445
|
-
setSummary(value: string) {
|
|
446
|
-
this.setProperty('SUMMARY', value)
|
|
465
|
+
setSummary(value: string): this {
|
|
466
|
+
return this.setProperty('SUMMARY', value)
|
|
447
467
|
}
|
|
448
468
|
|
|
449
469
|
removeSummary() {
|
|
@@ -454,8 +474,8 @@ export class CalendarEvent extends Component {
|
|
|
454
474
|
return this.getProperty('DESCRIPTION')!.value
|
|
455
475
|
}
|
|
456
476
|
|
|
457
|
-
setDescription(value: string) {
|
|
458
|
-
this.setProperty('DESCRIPTION', value)
|
|
477
|
+
setDescription(value: string): this {
|
|
478
|
+
return this.setProperty('DESCRIPTION', value)
|
|
459
479
|
}
|
|
460
480
|
|
|
461
481
|
removeDescription() {
|
|
@@ -466,32 +486,56 @@ export class CalendarEvent extends Component {
|
|
|
466
486
|
return this.getProperty('LOCATION')?.value
|
|
467
487
|
}
|
|
468
488
|
|
|
469
|
-
setLocation(value: string) {
|
|
470
|
-
this.setProperty('LOCATION', value)
|
|
489
|
+
setLocation(value: string): this {
|
|
490
|
+
return this.setProperty('LOCATION', value)
|
|
471
491
|
}
|
|
472
492
|
|
|
473
493
|
removeLocation() {
|
|
474
494
|
this.removePropertiesWithName('LOCATION')
|
|
475
495
|
}
|
|
476
496
|
|
|
497
|
+
/**
|
|
498
|
+
* Get the start of the event.
|
|
499
|
+
* If set as a full day the time will be at the start of the day.
|
|
500
|
+
*/
|
|
477
501
|
start(): Date {
|
|
478
|
-
return
|
|
502
|
+
return parseDate(this.getProperty('DTSTART')!)
|
|
479
503
|
}
|
|
480
504
|
|
|
481
|
-
|
|
482
|
-
|
|
505
|
+
/** Set the start of the event. */
|
|
506
|
+
setStart(value: Date, fullDay: boolean = false): this {
|
|
507
|
+
if (fullDay) {
|
|
508
|
+
this.setProperty('DTSTART', toDateString(value))
|
|
509
|
+
this.setPropertyParams('DTSTART', ['VALUE=DATE'])
|
|
510
|
+
} else {
|
|
511
|
+
this.setProperty('DTSTART', toDateTimeString(value))
|
|
512
|
+
}
|
|
513
|
+
return this
|
|
483
514
|
}
|
|
484
515
|
|
|
485
516
|
removeStart() {
|
|
486
517
|
this.removePropertiesWithName('DTSTART')
|
|
487
518
|
}
|
|
488
519
|
|
|
520
|
+
/**
|
|
521
|
+
* Get the non-inclusive end of the event.
|
|
522
|
+
* If set as a full day the time will be at the start of the day.
|
|
523
|
+
*/
|
|
489
524
|
end(): Date {
|
|
490
|
-
return
|
|
525
|
+
return parseDate(this.getProperty('DTEND')!)
|
|
491
526
|
}
|
|
492
527
|
|
|
493
|
-
|
|
494
|
-
|
|
528
|
+
/**
|
|
529
|
+
* Set the non-inclusive end of the event.
|
|
530
|
+
*/
|
|
531
|
+
setEnd(value: Date, fullDay: boolean = false): this {
|
|
532
|
+
if (fullDay) {
|
|
533
|
+
this.setProperty('DTEND', toDateString(value))
|
|
534
|
+
this.setPropertyParams('DTEND', ['VALUE=DATE'])
|
|
535
|
+
} else {
|
|
536
|
+
this.setProperty('DTEND', toDateTimeString(value))
|
|
537
|
+
}
|
|
538
|
+
return this
|
|
495
539
|
}
|
|
496
540
|
|
|
497
541
|
removeEnd() {
|
|
@@ -499,13 +543,13 @@ export class CalendarEvent extends Component {
|
|
|
499
543
|
}
|
|
500
544
|
|
|
501
545
|
created(): Date | undefined {
|
|
502
|
-
const
|
|
503
|
-
if (!
|
|
504
|
-
return
|
|
546
|
+
const property = this.getProperty('CREATED')
|
|
547
|
+
if (!property) return
|
|
548
|
+
return parseDate(property)
|
|
505
549
|
}
|
|
506
550
|
|
|
507
|
-
setCreated(value: Date) {
|
|
508
|
-
this.setProperty('CREATED', value
|
|
551
|
+
setCreated(value: Date): this {
|
|
552
|
+
return this.setProperty('CREATED', toDateTimeString(value))
|
|
509
553
|
}
|
|
510
554
|
|
|
511
555
|
removeCreated() {
|
|
@@ -521,7 +565,12 @@ export class CalendarEvent extends Component {
|
|
|
521
565
|
return [parseFloat(longitude), parseFloat(latitude)]
|
|
522
566
|
}
|
|
523
567
|
|
|
524
|
-
setGeo(latitude: number, longitude: number) {
|
|
568
|
+
setGeo(latitude: number, longitude: number): this {
|
|
525
569
|
const text = `${latitude},${longitude}`
|
|
570
|
+
return this
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
removeGeo() {
|
|
574
|
+
this.removePropertiesWithName('GEO')
|
|
526
575
|
}
|
|
527
576
|
}
|
package/src/parse.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import readline from 'readline'
|
|
2
2
|
import { Readable } from 'stream'
|
|
3
3
|
import { Calendar, CalendarEvent, Component } from '.'
|
|
4
|
+
import { Property } from './types'
|
|
4
5
|
|
|
5
6
|
export class DeserializationError extends Error {
|
|
6
7
|
name = 'DeserializationError'
|
|
@@ -162,4 +163,27 @@ export async function parseEvent(text: string): Promise<CalendarEvent> {
|
|
|
162
163
|
if (component.name !== "VEVENT")
|
|
163
164
|
throw new DeserializationError("Not an event")
|
|
164
165
|
return new CalendarEvent(component)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export function parseDate(dateProperty: Property): Date {
|
|
169
|
+
const value = dateProperty.value.trim()
|
|
170
|
+
if (dateProperty.params.includes('VALUE=DATE')) {
|
|
171
|
+
// Parse date only
|
|
172
|
+
return new Date(`${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)}`)
|
|
173
|
+
} else {
|
|
174
|
+
// Parse date and time
|
|
175
|
+
return new Date(`${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)} ${value.substring(9, 11)}:${value.substring(11, 13)}:${value.substring(13, 15)}`)
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export function toTimeString(date: Date): string {
|
|
180
|
+
return `${date.getHours().toString().padStart(2, '0')}${date.getMinutes().toString().padStart(2, '0')}${date.getSeconds().toString().padStart(2, '0')}`
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export function toDateString(date: Date): string {
|
|
184
|
+
return `${date.getFullYear().toString().padStart(4, '0')}${date.getMonth().toString().padStart(2, '0')}${date.getDate().toString().padStart(2, '0')}`
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export function toDateTimeString(date: Date): string {
|
|
188
|
+
return `${toDateString(date)}T${toTimeString(date)}`
|
|
165
189
|
}
|