first commit

This commit is contained in:
2026-05-29 08:20:56 +01:00
commit 949299f58d
6368 changed files with 527176 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
# `instruments` — OTel counter for Altair UI requests
<!-- begin:auto-docs -->
_(no submodules)_
<!-- end:auto-docs -->
## Purpose
`instruments` owns the package's single OpenTelemetry counter,
`graphql.ui.requests_total`, labelled with the constant
`ui="altair"`. The counter name is deliberately identical to the
GraphiQL sibling's so dashboards summing across both UIs can drop the
`ui` label and add the two series. The `MeterProvider` is injectable —
operators can hand in their own provider for in-process testing or rely
on the OTel global the rest of the host has registered at boot.
## Features
- Single counter — `graphql.ui.requests_total`.
- Constant label preset: `{ ui: "altair" }`.
- `recordRequest()` convenience captures the label internally so call
sites never repeat the label literal (no drift risk).
- Meter name pinned to `@suaveplan/api-graphql-ui-altair` for trace
correlation.
- Falls back to the OTel global `MeterProvider` when none is supplied.
## Usage: Basic
```ts
import { createAltairInstruments } from "@suaveplan/api-graphql-ui-altair/instruments";
const inst = createAltairInstruments();
inst.recordRequest();
```
## Usage: Advanced
```ts
import { MeterProvider } from "@opentelemetry/sdk-metrics";
import { createAltairInstruments } from "@suaveplan/api-graphql-ui-altair/instruments";
const meterProvider = new MeterProvider({
/* readers / exporters configured in the host */
});
const inst = createAltairInstruments({ meterProvider });
// Inside the HTML response handler:
inst.recordRequest(); // graphql.ui.requests_total{ui="altair"} += 1
```
## API Reference
- `createAltairInstruments(config?: AltairInstrumentsConfig): AltairInstruments`.
- `AltairInstruments` — `{ meter, requestsTotal, recordRequest }`,
frozen.
- `GRAPHQL_UI_REQUESTS_COUNTER` — literal `"graphql.ui.requests_total"`.
- `ALTAIR_UI_LABEL` — literal `"altair"`.
- `ALTAIR_METER_NAME` — literal `"@suaveplan/api-graphql-ui-altair"`.
## Implementation Notes
The counter description block documents the cross-package label contract
so operators reading the OTel discovery endpoint understand why two
packages emit the same metric name. The `Object.freeze` on the return
record prevents accidental mutation downstream — the bundle is meant to
be a singleton per host instance.