iamcal 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -11
- package/lib/component.d.ts +46 -9
- package/lib/component.d.ts.map +1 -1
- package/lib/component.js +105 -17
- package/lib/components/Calendar.d.ts +35 -14
- package/lib/components/Calendar.d.ts.map +1 -1
- package/lib/components/Calendar.js +43 -15
- package/lib/components/CalendarEvent.d.ts +84 -22
- package/lib/components/CalendarEvent.d.ts.map +1 -1
- package/lib/components/CalendarEvent.js +142 -67
- package/lib/components/TimeZone.d.ts +62 -39
- package/lib/components/TimeZone.d.ts.map +1 -1
- package/lib/components/TimeZone.js +81 -86
- 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 +1 -0
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/index.js +2 -1
- 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 +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -2
- package/lib/io.d.ts +9 -7
- package/lib/io.d.ts.map +1 -1
- package/lib/io.js +16 -11
- package/lib/parse.d.ts +32 -15
- package/lib/parse.d.ts.map +1 -1
- package/lib/parse.js +55 -53
- 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 +50 -38
- package/src/component.ts +132 -23
- package/src/components/Calendar.ts +58 -20
- package/src/components/CalendarEvent.ts +170 -66
- package/src/components/TimeZone.ts +86 -96
- package/src/components/TimeZoneOffset.ts +187 -0
- package/src/components/index.ts +2 -1
- package/src/date.ts +395 -0
- package/src/index.ts +3 -1
- package/src/io.ts +16 -11
- package/src/parse.ts +71 -51
- package/src/patterns.ts +69 -0
- package/src/property.ts +492 -0
package/lib/parse.js
CHANGED
|
@@ -4,37 +4,38 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.DeserializationError = void 0;
|
|
7
|
+
exports.deserializeComponent = deserializeComponent;
|
|
7
8
|
exports.deserialize = deserialize;
|
|
9
|
+
exports.deserializeComponentString = deserializeComponentString;
|
|
8
10
|
exports.deserializeString = deserializeString;
|
|
9
11
|
exports.parseCalendar = parseCalendar;
|
|
10
12
|
exports.parseEvent = parseEvent;
|
|
11
|
-
exports.parseDate = parseDate;
|
|
12
|
-
exports.toTimeString = toTimeString;
|
|
13
|
-
exports.toDateString = toDateString;
|
|
14
|
-
exports.toDateTimeString = toDateTimeString;
|
|
15
|
-
const component_1 = require("./component");
|
|
16
13
|
const readline_1 = __importDefault(require("readline"));
|
|
17
14
|
const stream_1 = require("stream");
|
|
15
|
+
const component_1 = require("./component");
|
|
18
16
|
const components_1 = require("./components");
|
|
17
|
+
/** Represents an error that occurs when deserializing a calendar component. */
|
|
19
18
|
class DeserializationError extends Error {
|
|
20
19
|
name = 'DeserializationError';
|
|
21
20
|
}
|
|
22
21
|
exports.DeserializationError = DeserializationError;
|
|
23
22
|
/**
|
|
24
|
-
* Deserialize a calendar component
|
|
25
|
-
* @param lines
|
|
23
|
+
* Deserialize a calendar component.
|
|
24
|
+
* @param lines The serialized component as a **readline** interface.
|
|
25
|
+
* @returns The deserialized calendar component object.
|
|
26
|
+
* @throws {DeserializationError} If the component is invalid.
|
|
26
27
|
*/
|
|
27
|
-
async function
|
|
28
|
+
async function deserializeComponent(lines) {
|
|
28
29
|
const component = new component_1.Component('');
|
|
29
30
|
let done = false;
|
|
30
31
|
// We use a stack to keep track of nested components
|
|
31
32
|
const stack = new Array();
|
|
32
33
|
const subcomponentLines = new Array();
|
|
33
|
-
async
|
|
34
|
+
const processLine = async (line) => {
|
|
34
35
|
if (line.trim() === '')
|
|
35
36
|
return;
|
|
36
37
|
if (done) {
|
|
37
|
-
throw new DeserializationError('
|
|
38
|
+
throw new DeserializationError('Found trailing data after component end');
|
|
38
39
|
}
|
|
39
40
|
if (line.startsWith('BEGIN:')) {
|
|
40
41
|
// Begin component
|
|
@@ -50,7 +51,7 @@ async function deserialize(lines) {
|
|
|
50
51
|
else if (line.startsWith('END:')) {
|
|
51
52
|
// End component
|
|
52
53
|
if (stack.length == 0) {
|
|
53
|
-
throw new DeserializationError('
|
|
54
|
+
throw new DeserializationError('Unexpected component end outside of components');
|
|
54
55
|
}
|
|
55
56
|
const stackName = stack.pop();
|
|
56
57
|
const name = line.slice(line.indexOf(':') + 1);
|
|
@@ -60,7 +61,7 @@ async function deserialize(lines) {
|
|
|
60
61
|
// Check the length of the stack after being popped
|
|
61
62
|
if (stack.length == 1) {
|
|
62
63
|
subcomponentLines.push(line);
|
|
63
|
-
const subcomponent = await
|
|
64
|
+
const subcomponent = await deserializeComponentString(subcomponentLines.join('\r\n'));
|
|
64
65
|
subcomponentLines.length = 0;
|
|
65
66
|
component.components.push(subcomponent);
|
|
66
67
|
}
|
|
@@ -73,7 +74,7 @@ async function deserialize(lines) {
|
|
|
73
74
|
}
|
|
74
75
|
else {
|
|
75
76
|
if (stack.length == 0)
|
|
76
|
-
throw new DeserializationError('
|
|
77
|
+
throw new DeserializationError('Found stray property outside of components');
|
|
77
78
|
if (stack.length > 1) {
|
|
78
79
|
// Line of subcomponent
|
|
79
80
|
subcomponentLines.push(line);
|
|
@@ -95,7 +96,7 @@ async function deserialize(lines) {
|
|
|
95
96
|
component.properties.push(property);
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
|
-
}
|
|
99
|
+
};
|
|
99
100
|
/*
|
|
100
101
|
The following code unfolds lines and passes them to be processed above.
|
|
101
102
|
|
|
@@ -132,59 +133,60 @@ async function deserialize(lines) {
|
|
|
132
133
|
await processLine(unfoldedLine);
|
|
133
134
|
// Check that component has been closed
|
|
134
135
|
if (!done) {
|
|
135
|
-
throw new DeserializationError('
|
|
136
|
+
throw new DeserializationError('Component has no end');
|
|
136
137
|
}
|
|
137
138
|
return component;
|
|
138
139
|
}
|
|
139
140
|
/**
|
|
140
|
-
* Deserialize a calendar component
|
|
141
|
-
* @param
|
|
141
|
+
* Deserialize a calendar component.
|
|
142
|
+
* @param lines The serialized component as a **readline** interface.
|
|
143
|
+
* @returns The deserialized calendar component object.
|
|
144
|
+
* @throws {DeserializationError} If the component is invalid.
|
|
145
|
+
* @deprecated Use {@link deserializeComponent} instead.
|
|
142
146
|
*/
|
|
143
|
-
async function
|
|
147
|
+
async function deserialize(lines) {
|
|
148
|
+
return deserializeComponent(lines);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Deserialize a calendar component string.
|
|
152
|
+
* @param text The serialized component.
|
|
153
|
+
* @returns The deserialized component object.
|
|
154
|
+
* @throws {DeserializationError} If the component is invalid.
|
|
155
|
+
*/
|
|
156
|
+
async function deserializeComponentString(text) {
|
|
144
157
|
const stream = stream_1.Readable.from(text);
|
|
145
|
-
const lines = readline_1.default.createInterface({
|
|
146
|
-
|
|
158
|
+
const lines = readline_1.default.createInterface({
|
|
159
|
+
input: stream,
|
|
160
|
+
crlfDelay: Infinity,
|
|
161
|
+
});
|
|
162
|
+
return deserializeComponent(lines);
|
|
147
163
|
}
|
|
148
164
|
/**
|
|
149
|
-
*
|
|
150
|
-
* @param text
|
|
151
|
-
* @returns
|
|
165
|
+
* Deserialize a calendar component string.
|
|
166
|
+
* @param text The serialized component.
|
|
167
|
+
* @returns The deserialized component object.
|
|
168
|
+
* @throws {DeserializationError} If the component is invalid.
|
|
169
|
+
* @deprecated Use {@link deserializeComponentString} instead.
|
|
170
|
+
*/
|
|
171
|
+
async function deserializeString(text) {
|
|
172
|
+
return deserializeComponentString(text);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Parse a serialized calendar.
|
|
176
|
+
* @param text A serialized calendar as you would see in an iCalendar file.
|
|
177
|
+
* @returns The parsed calendar object.
|
|
152
178
|
*/
|
|
153
179
|
async function parseCalendar(text) {
|
|
154
|
-
const component = await
|
|
155
|
-
if (component.name !== "VCALENDAR")
|
|
156
|
-
throw new DeserializationError("Not a calendar");
|
|
180
|
+
const component = await deserializeComponentString(text);
|
|
157
181
|
return new components_1.Calendar(component);
|
|
158
182
|
}
|
|
159
183
|
/**
|
|
160
|
-
* Parse
|
|
161
|
-
* @param text
|
|
162
|
-
* @returns
|
|
184
|
+
* Parse a serialized calendar event.
|
|
185
|
+
* @param text A serialized event as you would see in an iCalendar file.
|
|
186
|
+
* @returns The parsed event object.
|
|
163
187
|
*/
|
|
164
188
|
async function parseEvent(text) {
|
|
165
|
-
const component = await
|
|
166
|
-
if (component.name !== "VEVENT")
|
|
167
|
-
throw new DeserializationError("Not an event");
|
|
189
|
+
const component = await deserializeComponentString(text);
|
|
168
190
|
return new components_1.CalendarEvent(component);
|
|
169
191
|
}
|
|
170
|
-
|
|
171
|
-
const value = dateProperty.value.trim();
|
|
172
|
-
if (dateProperty.params.includes('VALUE=DATE')) {
|
|
173
|
-
// Parse date only
|
|
174
|
-
return new Date(`${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)}`);
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
// Parse date and time
|
|
178
|
-
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)}`);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
function toTimeString(date) {
|
|
182
|
-
return `${date.getHours().toString().padStart(2, '0')}${date.getMinutes().toString().padStart(2, '0')}${date.getSeconds().toString().padStart(2, '0')}`;
|
|
183
|
-
}
|
|
184
|
-
function toDateString(date) {
|
|
185
|
-
return `${date.getFullYear().toString().padStart(4, '0')}${date.getMonth().toString().padStart(2, '0')}${date.getDate().toString().padStart(2, '0')}`;
|
|
186
|
-
}
|
|
187
|
-
function toDateTimeString(date) {
|
|
188
|
-
return `${toDateString(date)}T${toTimeString(date)}`;
|
|
189
|
-
}
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBYUEsa0NBc0hDO0FBTUQsOENBSUM7QUFPRCxzQ0FLQztBQU9ELGdDQUtDO0FBRUQsOEJBU0M7QUFFRCxvQ0FFQztBQUVELG9DQUVDO0FBRUQsNENBRUM7QUE1TEQsMkNBQWlEO0FBQ2pELHdEQUErQjtBQUMvQixtQ0FBaUM7QUFDakMsNkNBQXNEO0FBRXRELE1BQWEsb0JBQXFCLFNBQVEsS0FBSztJQUMzQyxJQUFJLEdBQUcsc0JBQXNCLENBQUE7Q0FDaEM7QUFGRCxvREFFQztBQUVEOzs7R0FHRztBQUNJLEtBQUssVUFBVSxXQUFXLENBQUMsS0FBeUI7SUFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ25DLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQTtJQUVoQixvREFBb0Q7SUFDcEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQTtJQUVqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUE7SUFFN0MsS0FBSyxVQUFVLFdBQVcsQ0FBQyxJQUFZO1FBQ25DLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFBRSxPQUFNO1FBRTlCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxNQUFNLElBQUksb0JBQW9CLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtRQUN2RSxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDNUIsa0JBQWtCO1lBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUM5QyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFB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
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBZ0JBLG9EQW1JQztBQVNELGtDQUlDO0FBUUQsZ0VBU0M7QUFTRCw4Q0FFQztBQU9ELHNDQUdDO0FBT0QsZ0NBR0M7QUFoTkQsd0RBQStCO0FBQy9CLG1DQUFpQztBQUNqQywyQ0FBdUM7QUFDdkMsNkNBQXNEO0FBRXRELCtFQUErRTtBQUMvRSxNQUFhLG9CQUFxQixTQUFRLEtBQUs7SUFDM0MsSUFBSSxHQUFHLHNCQUFzQixDQUFBO0NBQ2hDO0FBRkQsb0RBRUM7QUFFRDs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxvQkFBb0IsQ0FDdEMsS0FBeUI7SUFFekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ25DLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQTtJQUVoQixvREFBb0Q7SUFDcEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQTtJQUVqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUE7SUFFN0MsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ3ZDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFBRSxPQUFNO1FBRTlCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxNQUFNLElBQUksb0JBQW9CLENBQzFCLHlDQUF5QyxDQUM1QyxDQUFBO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzVCLGtCQUFrQjtZQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDOUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJ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
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare const CONTROL: RegExp;
|
|
2
|
+
export declare const NON_US_ASCII: RegExp;
|
|
3
|
+
export declare const VALUE_CHAR: RegExp;
|
|
4
|
+
export declare const SAFE_CHAR: RegExp;
|
|
5
|
+
export declare const QSAFE_CHAR: RegExp;
|
|
6
|
+
export declare const quotedString: RegExp;
|
|
7
|
+
export declare const value: RegExp;
|
|
8
|
+
export declare const paramtext: RegExp;
|
|
9
|
+
export declare const paramValue: RegExp;
|
|
10
|
+
export declare const vendorId: RegExp;
|
|
11
|
+
export declare const xName: RegExp;
|
|
12
|
+
export declare const ianaToken: RegExp;
|
|
13
|
+
export declare const paramName: RegExp;
|
|
14
|
+
export declare const param: RegExp;
|
|
15
|
+
export declare const name: RegExp;
|
|
16
|
+
export declare const contentline: RegExp;
|
|
17
|
+
export declare const TSAFE_CHAR: RegExp;
|
|
18
|
+
export declare const valueTypeBinary: RegExp;
|
|
19
|
+
export declare const valueTypeBoolean: RegExp;
|
|
20
|
+
export declare const valueTypeDate: RegExp;
|
|
21
|
+
export declare const valueTypeDateTime: RegExp;
|
|
22
|
+
export declare const valueTypeDuration: RegExp;
|
|
23
|
+
export declare const valueTypeFloat: RegExp;
|
|
24
|
+
export declare const valueTypeInteger: RegExp;
|
|
25
|
+
export declare const valueTypePeriod: RegExp;
|
|
26
|
+
export declare const valueTypeText: RegExp;
|
|
27
|
+
export declare const valueTypeTime: RegExp;
|
|
28
|
+
export declare const valueTypeUtcOffset: RegExp;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a string matches a pattern for the whole string.
|
|
31
|
+
* @param pattern The RegExp pattern to match against.
|
|
32
|
+
* @param text The text to check.
|
|
33
|
+
* @returns Whether or not the string matches.
|
|
34
|
+
*/
|
|
35
|
+
export declare function matchesWholeString(pattern: RegExp, text: string): boolean;
|
|
36
|
+
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,QAA8B,CAAA;AAClD,eAAO,MAAM,YAAY,QAAkB,CAAA;AAC3C,eAAO,MAAM,UAAU,QAEtB,CAAA;AACD,eAAO,MAAM,SAAS,QAIrB,CAAA;AACD,eAAO,MAAM,UAAU,QAEtB,CAAA;AACD,eAAO,MAAM,YAAY,QAA+C,CAAA;AACxE,eAAO,MAAM,KAAK,QAA6C,CAAA;AAC/D,eAAO,MAAM,SAAS,QAA4C,CAAA;AAClE,eAAO,MAAM,UAAU,QAEtB,CAAA;AACD,eAAO,MAAM,QAAQ,QAAmB,CAAA;AACxC,eAAO,MAAM,KAAK,QAA0D,CAAA;AAC5E,eAAO,MAAM,SAAS,QAAiB,CAAA;AACvC,eAAO,MAAM,SAAS,QAAoD,CAAA;AAC1E,eAAO,MAAM,KAAK,QAEjB,CAAA;AACD,eAAO,MAAM,IAAI,QAAoD,CAAA;AACrE,eAAO,MAAM,WAAW,QAEvB,CAAA;AAED,eAAO,MAAM,UAAU,QAItB,CAAA;AAGD,eAAO,MAAM,eAAe,QACgC,CAAA;AAC5D,eAAO,MAAM,gBAAgB,QAAiB,CAAA;AAC9C,eAAO,MAAM,aAAa,QAAa,CAAA;AACvC,eAAO,MAAM,iBAAiB,QAAwB,CAAA;AACtD,eAAO,MAAM,iBAAiB,QACqH,CAAA;AACnJ,eAAO,MAAM,cAAc,QAA8B,CAAA;AACzD,eAAO,MAAM,gBAAgB,QAAmB,CAAA;AAChD,eAAO,MAAM,eAAe,QAE3B,CAAA;AACD,eAAO,MAAM,aAAa,QAEzB,CAAA;AACD,eAAO,MAAM,aAAa,QAAe,CAAA;AACzC,eAAO,MAAM,kBAAkB,QAAwB,CAAA;AAEvD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGzE"}
|
package/lib/patterns.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable no-control-regex */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.valueTypeUtcOffset = exports.valueTypeTime = exports.valueTypeText = exports.valueTypePeriod = exports.valueTypeInteger = exports.valueTypeFloat = exports.valueTypeDuration = exports.valueTypeDateTime = exports.valueTypeDate = exports.valueTypeBoolean = exports.valueTypeBinary = exports.TSAFE_CHAR = exports.contentline = exports.name = exports.param = exports.paramName = exports.ianaToken = exports.xName = exports.vendorId = exports.paramValue = exports.paramtext = exports.value = exports.quotedString = exports.QSAFE_CHAR = exports.SAFE_CHAR = exports.VALUE_CHAR = exports.NON_US_ASCII = exports.CONTROL = void 0;
|
|
5
|
+
exports.matchesWholeString = matchesWholeString;
|
|
6
|
+
// ABNF patterns from RFC5545
|
|
7
|
+
exports.CONTROL = /[\x00-\x08\x0A-\x1F\x7F]/g;
|
|
8
|
+
exports.NON_US_ASCII = /[^\x00-\x7F]/g;
|
|
9
|
+
exports.VALUE_CHAR = new RegExp(/[\x09\x20\x21-\x7E]/.source + '|' + exports.NON_US_ASCII.source);
|
|
10
|
+
exports.SAFE_CHAR = new RegExp(/[\x09\x20\x21\x23-\x2B\x2D-\x39\x3C-\x7E]/.source +
|
|
11
|
+
'|' +
|
|
12
|
+
exports.NON_US_ASCII.source);
|
|
13
|
+
exports.QSAFE_CHAR = new RegExp(/[\x09\x20\x21\x23-\x7E]/.source + '|(' + exports.NON_US_ASCII.source + ')');
|
|
14
|
+
exports.quotedString = new RegExp('"(' + exports.QSAFE_CHAR.source + ')*"');
|
|
15
|
+
exports.value = new RegExp('(' + exports.VALUE_CHAR.source + ')*');
|
|
16
|
+
exports.paramtext = new RegExp('(' + exports.SAFE_CHAR.source + ')*');
|
|
17
|
+
exports.paramValue = new RegExp('(' + exports.paramtext.source + ')|(' + exports.quotedString.source + ')');
|
|
18
|
+
exports.vendorId = /[0-9a-zA-Z]{3}/;
|
|
19
|
+
exports.xName = new RegExp('X-(' + exports.vendorId.source + '-)?[0-9a-zA-Z-]');
|
|
20
|
+
exports.ianaToken = /[0-9a-zA-Z-]/;
|
|
21
|
+
exports.paramName = new RegExp(exports.ianaToken.source + '|' + exports.xName.source);
|
|
22
|
+
exports.param = new RegExp(exports.paramName.source + '=' + exports.paramValue.source + '(,' + exports.paramValue.source + ')*');
|
|
23
|
+
exports.name = new RegExp(exports.ianaToken.source + '|' + exports.xName.source);
|
|
24
|
+
exports.contentline = new RegExp(exports.name.source + '(;' + exports.param.source + ')*:' + exports.xName.source + '\r\n');
|
|
25
|
+
exports.TSAFE_CHAR = new RegExp(/[\x09\x20\x21\x23-\x2B\x2D-\x39\x3C-\x5B\x5D-\x7E]/.source +
|
|
26
|
+
'|' +
|
|
27
|
+
exports.NON_US_ASCII.source);
|
|
28
|
+
// Property value type patterns
|
|
29
|
+
exports.valueTypeBinary = /([0-9a-zA-Z+/]{4})*([0-9a-zA-Z]{2}==|[0-9a-zA-Z]{3}=)?/;
|
|
30
|
+
exports.valueTypeBoolean = /(TRUE|FALSE)/;
|
|
31
|
+
exports.valueTypeDate = /[0-9]{8}/;
|
|
32
|
+
exports.valueTypeDateTime = /[0-9]{8}T[0-9]{6}Z?/;
|
|
33
|
+
exports.valueTypeDuration = /(\+?|-)P([0-9]+D(T([0-9]+H([0-9]+M([0-9]+S)?)?|[0-9]+M([0-9]+S)?|[0-9]+S))?|T([0-9]+H([0-9]+M([0-9]+S)?)?|[0-9]+M([0-9]+S)?|[0-9]+S)|[0-9]+W)/;
|
|
34
|
+
exports.valueTypeFloat = /(\+?|-)?[0-9]+(\.[0-9]+)?/;
|
|
35
|
+
exports.valueTypeInteger = /(\+?|-)?[0-9]+/;
|
|
36
|
+
exports.valueTypePeriod = new RegExp(`${exports.valueTypeDateTime.source}/(${exports.valueTypeDateTime}|${exports.valueTypeDuration.source})`);
|
|
37
|
+
exports.valueTypeText = new RegExp('((' + exports.TSAFE_CHAR.source + ')|:|"|\\[\\;,Nn])*');
|
|
38
|
+
exports.valueTypeTime = /[0-9]{6}Z?/;
|
|
39
|
+
exports.valueTypeUtcOffset = /[+-]([0-9]{2}){2,3}/;
|
|
40
|
+
/**
|
|
41
|
+
* Check if a string matches a pattern for the whole string.
|
|
42
|
+
* @param pattern The RegExp pattern to match against.
|
|
43
|
+
* @param text The text to check.
|
|
44
|
+
* @returns Whether or not the string matches.
|
|
45
|
+
*/
|
|
46
|
+
function matchesWholeString(pattern, text) {
|
|
47
|
+
const match = text.match(pattern);
|
|
48
|
+
return match !== null && match[0] === text;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGF0dGVybnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFDQUFxQzs7O0FBaUVyQyxnREFHQztBQWxFRCw2QkFBNkI7QUFDaEIsUUFBQSxPQUFPLEdBQUcsMkJBQTJCLENBQUE7QUFDckMsUUFBQSxZQUFZLEdBQUcsZUFBZSxDQUFBO0FBQzlCLFFBQUEsVUFBVSxHQUFHLElBQUksTUFBTSxDQUNoQyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLG9CQUFZLENBQUMsTUFBTSxDQUMzRCxDQUFBO0FBQ1ksUUFBQSxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQy9CLDJDQUEyQyxDQUFDLE1BQU07SUFDOUMsR0FBRztJQUNILG9CQUFZLENBQUMsTUFBTSxDQUMxQixDQUFBO0FBQ1ksUUFBQSxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQ2hDLHlCQUF5QixDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsb0JBQVksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUN0RSxDQUFBO0FBQ1ksUUFBQSxZQUFZLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxHQUFHLGtCQUFVLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFBO0FBQzNELFFBQUEsS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsR0FBRyxrQkFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQTtBQUNsRCxRQUFBLFNBQVMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsaUJBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUE7QUFDckQsUUFBQSxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQ2hDLEdBQUcsR0FBRyxpQkFBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsb0JBQVksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUM3RCxDQUFBO0FBQ1ksUUFBQSxRQUFRLEdBQUcsZ0JBQWdCLENBQUE7QUFDM0IsUUFBQSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLGdCQUFRLENBQUMsTUFBTSxHQUFHLGlCQUFpQixDQUFDLENBQUE7QUFDL0QsUUFBQSxTQUFTLEdBQUcsY0FBYyxDQUFBO0FBQzFCLFFBQUEsU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLGlCQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxhQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDN0QsUUFBQSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQzNCLGlCQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxrQkFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsa0JBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUMvRSxDQUFBO0FBQ1ksUUFBQSxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsaUJBQVMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUN4RCxRQUFBLFdBQVcsR0FBRyxJQUFJLE1BQU0sQ0FDakMsWUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsYUFBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsYUFBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQ3BFLENBQUE7QUFFWSxRQUFBLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FDaEMsb0RBQW9ELENBQUMsTUFBTTtJQUN2RCxHQUFHO0lBQ0gsb0JBQVksQ0FBQyxNQUFNLENBQzFCLENBQUE7QUFFRCwrQkFBK0I7QUFDbEIsUUFBQSxlQUFlLEdBQ3hCLHdEQUF3RCxDQUFBO0FBQy9DLFFBQUEsZ0JBQWdCLEdBQUcsY0FBYyxDQUFBO0FBQ2pDLFFBQUEsYUFBYSxHQUFHLFVBQVUsQ0FBQTtBQUMxQixRQUFBLGlCQUFpQixHQUFHLHFCQUFxQixDQUFBO0FBQ3pDLFFBQUEsaUJBQWlCLEdBQzFCLCtJQUErSSxDQUFBO0FBQ3RJLFFBQUEsY0FBYyxHQUFHLDJCQUEyQixDQUFBO0FBQzVDLFFBQUEsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUE7QUFDbkMsUUFBQSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQ3JDLEdBQUcseUJBQWlCLENBQUMsTUFBTSxLQUFLLHlCQUFpQixJQUFJLHlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUNuRixDQUFBO0FBQ1ksUUFBQSxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQ25DLElBQUksR0FBRyxrQkFBVSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsQ0FDbEQsQ0FBQTtBQUNZLFFBQUEsYUFBYSxHQUFHLFlBQVksQ0FBQTtBQUM1QixRQUFBLGtCQUFrQixHQUFHLHFCQUFxQixDQUFBO0FBRXZEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsT0FBZSxFQUFFLElBQVk7SUFDNUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNqQyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQTtBQUM5QyxDQUFDIn0=
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
export interface Property {
|
|
2
|
+
name: string;
|
|
3
|
+
params: string[];
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const knownPropertyNames: readonly ["CALSCALE", "METHOD", "PRODID", "VERSION", "ATTACH", "CATEGORIES", "CLASS", "COMMENT", "DESCRIPTION", "GEO", "LOCATION", "PERCENT-COMPLETE", "PRIORITY", "RESOURCES", "STATUS", "SUMMARY", "COMPLETED", "DTEND", "DUE", "DTSTART", "DURATION", "FREEBUSY", "TRANSP", "TZID", "TZNAME", "TZOFFSETFROM", "TZOFFSETTO", "TZURL", "ATTENDEE", "CONTACT", "ORGANIZER", "RECURRENCE-ID", "RELATED-TO", "URL", "UID", "EXDATE", "RDATE", "RRULE", "ACTION", "REPEAT", "TRIGGER", "CREATED", "DTSTAMP", "LAST-MODIFIED", "SEQUENCE", "REQUEST-STATUS"];
|
|
7
|
+
export type KnownPropertyName = (typeof knownPropertyNames)[number];
|
|
8
|
+
export type AllowedPropertyName = KnownPropertyName | (`X-${string}` & {}) | (string & {});
|
|
9
|
+
export declare const knownValueTypes: readonly ["BINARY", "BOOLEAN", "CAL-ADDRESS", "DATE", "DATE-TIME", "DURATION", "FLOAT", "INTEGER", "PERIOD", "RECUR", "TEXT", "TIME", "URI", "UTC-OFFSET"];
|
|
10
|
+
export type KnownValueType = (typeof knownValueTypes)[number];
|
|
11
|
+
export type AllowedValueType = KnownValueType | (string & {});
|
|
12
|
+
/**
|
|
13
|
+
* The value types that each property supports as defined by the iCalendar
|
|
14
|
+
* specification. The first in the list is the default type.
|
|
15
|
+
*/
|
|
16
|
+
export declare const supportedValueTypes: {
|
|
17
|
+
[name in KnownPropertyName]: KnownValueType[];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Get the value type of a property, as defined by the VALUE parameter.
|
|
21
|
+
* @param property The property to get the value type of.
|
|
22
|
+
* @returns The value type if present, else `undefined`.
|
|
23
|
+
* @throws If the parameter value is misformed.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getPropertyValueType(property: Property): AllowedValueType | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Get the value type of a property, as defined by the VALUE parameter.
|
|
28
|
+
* @param property The property to get the value type of.
|
|
29
|
+
* @param defaultValue The default value to return if the property VALUE parameter is not present.
|
|
30
|
+
* @returns The value type if present, else `defaultValue` or `undefined`.
|
|
31
|
+
* @throws If the parameter value is misformed.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getPropertyValueType(property: Property, defaultValue: AllowedValueType): AllowedValueType;
|
|
34
|
+
export declare function getPropertyValueType(property: Property, defaultValue: AllowedValueType | undefined): AllowedValueType | undefined;
|
|
35
|
+
/** Represents an error which occurs while validating a calendar property. */
|
|
36
|
+
export declare class PropertyValidationError extends Error {
|
|
37
|
+
constructor(message: string);
|
|
38
|
+
}
|
|
39
|
+
/** Represents an error which occurs if a required property is missing. */
|
|
40
|
+
export declare class MissingPropertyError extends Error {
|
|
41
|
+
constructor(message: string);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Validate if a property value is a valid binary string.
|
|
45
|
+
* @param value The property value to validate.
|
|
46
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
47
|
+
*/
|
|
48
|
+
export declare function validateBinary(value: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Validate if a property value is a valid boolean.
|
|
51
|
+
* @param value The property value to validate.
|
|
52
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
53
|
+
*/
|
|
54
|
+
export declare function validateBoolean(value: string): void;
|
|
55
|
+
/**
|
|
56
|
+
* Validate if a property value is a valid calendar user address.
|
|
57
|
+
* @param value The property value to validate.
|
|
58
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
59
|
+
*/
|
|
60
|
+
export declare function validateCalendarUserAddress(value: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* Validate if a property value is a valid date.
|
|
63
|
+
* @param value The property value to validate.
|
|
64
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
65
|
+
*/
|
|
66
|
+
export declare function validateDate(value: string): void;
|
|
67
|
+
/**
|
|
68
|
+
* Validate if a property value is a valid date-time.
|
|
69
|
+
* @param value The property value to validate.
|
|
70
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
71
|
+
*/
|
|
72
|
+
export declare function validateDateTime(value: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* Validate if a property value is a valid duration.
|
|
75
|
+
* @param value The property value to validate.
|
|
76
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
77
|
+
*/
|
|
78
|
+
export declare function validateDuration(value: string): void;
|
|
79
|
+
/**
|
|
80
|
+
* Validate if a property value is a valid float.
|
|
81
|
+
* @param value The property value to validate.
|
|
82
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
83
|
+
*/
|
|
84
|
+
export declare function validateFloat(value: string): void;
|
|
85
|
+
/**
|
|
86
|
+
* Validate if a property value is a valid integer.
|
|
87
|
+
* @param value The property value to validate.
|
|
88
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
89
|
+
*/
|
|
90
|
+
export declare function validateInteger(value: string): void;
|
|
91
|
+
/**
|
|
92
|
+
* Validate if a property value is a valid period.
|
|
93
|
+
* @param value The property value to validate.
|
|
94
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
95
|
+
*/
|
|
96
|
+
export declare function validatePeriod(value: string): void;
|
|
97
|
+
/**
|
|
98
|
+
* Validate if a property value is a valid recurrence rule.
|
|
99
|
+
* @param value The property value to validate.
|
|
100
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
101
|
+
*/
|
|
102
|
+
export declare function validateRecurrenceRule(value: string): void;
|
|
103
|
+
/**
|
|
104
|
+
* Validate if a property value is valid text.
|
|
105
|
+
* @param value The property value to validate.
|
|
106
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
107
|
+
*/
|
|
108
|
+
export declare function validateText(value: string): void;
|
|
109
|
+
/**
|
|
110
|
+
* Validate if a property value is a valid time.
|
|
111
|
+
* @param value The property value to validate.
|
|
112
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
113
|
+
*/
|
|
114
|
+
export declare function validateTime(value: string): void;
|
|
115
|
+
/**
|
|
116
|
+
* Validate if a property value is a valid URI.
|
|
117
|
+
* @param value The property value to validate.
|
|
118
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
119
|
+
*/
|
|
120
|
+
export declare function validateUri(value: string): void;
|
|
121
|
+
/**
|
|
122
|
+
* Validate if a property value is a valid UTC offset.
|
|
123
|
+
* @param value The property value to validate.
|
|
124
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
125
|
+
*/
|
|
126
|
+
export declare function validateUtcOffset(value: string): void;
|
|
127
|
+
/**
|
|
128
|
+
* Validate a property value for a set value type.
|
|
129
|
+
* @param value The property value to validate.
|
|
130
|
+
* @param type The property value type which `value` will be validated against.
|
|
131
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
132
|
+
*/
|
|
133
|
+
export declare function validateValue(value: string, type: AllowedValueType): void;
|
|
134
|
+
/**
|
|
135
|
+
* Validate the value of a property based on it's value type.
|
|
136
|
+
*
|
|
137
|
+
* The validation will fail if the property:
|
|
138
|
+
*
|
|
139
|
+
* - has a value which is not valid for its value type.
|
|
140
|
+
* - has a value type which is not valid for that property.
|
|
141
|
+
* - has no known value type and is invalid TEXT. (see below)
|
|
142
|
+
*
|
|
143
|
+
* Unknown properties are validated as TEXT by if no value type is set, as
|
|
144
|
+
* defined by {@link https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.8|RFC5545#3.8.8.}
|
|
145
|
+
* @param property The property to validate.
|
|
146
|
+
* @throws {PropertyValidationError} If the validation fails.
|
|
147
|
+
*/
|
|
148
|
+
export declare function validateProperty(property: Property): void;
|
|
149
|
+
//# sourceMappingURL=property.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../src/property.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,kBAAkB,0hBA+CrB,CAAA;AACV,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AACnE,MAAM,MAAM,mBAAmB,GACzB,iBAAiB,GACjB,CAAC,KAAK,MAAM,EAAE,GAAG,EAAE,CAAC,GACpB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEnB,eAAO,MAAM,eAAe,4JAelB,CAAA;AACV,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAC7D,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAE7D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE;KAC7B,IAAI,IAAI,iBAAiB,GAAG,cAAc,EAAE;CAgDhD,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,QAAQ,GACnB,gBAAgB,GAAG,SAAS,CAAA;AAE/B;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,gBAAgB,GAC/B,gBAAgB,CAAA;AACnB,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,gBAAgB,GAAG,SAAS,GAC3C,gBAAgB,GAAG,SAAS,CAAA;AAqB/B,6EAA6E;AAC7E,qBAAa,uBAAwB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI9B;AAED,0EAA0E;AAC1E,qBAAa,oBAAqB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI9B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,QAK3C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,QAK5C;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,QAQxD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,QAQzC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,QAQ7C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,QAK7C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,QAK1C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,QAK5C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,QAK3C;AAED;;;;GAIG;AAEH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,QAEnD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,QAKzC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,QAKzC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,QAQxC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,QAK9C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,QAgDlE;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,QAuClD"}
|