Contributing
First you need to clone the repo and install dependencies with pnpm install.
The repo pins pnpm 10.34.4 for local, CI, and Vercel builds.
Vercel installs the docs package with pnpm install --frozen-lockfile.
Build
Building release artifacts uses Rolldown and requires Node.js 20.19+ or 22.12+.
pnpm build
Test
to run tests locally, you need to setup environnement variables using .env file from .env.example
mv .env.example .env
and fill in the missing values
If you didn't add any new api, you should set MOCK_FETCH="true". If you added new api and need to test against cloud providers, you should set MOCK_FETCH="false" and RECORD_NETWORK_REQUESTS="true" to updated network request mock data.
WEBDAV quick guide
WEBDAV uses xml for all its data when communicating, the basic element is object, multiple objects can form a collection, webdav server have accounts and an account have a principal resource (i.e the default, main resource) and under that principal resource we have home set of the said resource where your actual resources are.
syncToken and ctag are basically like hash of the object/collection, if anything in it changes, this token will change.
For caldav, the calendar data in caldav are in rfc5545 ical format, there's iCal2Js and js2iCal function with my other project pretty-jcal to help your convert them from/to js objects.
Here's cheat sheet on webdav operations compared with rest:
| Operation | Webdav | REST |
|---|---|---|
| Create collection |
|
|
| Create entity |
| |
| Update entity body |
|
|
| Update entity attributes |
| |
| Delete entity |
| |
| List entities |
|
|
| Get entity |
|
|
| Get entity attributes |
| |
| Notes |
|
|