@compforge/prombed
v0.0.2
Published
A small, embeddable Prometheus implementation for short-lived metric analysis.
Readme
Prombed TypeScript
The TypeScript implementation provides zero-runtime-dependency Prometheus text exposition parsing, bounded in-memory storage, static-target scraping, and PromQL queries. It requires Node.js 20+ and also runs directly on Bun.
The release build minifies runtime code into a single dist/index.js; the remaining files in dist are TypeScript declarations. bun run size reports the runtime bundle size in bytes.
Development
cd <repo_root>/typescript
bun install
bun test
bun run lint
bun run build
bun run sizeAPI
new Prombed(options)combines the scraper, in-memory store, and query engine.scrapeOnce()immediately scrapes all configured targets, or one temporary target passed by the caller.start()/stop()perform an initial scrape, start periodic collection, and stop the timer.ingest(text, options)ingests one/metricssnapshot when the caller owns the watch lifecycle.targets()returns the latest Prometheus-style health and error state for each scrape target.query(promql, timeMs?)executes an instant query.queryRange(promql, startMs, endMs, stepMs)executes a range query.
Storage, queries, and external requests have explicit limits: retentionMs, maxSeries, maxSamplesPerSeries, maxSamples, scrapeTimeoutMs, maxScrapeBytes, and maxRangePoints. A target can override scrape boundaries with timeoutMs and maxBodyBytes. Defaults suit short diagnostic windows, but integrations should size them for their sampling interval and selected metric families.
See the PromQL compatibility contract for supported behavior and deliberate omissions.
