Fully use d3.js
in environments without DOM, such as Cloudflare Workers or Vercel Functions
Features
- Simple API with maximum extensibility.
- Support for asynchronous operations and API calls in render function
- Utilities like sanitizing the HTML or outputting the base64 from generated svg
- Tests covering most of the functionality ensuring robustness
Installation
The d3-no-dom
library does not provide any underlying DOM implementation, giving users the flexibility to choose their preferred DOM library. Some options are:
jsdom
: A more comprehensive and heavier DOM implementation, suitable for traditional backend environments like monolithic applications hosted on dedicated servers.
[!WARNING]
jsdom
may not work on the Cloudflare Workers
without specifying nodejs_compat
flag due to use of the Node native modules
How to use
- At first, you must supply your own d3 instance and dom provider to the
d3-no-dom
's prepreSvgServerSideRenderer
- Next, use the
render
function. It provides everything you need in order to fully use d3.js on the server side (the underlying mechanism is integration with Virtual DOM)
- (Optionally) adjust your configuration or the render function's options directly in order to e.g. disable sanitizing
the HTML or control the return value (whether it should be HTML or base64 - where second is specifically useful with usage with satori)
License & contributing
The MIT License. All contributions are welcome!