@dethrandir/ccharts
v3.0.0
Published
Financial OHLC data as a string: line and candlestick charts drawn with Unicode block characters, with optional ANSI color
Maintainers
Readme
ccharts
Turns financial OHLC data into a string — line and candlestick charts drawn
with Unicode block characters. Nothing is printed for you, so the chart goes
wherever text goes: a terminal, a log line, a chat message, an HTML <pre>,
a file.
This is the C library ccharts compiled
to WebAssembly. One package works everywhere — Node, Deno, Bun and the browser —
with no native build step, no prebuilt binaries and no dependencies. The
.wasm is embedded in the JavaScript, so there is nothing to fetch and no
bundler configuration.
npm install cchartsimport { Chart, Color } from "ccharts";
const chart = Chart.fromArrays(open, high, low, close, epochSeconds);
console.log(chart.line({
width: 60, height: 8,
riseColor: Color.blue,
showPrices: true,
showTimes: true,
}));
console.log(chart.candle({ width: 60, height: 8 }));
chart.free();- Data can also come from
Chart.fromJson(fixed-schema JSON) orChart.fromCsv. Colorholds the sixteen ANSI colors; any escape string works, so 256-color and truecolor do too:{ riseColor: "\x1b[38;5;208m" }.{ plain: true }renders with no ANSI escapes at all, for output that is not going to a terminal.- Plain arrays,
Float64ArrayandBigInt64Arrayare all accepted. free()releases the WebAssembly memory. AFinalizationRegistrycovers a forgotten call, but it runs whenever the GC feels like it.
Errors are CchartsError with a numeric code (1 invalid argument, 2 parse,
3 out of memory, 4 non-finite value, 5 bad dimensions).
Notes
- ESM only. The package uses top-level await to instantiate the
WebAssembly module at import time, so
import { Chart } from "ccharts"needs no initialization call. There is no CommonJS build. - Node 18+ for
TextDecoder,FinalizationRegistryand top-level await. - Rebuilding the WebAssembly module (
npm run build) needs emscripten;src/wasm-binary.jsis checked in, so only contributors touching the C sources need it.
License
MIT — see the repository.
