@errordock/core
v0.1.0-rc.1
Published
The platform-neutral half of the ErrorDock JavaScript SDKs: queue, transport, sessions and remote configuration.
Maintainers
Readme
@errordock/core
The platform-neutral half of the ErrorDock JavaScript SDKs. You almost certainly want
@errordock/browser or
@errordock/react-native instead —
this package is what both of them are built on, and it is installed alongside either one.
npm install @errordock/coreWhat is in here
The parts of an SDK that have nothing to do with where it is running:
- the event model — the wire shape the ingest endpoint accepts, with no translation layer
- two bounded queues, drop-oldest and batched — events and spans, separately, because spans outnumber events by roughly two orders of magnitude and a shared queue would let a busy minute of tracing evict the errors
- the transport — retry with backoff,
Retry-Afteron 429, requeue on 5xx and on a network failure, drop on a 4xx the server has already judged, and a separate backoff per queue so a tracing quota refusal leaves errors flowing - tracing — spans, W3C trace ids, head sampling decided at the root
- sessions and the install id, with the rotation rules the whole product depends on
- remote configuration, with last known good cached and a fail-open default
- the never-throw guarantee: every entry point swallows its own failures
What is not
Anything that needs a platform. window.onerror, the History API, localStorage,
AppState, ErrorUtils, and every other hook lives in the package for that platform. This
one compiles without the DOM library, so a stray document is a build error rather than a
crash on somebody's phone.
Writing a host
A host subclasses ErrorDockCore and lends it what it cannot know:
import { ErrorDockCore, type CoreHost } from "@errordock/core";
const host: CoreHost = {
persistent: myKeyValueStore, // survives a restart: the install id, the config cache
sessions: myKeyValueStore, // scoped to this run
keepalive: false, // only a browser has it
describeDevice: () => ({ platform: "ios" }),
};Everything else — the queue, the transport, the filters — is already written, already tested, and shared with every other host.
Licence
MIT. The ErrorDock service itself is proprietary; this SDK is not.
