@invinite-org/chartlang-adapter-kit
v1.9.0
Published
SDK for writing chartlang adapters in consumer repos
Readme
@invinite-org/chartlang-adapter-kit
experimental
SDK for writing chartlang adapters in consumer repos. It ships the adapter contract, capabilities model, emission validators, mock candles, and test base classes.
Install
pnpm add @invinite-org/chartlang-adapter-kitPublic surface
defineAdapter(opts) -> Adapter— factory preserving optional hooks such assymInfoandresolveInputs.capabilities— builders for plots, alerts, 61 drawing kinds, drawing groups, and Phase 4 capability fields:intervals(...),multiTimeframe(...),subPanes(...),symInfoFields(...),maxDrawingsPerScript(...),alertConditions(...), andlogs(...).validateEmission(e) -> ValidationResult— validates plot, alert, drawing, diagnostic, log, and alert-condition payloads.decodeDrawing(e) -> DrawingState | null.groupInputs(manifest.inputs) -> GroupedInputSection[]— ordered settings panel sections and inline rows.bucketFor(kind),KIND_BUCKET, and drawing kind maps from core.mockCandleSource(bars, opts)for tests, conformance scenarios, and demos.opts.modeselects"history"(default),"stream", or"history-then-stream"(one history batch followed by per-barcloseevents for the trailingstreamTailbars).PassThroughAdapter,BufferingAdapter.- Types:
Adapter,Capabilities,CandleEvent, emissions, diagnostics, input kinds,SymInfoField,RunnerEmissions, andDefineAdapterOpts. - Phase 7 indicator-composition diagnostics:
DiagnosticCodewidens withdep-error,dep-cycle,dep-unknown-output,dep-invalid-input-override,dep-dynamic,dep-output-not-titledfor the new.output(...)/.withInputs(...)surface. - Geometry layer:
timeToX,priceToY,worldPointToPixel,decomposeDrawing(emission, viewport) -> DrawPrimitive[](covers the basic drawing kinds today; the rest land incrementally), plus theViewport,Point2,DrawPrimitive,StrokeStyle, andFillStyletypes. - Canvas sink (
@invinite-org/chartlang-adapter-kit/canvas):RenderCtx,paintPrimitive(ctx, prim),MockCanvasContext,RecordedCall, andhashCallLog(mock.calls)for deterministic, headless call-log hashing.
Minimum-viable API call
import { capabilities, defineAdapter, mockCandleSource } from "@invinite-org/chartlang-adapter-kit";
export default defineAdapter({
id: "demo",
name: "Demo",
capabilities: {
plots: capabilities.allLines(),
drawings: new Set(),
alerts: capabilities.alerts("toast"),
alertConditions: false,
logs: false,
inputs: new Set(),
intervals: capabilities.intervals([{ value: "1D", label: "1 day", group: "daily" }]).intervals,
multiTimeframe: false,
subPanes: 0,
symInfoFields: new Set(),
maxDrawingsPerScript: { lines: 0, labels: 0, boxes: 0, polylines: 0, other: 0 },
maxLookback: 5000,
maxTickHz: 10,
},
candles: () => mockCandleSource([], { interval: "1D" }),
onEmissions: () => {},
});Docs
See docs/adapters/contract.md.
License
MIT
