From c6c65f9e8273a5bc1b2ac1155d66003d2b98591c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 4 Oct 2021 17:40:59 +0200 Subject: {.js => .ts} on relavant files. --- static/types.ts | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 static/types.ts (limited to 'static/types.ts') diff --git a/static/types.ts b/static/types.ts new file mode 100644 index 00000000..02ae2261 --- /dev/null +++ b/static/types.ts @@ -0,0 +1,109 @@ + +let all_types = [ + 'text', + 'uri', + 'binary', + 'float', /* Number.type = 'float' */ + 'integer', /* Number.type = 'integer' */ + 'date-time', /* Date */ + 'date', /* Date.dateonly = true */ + 'duration', + 'period', + 'utc-offset', + 'cal-address', + 'recur', /* RRule */ + 'boolean', /* boolean */ +] + +let property_names = [ + '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', 'exrule', 'rdate', 'rrule', 'action', + 'repeat', 'trigger', 'created', 'dtstamp', 'last-modified', 'sequence', 'request-status' +]; + + +let valid_fields = { + 'VCALENDAR': ['PRODID', 'VERSION', 'CALSCALE', 'METHOD'], + 'VEVENT': ['DTSTAMP', 'UID', 'DTSTART', 'CLASS', 'CREATED', + 'DESCRIPTION', 'GEO', 'LAST-MODIFIED', 'LOCATION', + 'ORGANIZER', 'PRIORITY', 'SEQUENCE', 'STATUS', + 'SUMMARY', 'TRANSP', 'URL', 'RECURRENCE-ID', + 'RRULE', 'DTEND', 'DURATION', 'ATTACH', 'ATTENDEE', + 'CATEGORIES', 'COMMENT', 'CONTACT', 'EXDATE', + 'REQUEST-STATUS', 'RELATED-TO', 'RESOURCES', 'RDATE'], + 'VTODO': ['DTSTAMP', 'UID', 'CLASS', 'COMPLETED', 'CREATED', + 'DESCRIPTION', 'DTSTART', 'GEO', 'LAST-MODIFIED', + 'LOCATION', 'ORGANIZER', 'PERCENT-COMPLETE', 'PRIORITY', + 'RECURRENCE-ID', 'SEQUENCE', 'STATUS', 'SUMMARY', 'URL', + 'RRULE', 'DUE', 'DURATION', 'ATTACH', 'ATTENDEE', 'CATEGORIES', + 'COMMENT', 'CONTACT', 'EXDATE', 'REQUEST-STATUS', 'RELATED-TO', + 'RESOURCES', 'RDATE',], + 'VJOURNAL': ['DTSTAMP', 'UID', 'CLASS', 'CREATED', 'DTSTART', 'LAST-MODIFIED', + 'ORGANIZER', 'RECURRENCE-ID', 'SEQUENCE', 'STATUS', 'SUMMARY', + 'URL', 'RRULE', 'ATTACH', 'ATTENDEE', 'CATEGORIES', 'COMMENT', + 'CONTACT', 'DESCRIPTION', 'EXDATE', 'RELATED-TO', 'RDATE', + 'REQUEST-STATUS'], + 'VFREEBUSY': ['DTSTAMP', 'UID', 'CONTACT', 'DTSTART', 'DTEND', + 'ORGANIZER', 'URL', 'ATTENDEE', 'COMMENT', 'FREEBUSY', + 'REQUEST-STATUS'], + 'VTIMEZONE': ['TZID', 'LAST-MODIFIED', 'TZURL'], + 'VALARM': ['ACTION', 'TRIGGER', 'DURATION', 'REPEAT', 'ATTACH', + 'DESCRIPTION', 'SUMMARY', 'ATTENDEE'], + 'STANDARD': ['DTSTART', 'TZOFFSETFROM', 'TZOFFSETTO', 'RRULE', + 'COMMENT', 'RDATE', 'TZNAME'], +}; + +valid_fields['DAYLIGHT'] = valid_fields['STANDARD']; + + +let valid_input_types = { + 'ACTION': ['text'], // AUDIO|DISPLAY|EMAIL|*other* + 'ATTACH': ['uri', 'binary'], + 'ATTENDEE': ['cal-address'], + 'CALSCALE': ['text'], + 'CATEGORIES': [['text']], + 'CLASS': ['text'], // PUBLIC|PRIVATE|CONFIDENTIAL|*other* + 'COMMENT': ['text'], + 'COMPLETED': ['date-time'], + 'CONTACT': ['text'], + 'CREATED': ['date-time'], + 'DESCRIPTION': ['text'], + 'DTEND': ['date', 'date-time'], + 'DTSTAMP': ['date-time'], + 'DTSTART': ['date', 'date-time'], + 'DUE': ['date', 'date-time'], + 'DURATION': ['duration'], + 'EXDATE': [['date', 'date-time']], + 'FREEBUSY': [['period']], + 'GEO': ['float'], // pair of floats + 'LAST-MODIFIED': ['date-time'], + 'LOCATION': ['text'], + 'METHOD': ['text'], + 'ORGANIZER': ['cal-address'], + 'PERCENT-COMPLETE': ['integer'], // 0-100 + 'PRIORITY': ['integer'], // 0-9 + 'PRODID': ['text'], + 'RDATE': [['date', 'date-time', 'period']], + 'RECURRENCE-ID': ['date', 'date-time'], + 'RELATED-TO': ['text'], + 'REPEAT': ['integer'], + 'REQUEST-STATUS': ['text'], + 'RESOURCES': [['text']], + 'RRULE': ['recur'], + 'SEQUENCE': ['integer'], + 'STATUS': ['text'], // see 3.8.1.11 + 'SUMMARY': ['text'], + 'TRANSP': ['text'], // OPAQUE|TRANSPARENT + 'TRIGGER': ['duration', 'date-time'], + 'TZID': ['text'], + 'TZNAME': ['text'], + 'TZOFFSETFROM': ['utc-offset'], + 'TZOFFSETTO': ['utc-offset'], + 'TZURL': ['uri'], + 'URL': ['uri'], + 'VERSION': ['text'], +} -- cgit v1.2.3 From 8ec2f441d40ab89b40cc3158f65c914eff497cee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 4 Oct 2021 23:18:24 +0200 Subject: Major typescript work. --- static/types.ts | 228 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 150 insertions(+), 78 deletions(-) (limited to 'static/types.ts') diff --git a/static/types.ts b/static/types.ts index 02ae2261..7e10e90e 100644 --- a/static/types.ts +++ b/static/types.ts @@ -15,6 +15,22 @@ let all_types = [ 'boolean', /* boolean */ ] +type ical_type + = 'text' + | 'uri' + | 'binary' + | 'float' + | 'integer' + | 'date-time' + | 'date' + | 'duration' + | 'period' + | 'utc-offset' + | 'cal-address' + | 'recur' + | 'boolean' + | 'unknown' + let property_names = [ 'calscale', 'method', 'prodid', 'version', 'attach', 'categories', 'class', 'comment', 'description', 'geo', 'location', 'percent-complete', @@ -26,84 +42,140 @@ let property_names = [ ]; -let valid_fields = { - 'VCALENDAR': ['PRODID', 'VERSION', 'CALSCALE', 'METHOD'], - 'VEVENT': ['DTSTAMP', 'UID', 'DTSTART', 'CLASS', 'CREATED', - 'DESCRIPTION', 'GEO', 'LAST-MODIFIED', 'LOCATION', - 'ORGANIZER', 'PRIORITY', 'SEQUENCE', 'STATUS', - 'SUMMARY', 'TRANSP', 'URL', 'RECURRENCE-ID', - 'RRULE', 'DTEND', 'DURATION', 'ATTACH', 'ATTENDEE', - 'CATEGORIES', 'COMMENT', 'CONTACT', 'EXDATE', - 'REQUEST-STATUS', 'RELATED-TO', 'RESOURCES', 'RDATE'], - 'VTODO': ['DTSTAMP', 'UID', 'CLASS', 'COMPLETED', 'CREATED', - 'DESCRIPTION', 'DTSTART', 'GEO', 'LAST-MODIFIED', - 'LOCATION', 'ORGANIZER', 'PERCENT-COMPLETE', 'PRIORITY', - 'RECURRENCE-ID', 'SEQUENCE', 'STATUS', 'SUMMARY', 'URL', - 'RRULE', 'DUE', 'DURATION', 'ATTACH', 'ATTENDEE', 'CATEGORIES', - 'COMMENT', 'CONTACT', 'EXDATE', 'REQUEST-STATUS', 'RELATED-TO', - 'RESOURCES', 'RDATE',], - 'VJOURNAL': ['DTSTAMP', 'UID', 'CLASS', 'CREATED', 'DTSTART', 'LAST-MODIFIED', - 'ORGANIZER', 'RECURRENCE-ID', 'SEQUENCE', 'STATUS', 'SUMMARY', - 'URL', 'RRULE', 'ATTACH', 'ATTENDEE', 'CATEGORIES', 'COMMENT', - 'CONTACT', 'DESCRIPTION', 'EXDATE', 'RELATED-TO', 'RDATE', - 'REQUEST-STATUS'], - 'VFREEBUSY': ['DTSTAMP', 'UID', 'CONTACT', 'DTSTART', 'DTEND', - 'ORGANIZER', 'URL', 'ATTENDEE', 'COMMENT', 'FREEBUSY', - 'REQUEST-STATUS'], - 'VTIMEZONE': ['TZID', 'LAST-MODIFIED', 'TZURL'], - 'VALARM': ['ACTION', 'TRIGGER', 'DURATION', 'REPEAT', 'ATTACH', - 'DESCRIPTION', 'SUMMARY', 'ATTENDEE'], - 'STANDARD': ['DTSTART', 'TZOFFSETFROM', 'TZOFFSETTO', 'RRULE', - 'COMMENT', 'RDATE', 'TZNAME'], -}; +let valid_fields: Map = new Map([ + ['VCALENDAR', ['PRODID', 'VERSION', 'CALSCALE', 'METHOD']], + ['VEVENT', ['DTSTAMP', 'UID', 'DTSTART', 'CLASS', 'CREATED', + 'DESCRIPTION', 'GEO', 'LAST-MODIFIED', 'LOCATION', + 'ORGANIZER', 'PRIORITY', 'SEQUENCE', 'STATUS', + 'SUMMARY', 'TRANSP', 'URL', 'RECURRENCE-ID', + 'RRULE', 'DTEND', 'DURATION', 'ATTACH', 'ATTENDEE', + 'CATEGORIES', 'COMMENT', 'CONTACT', 'EXDATE', + 'REQUEST-STATUS', 'RELATED-TO', 'RESOURCES', 'RDATE']], + ['VTODO', ['DTSTAMP', 'UID', 'CLASS', 'COMPLETED', 'CREATED', + 'DESCRIPTION', 'DTSTART', 'GEO', 'LAST-MODIFIED', + 'LOCATION', 'ORGANIZER', 'PERCENT-COMPLETE', 'PRIORITY', + 'RECURRENCE-ID', 'SEQUENCE', 'STATUS', 'SUMMARY', 'URL', + 'RRULE', 'DUE', 'DURATION', 'ATTACH', 'ATTENDEE', 'CATEGORIES', + 'COMMENT', 'CONTACT', 'EXDATE', 'REQUEST-STATUS', 'RELATED-TO', + 'RESOURCES', 'RDATE',]], + ['VJOURNAL', ['DTSTAMP', 'UID', 'CLASS', 'CREATED', 'DTSTART', 'LAST-MODIFIED', + 'ORGANIZER', 'RECURRENCE-ID', 'SEQUENCE', 'STATUS', 'SUMMARY', + 'URL', 'RRULE', 'ATTACH', 'ATTENDEE', 'CATEGORIES', 'COMMENT', + 'CONTACT', 'DESCRIPTION', 'EXDATE', 'RELATED-TO', 'RDATE', + 'REQUEST-STATUS']], + ['VFREEBUSY', ['DTSTAMP', 'UID', 'CONTACT', 'DTSTART', 'DTEND', + 'ORGANIZER', 'URL', 'ATTENDEE', 'COMMENT', 'FREEBUSY', + 'REQUEST-STATUS']], + ['VTIMEZONE', ['TZID', 'LAST-MODIFIED', 'TZURL']], + ['VALARM', ['ACTION', 'TRIGGER', 'DURATION', 'REPEAT', 'ATTACH', + 'DESCRIPTION', 'SUMMARY', 'ATTENDEE']], + ['STANDARD', ['DTSTART', 'TZOFFSETFROM', 'TZOFFSETTO', 'RRULE', + 'COMMENT', 'RDATE', 'TZNAME']], +]) + +valid_fields.set('DAYLIGHT', valid_fields.get('STANDARD')!); + +type known_ical_types + = 'ACTION' + | 'ATTACH' + | 'ATTENDEE' + | 'CALSCALE' + | 'CATEGORIES' + | 'CLASS' + | 'COMMENT' + | 'COMPLETED' + | 'CONTACT' + | 'CREATED' + | 'DESCRIPTION' + | 'DTEND' + | 'DTSTAMP' + | 'DTSTART' + | 'DUE' + | 'DURATION' + | 'EXDATE' + | 'FREEBUSY' + | 'GEO' + | 'LAST-MODIFIED' + | 'LOCATION' + | 'METHOD' + | 'ORGANIZER' + | 'PERCENT-COMPLETE' + | 'PRIORITY' + | 'PRODID' + | 'RDATE' + | 'RECURRENCE-ID' + | 'RELATED-TO' + | 'REPEAT' + | 'REQUEST-STATUS' + | 'RESOURCES' + | 'RRULE' + | 'SEQUENCE' + | 'STATUS' + | 'SUMMARY' + | 'TRANSP' + | 'TRIGGER' + | 'TZID' + | 'TZNAME' + | 'TZOFFSETFROM' + | 'TZOFFSETTO' + | 'TZURL' + | 'URL' + | 'VERSION' + +let valid_input_types: Map = + new Map([ + ['ACTION', ['text']], // AUDIO|DISPLAY|EMAIL|*other* + ['ATTACH', ['uri', 'binary']], + ['ATTENDEE', ['cal-address']], + ['CALSCALE', ['text']], + ['CATEGORIES', [['text']]], + ['CLASS', ['text']], // PUBLIC|PRIVATE|CONFIDENTIAL|*other* + ['COMMENT', ['text']], + ['COMPLETED', ['date-time']], + ['CONTACT', ['text']], + ['CREATED', ['date-time']], + ['DESCRIPTION', ['text']], + ['DTEND', ['date', 'date-time']], + ['DTSTAMP', ['date-time']], + ['DTSTART', ['date', 'date-time']], + ['DUE', ['date', 'date-time']], + ['DURATION', ['duration']], + ['EXDATE', [['date', 'date-time']]], + ['FREEBUSY', [['period']]], + ['GEO', ['float']], // pair of floats + ['LAST-MODIFIED', ['date-time']], + ['LOCATION', ['text']], + ['METHOD', ['text']], + ['ORGANIZER', ['cal-address']], + ['PERCENT-COMPLETE', ['integer']], // 0-100 + ['PRIORITY', ['integer']], // 0-9 + ['PRODID', ['text']], + ['RDATE', [['date', 'date-time', 'period']]], + ['RECURRENCE-ID', ['date', 'date-time']], + ['RELATED-TO', ['text']], + ['REPEAT', ['integer']], + ['REQUEST-STATUS', ['text']], + ['RESOURCES', [['text']]], + ['RRULE', ['recur']], + ['SEQUENCE', ['integer']], + ['STATUS', ['text']], // see 3.8.1.11 + ['SUMMARY', ['text']], + ['TRANSP', ['text']], // OPAQUE|TRANSPARENT + ['TRIGGER', ['duration', 'date-time']], + ['TZID', ['text']], + ['TZNAME', ['text']], + ['TZOFFSETFROM', ['utc-offset']], + ['TZOFFSETTO', ['utc-offset']], + ['TZURL', ['uri']], + ['URL', ['uri']], + ['VERSION', ['text']], + ]) as Map + +// type JCalLine { +// } -valid_fields['DAYLIGHT'] = valid_fields['STANDARD']; +type tagname = 'vevent' | string +type JCalProperty = [string, any, ical_type, any[]] -let valid_input_types = { - 'ACTION': ['text'], // AUDIO|DISPLAY|EMAIL|*other* - 'ATTACH': ['uri', 'binary'], - 'ATTENDEE': ['cal-address'], - 'CALSCALE': ['text'], - 'CATEGORIES': [['text']], - 'CLASS': ['text'], // PUBLIC|PRIVATE|CONFIDENTIAL|*other* - 'COMMENT': ['text'], - 'COMPLETED': ['date-time'], - 'CONTACT': ['text'], - 'CREATED': ['date-time'], - 'DESCRIPTION': ['text'], - 'DTEND': ['date', 'date-time'], - 'DTSTAMP': ['date-time'], - 'DTSTART': ['date', 'date-time'], - 'DUE': ['date', 'date-time'], - 'DURATION': ['duration'], - 'EXDATE': [['date', 'date-time']], - 'FREEBUSY': [['period']], - 'GEO': ['float'], // pair of floats - 'LAST-MODIFIED': ['date-time'], - 'LOCATION': ['text'], - 'METHOD': ['text'], - 'ORGANIZER': ['cal-address'], - 'PERCENT-COMPLETE': ['integer'], // 0-100 - 'PRIORITY': ['integer'], // 0-9 - 'PRODID': ['text'], - 'RDATE': [['date', 'date-time', 'period']], - 'RECURRENCE-ID': ['date', 'date-time'], - 'RELATED-TO': ['text'], - 'REPEAT': ['integer'], - 'REQUEST-STATUS': ['text'], - 'RESOURCES': [['text']], - 'RRULE': ['recur'], - 'SEQUENCE': ['integer'], - 'STATUS': ['text'], // see 3.8.1.11 - 'SUMMARY': ['text'], - 'TRANSP': ['text'], // OPAQUE|TRANSPARENT - 'TRIGGER': ['duration', 'date-time'], - 'TZID': ['text'], - 'TZNAME': ['text'], - 'TZOFFSETFROM': ['utc-offset'], - 'TZOFFSETTO': ['utc-offset'], - 'TZURL': ['uri'], - 'URL': ['uri'], - 'VERSION': ['text'], -} +type JCal = [tagname, JCalProperty[], JCal[]] -- cgit v1.2.3 From 2d0ec2b162e3e2851fef7f280aab21c9f00cd171 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sun, 31 Oct 2021 20:48:23 +0100 Subject: Everything but lib. --- static/types.ts | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'static/types.ts') diff --git a/static/types.ts b/static/types.ts index 7e10e90e..63d55e35 100644 --- a/static/types.ts +++ b/static/types.ts @@ -1,3 +1,9 @@ +export { + all_types, ical_type, property_names, + valid_fields, known_ical_types, + valid_input_types, tagname, + JCalProperty, JCal +} let all_types = [ 'text', -- cgit v1.2.3 From 44f8ae5ba2b6b4954d6562aff2f4e704cfa1a966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 1 Nov 2021 16:17:46 +0100 Subject: Limit exports to those used by imports. This gives a clearer picture of what is dead code and what isn't. --- static/types.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'static/types.ts') diff --git a/static/types.ts b/static/types.ts index 63d55e35..1cf77f51 100644 --- a/static/types.ts +++ b/static/types.ts @@ -1,7 +1,6 @@ export { - all_types, ical_type, property_names, - valid_fields, known_ical_types, - valid_input_types, tagname, + ical_type, + valid_input_types, JCalProperty, JCal } -- cgit v1.2.3 From c60a60422f69e29628b6c946a15be271e90015aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Wed, 10 Nov 2021 00:47:10 +0100 Subject: Basic event modification works again. --- static/types.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'static/types.ts') diff --git a/static/types.ts b/static/types.ts index 1cf77f51..6d1331c7 100644 --- a/static/types.ts +++ b/static/types.ts @@ -181,6 +181,10 @@ let valid_input_types: Map = type tagname = 'vevent' | string -type JCalProperty = [string, any, ical_type, any[]] +/* TODO is this type correct? + What really are valid values for any? Does that depend on ical_type? Why is the tail a list? + What really is the type for the parameter map? +*/ +type JCalProperty = [string, Map, ical_type, any[]] type JCal = [tagname, JCalProperty[], JCal[]] -- cgit v1.2.3 From 410404cfdd54c083b6609fd52334e02d320145d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Wed, 10 Nov 2021 01:40:22 +0100 Subject: Re-modularize javascript. This moves almost everything out of globals.ts, into sepparate files. Things are still slightly to tightly coupled. But that is worked on. --- static/types.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'static/types.ts') diff --git a/static/types.ts b/static/types.ts index 6d1331c7..f371c72a 100644 --- a/static/types.ts +++ b/static/types.ts @@ -1,7 +1,8 @@ export { ical_type, valid_input_types, - JCalProperty, JCal + JCalProperty, JCal, + xcal, uid } let all_types = [ @@ -181,6 +182,8 @@ let valid_input_types: Map = type tagname = 'vevent' | string +type uid = string + /* TODO is this type correct? What really are valid values for any? Does that depend on ical_type? Why is the tail a list? What really is the type for the parameter map? @@ -188,3 +191,5 @@ type tagname = 'vevent' | string type JCalProperty = [string, Map, ical_type, any[]] type JCal = [tagname, JCalProperty[], JCal[]] + +const xcal = "urn:ietf:params:xml:ns:icalendar-2.0"; -- cgit v1.2.3 From 5cd004b662caabc4a084d625da798b1b64d8b5c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 18 Nov 2021 21:41:01 +0100 Subject: Minor fixes. --- static/types.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'static/types.ts') diff --git a/static/types.ts b/static/types.ts index f371c72a..2c26308e 100644 --- a/static/types.ts +++ b/static/types.ts @@ -13,14 +13,15 @@ let all_types = [ 'integer', /* Number.type = 'integer' */ 'date-time', /* Date */ 'date', /* Date.dateonly = true */ - 'duration', - 'period', - 'utc-offset', + 'duration', /* TODO */ + 'period', /* TODO */ + 'utc-offset', /* TODO */ 'cal-address', 'recur', /* RRule */ 'boolean', /* boolean */ ] + type ical_type = 'text' | 'uri' @@ -147,6 +148,7 @@ let valid_input_types: Map = ['DUE', ['date', 'date-time']], ['DURATION', ['duration']], ['EXDATE', [['date', 'date-time']]], + ['EXRULE', []], /* deprecated */ ['FREEBUSY', [['period']]], ['GEO', ['float']], // pair of floats ['LAST-MODIFIED', ['date-time']], @@ -173,6 +175,7 @@ let valid_input_types: Map = ['TZOFFSETFROM', ['utc-offset']], ['TZOFFSETTO', ['utc-offset']], ['TZURL', ['uri']], + ['UID', ['text']], ['URL', ['uri']], ['VERSION', ['text']], ]) as Map -- cgit v1.2.3 From 1df15b2ceaef09b48a39aa6046b577da11ea2f72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 26 Nov 2021 15:32:41 +0100 Subject: Got categories working. --- static/types.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'static/types.ts') diff --git a/static/types.ts b/static/types.ts index 2c26308e..567b9a95 100644 --- a/static/types.ts +++ b/static/types.ts @@ -129,7 +129,7 @@ type known_ical_types | 'URL' | 'VERSION' -let valid_input_types: Map = +let valid_input_types: Map> = new Map([ ['ACTION', ['text']], // AUDIO|DISPLAY|EMAIL|*other* ['ATTACH', ['uri', 'binary']], @@ -178,7 +178,7 @@ let valid_input_types: Map = ['UID', ['text']], ['URL', ['uri']], ['VERSION', ['text']], - ]) as Map + ]) // type JCalLine { // } @@ -191,7 +191,9 @@ type uid = string What really are valid values for any? Does that depend on ical_type? Why is the tail a list? What really is the type for the parameter map? */ -type JCalProperty = [string, Map, ical_type, any[]] +type JCalProperty + = [string, Record, ical_type, any] + | [string, Record, ical_type, ...any[]] type JCal = [tagname, JCalProperty[], JCal[]] -- cgit v1.2.3 From 6c537f3f60aaac8ae850f8ecaefc2a0d04a8431e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 2 Dec 2021 01:51:28 +0100 Subject: Add basic changelog view --- static/types.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'static/types.ts') diff --git a/static/types.ts b/static/types.ts index 567b9a95..64e2c709 100644 --- a/static/types.ts +++ b/static/types.ts @@ -2,7 +2,8 @@ export { ical_type, valid_input_types, JCalProperty, JCal, - xcal, uid + xcal, uid, + ChangeLogEntry } let all_types = [ @@ -198,3 +199,10 @@ type JCalProperty type JCal = [tagname, JCalProperty[], JCal[]] const xcal = "urn:ietf:params:xml:ns:icalendar-2.0"; + +interface ChangeLogEntry { + type: 'calendar' | 'property', + name: string, + from: string | null, + to: string | null, +} -- cgit v1.2.3