## 2.0.0 / 2026-08-27 * **Breaking:** requires Node.js >= 20. * Drops the forked `xmlbuilder` GitHub-tarball dependency: a small built-in XML writer (`lib/xmlbuilder.js`) produces the Homematic-compatible expanded empty elements (`` instead of ``). Only `sax` remains as a dependency (now `^1.4`). * Server emits `error` (from the underlying HTTP server, e.g. `EADDRINUSE`) and `listening`; `server.close([callback])` returns a Promise, the callback is optional, and open keep-alive connections are closed so the promise settles. * Server: method handlers are looked up with `listenerCount()` instead of the private `_events`; calls that cannot be deserialized are answered like unknown methods (`NotFound` + empty string) instead of crashing. `Content-Length` is computed in bytes. * Client: `Buffer.from` instead of the deprecated `Buffer` constructor. * `npm test` runs the vows suite directly (no `make`); CI on Node 20/22/24; release workflow with npm trusted publishing (OIDC) and GitHub releases from this changelog. * HISTORY.md renamed to CHANGELOG.md. ## 1.2.0 / 2014-01-12 * Adds (tested) support for Node v0.10 and v0.11. * Drops support for Node v0.6. * Adds a Custom Type serializer for non-standard XML-RPC types. ## 1.1.1 / 2013-09-22 * Adds CDATA deserialization. * Updates XMLBuilder to get rid of warnings at installation time. * Cleans up unformatted code. * Removes vestigial code from ancient v0.4 days. ## 1.1.0 / 2012-11-13 * Supports optional listening handler in Server. * Adds close function to server. * Adds cookie support to client. * Changes minimum Node engine to v0.6. ## 1.0.2 / 2012-07-29 * Server responds with a 404 if it does not handle the method. * Client returns an error if the server returns a 404. ## 1.0.1 / 2012-04-29 * Fixes content-length header value when sending multi-byte characters. ## 1.0.0 / 2012-03-28 * Replaces builder/parser logic with marshaller/unmarshaller. * Uses XML-RPC's nil for JavaScript null values and vice versa. * Client and parser are now re-entrant safe. * Moves test strings to fixture files. * Adds 30+ test cases. * Special thanks to @agnat for his work on the (un)marshaller and tests. ## 0.9.4 / 2012-03-03 * Handles chunked method calls. * Supports ISO-8859-1 encodings. ## 0.9.3 / 2012-01-21 * Values with no type now default to String as per XML-RPC spec. ## 0.9.2 / 2011-12-10 * Replaces the XML parser with the Sax.js module. * Uses Travic CI for Continuous Integration. * Fixes accidental global variable. ## 0.9.1 / 2011-11-29 * Returns an Error on invalid XML-RPC. * Updates to latest version of xmlbuilder to fix install warning. ## 0.9.0 / 2011-11-01 * Supports the Base64 datatype. * Supports the i8 datatype, treating it as a float. * Fixes issue where not returning for faults containing no params. * Standardizes how to handle empty params. Last failing test now passes. * Enforces null value for error param in callbacks. * Updates to latest version of xmlbuilder. ## 0.8.1 / 2011-09-01 * Supports passing the URI as a string to client or server. * Host is now an optional parameter for client or server. * Fixes bug when performing a method call multiple times. * Removes node_modules directory. Use `npm install .` if cloning. ## 0.8.0 / 2011-08-14 * Supports HTTPS server and client. * Improves Basic Auth support. * Errors returned are now an instance of Error, not a String. * Fixes bug with structs and whitespace. * Fixes bug with empty arrays responses. ## 0.7.1 / 2011-08-02 * Handles chunked method responses. * Fixes parsing multi-line strings values in the String parameter. * Allows for custom headers in the HTTP request. ## 0.7.0 / 2011-07-12 * Renames Client.call() to Client.methodCall(). * Adds better support for sending and parsing empty String parameters. * Client handles errors on http request. Includes handling of invalid URLs. * Updates documentation. ## 0.6.2 / 2011-06-15 * Fixes issue with parsing non-value whitespace in method calls. ## 0.6.1 / 2011-06-03 * Supports CDATA when generating XML calls or responses. ## 0.6.0 / 2011-05-18 * Initial release to NPM. Considered stable enough for public use.