Releases: lsndr/rrule-rust
Releases · lsndr/rrule-rust
v3.0.0-next.11
v3.0.0-next.10
v3.0.0-next.8
v3.0.0-next.7
v3.0.0-next.6
v3.0.0-next.5
v3.0.0-next.4
v3.0.0-next.3
3.0.0-next.3 (2025-11-22)
- build(deps-dev): bump eslint from 9.38.0 to 9.39.1 (#625) (3e398ef), closes #625
- build(deps-dev): bump eslint-config-prettier from 10.1.5 to 10.1.8 (#624) (d636702), closes #624
- build(deps-dev): bump js-yaml from 4.1.0 to 4.1.1 (#628) (7fb737e), closes #628
- build: bump minimal required node version (#630) (ba0525a), closes #630
- build(deps-dev): bump rimraf from 6.1.0 to 6.1.2 (#623) (5f9fe91), closes #623
- build: extend release rules (#631) (e3689b5), closes #631
- build: fix lock file (#629) (68a8e34), closes #629
- chore(dependabot): disable updates for alpha branch (#620) (a42633c), closes #620
- chore: extend release rules (#621) (cde20a8), closes #621
- chore: update release rules (#626) (a21e6c7), closes #626
v3.0.0-next.2
v3.0.0-next.1
The library now runs in browsers via WebAssembly, making it a truly universal solution for handling recurrence rules across all JavaScript environments.
The API has been completely redesigned with dedicated classes for all core concepts — DtStart, ExDate, RDate, and an enhanced DateTime — providing better type safety and a more intuitive developer experience. You can now work with date-only recurrence rules for all-day events, and take advantage of built-in results caching to speed up repeated queries.
Every public API is now documented with comprehensive JSDoc comments, giving you inline documentation and better autocomplete in your IDE.
✨ New Features
WASM Support
- Browser compatibility via WebAssembly - The library now supports browsers through WASM! Install with:
Date-Only RRules
- Date-only support -
DateTimenow supports date-only values (without time component)
Results Cache
- Results caching - New caching mechanism for improved performance on repeated queries
Enhanced API
- New
DtStartobject - Dedicated class for representing recurrence start dates with timezone support - New
ExDateobject - First-class support for exclusion dates with proper encapsulation - New
RDateobject - First-class support for additional recurrence dates toTimestamp()andtoDate()methods - ConvertDateTimeinstances to Unix timestamps or JavaScriptDateobjects- Flexible type definitions - More permissive types for RRule configuration
Documentation
- Comprehensive JSDoc documentation - All public APIs now include detailed JSDoc comments for better IDE support and developer experience
💥 Breaking Changes
Constructor Changes
- Plain objects are no longer accepted directly in constructors - use the new dedicated classes (
DtStart,ExDate,RDate,DateTime) - Improved plain object handling with explicit
toPlain()/fromPlain()methods
Method Renames
- Several method names have been adjusted for consistency
- Field names in
DtStartnow align with method names
Minimum Requirements
- Node.js 20+ is now required (previously Node.js 10+)
- npm 10+ is now required
📚 Examples
// Before (v2.x)
const set = new RRuleSet({
dtstart: {
value: { year: 2024, month: 1, day: 1, hour: 9, minute: 0, second: 0 },
tzid: 'US/Eastern',
},
rrules: [rrule],
});
// After (v3.x)
import { RRuleSet, RRule, DateTime, DtStart } from 'rrule-rust';
const set = new RRuleSet({
dtstart: new DtStart(DateTime.local(2024, 1, 1, 9, 0, 0), 'US/Eastern'),
rrules: [rrule],
});
// New: Get results as timestamps or Date objects
const dates = set.all();
dates[0].toTimestamp(); // Unix timestamp
dates[0].toDate(); // JavaScript Date