@mui/x-charts-vendor
Version:
Vendored dependencies for MUI X Charts.
80 lines (51 loc) • 2.42 kB
Markdown
# Charts Vendor
Vendored dependencies for @mui/x-charts.
An adaptation of the victory-vendor
## Background
D3 has released most of its libraries as ESM-only. This means that consumers in Node.js applications can no longer just `require()` anything with a d3 transitive dependency, including much of @mui/x-charts.
To help provide an easy path to folks still using CommonJS in their Node.js applications that consume @mui/x-charts, we now provide this package to vendor in various d3-related packages.
## Main difference with victory-vendor
Victory is using the `d3-voronoi` which is an archived project.
## Packages
We presently provide the following top-level libraries:
- d3-color
- d3-interpolate
- d3-sankey
- d3-scale
- d3-shape
- d3-time
- d3-timer
This is the total list of top and transitive libraries we vendor:
- d3-array
- d3-color
- d3-format
- d3-interpolate
- d3-path
- d3-sankey
- d3-scale
- d3-shape
- d3-time
- d3-time-format
- d3-timer
- internmap
## How to add a new package
To add a new package, simply install it as a dependency in this package, and then run the build script.
If your package is not built, you may need to adjust the parameters on [./scripts/build.js](./scripts/build.js), then run the build script again.
## How it works
We provide two alternate paths and behaviors -- for ESM and CommonJS
### ESM
If you do a Node.js import like:
```js
import { interpolate } from '@mui/x-charts-vendor/d3-interpolate';
```
under the hood it's going to just re-export and pass you through to `node_modules/d3-interpolate`, the **real** ESM library from D3.
### CommonJS
If you do a Node.js import like:
```js
const { interpolate } = require('@mui/x-charts-vendor/d3-interpolate');
```
under the hood, it will go to an alternate path that contains the transpiled version of the underlying d3 library found at `x-charts-vendor/lib-vendor/d3-interpolate/**/*.js`.
This further has internally consistent import references to other `x-charts-vendor/lib-vendor/<pkg-name>` paths.
Note that for some tooling (like Jest) that doesn't play well with `package.json:exports` routing to this CommonJS path, we **also** output a root file in the form of `x-charts-vendor/d3-interpolate.js`.
## Licenses
This project is released under the MIT license, but the vendored in libraries include other licenses (for example ISC) that we enumerate in our `package.json:license` field.