- Allowed
WebdavClient.copyto requestDepth: 0transfers per RFC 4918 §9.8 while rejecting unsupported depths. - Preferred the
Lock-Tokenresponse header when returning lock tokens and retained XML fallbacks for RFC 4918 §§9.10.1/10.5 compliance. - Added automatic
Cache-Control/Pragma: no-cacheheaders whenever anIfheader is sent, following RFC 4918 §10.4.5 guidance for proxy safety. - Removed redundant OPTIONS preflights before GET/PUT operations to reduce latency and follow RFC 4918 guidance.
- Normalized
resolveAgainstBaseUrloutput to strip dot-segments per RFC 4918 §8.3, avoiding malformed Destination headers. - Treated leading-slash references as server-root URLs in
resolveAgainstBaseUrl, aligning Destination/If header construction with RFC 4918 §8.3. - Surfaced per-member diagnostics for DELETE 207 Multi-Status responses to match SabreDAV behaviour.
- Added
WebdavClient.options()to expose DAV capabilities without custom plumbing. - Added
WebdavClient.request()so advanced WebDAV verbs (REPORT, SEARCH, etc.) reuse the built-in auth stack. - Added
parseMultiStatusand companion data types to mirror SabreDAV diagnostics for RFC 4918 Multi-Status bodies. - Added
WebdavClient.propFindRawto expose per-property status codes similar to SabreDAV’s propFind helpers. - Enriched
MultiStatusResponsewith DAV error metadata (<d:error>,<d:responsedescription>,<d:location>). - Preserved custom property XML in
WebdavFileso empty or structured values survive PROPFIND parsing. - Treated all 2xx PROPFIND propstat statuses as success when parsing
WebdavFile, avoiding dropped entries from compliant servers. - Reused
parseMultiStatusToMapinsidepropFindRawand exposed top-level Multi-Status codes for SabreDAV parity.
- Initial release of the project.