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 awareoccursBetween
occursOn
occursAfter
occursBefore
Calendar#set()
to set Calendar#schedules
PipeController
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-tools
IntersectionOperator#maxFailedIterations
is serialized.maxFailedIterations
to parseJSON()
.serializeToJSON()
interface has changedparseJSON()
interface has changed to improve typingConstructorReturnType
with typescript builtin InstanceType
DateAdapter#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#end
IOccurrenceGenerator#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.