-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathbase-calendar.generator.mjs
More file actions
46 lines (46 loc) · 6.55 KB
/
Copy pathbase-calendar.generator.mjs
File metadata and controls
46 lines (46 loc) · 6.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
export const MS_IN_MINUTES = 60 * 1000;
export const DATE_POCTUATION_REGEX = /-|:|\.\d+/g;
export class BaseCalendarGenerator {
constructor(event) {
this.event = event;
this.startTime = this.formatTime(event.start);
this.endTime = this.calculateEndTime(event);
this.description = this.formatDescription(event.description || '');
}
get uid() {
return (this.s4()
+ this.s4()
+ '-' + this.s4()
+ '-4' + this.s4().substr(0, 3)
+ '-' + this.s4()
+ '-' + this.s4()
+ this.s4()
+ this.s4()).toLowerCase();
}
formatDescription(description) {
return description.replace(/'/g, '\'');
}
formatDescriptionForOnlineCalendar(description) {
if (description.length) {
return description.replace(/\\r/g, '\n').replace(/\\n/g, '\n');
}
return null;
}
formatTime(date) {
return date.toISOString().replace(DATE_POCTUATION_REGEX, '');
}
calculateEndTime(event) {
if (event.end) {
return this.formatTime(event.end);
}
if (!event.duration) {
throw new Error('You have to provide either the duration or end');
}
return this.formatTime(new Date(event.start.getTime() + (event.duration * MS_IN_MINUTES)));
}
s4() {
// tslint:disable-next-line
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jYWxlbmRhci5nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2VuZXJhdG9ycy9iYXNlLWNhbGVuZGFyLmdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxZQUFZLENBQUM7QUFFbEQsTUFBTSxPQUFnQixxQkFBcUI7SUFPdkMsWUFBc0IsS0FBcUI7UUFBckIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFjLEdBQUc7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtjQUNYLElBQUksQ0FBQyxFQUFFLEVBQUU7Y0FDVCxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRTtjQUNmLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Y0FDN0IsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUU7Y0FDZixHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRTtjQUNmLElBQUksQ0FBQyxFQUFFLEVBQUU7Y0FDVCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRVMsaUJBQWlCLENBQUMsV0FBbUI7UUFDM0MsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRVMsa0NBQWtDLENBQUMsV0FBbUI7UUFDNUQsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQ3BCLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNsRTtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFUyxVQUFVLENBQUMsSUFBVTtRQUMzQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVTLGdCQUFnQixDQUFDLEtBQVU7UUFDakMsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztTQUNyRTtRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVPLEVBQUU7UUFDTiwyQkFBMkI7UUFDM0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2FsZW5kYXJFdmVudCB9IGZyb20gJy4vLi4vbW9kZWwvY2FsZW5kYXItZXZlbnQubW9kZWwnO1xyXG5cclxuZXhwb3J0IGNvbnN0IE1TX0lOX01JTlVURVMgPSA2MCAqIDEwMDA7XHJcbmV4cG9ydCBjb25zdCBEQVRFX1BPQ1RVQVRJT05fUkVHRVggPSAvLXw6fFxcLlxcZCsvZztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ2FsZW5kYXJHZW5lcmF0b3Ige1xyXG4gICAgcHJvdGVjdGVkIHN0YXJ0VGltZTogc3RyaW5nO1xyXG4gICAgcHJvdGVjdGVkIGVuZFRpbWU6IHN0cmluZztcclxuICAgIHByb3RlY3RlZCBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG5cclxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXQgaHJlZigpOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGV2ZW50OiBJQ2FsZW5kYXJFdmVudCkge1xyXG4gICAgICAgIHRoaXMuc3RhcnRUaW1lID0gdGhpcy5mb3JtYXRUaW1lKGV2ZW50LnN0YXJ0KTtcclxuICAgICAgICB0aGlzLmVuZFRpbWUgPSB0aGlzLmNhbGN1bGF0ZUVuZFRpbWUoZXZlbnQpO1xyXG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0aGlzLmZvcm1hdERlc2NyaXB0aW9uKGV2ZW50LmRlc2NyaXB0aW9uIHx8ICcnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IHVpZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zNCgpXHJcbiAgICAgICAgICAgICsgdGhpcy5zNCgpXHJcbiAgICAgICAgICAgICsgJy0nICsgdGhpcy5zNCgpXHJcbiAgICAgICAgICAgICsgJy00JyArIHRoaXMuczQoKS5zdWJzdHIoMCwgMylcclxuICAgICAgICAgICAgKyAnLScgKyB0aGlzLnM0KClcclxuICAgICAgICAgICAgKyAnLScgKyB0aGlzLnM0KClcclxuICAgICAgICAgICAgKyB0aGlzLnM0KClcclxuICAgICAgICAgICAgKyB0aGlzLnM0KCkpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGZvcm1hdERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbi5yZXBsYWNlKC8nL2csICdcXCcnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZm9ybWF0RGVzY3JpcHRpb25Gb3JPbmxpbmVDYWxlbmRhcihkZXNjcmlwdGlvbjogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRpb24ucmVwbGFjZSgvXFxcXHIvZywgJ1xcbicpLnJlcGxhY2UoL1xcXFxuL2csICdcXG4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBmb3JtYXRUaW1lKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCkucmVwbGFjZShEQVRFX1BPQ1RVQVRJT05fUkVHRVgsICcnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY2FsY3VsYXRlRW5kVGltZShldmVudDogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoZXZlbnQuZW5kKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFRpbWUoZXZlbnQuZW5kKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghZXZlbnQuZHVyYXRpb24pIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgaGF2ZSB0byBwcm92aWRlIGVpdGhlciB0aGUgZHVyYXRpb24gb3IgZW5kJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRUaW1lKG5ldyBEYXRlKGV2ZW50LnN0YXJ0LmdldFRpbWUoKSArIChldmVudC5kdXJhdGlvbiAqIE1TX0lOX01JTlVURVMpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzNCgpOiBzdHJpbmcge1xyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxyXG4gICAgICAgIHJldHVybiAoKCgxICsgTWF0aC5yYW5kb20oKSkgKiAweDEwMDAwKSB8IDApLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMSk7XHJcbiAgICB9XHJcbn1cclxuIl19