rSchedule
A javascript library, written in typescript, for working with recurring dates. Rules can be imported / exported in ICAL spec format, and Rule objects themselves adhere to the javascript iterator protocol.
A typescript library for working with recurring dates and events.
A javascript library, written in typescript, for working with recurring dates. Rules can be imported / exported in ICAL spec format, and Rule objects themselves adhere to the javascript iterator protocol.
This repo attempts to follow semantic versioning.
none
MILLISECONDLY frequency.OccurrenceGenerator methods to be duration awareoccursBetweenoccursOnoccursAfteroccursBeforeCalendar#set() to set Calendar#schedulesPipeController and fixed bugs discovered during this processcount propertyDateTime#set() bug that could occur when setting monthsRevByDayOfWeek pipeDates in reverse with either the start/end argOccurrenceGenerator#occursBefore()SplitDurationOperator.VEvent#duration supportical-tools can parse/serialize VEVENTs with duration/dtend property.Dates#set() can be used to set all the duration values of the underlying dates.MergeDurationOperator#_run() not returning all relevant occurrences when provided a start or end arg.duration aware (for resolving order of otherwise identical dates).MergeDurationOperator.Operator#isInfinite.AddOperator#_run() and IntersectionOperator#_run() when iterating with reverse: true and a start / end time.RScheduleConfig so that config options are namespaced.@rschedule/json-toolsIntersectionOperator#maxFailedIterations is serialized.maxFailedIterations to parseJSON().serializeToJSON() interface has changedparseJSON() interface has changed to improve typingConstructorReturnType with typescript builtin InstanceTypeDateAdapter#generators property.DateAdapter#generators to unknown[]@rschedule/rule-tools methods which involved changing the type arguments.@rschedule/rule-tools package.Rule#options via Rule#set().IScheduleLike<T extends typeof DateAdapter> interface.IDataContainer<D> interfaceRScheduleConfig.Rule.defaultWeekStart config option.Operator.isOperator()data property to @rschedule/json-tools.Schedule, Calendar, VEvent, Dates, or Rule object, the generators property now receives some proper typing. This will make accessing the data property on occurrence generators easier.isInstance methods.DateAdapterFor<O extends IOccurrenceGenerator>DataFor<O extends IDataContainer>DateAdapter#endIOccurrenceGenerator#set('timezone')AddOperator.isAddOperator()SubtractOperator.isSubtractOperator()IntersectionOperator.isIntersectionOperator()UniqueOperator.isUniqueOperator()OccurrenceStream.isOccurrenceStream()DateAdapter#date is immutableundefined properties in DateAdapter#toJSON()DateAdapter#generators is propogated to resultsVEvent to allow multiple rrules / exrules as per the ical spec.ical-tools serializeToICal() and
parseICal() functions.Dates to not change the timezone associated with Dates#adapters.
This means that a date in Dates#adapters may not have the same timezone as Dates#timezone
(dates yielded by Dates are still updated to have the same timezone as Dates#timezone, however).
This distinction can be important when serializing a Dates object as it ensures the original
timezones associated with the underlying dates are preserved.Rule#options via Rule#set().Rule and Dates objects to the VEvent constructor.VEvent#set(), VEvent#add(), and VEvent#remove().@rschedule/rschedule releaseDateTime objects are used for datetime manipulation. This appears to have eliminated all outstanding recurrence bugs.MomentTZDateAdapter into its own package.json-tools to work with new API.ical-tools to work with new API.VEvent object which aligns to the VEVENT component in the ICalendar spec.ical-tools dependency on lodash.clonedeep.EXRule, RRule, EXDate, and RDate objects. Now there are just Dates and Rule objects.until rule option to end.undefined to null.duration support.add(), remove(), and set() CRUD methods to Schedule and Dates.filter() method to Dates which filters the Dates object's associated dates and returns a new Dates object.