t3-code-android-nightly/.repos/alchemy-effect/packages/alchemy/test/Axiom/fixtures/axiom-traced-worker.ts
Julius Marminge 6f9cea00ae
chore(refs): sync Effect and Alchemy references to 4.0.1 and beta.80 (#16170)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 13:22:30 -07:00

66 lines
2 KiB
TypeScript

import * as Axiom from "@/Axiom";
import * as Cloudflare from "@/Cloudflare/index.ts";
import * as Effect from "effect/Effect";
import { HttpServerRequest } from "effect/http/HttpServerRequest";
import * as HttpServerResponse from "effect/http/HttpServerResponse";
/**
* End-to-end fixture for Axiom telemetry: datasets and an ingest token
* declared next to the Worker, wired through the `Axiom.Telemetry` binding
* layer. Deterministic dataset names so re-runs reconcile the same
* datasets.
*/
export const TRACES_DATASET = "alchemy-test-otel-traces";
export const LOGS_DATASET = "alchemy-test-otel-logs";
export const Traces = Axiom.Dataset("Traces", {
name: TRACES_DATASET,
kind: "otel:traces:v1",
});
export const Logs = Axiom.Dataset("Logs", {
name: LOGS_DATASET,
kind: "otel:logs:v1",
});
export const Ingest = Axiom.ApiToken("Ingest", {
name: "alchemy-test-otel-ingest",
datasetCapabilities: {
[TRACES_DATASET]: { ingest: ["create"] },
[LOGS_DATASET]: { ingest: ["create"] },
},
});
export default class AxiomTracedWorker extends Cloudflare.Worker<AxiomTracedWorker>()(
"AxiomTracedWorker",
{
main: import.meta.url,
},
Effect.gen(function* () {
return {
fetch: Effect.gen(function* () {
const request = yield* HttpServerRequest;
const url = new URL(request.url, "http://x");
if (url.pathname === "/work") {
yield* Effect.log("axiom-work-log").pipe(
Effect.withSpan("axiom.child-span"),
);
return yield* HttpServerResponse.json({ marker: "axiom-did-work" });
}
return HttpServerResponse.text("axiom-ok");
}),
};
}).pipe(
// The whole observability integration: dataset endpoints + the ingest
// token bind onto the Worker; the built-in exporter ships each signal
// to its dataset, flushed per request.
Effect.provide(
Axiom.Telemetry({
token: Ingest,
traces: Traces,
logs: Logs,
serviceName: "otel-axiom-e2e",
}),
),
),
) {}