@earendil-works/pi-telemetry 1.5.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts +7 -0
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +30 -3
- package/dist/memory.js.map +1 -1
- package/dist/render.d.ts +5 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +24 -7
- package/dist/render.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -29,12 +29,16 @@ export type SpanStatus = {
|
|
|
29
29
|
message: string;
|
|
30
30
|
};
|
|
31
31
|
};
|
|
32
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* A settled span snapshot, independent of the recording adapter. Times are milliseconds at microsecond resolution;
|
|
34
|
+
* event times are relative to span start.
|
|
35
|
+
*/
|
|
33
36
|
export interface StoredSpan {
|
|
34
37
|
readonly id: string;
|
|
35
38
|
readonly traceId: string;
|
|
36
39
|
readonly parentId?: string;
|
|
37
40
|
readonly name: string;
|
|
41
|
+
/** Wall-clock milliseconds since the epoch (`telemetryNow`). */
|
|
38
42
|
readonly startedMs: number;
|
|
39
43
|
readonly endedMs: number;
|
|
40
44
|
readonly attributes: SpanAttributes;
|
|
@@ -278,5 +282,5 @@ export type TypedSpanStarter<Schemas extends TelemetrySchemaTuple> = UnionToInte
|
|
|
278
282
|
*/
|
|
279
283
|
export declare function createTypedSpanStarter<const Schemas extends TelemetrySchemaTuple>(telemetryContext: TelemetryContext, _schemas: Schemas & UniqueTelemetrySchemas<Schemas>): TypedSpanStarter<Schemas>;
|
|
280
284
|
export type { RecordedTelemetryEvent, RecordedTelemetryLink, RecordedTelemetryMeasurement, RecordedTelemetrySpan, } from "./memory.ts";
|
|
281
|
-
export { InMemoryTelemetryContext } from "./memory.ts";
|
|
285
|
+
export { InMemoryTelemetryContext, telemetryNow } from "./memory.ts";
|
|
282
286
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -15,5 +15,5 @@ function bindTypedSpanStarter(telemetryContext) {
|
|
|
15
15
|
export function createTypedSpanStarter(telemetryContext, _schemas) {
|
|
16
16
|
return bindTypedSpanStarter(telemetryContext);
|
|
17
17
|
}
|
|
18
|
-
export { InMemoryTelemetryContext } from "./memory.js";
|
|
18
|
+
export { InMemoryTelemetryContext, telemetryNow } from "./memory.js";
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4HA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAgDvG,oEAAoE;AACpE,MAAM,UAAU,qBAAqB,CAA4C,MAAS;IACzF,OAAO,MAAM,CAAC;AACf,CAAC;AA0PD,SAAS,oBAAoB,CAC5B,gBAAkC;IAElC,MAAM,SAAS,GAAG,CACjB,IAAgC,EAChC,UAA0B,EAC1B,QAGY,EACO,EAAE,CACrB,gBAAgB,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CACzD,QAAQ,CACP,IAAiE,EACjE,oBAAoB,CAAU,IAAI,CAAC,CACnC,CACD,CAAC;IAEH,OAAO,SAAsC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACrC,gBAAkC,EAClC,QAAmD;IAEnD,OAAO,oBAAoB,CAAU,gBAAgB,CAAC,CAAC;AACxD,CAAC;AAQD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC","sourcesContent":["import type { TelemetryMetricDefinition, TelemetryMetrics } from \"./metrics.ts\";\n\nexport type AttributeValue = string | number | boolean | readonly string[] | readonly number[] | readonly boolean[];\n\nexport interface SpanAttributes {\n\t[name: string]: AttributeValue | undefined;\n}\n\n/** Opaque, JSON-serializable adapter-owned propagation data. */\nexport type TelemetryCarrier = Record<string, string>;\n\n/** Optional transport capability implemented by the application's telemetry adapter. */\nexport interface TelemetryPropagation {\n\tinject(context: TelemetryContext): TelemetryCarrier | undefined;\n\t/** Absent or unknown carriers use the root; recognized identifiers are opaque strings. */\n\textract(carrier: TelemetryCarrier | undefined): TelemetryContext;\n}\n\nexport interface SpanLink {\n\tcontext: TelemetryContext;\n\tattributes?: SpanAttributes;\n}\n\nexport interface SpanOptions {\n\tname: string;\n\tattributes?: SpanAttributes;\n\tlinks?: readonly SpanLink[];\n}\n\nexport type SpanStatus = { status: \"ok\" } | { status: \"error\"; error?: { name: string; message: string } };\n\n/** A settled span snapshot, independent of the recording adapter. Event times are relative to span start. */\nexport interface StoredSpan {\n\treadonly id: string;\n\treadonly traceId: string;\n\treadonly parentId?: string;\n\treadonly name: string;\n\treadonly startedMs: number;\n\treadonly endedMs: number;\n\treadonly attributes: SpanAttributes;\n\treadonly events: readonly { readonly name: string; readonly timeMs: number; readonly attributes: SpanAttributes }[];\n\treadonly links: readonly {\n\t\treadonly traceId: string;\n\t\treadonly spanId: string;\n\t\treadonly attributes?: SpanAttributes;\n\t}[];\n\treadonly status: SpanStatus;\n}\n\nexport interface StoredTrace {\n\treadonly traceId: string;\n\treadonly spans: readonly StoredSpan[];\n}\n\nexport interface TraceQuery {\n\t/** Name of the earliest stored span, with span ID breaking timestamp ties. */\n\treadonly name?: string;\n\t/** All equalities must match one span; that span may be anywhere in the trace. */\n\treadonly attributes?: Readonly<Record<string, string | number | boolean>>;\n\treadonly errors?: true;\n\t/** Inclusive bounds on the earliest stored span's start time. */\n\treadonly startMin?: number;\n\treadonly startMax?: number;\n\t/** Positive page size; defaults to 20. */\n\treadonly limit?: number;\n\t/** Opaque continuation from the previous page; retain the same filters. */\n\treadonly cursor?: string;\n}\n\nexport interface MetricQuery {\n\treadonly name: string;\n\t/** Inclusive bounds on interval start time. */\n\treadonly startMin?: number;\n\treadonly startMax?: number;\n\treadonly attributes?: Readonly<Record<string, string | number | boolean>>;\n}\n\nexport interface StoredMetric {\n\treadonly intervalMs: number;\n\treadonly name: string;\n\treadonly kind: \"counter\" | \"upDownCounter\" | \"histogram\";\n\treadonly unit?: string;\n\treadonly attributes: SpanAttributes;\n\treadonly count: number;\n\treadonly sum: number;\n\treadonly min: number;\n\treadonly max: number;\n}\n\n/** Read settled traces without depending on a storage backend. */\nexport interface TelemetryStore {\n\tfindTraces(query?: TraceQuery): Promise<{ traces: readonly StoredTrace[]; cursor?: string }>;\n\tgetTrace(traceId: string): Promise<StoredTrace | undefined>;\n\tfindMetrics(query: MetricQuery): Promise<readonly StoredMetric[]>;\n}\n\n/** Adapter contract for trusted typed inputs; malformed input behavior is unspecified. */\nexport interface TelemetryContext {\n\t/** Adapter capabilities remain available on child spans and extracted parents. */\n\treadonly metrics?: TelemetryMetrics;\n\treadonly propagation?: TelemetryPropagation;\n\tstartSpan<T>(options: SpanOptions, callback: (span: TelemetrySpan) => T | Promise<T>): Promise<T>;\n}\n\nexport interface TelemetrySpan extends TelemetryContext {\n\taddLink(link: SpanLink): void;\n\taddEvent(name: string, attributes?: SpanAttributes): void;\n\tsetAttributes(attributes: SpanAttributes): void;\n\tsetStatus(status: SpanStatus): void;\n}\n\nexport type {\n\tHistogramOptions,\n\tInstrumentOptions,\n\tSchemaTelemetryCounter,\n\tSchemaTelemetryHistogram,\n\tTelemetryCounter,\n\tTelemetryHistogram,\n\tTelemetryMetricAttributeDefinition,\n\tTelemetryMetricDefinition,\n\tTelemetryMetrics,\n\tTelemetryUpDownCounter,\n\tTypedTelemetryMetrics,\n} from \"./metrics.ts\";\nexport { createTypedMetrics } from \"./metrics.ts\";\nexport { NOOP_TELEMETRY_CONTEXT, NOOP_TELEMETRY_METRICS, NOOP_TELEMETRY_PROPAGATION } from \"./noop.ts\";\n\nexport type TelemetryAttributeType = \"string\" | \"number\" | \"boolean\" | \"string[]\" | \"number[]\" | \"boolean[]\";\n\nexport interface TelemetryAttributeMetadata {\n\tdescription: string;\n\tsensitive?: boolean;\n\tcardinality?: \"low\" | \"high\";\n}\n\nexport type TelemetryAttributeDefinition = TelemetryAttributeMetadata &\n\t(\n\t\t| { type: \"string\"; values?: readonly string[]; examples?: readonly string[] }\n\t\t| { type: \"number\"; values?: readonly number[]; examples?: readonly number[] }\n\t\t| { type: \"boolean\"; values?: readonly boolean[]; examples?: readonly boolean[] }\n\t\t| { type: \"string[]\"; elementValues?: readonly string[]; examples?: readonly (readonly string[])[] }\n\t\t| { type: \"number[]\"; elementValues?: readonly number[]; examples?: readonly (readonly number[])[] }\n\t\t| { type: \"boolean[]\"; elementValues?: readonly boolean[]; examples?: readonly (readonly boolean[])[] }\n\t);\n\nexport type TelemetryStartAttributeDefinition = TelemetryAttributeDefinition & { required: boolean };\nexport type TelemetryEventAttributeDefinition = TelemetryAttributeDefinition & { required: boolean };\n\nexport interface TelemetryEventDefinition {\n\tdescription: string;\n\tattributes: Record<string, TelemetryEventAttributeDefinition>;\n}\n\nexport type TelemetryParentDefinition =\n\t| { kind: \"any\" }\n\t| { kind: \"root_or_external\" }\n\t| { kind: \"spans\"; spans: readonly string[] };\n\nexport interface TelemetrySpanDefinition {\n\tdescription: string;\n\tparents: TelemetryParentDefinition;\n\tstartAttributes: Record<string, TelemetryStartAttributeDefinition>;\n\tendAttributes: Record<string, TelemetryAttributeDefinition>;\n\tevents?: Record<string, TelemetryEventDefinition>;\n\tstatus: { default: \"ok\"; errorWhen: string };\n}\n\nexport interface TelemetrySchemaDefinition {\n\tversion: number;\n\tspans: Record<string, TelemetrySpanDefinition>;\n\tmetrics?: Record<string, TelemetryMetricDefinition>;\n}\n\n/** Typed identity helper for serializable telemetry schema data. */\nexport function defineTelemetrySchema<const T extends TelemetrySchemaDefinition>(schema: T): T {\n\treturn schema;\n}\n\ntype AttributeDefinitionValue<Definition extends TelemetryAttributeDefinition> = Definition extends {\n\ttype: \"string\";\n\tvalues: readonly (infer Value extends string)[];\n}\n\t? Value\n\t: Definition extends { type: \"string\" }\n\t\t? string\n\t\t: Definition extends { type: \"number\"; values: readonly (infer Value extends number)[] }\n\t\t\t? Value\n\t\t\t: Definition extends { type: \"number\" }\n\t\t\t\t? number\n\t\t\t\t: Definition extends { type: \"boolean\"; values: readonly (infer Value extends boolean)[] }\n\t\t\t\t\t? Value\n\t\t\t\t\t: Definition extends { type: \"boolean\" }\n\t\t\t\t\t\t? boolean\n\t\t\t\t\t\t: Definition extends {\n\t\t\t\t\t\t\t\t\ttype: \"string[]\";\n\t\t\t\t\t\t\t\t\telementValues: readonly (infer Value extends string)[];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t? readonly Value[]\n\t\t\t\t\t\t\t: Definition extends { type: \"string[]\" }\n\t\t\t\t\t\t\t\t? readonly string[]\n\t\t\t\t\t\t\t\t: Definition extends {\n\t\t\t\t\t\t\t\t\t\t\ttype: \"number[]\";\n\t\t\t\t\t\t\t\t\t\t\telementValues: readonly (infer Value extends number)[];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t? readonly Value[]\n\t\t\t\t\t\t\t\t\t: Definition extends { type: \"number[]\" }\n\t\t\t\t\t\t\t\t\t\t? readonly number[]\n\t\t\t\t\t\t\t\t\t\t: Definition extends {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: \"boolean[]\";\n\t\t\t\t\t\t\t\t\t\t\t\t\telementValues: readonly (infer Value extends boolean)[];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t? readonly Value[]\n\t\t\t\t\t\t\t\t\t\t\t: readonly boolean[];\n\ntype RequiredAttributeNames<\n\tDefinitions extends Record<string, TelemetryStartAttributeDefinition | TelemetryEventAttributeDefinition>,\n> = {\n\t[Name in keyof Definitions]-?: Definitions[Name][\"required\"] extends true ? Name : never;\n}[keyof Definitions];\n\ntype OptionalAttributeNames<\n\tDefinitions extends Record<string, TelemetryStartAttributeDefinition | TelemetryEventAttributeDefinition>,\n> = Exclude<keyof Definitions, RequiredAttributeNames<Definitions>>;\n\nexport type InferRequiredAndOptionalAttributes<\n\tDefinitions extends Record<string, TelemetryStartAttributeDefinition | TelemetryEventAttributeDefinition>,\n> = keyof Definitions extends never\n\t? Record<string, never>\n\t: {\n\t\t\t[Name in RequiredAttributeNames<Definitions>]: AttributeDefinitionValue<Definitions[Name]>;\n\t\t} & {\n\t\t\t[Name in OptionalAttributeNames<Definitions>]?: AttributeDefinitionValue<Definitions[Name]>;\n\t\t};\n\nexport type InferStartAttributes<Definitions extends Record<string, TelemetryStartAttributeDefinition>> =\n\tInferRequiredAndOptionalAttributes<Definitions>;\n\nexport type InferOptionalAttributes<Definitions extends Record<string, TelemetryAttributeDefinition>> =\n\tkeyof Definitions extends never\n\t\t? Record<string, never>\n\t\t: { [Name in keyof Definitions]?: AttributeDefinitionValue<Definitions[Name]> };\n\nexport type ExactTelemetryAttributes<Expected, Actual extends Expected> = Actual &\n\tRecord<Exclude<keyof Actual, keyof Expected>, never>;\n\nexport type InferEventAttributes<Definitions extends Record<string, TelemetryEventAttributeDefinition>> =\n\tInferRequiredAndOptionalAttributes<Definitions>;\n\nexport type TelemetrySchemaSpanName<Schema extends TelemetrySchemaDefinition> = keyof Schema[\"spans\"] & string;\n\ntype SchemaSpan<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = Schema[\"spans\"][Name];\n\nexport type TelemetrySchemaSpanStartAttributes<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = SchemaSpan<Schema, Name>[\"startAttributes\"] extends infer Definitions extends Record<\n\tstring,\n\tTelemetryStartAttributeDefinition\n>\n\t? InferStartAttributes<Definitions>\n\t: never;\n\nexport type TelemetrySchemaSpanEndAttributes<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = SchemaSpan<Schema, Name>[\"endAttributes\"] extends infer Definitions extends Record<\n\tstring,\n\tTelemetryAttributeDefinition\n>\n\t? InferOptionalAttributes<Definitions>\n\t: never;\n\ntype SchemaSpanEvents<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = SchemaSpan<Schema, Name> extends { events: infer Events extends Record<string, TelemetryEventDefinition> }\n\t? Events\n\t: Record<never, never>;\n\nexport type TelemetrySchemaSpanEventName<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = keyof SchemaSpanEvents<Schema, Name> & string;\n\ntype SchemaSpanEvent<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n\tEventName extends TelemetrySchemaSpanEventName<Schema, Name>,\n> = SchemaSpanEvents<Schema, Name> extends infer Events\n\t? EventName extends keyof Events\n\t\t? Events[EventName]\n\t\t: never\n\t: never;\n\nexport type TelemetrySchemaSpanEventAttributes<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n\tEventName extends TelemetrySchemaSpanEventName<Schema, Name>,\n> = SchemaSpanEvent<Schema, Name, EventName> extends {\n\tattributes: infer Definitions extends Record<string, TelemetryEventAttributeDefinition>;\n}\n\t? InferEventAttributes<Definitions>\n\t: never;\n\ntype SchemaSpanEventAttributeDefinitions<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n\tEventName extends TelemetrySchemaSpanEventName<Schema, Name>,\n> = SchemaSpanEvent<Schema, Name, EventName> extends {\n\tattributes: infer Definitions extends Record<string, TelemetryEventAttributeDefinition>;\n}\n\t? Definitions\n\t: Record<never, never>;\n\ntype EventArguments<\n\tDefinitions extends Record<string, TelemetryEventAttributeDefinition>,\n\tAttributes extends InferEventAttributes<Definitions>,\n> = [RequiredAttributeNames<Definitions>] extends [never]\n\t? [attributes?: ExactTelemetryAttributes<InferEventAttributes<Definitions>, Attributes>]\n\t: [attributes: ExactTelemetryAttributes<InferEventAttributes<Definitions>, Attributes>];\n\nexport type SchemaTelemetrySpan<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = Omit<TelemetrySpan, \"addEvent\" | \"setAttributes\"> & {\n\taddEvent<\n\t\tEventName extends TelemetrySchemaSpanEventName<Schema, Name>,\n\t\tconst Attributes extends InferEventAttributes<\n\t\t\tSchemaSpanEventAttributeDefinitions<Schema, Name, EventName>\n\t\t> = InferEventAttributes<SchemaSpanEventAttributeDefinitions<Schema, Name, EventName>>,\n\t>(\n\t\tname: EventName,\n\t\t...args: EventArguments<SchemaSpanEventAttributeDefinitions<Schema, Name, EventName>, Attributes>\n\t): void;\n\tsetAttributes<const Attributes extends TelemetrySchemaSpanEndAttributes<Schema, Name>>(\n\t\tattributes: ExactTelemetryAttributes<TelemetrySchemaSpanEndAttributes<Schema, Name>, Attributes>,\n\t): void;\n};\n\nexport type TelemetrySchemaSpanUnion<Schema extends TelemetrySchemaDefinition> = {\n\t[Name in TelemetrySchemaSpanName<Schema>]: {\n\t\tname: Name;\n\t\tstartAttributes: TelemetrySchemaSpanStartAttributes<Schema, Name>;\n\t\tendAttributes: TelemetrySchemaSpanEndAttributes<Schema, Name>;\n\t\tevents: {\n\t\t\t[EventName in TelemetrySchemaSpanEventName<Schema, Name>]: TelemetrySchemaSpanEventAttributes<\n\t\t\t\tSchema,\n\t\t\t\tName,\n\t\t\t\tEventName\n\t\t\t>;\n\t\t};\n\t};\n}[TelemetrySchemaSpanName<Schema>];\n\ntype TelemetrySchemaTuple = readonly [TelemetrySchemaDefinition, ...TelemetrySchemaDefinition[]];\n\ntype SpanNameInSchema<Schema extends TelemetrySchemaDefinition> = Schema extends TelemetrySchemaDefinition\n\t? TelemetrySchemaSpanName<Schema>\n\t: never;\n\ntype SpanNameInSchemas<Schemas extends TelemetrySchemaTuple> = SpanNameInSchema<Schemas[number]>;\n\ntype SpanStartAttributesInSchema<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends string,\n> = Schema extends TelemetrySchemaDefinition\n\t? Name extends TelemetrySchemaSpanName<Schema>\n\t\t? TelemetrySchemaSpanStartAttributes<Schema, Name>\n\t\t: never\n\t: never;\n\ntype SpanInSchema<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends string,\n> = Schema extends TelemetrySchemaDefinition\n\t? Name extends TelemetrySchemaSpanName<Schema>\n\t\t? SchemaTelemetrySpan<Schema, Name>\n\t\t: never\n\t: never;\n\ntype DuplicateTelemetrySpanNames<\n\tSchemas extends readonly TelemetrySchemaDefinition[],\n\tSeen extends string = never,\n> = Schemas extends readonly [\n\tinfer Schema extends TelemetrySchemaDefinition,\n\t...infer Rest extends readonly TelemetrySchemaDefinition[],\n]\n\t?\n\t\t\t| Extract<TelemetrySchemaSpanName<Schema>, Seen>\n\t\t\t| DuplicateTelemetrySpanNames<Rest, Seen | TelemetrySchemaSpanName<Schema>>\n\t: never;\n\ntype UniqueTelemetrySchemas<Schemas extends TelemetrySchemaTuple> = [DuplicateTelemetrySpanNames<Schemas>] extends [\n\tnever,\n]\n\t? unknown\n\t: { readonly \"duplicate telemetry span names\": DuplicateTelemetrySpanNames<Schemas> };\n\ntype UnionToIntersection<Union> = (Union extends unknown ? (value: Union) => void : never) extends (\n\tvalue: infer Intersection,\n) => void\n\t? Intersection\n\t: never;\n\ntype TypedSpanStarterForName<Schemas extends TelemetrySchemaTuple, Name extends SpanNameInSchemas<Schemas>> = <\n\tconst Attributes extends SpanStartAttributesInSchema<Schemas[number], Name>,\n\tResult,\n>(\n\tname: Name,\n\tattributes: ExactTelemetryAttributes<SpanStartAttributesInSchema<Schemas[number], Name>, Attributes>,\n\tcallback: (\n\t\tspan: SpanInSchema<Schemas[number], Name>,\n\t\tstartChildSpan: TypedSpanStarter<Schemas>,\n\t) => Result | Promise<Result>,\n) => Promise<Result>;\n\n/** A per-span overload set bound to one explicit parent context and one or more schemas. */\nexport type TypedSpanStarter<Schemas extends TelemetrySchemaTuple> = UnionToIntersection<\n\t{\n\t\t[Name in SpanNameInSchemas<Schemas>]: TypedSpanStarterForName<Schemas, Name>;\n\t}[SpanNameInSchemas<Schemas>]\n>;\n\nfunction bindTypedSpanStarter<Schemas extends TelemetrySchemaTuple>(\n\ttelemetryContext: TelemetryContext,\n): TypedSpanStarter<Schemas> {\n\tconst startSpan = (\n\t\tname: SpanNameInSchemas<Schemas>,\n\t\tattributes: SpanAttributes,\n\t\tcallback: (\n\t\t\tspan: SpanInSchema<Schemas[number], SpanNameInSchemas<Schemas>>,\n\t\t\tstartChildSpan: TypedSpanStarter<Schemas>,\n\t\t) => unknown,\n\t): Promise<unknown> =>\n\t\ttelemetryContext.startSpan({ name, attributes }, (span) =>\n\t\t\tcallback(\n\t\t\t\tspan as SpanInSchema<Schemas[number], SpanNameInSchemas<Schemas>>,\n\t\t\t\tbindTypedSpanStarter<Schemas>(span),\n\t\t\t),\n\t\t);\n\n\treturn startSpan as TypedSpanStarter<Schemas>;\n}\n\n/**\n * Bind an explicit parent context to the combined span vocabulary of one or more schemas.\n * Schema values are used only for type inference; no runtime schema validation is performed.\n */\nexport function createTypedSpanStarter<const Schemas extends TelemetrySchemaTuple>(\n\ttelemetryContext: TelemetryContext,\n\t_schemas: Schemas & UniqueTelemetrySchemas<Schemas>,\n): TypedSpanStarter<Schemas> {\n\treturn bindTypedSpanStarter<Schemas>(telemetryContext);\n}\n\nexport type {\n\tRecordedTelemetryEvent,\n\tRecordedTelemetryLink,\n\tRecordedTelemetryMeasurement,\n\tRecordedTelemetrySpan,\n} from \"./memory.ts\";\nexport { InMemoryTelemetryContext } from \"./memory.ts\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAgDvG,oEAAoE;AACpE,MAAM,UAAU,qBAAqB,CAA4C,MAAS;IACzF,OAAO,MAAM,CAAC;AACf,CAAC;AA0PD,SAAS,oBAAoB,CAC5B,gBAAkC;IAElC,MAAM,SAAS,GAAG,CACjB,IAAgC,EAChC,UAA0B,EAC1B,QAGY,EACO,EAAE,CACrB,gBAAgB,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CACzD,QAAQ,CACP,IAAiE,EACjE,oBAAoB,CAAU,IAAI,CAAC,CACnC,CACD,CAAC;IAEH,OAAO,SAAsC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACrC,gBAAkC,EAClC,QAAmD;IAEnD,OAAO,oBAAoB,CAAU,gBAAgB,CAAC,CAAC;AACxD,CAAC;AAQD,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC","sourcesContent":["import type { TelemetryMetricDefinition, TelemetryMetrics } from \"./metrics.ts\";\n\nexport type AttributeValue = string | number | boolean | readonly string[] | readonly number[] | readonly boolean[];\n\nexport interface SpanAttributes {\n\t[name: string]: AttributeValue | undefined;\n}\n\n/** Opaque, JSON-serializable adapter-owned propagation data. */\nexport type TelemetryCarrier = Record<string, string>;\n\n/** Optional transport capability implemented by the application's telemetry adapter. */\nexport interface TelemetryPropagation {\n\tinject(context: TelemetryContext): TelemetryCarrier | undefined;\n\t/** Absent or unknown carriers use the root; recognized identifiers are opaque strings. */\n\textract(carrier: TelemetryCarrier | undefined): TelemetryContext;\n}\n\nexport interface SpanLink {\n\tcontext: TelemetryContext;\n\tattributes?: SpanAttributes;\n}\n\nexport interface SpanOptions {\n\tname: string;\n\tattributes?: SpanAttributes;\n\tlinks?: readonly SpanLink[];\n}\n\nexport type SpanStatus = { status: \"ok\" } | { status: \"error\"; error?: { name: string; message: string } };\n\n/**\n * A settled span snapshot, independent of the recording adapter. Times are milliseconds at microsecond resolution;\n * event times are relative to span start.\n */\nexport interface StoredSpan {\n\treadonly id: string;\n\treadonly traceId: string;\n\treadonly parentId?: string;\n\treadonly name: string;\n\t/** Wall-clock milliseconds since the epoch (`telemetryNow`). */\n\treadonly startedMs: number;\n\treadonly endedMs: number;\n\treadonly attributes: SpanAttributes;\n\treadonly events: readonly { readonly name: string; readonly timeMs: number; readonly attributes: SpanAttributes }[];\n\treadonly links: readonly {\n\t\treadonly traceId: string;\n\t\treadonly spanId: string;\n\t\treadonly attributes?: SpanAttributes;\n\t}[];\n\treadonly status: SpanStatus;\n}\n\nexport interface StoredTrace {\n\treadonly traceId: string;\n\treadonly spans: readonly StoredSpan[];\n}\n\nexport interface TraceQuery {\n\t/** Name of the earliest stored span, with span ID breaking timestamp ties. */\n\treadonly name?: string;\n\t/** All equalities must match one span; that span may be anywhere in the trace. */\n\treadonly attributes?: Readonly<Record<string, string | number | boolean>>;\n\treadonly errors?: true;\n\t/** Inclusive bounds on the earliest stored span's start time. */\n\treadonly startMin?: number;\n\treadonly startMax?: number;\n\t/** Positive page size; defaults to 20. */\n\treadonly limit?: number;\n\t/** Opaque continuation from the previous page; retain the same filters. */\n\treadonly cursor?: string;\n}\n\nexport interface MetricQuery {\n\treadonly name: string;\n\t/** Inclusive bounds on interval start time. */\n\treadonly startMin?: number;\n\treadonly startMax?: number;\n\treadonly attributes?: Readonly<Record<string, string | number | boolean>>;\n}\n\nexport interface StoredMetric {\n\treadonly intervalMs: number;\n\treadonly name: string;\n\treadonly kind: \"counter\" | \"upDownCounter\" | \"histogram\";\n\treadonly unit?: string;\n\treadonly attributes: SpanAttributes;\n\treadonly count: number;\n\treadonly sum: number;\n\treadonly min: number;\n\treadonly max: number;\n}\n\n/** Read settled traces without depending on a storage backend. */\nexport interface TelemetryStore {\n\tfindTraces(query?: TraceQuery): Promise<{ traces: readonly StoredTrace[]; cursor?: string }>;\n\tgetTrace(traceId: string): Promise<StoredTrace | undefined>;\n\tfindMetrics(query: MetricQuery): Promise<readonly StoredMetric[]>;\n}\n\n/** Adapter contract for trusted typed inputs; malformed input behavior is unspecified. */\nexport interface TelemetryContext {\n\t/** Adapter capabilities remain available on child spans and extracted parents. */\n\treadonly metrics?: TelemetryMetrics;\n\treadonly propagation?: TelemetryPropagation;\n\tstartSpan<T>(options: SpanOptions, callback: (span: TelemetrySpan) => T | Promise<T>): Promise<T>;\n}\n\nexport interface TelemetrySpan extends TelemetryContext {\n\taddLink(link: SpanLink): void;\n\taddEvent(name: string, attributes?: SpanAttributes): void;\n\tsetAttributes(attributes: SpanAttributes): void;\n\tsetStatus(status: SpanStatus): void;\n}\n\nexport type {\n\tHistogramOptions,\n\tInstrumentOptions,\n\tSchemaTelemetryCounter,\n\tSchemaTelemetryHistogram,\n\tTelemetryCounter,\n\tTelemetryHistogram,\n\tTelemetryMetricAttributeDefinition,\n\tTelemetryMetricDefinition,\n\tTelemetryMetrics,\n\tTelemetryUpDownCounter,\n\tTypedTelemetryMetrics,\n} from \"./metrics.ts\";\nexport { createTypedMetrics } from \"./metrics.ts\";\nexport { NOOP_TELEMETRY_CONTEXT, NOOP_TELEMETRY_METRICS, NOOP_TELEMETRY_PROPAGATION } from \"./noop.ts\";\n\nexport type TelemetryAttributeType = \"string\" | \"number\" | \"boolean\" | \"string[]\" | \"number[]\" | \"boolean[]\";\n\nexport interface TelemetryAttributeMetadata {\n\tdescription: string;\n\tsensitive?: boolean;\n\tcardinality?: \"low\" | \"high\";\n}\n\nexport type TelemetryAttributeDefinition = TelemetryAttributeMetadata &\n\t(\n\t\t| { type: \"string\"; values?: readonly string[]; examples?: readonly string[] }\n\t\t| { type: \"number\"; values?: readonly number[]; examples?: readonly number[] }\n\t\t| { type: \"boolean\"; values?: readonly boolean[]; examples?: readonly boolean[] }\n\t\t| { type: \"string[]\"; elementValues?: readonly string[]; examples?: readonly (readonly string[])[] }\n\t\t| { type: \"number[]\"; elementValues?: readonly number[]; examples?: readonly (readonly number[])[] }\n\t\t| { type: \"boolean[]\"; elementValues?: readonly boolean[]; examples?: readonly (readonly boolean[])[] }\n\t);\n\nexport type TelemetryStartAttributeDefinition = TelemetryAttributeDefinition & { required: boolean };\nexport type TelemetryEventAttributeDefinition = TelemetryAttributeDefinition & { required: boolean };\n\nexport interface TelemetryEventDefinition {\n\tdescription: string;\n\tattributes: Record<string, TelemetryEventAttributeDefinition>;\n}\n\nexport type TelemetryParentDefinition =\n\t| { kind: \"any\" }\n\t| { kind: \"root_or_external\" }\n\t| { kind: \"spans\"; spans: readonly string[] };\n\nexport interface TelemetrySpanDefinition {\n\tdescription: string;\n\tparents: TelemetryParentDefinition;\n\tstartAttributes: Record<string, TelemetryStartAttributeDefinition>;\n\tendAttributes: Record<string, TelemetryAttributeDefinition>;\n\tevents?: Record<string, TelemetryEventDefinition>;\n\tstatus: { default: \"ok\"; errorWhen: string };\n}\n\nexport interface TelemetrySchemaDefinition {\n\tversion: number;\n\tspans: Record<string, TelemetrySpanDefinition>;\n\tmetrics?: Record<string, TelemetryMetricDefinition>;\n}\n\n/** Typed identity helper for serializable telemetry schema data. */\nexport function defineTelemetrySchema<const T extends TelemetrySchemaDefinition>(schema: T): T {\n\treturn schema;\n}\n\ntype AttributeDefinitionValue<Definition extends TelemetryAttributeDefinition> = Definition extends {\n\ttype: \"string\";\n\tvalues: readonly (infer Value extends string)[];\n}\n\t? Value\n\t: Definition extends { type: \"string\" }\n\t\t? string\n\t\t: Definition extends { type: \"number\"; values: readonly (infer Value extends number)[] }\n\t\t\t? Value\n\t\t\t: Definition extends { type: \"number\" }\n\t\t\t\t? number\n\t\t\t\t: Definition extends { type: \"boolean\"; values: readonly (infer Value extends boolean)[] }\n\t\t\t\t\t? Value\n\t\t\t\t\t: Definition extends { type: \"boolean\" }\n\t\t\t\t\t\t? boolean\n\t\t\t\t\t\t: Definition extends {\n\t\t\t\t\t\t\t\t\ttype: \"string[]\";\n\t\t\t\t\t\t\t\t\telementValues: readonly (infer Value extends string)[];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t? readonly Value[]\n\t\t\t\t\t\t\t: Definition extends { type: \"string[]\" }\n\t\t\t\t\t\t\t\t? readonly string[]\n\t\t\t\t\t\t\t\t: Definition extends {\n\t\t\t\t\t\t\t\t\t\t\ttype: \"number[]\";\n\t\t\t\t\t\t\t\t\t\t\telementValues: readonly (infer Value extends number)[];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t? readonly Value[]\n\t\t\t\t\t\t\t\t\t: Definition extends { type: \"number[]\" }\n\t\t\t\t\t\t\t\t\t\t? readonly number[]\n\t\t\t\t\t\t\t\t\t\t: Definition extends {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: \"boolean[]\";\n\t\t\t\t\t\t\t\t\t\t\t\t\telementValues: readonly (infer Value extends boolean)[];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t? readonly Value[]\n\t\t\t\t\t\t\t\t\t\t\t: readonly boolean[];\n\ntype RequiredAttributeNames<\n\tDefinitions extends Record<string, TelemetryStartAttributeDefinition | TelemetryEventAttributeDefinition>,\n> = {\n\t[Name in keyof Definitions]-?: Definitions[Name][\"required\"] extends true ? Name : never;\n}[keyof Definitions];\n\ntype OptionalAttributeNames<\n\tDefinitions extends Record<string, TelemetryStartAttributeDefinition | TelemetryEventAttributeDefinition>,\n> = Exclude<keyof Definitions, RequiredAttributeNames<Definitions>>;\n\nexport type InferRequiredAndOptionalAttributes<\n\tDefinitions extends Record<string, TelemetryStartAttributeDefinition | TelemetryEventAttributeDefinition>,\n> = keyof Definitions extends never\n\t? Record<string, never>\n\t: {\n\t\t\t[Name in RequiredAttributeNames<Definitions>]: AttributeDefinitionValue<Definitions[Name]>;\n\t\t} & {\n\t\t\t[Name in OptionalAttributeNames<Definitions>]?: AttributeDefinitionValue<Definitions[Name]>;\n\t\t};\n\nexport type InferStartAttributes<Definitions extends Record<string, TelemetryStartAttributeDefinition>> =\n\tInferRequiredAndOptionalAttributes<Definitions>;\n\nexport type InferOptionalAttributes<Definitions extends Record<string, TelemetryAttributeDefinition>> =\n\tkeyof Definitions extends never\n\t\t? Record<string, never>\n\t\t: { [Name in keyof Definitions]?: AttributeDefinitionValue<Definitions[Name]> };\n\nexport type ExactTelemetryAttributes<Expected, Actual extends Expected> = Actual &\n\tRecord<Exclude<keyof Actual, keyof Expected>, never>;\n\nexport type InferEventAttributes<Definitions extends Record<string, TelemetryEventAttributeDefinition>> =\n\tInferRequiredAndOptionalAttributes<Definitions>;\n\nexport type TelemetrySchemaSpanName<Schema extends TelemetrySchemaDefinition> = keyof Schema[\"spans\"] & string;\n\ntype SchemaSpan<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = Schema[\"spans\"][Name];\n\nexport type TelemetrySchemaSpanStartAttributes<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = SchemaSpan<Schema, Name>[\"startAttributes\"] extends infer Definitions extends Record<\n\tstring,\n\tTelemetryStartAttributeDefinition\n>\n\t? InferStartAttributes<Definitions>\n\t: never;\n\nexport type TelemetrySchemaSpanEndAttributes<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = SchemaSpan<Schema, Name>[\"endAttributes\"] extends infer Definitions extends Record<\n\tstring,\n\tTelemetryAttributeDefinition\n>\n\t? InferOptionalAttributes<Definitions>\n\t: never;\n\ntype SchemaSpanEvents<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = SchemaSpan<Schema, Name> extends { events: infer Events extends Record<string, TelemetryEventDefinition> }\n\t? Events\n\t: Record<never, never>;\n\nexport type TelemetrySchemaSpanEventName<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = keyof SchemaSpanEvents<Schema, Name> & string;\n\ntype SchemaSpanEvent<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n\tEventName extends TelemetrySchemaSpanEventName<Schema, Name>,\n> = SchemaSpanEvents<Schema, Name> extends infer Events\n\t? EventName extends keyof Events\n\t\t? Events[EventName]\n\t\t: never\n\t: never;\n\nexport type TelemetrySchemaSpanEventAttributes<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n\tEventName extends TelemetrySchemaSpanEventName<Schema, Name>,\n> = SchemaSpanEvent<Schema, Name, EventName> extends {\n\tattributes: infer Definitions extends Record<string, TelemetryEventAttributeDefinition>;\n}\n\t? InferEventAttributes<Definitions>\n\t: never;\n\ntype SchemaSpanEventAttributeDefinitions<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n\tEventName extends TelemetrySchemaSpanEventName<Schema, Name>,\n> = SchemaSpanEvent<Schema, Name, EventName> extends {\n\tattributes: infer Definitions extends Record<string, TelemetryEventAttributeDefinition>;\n}\n\t? Definitions\n\t: Record<never, never>;\n\ntype EventArguments<\n\tDefinitions extends Record<string, TelemetryEventAttributeDefinition>,\n\tAttributes extends InferEventAttributes<Definitions>,\n> = [RequiredAttributeNames<Definitions>] extends [never]\n\t? [attributes?: ExactTelemetryAttributes<InferEventAttributes<Definitions>, Attributes>]\n\t: [attributes: ExactTelemetryAttributes<InferEventAttributes<Definitions>, Attributes>];\n\nexport type SchemaTelemetrySpan<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends TelemetrySchemaSpanName<Schema>,\n> = Omit<TelemetrySpan, \"addEvent\" | \"setAttributes\"> & {\n\taddEvent<\n\t\tEventName extends TelemetrySchemaSpanEventName<Schema, Name>,\n\t\tconst Attributes extends InferEventAttributes<\n\t\t\tSchemaSpanEventAttributeDefinitions<Schema, Name, EventName>\n\t\t> = InferEventAttributes<SchemaSpanEventAttributeDefinitions<Schema, Name, EventName>>,\n\t>(\n\t\tname: EventName,\n\t\t...args: EventArguments<SchemaSpanEventAttributeDefinitions<Schema, Name, EventName>, Attributes>\n\t): void;\n\tsetAttributes<const Attributes extends TelemetrySchemaSpanEndAttributes<Schema, Name>>(\n\t\tattributes: ExactTelemetryAttributes<TelemetrySchemaSpanEndAttributes<Schema, Name>, Attributes>,\n\t): void;\n};\n\nexport type TelemetrySchemaSpanUnion<Schema extends TelemetrySchemaDefinition> = {\n\t[Name in TelemetrySchemaSpanName<Schema>]: {\n\t\tname: Name;\n\t\tstartAttributes: TelemetrySchemaSpanStartAttributes<Schema, Name>;\n\t\tendAttributes: TelemetrySchemaSpanEndAttributes<Schema, Name>;\n\t\tevents: {\n\t\t\t[EventName in TelemetrySchemaSpanEventName<Schema, Name>]: TelemetrySchemaSpanEventAttributes<\n\t\t\t\tSchema,\n\t\t\t\tName,\n\t\t\t\tEventName\n\t\t\t>;\n\t\t};\n\t};\n}[TelemetrySchemaSpanName<Schema>];\n\ntype TelemetrySchemaTuple = readonly [TelemetrySchemaDefinition, ...TelemetrySchemaDefinition[]];\n\ntype SpanNameInSchema<Schema extends TelemetrySchemaDefinition> = Schema extends TelemetrySchemaDefinition\n\t? TelemetrySchemaSpanName<Schema>\n\t: never;\n\ntype SpanNameInSchemas<Schemas extends TelemetrySchemaTuple> = SpanNameInSchema<Schemas[number]>;\n\ntype SpanStartAttributesInSchema<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends string,\n> = Schema extends TelemetrySchemaDefinition\n\t? Name extends TelemetrySchemaSpanName<Schema>\n\t\t? TelemetrySchemaSpanStartAttributes<Schema, Name>\n\t\t: never\n\t: never;\n\ntype SpanInSchema<\n\tSchema extends TelemetrySchemaDefinition,\n\tName extends string,\n> = Schema extends TelemetrySchemaDefinition\n\t? Name extends TelemetrySchemaSpanName<Schema>\n\t\t? SchemaTelemetrySpan<Schema, Name>\n\t\t: never\n\t: never;\n\ntype DuplicateTelemetrySpanNames<\n\tSchemas extends readonly TelemetrySchemaDefinition[],\n\tSeen extends string = never,\n> = Schemas extends readonly [\n\tinfer Schema extends TelemetrySchemaDefinition,\n\t...infer Rest extends readonly TelemetrySchemaDefinition[],\n]\n\t?\n\t\t\t| Extract<TelemetrySchemaSpanName<Schema>, Seen>\n\t\t\t| DuplicateTelemetrySpanNames<Rest, Seen | TelemetrySchemaSpanName<Schema>>\n\t: never;\n\ntype UniqueTelemetrySchemas<Schemas extends TelemetrySchemaTuple> = [DuplicateTelemetrySpanNames<Schemas>] extends [\n\tnever,\n]\n\t? unknown\n\t: { readonly \"duplicate telemetry span names\": DuplicateTelemetrySpanNames<Schemas> };\n\ntype UnionToIntersection<Union> = (Union extends unknown ? (value: Union) => void : never) extends (\n\tvalue: infer Intersection,\n) => void\n\t? Intersection\n\t: never;\n\ntype TypedSpanStarterForName<Schemas extends TelemetrySchemaTuple, Name extends SpanNameInSchemas<Schemas>> = <\n\tconst Attributes extends SpanStartAttributesInSchema<Schemas[number], Name>,\n\tResult,\n>(\n\tname: Name,\n\tattributes: ExactTelemetryAttributes<SpanStartAttributesInSchema<Schemas[number], Name>, Attributes>,\n\tcallback: (\n\t\tspan: SpanInSchema<Schemas[number], Name>,\n\t\tstartChildSpan: TypedSpanStarter<Schemas>,\n\t) => Result | Promise<Result>,\n) => Promise<Result>;\n\n/** A per-span overload set bound to one explicit parent context and one or more schemas. */\nexport type TypedSpanStarter<Schemas extends TelemetrySchemaTuple> = UnionToIntersection<\n\t{\n\t\t[Name in SpanNameInSchemas<Schemas>]: TypedSpanStarterForName<Schemas, Name>;\n\t}[SpanNameInSchemas<Schemas>]\n>;\n\nfunction bindTypedSpanStarter<Schemas extends TelemetrySchemaTuple>(\n\ttelemetryContext: TelemetryContext,\n): TypedSpanStarter<Schemas> {\n\tconst startSpan = (\n\t\tname: SpanNameInSchemas<Schemas>,\n\t\tattributes: SpanAttributes,\n\t\tcallback: (\n\t\t\tspan: SpanInSchema<Schemas[number], SpanNameInSchemas<Schemas>>,\n\t\t\tstartChildSpan: TypedSpanStarter<Schemas>,\n\t\t) => unknown,\n\t): Promise<unknown> =>\n\t\ttelemetryContext.startSpan({ name, attributes }, (span) =>\n\t\t\tcallback(\n\t\t\t\tspan as SpanInSchema<Schemas[number], SpanNameInSchemas<Schemas>>,\n\t\t\t\tbindTypedSpanStarter<Schemas>(span),\n\t\t\t),\n\t\t);\n\n\treturn startSpan as TypedSpanStarter<Schemas>;\n}\n\n/**\n * Bind an explicit parent context to the combined span vocabulary of one or more schemas.\n * Schema values are used only for type inference; no runtime schema validation is performed.\n */\nexport function createTypedSpanStarter<const Schemas extends TelemetrySchemaTuple>(\n\ttelemetryContext: TelemetryContext,\n\t_schemas: Schemas & UniqueTelemetrySchemas<Schemas>,\n): TypedSpanStarter<Schemas> {\n\treturn bindTypedSpanStarter<Schemas>(telemetryContext);\n}\n\nexport type {\n\tRecordedTelemetryEvent,\n\tRecordedTelemetryLink,\n\tRecordedTelemetryMeasurement,\n\tRecordedTelemetrySpan,\n} from \"./memory.ts\";\nexport { InMemoryTelemetryContext, telemetryNow } from \"./memory.ts\";\n"]}
|
package/dist/memory.d.ts
CHANGED
|
@@ -32,6 +32,13 @@ export interface RecordedTelemetryMeasurement {
|
|
|
32
32
|
readonly attributes: Readonly<SpanAttributes>;
|
|
33
33
|
readonly context: Readonly<TelemetryCarrier> | null;
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Now as milliseconds since the epoch, rounded to the microsecond: `performance.now()` (monotonic, sub-millisecond)
|
|
37
|
+
* plus an anchor to the wall clock. While the two agree within 10 ms, times in one process keep their order and
|
|
38
|
+
* spacing to the microsecond; past that the clock follows `Date.now()` again, at whole milliseconds. Every adapter
|
|
39
|
+
* of this package and Chord's SQLite store stamp span starts with it, so their times agree.
|
|
40
|
+
*/
|
|
41
|
+
export declare function telemetryNow(): number;
|
|
35
42
|
/**
|
|
36
43
|
* Backend-neutral reference implementation that records spans in process memory.
|
|
37
44
|
* Create a fresh instance to isolate tests or independent recording scopes.
|
package/dist/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EACX,cAAc,EAEd,WAAW,EACX,UAAU,EACV,YAAY,EAEZ,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,UAAU,EACV,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,eAAe,GAAG,WAAW,CAAC;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;CACpD;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/memory.js
CHANGED
|
@@ -2,6 +2,33 @@ import { NOOP_TELEMETRY_CONTEXT } from "./noop.js";
|
|
|
2
2
|
function carrierId(carrier) {
|
|
3
3
|
return `${carrier["pi-memory-scope"]}:${carrier["pi-memory-span"]}`;
|
|
4
4
|
}
|
|
5
|
+
// The clock of span times: wall-clock milliseconds at microsecond resolution, from the monotonic high-resolution
|
|
6
|
+
// clock anchored to the wall clock (`telemetryNow`, also Chord's SQLite store's).
|
|
7
|
+
/**
|
|
8
|
+
* How far the anchored clock may part from `Date.now()` before it is anchored anew: more than `Date.now()`'s own
|
|
9
|
+
* truncation to whole milliseconds, less than any step worth following (a wall clock set, a sleep the monotonic clock
|
|
10
|
+
* did not count).
|
|
11
|
+
*/
|
|
12
|
+
const TOLERANCE_MS = 10;
|
|
13
|
+
/** The wall-clock time of `performance.now()`'s zero; `performance.timeOrigin` until the first step is followed. */
|
|
14
|
+
let anchor = performance.timeOrigin;
|
|
15
|
+
/**
|
|
16
|
+
* Now as milliseconds since the epoch, rounded to the microsecond: `performance.now()` (monotonic, sub-millisecond)
|
|
17
|
+
* plus an anchor to the wall clock. While the two agree within 10 ms, times in one process keep their order and
|
|
18
|
+
* spacing to the microsecond; past that the clock follows `Date.now()` again, at whole milliseconds. Every adapter
|
|
19
|
+
* of this package and Chord's SQLite store stamp span starts with it, so their times agree.
|
|
20
|
+
*/
|
|
21
|
+
export function telemetryNow() {
|
|
22
|
+
const clock = performance.now();
|
|
23
|
+
const wall = Date.now();
|
|
24
|
+
if (Math.abs(anchor + clock - wall) > TOLERANCE_MS)
|
|
25
|
+
anchor = wall - clock;
|
|
26
|
+
return microseconds(anchor + clock);
|
|
27
|
+
}
|
|
28
|
+
/** `ms` rounded to the microsecond, as span times are. */
|
|
29
|
+
function microseconds(ms) {
|
|
30
|
+
return Math.round(ms * 1000) / 1000;
|
|
31
|
+
}
|
|
5
32
|
// Identity survives settlement without exposing backend IDs on the generic context contract.
|
|
6
33
|
const contextCarriers = new WeakMap();
|
|
7
34
|
function copyAttributes(attributes) {
|
|
@@ -31,7 +58,7 @@ function createSpan(state, parent, options) {
|
|
|
31
58
|
}
|
|
32
59
|
const id = state.nextSpanId++;
|
|
33
60
|
return {
|
|
34
|
-
startedMs:
|
|
61
|
+
startedMs: telemetryNow(),
|
|
35
62
|
clock: performance.now(),
|
|
36
63
|
id,
|
|
37
64
|
parentId: parent?.localId ?? null,
|
|
@@ -79,7 +106,7 @@ async function startInMemorySpan(state, parent, options, callback) {
|
|
|
79
106
|
return;
|
|
80
107
|
recordedSpan.events.push({
|
|
81
108
|
name,
|
|
82
|
-
timeMs: performance.now() - recordedSpan.clock,
|
|
109
|
+
timeMs: microseconds(performance.now() - recordedSpan.clock),
|
|
83
110
|
attributes: copyAttributes(attributes),
|
|
84
111
|
});
|
|
85
112
|
},
|
|
@@ -109,7 +136,7 @@ async function startInMemorySpan(state, parent, options, callback) {
|
|
|
109
136
|
}
|
|
110
137
|
finally {
|
|
111
138
|
recordedSpan.settled = true;
|
|
112
|
-
recordedSpan.endedMs = recordedSpan.startedMs + performance.now() - recordedSpan.clock;
|
|
139
|
+
recordedSpan.endedMs = microseconds(recordedSpan.startedMs + performance.now() - recordedSpan.clock);
|
|
113
140
|
recordedSpan.endSequence = state.nextEndSequence++;
|
|
114
141
|
}
|
|
115
142
|
}
|
package/dist/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tMetricQuery,\n\tSpanAttributes,\n\tSpanLink,\n\tSpanOptions,\n\tSpanStatus,\n\tStoredMetric,\n\tStoredSpan,\n\tStoredTrace,\n\tTelemetryCarrier,\n\tTelemetryContext,\n\tTelemetryPropagation,\n\tTelemetrySpan,\n\tTelemetryStore,\n\tTraceQuery,\n} from \"./index.ts\";\nimport type {\n\tHistogramOptions,\n\tInstrumentOptions,\n\tTelemetryCounter,\n\tTelemetryHistogram,\n\tTelemetryMetrics,\n\tTelemetryUpDownCounter,\n} from \"./metrics.ts\";\nimport { NOOP_TELEMETRY_CONTEXT } from \"./noop.ts\";\n\nexport interface RecordedTelemetryEvent {\n\treadonly name: string;\n\treadonly attributes: Readonly<SpanAttributes>;\n}\n\nexport interface RecordedTelemetryLink {\n\treadonly context: Readonly<TelemetryCarrier>;\n\treadonly attributes: Readonly<SpanAttributes>;\n}\n\nexport interface RecordedTelemetrySpan {\n\treadonly id: number;\n\t/** Local parent ID, or null for roots and parents owned by another recorder. */\n\treadonly parentId: number | null;\n\treadonly context: Readonly<TelemetryCarrier>;\n\treadonly parentContext: Readonly<TelemetryCarrier> | null;\n\treadonly links: readonly RecordedTelemetryLink[];\n\treadonly name: string;\n\treadonly attributes: Readonly<SpanAttributes>;\n\treadonly events: readonly RecordedTelemetryEvent[];\n\treadonly status: SpanStatus;\n\treadonly settled: boolean;\n\treadonly endSequence?: number;\n}\n\nexport interface RecordedTelemetryMeasurement {\n\treadonly kind: \"counter\" | \"upDownCounter\" | \"histogram\";\n\treadonly name: string;\n\treadonly description?: string;\n\treadonly unit?: string;\n\treadonly boundaries?: readonly number[];\n\treadonly value: number;\n\treadonly attributes: Readonly<SpanAttributes>;\n\treadonly context: Readonly<TelemetryCarrier> | null;\n}\n\ninterface MutableRecordedTelemetryEvent {\n\ttimeMs: number;\n\tname: string;\n\tattributes: SpanAttributes;\n}\n\ninterface MutableRecordedTelemetrySpan {\n\tstartedMs: number;\n\tclock: number;\n\tendedMs?: number;\n\tid: number;\n\tparentId: number | null;\n\tcontext: TelemetryCarrier;\n\tparentContext: TelemetryCarrier | null;\n\tlinks: RecordedTelemetryLink[];\n\tname: string;\n\tattributes: SpanAttributes;\n\tevents: MutableRecordedTelemetryEvent[];\n\tstatus: SpanStatus;\n\texplicitStatus: boolean;\n\tsettled: boolean;\n\tendSequence?: number;\n}\n\ninterface InMemoryParent {\n\tcontext: TelemetryCarrier;\n\tlocalId: number | null;\n\tspan?: MutableRecordedTelemetrySpan;\n}\n\nfunction carrierId(carrier: Readonly<TelemetryCarrier>): string {\n\treturn `${carrier[\"pi-memory-scope\"]}:${carrier[\"pi-memory-span\"]}`;\n}\n\n// Identity survives settlement without exposing backend IDs on the generic context contract.\nconst contextCarriers = new WeakMap<TelemetryContext, TelemetryCarrier>();\n\ninterface InMemoryTelemetryState {\n\tmetrics: TelemetryMetrics;\n\tpropagation: TelemetryPropagation;\n\tscope: string;\n\tspans: MutableRecordedTelemetrySpan[];\n\tmeasurements: { intervalMs: number; measurement: RecordedTelemetryMeasurement }[];\n\tnextSpanId: number;\n\tnextEndSequence: number;\n}\n\nfunction copyAttributes(attributes?: SpanAttributes): SpanAttributes {\n\treturn Object.fromEntries(\n\t\tObject.entries(attributes ?? {})\n\t\t\t.filter(([, value]) => value !== undefined)\n\t\t\t.map(([name, value]) => [name, Array.isArray(value) ? [...value] : value]),\n\t);\n}\n\nfunction copyLink(link: SpanLink): RecordedTelemetryLink | undefined {\n\tconst context = contextCarriers.get(link.context);\n\treturn context ? { context: { ...context }, attributes: copyAttributes(link.attributes) } : undefined;\n}\n\nfunction copyStatus(status: SpanStatus): SpanStatus {\n\tif (status.status === \"ok\") return { status: \"ok\" };\n\treturn status.error\n\t\t? { status: \"error\", error: { name: status.error.name, message: status.error.message } }\n\t\t: { status: \"error\" };\n}\n\nfunction createSpan(\n\tstate: InMemoryTelemetryState,\n\tparent: InMemoryParent | undefined,\n\toptions: SpanOptions,\n): MutableRecordedTelemetrySpan {\n\tconst name = options.name;\n\tconst attributes = copyAttributes(options.attributes);\n\tconst links: RecordedTelemetryLink[] = [];\n\tfor (const link of options.links ?? []) {\n\t\tconst copy = copyLink(link);\n\t\tif (copy) links.push(copy);\n\t}\n\tconst id = state.nextSpanId++;\n\treturn {\n\t\tstartedMs: Date.now(),\n\t\tclock: performance.now(),\n\t\tid,\n\t\tparentId: parent?.localId ?? null,\n\t\tcontext: {\n\t\t\t\"pi-memory-scope\": state.scope,\n\t\t\t\"pi-memory-span\": String(id),\n\t\t\t\"pi-memory-trace\": parent?.context[\"pi-memory-trace\"] ?? `${state.scope}:${id}`,\n\t\t},\n\t\tparentContext: parent ? { ...parent.context } : null,\n\t\tlinks,\n\t\tname,\n\t\tattributes,\n\t\tevents: [],\n\t\tstatus: { status: \"ok\" },\n\t\texplicitStatus: false,\n\t\tsettled: false,\n\t};\n}\n\nfunction startInertSpan<T>(\n\tstate: InMemoryTelemetryState,\n\toptions: SpanOptions,\n\tcallback: (span: TelemetrySpan) => T | Promise<T>,\n): Promise<T> {\n\treturn NOOP_TELEMETRY_CONTEXT.startSpan(options, (noop) =>\n\t\tcallback({\n\t\t\t...noop,\n\t\t\tmetrics: state.metrics,\n\t\t\tpropagation: state.propagation,\n\t\t\tstartSpan: <Result>(\n\t\t\t\tchildOptions: SpanOptions,\n\t\t\t\tchildCallback: (span: TelemetrySpan) => Result | Promise<Result>,\n\t\t\t) => startInertSpan(state, childOptions, childCallback),\n\t\t}),\n\t);\n}\n\nasync function startInMemorySpan<T>(\n\tstate: InMemoryTelemetryState,\n\tparent: InMemoryParent | undefined,\n\toptions: SpanOptions,\n\tcallback: (span: TelemetrySpan) => T | Promise<T>,\n): Promise<T> {\n\tif (parent?.span?.settled) return startInertSpan(state, options, callback);\n\n\tconst recordedSpan = createSpan(state, parent, options);\n\tstate.spans.push(recordedSpan);\n\n\tconst span: TelemetrySpan = {\n\t\tmetrics: state.metrics,\n\t\tpropagation: state.propagation,\n\t\tstartSpan: <Result>(\n\t\t\tchildOptions: SpanOptions,\n\t\t\tchildCallback: (child: TelemetrySpan) => Result | Promise<Result>,\n\t\t) =>\n\t\t\tstartInMemorySpan(\n\t\t\t\tstate,\n\t\t\t\t{ context: recordedSpan.context, localId: recordedSpan.id, span: recordedSpan },\n\t\t\t\tchildOptions,\n\t\t\t\tchildCallback,\n\t\t\t),\n\t\taddLink(link) {\n\t\t\tif (recordedSpan.settled) return;\n\t\t\tconst copy = copyLink(link);\n\t\t\tif (copy) recordedSpan.links.push(copy);\n\t\t},\n\t\taddEvent(name, attributes) {\n\t\t\tif (recordedSpan.settled) return;\n\t\t\trecordedSpan.events.push({\n\t\t\t\tname,\n\t\t\t\ttimeMs: performance.now() - recordedSpan.clock,\n\t\t\t\tattributes: copyAttributes(attributes),\n\t\t\t});\n\t\t},\n\t\tsetAttributes(attributes) {\n\t\t\tif (recordedSpan.settled) return;\n\t\t\trecordedSpan.attributes = { ...recordedSpan.attributes, ...copyAttributes(attributes) };\n\t\t},\n\t\tsetStatus(status) {\n\t\t\tif (recordedSpan.settled) return;\n\t\t\trecordedSpan.status = copyStatus(status);\n\t\t\trecordedSpan.explicitStatus = true;\n\t\t},\n\t};\n\n\tcontextCarriers.set(span, recordedSpan.context);\n\n\ttry {\n\t\treturn await callback(span);\n\t} catch (error) {\n\t\tif (!recordedSpan.explicitStatus)\n\t\t\trecordedSpan.status =\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? { status: \"error\", error: { name: error.name, message: error.message } }\n\t\t\t\t\t: { status: \"error\" };\n\t\tthrow error;\n\t} finally {\n\t\trecordedSpan.settled = true;\n\t\trecordedSpan.endedMs = recordedSpan.startedMs + performance.now() - recordedSpan.clock;\n\t\trecordedSpan.endSequence = state.nextEndSequence++;\n\t}\n}\n\nfunction createMeasurementRecorder(\n\tstate: InMemoryTelemetryState,\n\tkind: RecordedTelemetryMeasurement[\"kind\"],\n\tname: string,\n\toptions?: HistogramOptions,\n): (value: number, attributes?: SpanAttributes, context?: TelemetryContext) => void {\n\tconst description = options?.description;\n\tconst unit = options?.unit;\n\tconst boundaries = kind === \"histogram\" && options?.boundaries !== undefined ? [...options.boundaries] : undefined;\n\tconst metadata = {\n\t\tkind,\n\t\tname,\n\t\t...(description === undefined ? {} : { description }),\n\t\t...(unit === undefined ? {} : { unit }),\n\t\t...(boundaries === undefined ? {} : { boundaries }),\n\t};\n\treturn (value, attributes, context) => {\n\t\tconst carrier = context === undefined ? undefined : contextCarriers.get(context);\n\t\tstate.measurements.push({\n\t\t\tintervalMs: Math.floor(Date.now() / 10_000) * 10_000,\n\t\t\tmeasurement: {\n\t\t\t\t...metadata,\n\t\t\t\tvalue,\n\t\t\t\tattributes: copyAttributes(attributes),\n\t\t\t\tcontext: carrier ? { ...carrier } : null,\n\t\t\t},\n\t\t});\n\t};\n}\n\n/**\n * Backend-neutral reference implementation that records spans in process memory.\n * Create a fresh instance to isolate tests or independent recording scopes.\n */\nexport class InMemoryTelemetryContext\n\timplements TelemetryContext, TelemetryPropagation, TelemetryMetrics, TelemetryStore\n{\n\treadonly metrics: TelemetryMetrics = this;\n\treadonly propagation: TelemetryPropagation = this;\n\tprivate readonly state: InMemoryTelemetryState = {\n\t\tmetrics: this,\n\t\tpropagation: this,\n\t\tscope: crypto.randomUUID(),\n\t\tspans: [],\n\t\tmeasurements: [],\n\t\tnextSpanId: 1,\n\t\tnextEndSequence: 1,\n\t};\n\n\tstartSpan<T>(options: SpanOptions, callback: (span: TelemetrySpan) => T | Promise<T>): Promise<T> {\n\t\treturn startInMemorySpan(this.state, undefined, options, callback);\n\t}\n\n\t/** Returns a detached carrier for a known span or extracted parent, including settled spans. */\n\tinject(context: TelemetryContext): TelemetryCarrier | undefined {\n\t\tconst carrier = contextCarriers.get(context);\n\t\treturn carrier ? { ...carrier } : undefined;\n\t}\n\n\t/** Missing or non-string carrier identities fall back to this recorder's root context. */\n\textract(carrier: TelemetryCarrier | undefined): TelemetryContext {\n\t\tconst scope = carrier?.[\"pi-memory-scope\"];\n\t\tconst span = carrier?.[\"pi-memory-span\"];\n\t\tconst traceId = carrier?.[\"pi-memory-trace\"];\n\t\tif (typeof scope !== \"string\" || typeof span !== \"string\" || typeof traceId !== \"string\") return this;\n\t\tconst context = { \"pi-memory-scope\": scope, \"pi-memory-span\": span, \"pi-memory-trace\": traceId };\n\t\tconst localId = scope === this.state.scope ? Number(span) : null;\n\t\tconst parent: TelemetryContext = {\n\t\t\tmetrics: this,\n\t\t\tpropagation: this,\n\t\t\tstartSpan: <T>(options: SpanOptions, callback: (span: TelemetrySpan) => T | Promise<T>) =>\n\t\t\t\tstartInMemorySpan(this.state, { context, localId }, options, callback),\n\t\t};\n\t\tcontextCarriers.set(parent, context);\n\t\treturn parent;\n\t}\n\n\tcounter(name: string, options?: InstrumentOptions): TelemetryCounter {\n\t\treturn { add: createMeasurementRecorder(this.state, \"counter\", name, options) };\n\t}\n\n\tupDownCounter(name: string, options?: InstrumentOptions): TelemetryUpDownCounter {\n\t\treturn { add: createMeasurementRecorder(this.state, \"upDownCounter\", name, options) };\n\t}\n\n\thistogram(name: string, options?: HistogramOptions): TelemetryHistogram {\n\t\treturn { record: createMeasurementRecorder(this.state, \"histogram\", name, options) };\n\t}\n\n\tprivate storedSpans(): StoredSpan[] {\n\t\treturn this.state.spans\n\t\t\t.filter((span) => span.settled)\n\t\t\t.map((span) => ({\n\t\t\t\tid: carrierId(span.context),\n\t\t\t\ttraceId: span.context[\"pi-memory-trace\"]!,\n\t\t\t\t...(span.parentContext ? { parentId: carrierId(span.parentContext) } : {}),\n\t\t\t\tname: span.name,\n\t\t\t\tstartedMs: span.startedMs,\n\t\t\t\tendedMs: span.endedMs!,\n\t\t\t\tattributes: copyAttributes(span.attributes),\n\t\t\t\tevents: span.events.map((event) => ({\n\t\t\t\t\tname: event.name,\n\t\t\t\t\ttimeMs: event.timeMs,\n\t\t\t\t\tattributes: copyAttributes(event.attributes),\n\t\t\t\t})),\n\t\t\t\tlinks: span.links.map((link) => ({\n\t\t\t\t\ttraceId: link.context[\"pi-memory-trace\"]!,\n\t\t\t\t\tspanId: carrierId(link.context),\n\t\t\t\t\tattributes: copyAttributes(link.attributes),\n\t\t\t\t})),\n\t\t\t\tstatus: copyStatus(span.status),\n\t\t\t}))\n\t\t\t.sort((a, b) => a.startedMs - b.startedMs || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));\n\t}\n\n\tasync getTrace(traceId: string): Promise<StoredTrace | undefined> {\n\t\tconst spans = this.storedSpans().filter((span) => span.traceId === traceId);\n\t\treturn spans.length ? { traceId, spans } : undefined;\n\t}\n\n\tasync findTraces(query: TraceQuery = {}): Promise<{ traces: readonly StoredTrace[]; cursor?: string }> {\n\t\tconst limit = query.limit ?? 20;\n\t\tconst after = query.cursor === undefined ? undefined : (JSON.parse(query.cursor) as [number, string]);\n\t\tconst grouped = new Map<string, { traceId: string; spans: StoredSpan[] }>();\n\t\tfor (const span of this.storedSpans()) {\n\t\t\tlet trace = grouped.get(span.traceId);\n\t\t\tif (!trace) {\n\t\t\t\ttrace = { traceId: span.traceId, spans: [] };\n\t\t\t\tgrouped.set(span.traceId, trace);\n\t\t\t}\n\t\t\ttrace.spans.push(span);\n\t\t}\n\t\tconst matches = [...grouped.values()]\n\t\t\t.filter((trace) => {\n\t\t\t\tconst first = trace.spans[0]!;\n\t\t\t\treturn (\n\t\t\t\t\t(query.name === undefined || first.name === query.name) &&\n\t\t\t\t\t(query.startMin === undefined || first.startedMs >= query.startMin) &&\n\t\t\t\t\t(query.startMax === undefined || first.startedMs <= query.startMax) &&\n\t\t\t\t\t(!after || first.startedMs < after[0] || (first.startedMs === after[0] && trace.traceId > after[1])) &&\n\t\t\t\t\t(!query.errors || trace.spans.some((span) => span.status.status === \"error\")) &&\n\t\t\t\t\t(!query.attributes ||\n\t\t\t\t\t\ttrace.spans.some((span) =>\n\t\t\t\t\t\t\tObject.entries(query.attributes!).every(([key, value]) => span.attributes[key] === value),\n\t\t\t\t\t\t))\n\t\t\t\t);\n\t\t\t})\n\t\t\t.sort(\n\t\t\t\t(a, b) =>\n\t\t\t\t\tb.spans[0]!.startedMs - a.spans[0]!.startedMs ||\n\t\t\t\t\t(a.traceId < b.traceId ? -1 : a.traceId > b.traceId ? 1 : 0),\n\t\t\t);\n\t\tconst traces = matches.slice(0, limit);\n\t\tconst last = traces.at(-1)!;\n\t\treturn {\n\t\t\ttraces,\n\t\t\t...(matches.length > limit ? { cursor: JSON.stringify([last.spans[0]!.startedMs, last.traceId]) } : {}),\n\t\t};\n\t}\n\n\t/** Read raw measurements as count-one rows, without changing getMetrics() snapshots. */\n\tasync findMetrics(query: MetricQuery): Promise<readonly StoredMetric[]> {\n\t\treturn this.state.measurements\n\t\t\t.filter(\n\t\t\t\t({ intervalMs, measurement }) =>\n\t\t\t\t\tmeasurement.name === query.name &&\n\t\t\t\t\t(query.startMin === undefined || intervalMs >= query.startMin) &&\n\t\t\t\t\t(query.startMax === undefined || intervalMs <= query.startMax) &&\n\t\t\t\t\tObject.entries(query.attributes ?? {}).every(([key, value]) => measurement.attributes[key] === value),\n\t\t\t)\n\t\t\t.map(({ intervalMs, measurement }) => ({\n\t\t\t\tintervalMs,\n\t\t\t\tname: measurement.name,\n\t\t\t\tkind: measurement.kind,\n\t\t\t\t...(measurement.unit === undefined ? {} : { unit: measurement.unit }),\n\t\t\t\tattributes: copyAttributes(measurement.attributes),\n\t\t\t\tcount: 1,\n\t\t\t\tsum: measurement.value,\n\t\t\t\tmin: measurement.value,\n\t\t\t\tmax: measurement.value,\n\t\t\t}));\n\t}\n\n\t/** Returns detached measurements in recording order, without aggregation. */\n\tgetMetrics(): readonly RecordedTelemetryMeasurement[] {\n\t\treturn this.state.measurements.map(({ measurement }) => ({\n\t\t\t...measurement,\n\t\t\t...(measurement.boundaries === undefined ? {} : { boundaries: [...measurement.boundaries] }),\n\t\t\tattributes: copyAttributes(measurement.attributes),\n\t\t\tcontext: measurement.context ? { ...measurement.context } : null,\n\t\t}));\n\t}\n\n\t/** Returns detached snapshots in span-start order. */\n\tgetSpans(): readonly RecordedTelemetrySpan[] {\n\t\treturn this.state.spans.map((span) => ({\n\t\t\tid: span.id,\n\t\t\tparentId: span.parentId,\n\t\t\tcontext: { ...span.context },\n\t\t\tparentContext: span.parentContext ? { ...span.parentContext } : null,\n\t\t\tlinks: span.links.map((link) => ({\n\t\t\t\tcontext: { ...link.context },\n\t\t\t\tattributes: copyAttributes(link.attributes),\n\t\t\t})),\n\t\t\tname: span.name,\n\t\t\tattributes: copyAttributes(span.attributes),\n\t\t\tevents: span.events.map((event) => ({\n\t\t\t\tname: event.name,\n\t\t\t\tattributes: copyAttributes(event.attributes),\n\t\t\t})),\n\t\t\tstatus: copyStatus(span.status),\n\t\t\tsettled: span.settled,\n\t\t\t...(span.endSequence === undefined ? {} : { endSequence: span.endSequence }),\n\t\t}));\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tMetricQuery,\n\tSpanAttributes,\n\tSpanLink,\n\tSpanOptions,\n\tSpanStatus,\n\tStoredMetric,\n\tStoredSpan,\n\tStoredTrace,\n\tTelemetryCarrier,\n\tTelemetryContext,\n\tTelemetryPropagation,\n\tTelemetrySpan,\n\tTelemetryStore,\n\tTraceQuery,\n} from \"./index.ts\";\nimport type {\n\tHistogramOptions,\n\tInstrumentOptions,\n\tTelemetryCounter,\n\tTelemetryHistogram,\n\tTelemetryMetrics,\n\tTelemetryUpDownCounter,\n} from \"./metrics.ts\";\nimport { NOOP_TELEMETRY_CONTEXT } from \"./noop.ts\";\n\nexport interface RecordedTelemetryEvent {\n\treadonly name: string;\n\treadonly attributes: Readonly<SpanAttributes>;\n}\n\nexport interface RecordedTelemetryLink {\n\treadonly context: Readonly<TelemetryCarrier>;\n\treadonly attributes: Readonly<SpanAttributes>;\n}\n\nexport interface RecordedTelemetrySpan {\n\treadonly id: number;\n\t/** Local parent ID, or null for roots and parents owned by another recorder. */\n\treadonly parentId: number | null;\n\treadonly context: Readonly<TelemetryCarrier>;\n\treadonly parentContext: Readonly<TelemetryCarrier> | null;\n\treadonly links: readonly RecordedTelemetryLink[];\n\treadonly name: string;\n\treadonly attributes: Readonly<SpanAttributes>;\n\treadonly events: readonly RecordedTelemetryEvent[];\n\treadonly status: SpanStatus;\n\treadonly settled: boolean;\n\treadonly endSequence?: number;\n}\n\nexport interface RecordedTelemetryMeasurement {\n\treadonly kind: \"counter\" | \"upDownCounter\" | \"histogram\";\n\treadonly name: string;\n\treadonly description?: string;\n\treadonly unit?: string;\n\treadonly boundaries?: readonly number[];\n\treadonly value: number;\n\treadonly attributes: Readonly<SpanAttributes>;\n\treadonly context: Readonly<TelemetryCarrier> | null;\n}\n\ninterface MutableRecordedTelemetryEvent {\n\ttimeMs: number;\n\tname: string;\n\tattributes: SpanAttributes;\n}\n\ninterface MutableRecordedTelemetrySpan {\n\tstartedMs: number;\n\tclock: number;\n\tendedMs?: number;\n\tid: number;\n\tparentId: number | null;\n\tcontext: TelemetryCarrier;\n\tparentContext: TelemetryCarrier | null;\n\tlinks: RecordedTelemetryLink[];\n\tname: string;\n\tattributes: SpanAttributes;\n\tevents: MutableRecordedTelemetryEvent[];\n\tstatus: SpanStatus;\n\texplicitStatus: boolean;\n\tsettled: boolean;\n\tendSequence?: number;\n}\n\ninterface InMemoryParent {\n\tcontext: TelemetryCarrier;\n\tlocalId: number | null;\n\tspan?: MutableRecordedTelemetrySpan;\n}\n\nfunction carrierId(carrier: Readonly<TelemetryCarrier>): string {\n\treturn `${carrier[\"pi-memory-scope\"]}:${carrier[\"pi-memory-span\"]}`;\n}\n\n// The clock of span times: wall-clock milliseconds at microsecond resolution, from the monotonic high-resolution\n// clock anchored to the wall clock (`telemetryNow`, also Chord's SQLite store's).\n\n/**\n * How far the anchored clock may part from `Date.now()` before it is anchored anew: more than `Date.now()`'s own\n * truncation to whole milliseconds, less than any step worth following (a wall clock set, a sleep the monotonic clock\n * did not count).\n */\nconst TOLERANCE_MS = 10;\n\n/** The wall-clock time of `performance.now()`'s zero; `performance.timeOrigin` until the first step is followed. */\nlet anchor = performance.timeOrigin;\n\n/**\n * Now as milliseconds since the epoch, rounded to the microsecond: `performance.now()` (monotonic, sub-millisecond)\n * plus an anchor to the wall clock. While the two agree within 10 ms, times in one process keep their order and\n * spacing to the microsecond; past that the clock follows `Date.now()` again, at whole milliseconds. Every adapter\n * of this package and Chord's SQLite store stamp span starts with it, so their times agree.\n */\nexport function telemetryNow(): number {\n\tconst clock = performance.now();\n\tconst wall = Date.now();\n\tif (Math.abs(anchor + clock - wall) > TOLERANCE_MS) anchor = wall - clock;\n\treturn microseconds(anchor + clock);\n}\n\n/** `ms` rounded to the microsecond, as span times are. */\nfunction microseconds(ms: number): number {\n\treturn Math.round(ms * 1000) / 1000;\n}\n\n// Identity survives settlement without exposing backend IDs on the generic context contract.\nconst contextCarriers = new WeakMap<TelemetryContext, TelemetryCarrier>();\n\ninterface InMemoryTelemetryState {\n\tmetrics: TelemetryMetrics;\n\tpropagation: TelemetryPropagation;\n\tscope: string;\n\tspans: MutableRecordedTelemetrySpan[];\n\tmeasurements: { intervalMs: number; measurement: RecordedTelemetryMeasurement }[];\n\tnextSpanId: number;\n\tnextEndSequence: number;\n}\n\nfunction copyAttributes(attributes?: SpanAttributes): SpanAttributes {\n\treturn Object.fromEntries(\n\t\tObject.entries(attributes ?? {})\n\t\t\t.filter(([, value]) => value !== undefined)\n\t\t\t.map(([name, value]) => [name, Array.isArray(value) ? [...value] : value]),\n\t);\n}\n\nfunction copyLink(link: SpanLink): RecordedTelemetryLink | undefined {\n\tconst context = contextCarriers.get(link.context);\n\treturn context ? { context: { ...context }, attributes: copyAttributes(link.attributes) } : undefined;\n}\n\nfunction copyStatus(status: SpanStatus): SpanStatus {\n\tif (status.status === \"ok\") return { status: \"ok\" };\n\treturn status.error\n\t\t? { status: \"error\", error: { name: status.error.name, message: status.error.message } }\n\t\t: { status: \"error\" };\n}\n\nfunction createSpan(\n\tstate: InMemoryTelemetryState,\n\tparent: InMemoryParent | undefined,\n\toptions: SpanOptions,\n): MutableRecordedTelemetrySpan {\n\tconst name = options.name;\n\tconst attributes = copyAttributes(options.attributes);\n\tconst links: RecordedTelemetryLink[] = [];\n\tfor (const link of options.links ?? []) {\n\t\tconst copy = copyLink(link);\n\t\tif (copy) links.push(copy);\n\t}\n\tconst id = state.nextSpanId++;\n\treturn {\n\t\tstartedMs: telemetryNow(),\n\t\tclock: performance.now(),\n\t\tid,\n\t\tparentId: parent?.localId ?? null,\n\t\tcontext: {\n\t\t\t\"pi-memory-scope\": state.scope,\n\t\t\t\"pi-memory-span\": String(id),\n\t\t\t\"pi-memory-trace\": parent?.context[\"pi-memory-trace\"] ?? `${state.scope}:${id}`,\n\t\t},\n\t\tparentContext: parent ? { ...parent.context } : null,\n\t\tlinks,\n\t\tname,\n\t\tattributes,\n\t\tevents: [],\n\t\tstatus: { status: \"ok\" },\n\t\texplicitStatus: false,\n\t\tsettled: false,\n\t};\n}\n\nfunction startInertSpan<T>(\n\tstate: InMemoryTelemetryState,\n\toptions: SpanOptions,\n\tcallback: (span: TelemetrySpan) => T | Promise<T>,\n): Promise<T> {\n\treturn NOOP_TELEMETRY_CONTEXT.startSpan(options, (noop) =>\n\t\tcallback({\n\t\t\t...noop,\n\t\t\tmetrics: state.metrics,\n\t\t\tpropagation: state.propagation,\n\t\t\tstartSpan: <Result>(\n\t\t\t\tchildOptions: SpanOptions,\n\t\t\t\tchildCallback: (span: TelemetrySpan) => Result | Promise<Result>,\n\t\t\t) => startInertSpan(state, childOptions, childCallback),\n\t\t}),\n\t);\n}\n\nasync function startInMemorySpan<T>(\n\tstate: InMemoryTelemetryState,\n\tparent: InMemoryParent | undefined,\n\toptions: SpanOptions,\n\tcallback: (span: TelemetrySpan) => T | Promise<T>,\n): Promise<T> {\n\tif (parent?.span?.settled) return startInertSpan(state, options, callback);\n\n\tconst recordedSpan = createSpan(state, parent, options);\n\tstate.spans.push(recordedSpan);\n\n\tconst span: TelemetrySpan = {\n\t\tmetrics: state.metrics,\n\t\tpropagation: state.propagation,\n\t\tstartSpan: <Result>(\n\t\t\tchildOptions: SpanOptions,\n\t\t\tchildCallback: (child: TelemetrySpan) => Result | Promise<Result>,\n\t\t) =>\n\t\t\tstartInMemorySpan(\n\t\t\t\tstate,\n\t\t\t\t{ context: recordedSpan.context, localId: recordedSpan.id, span: recordedSpan },\n\t\t\t\tchildOptions,\n\t\t\t\tchildCallback,\n\t\t\t),\n\t\taddLink(link) {\n\t\t\tif (recordedSpan.settled) return;\n\t\t\tconst copy = copyLink(link);\n\t\t\tif (copy) recordedSpan.links.push(copy);\n\t\t},\n\t\taddEvent(name, attributes) {\n\t\t\tif (recordedSpan.settled) return;\n\t\t\trecordedSpan.events.push({\n\t\t\t\tname,\n\t\t\t\ttimeMs: microseconds(performance.now() - recordedSpan.clock),\n\t\t\t\tattributes: copyAttributes(attributes),\n\t\t\t});\n\t\t},\n\t\tsetAttributes(attributes) {\n\t\t\tif (recordedSpan.settled) return;\n\t\t\trecordedSpan.attributes = { ...recordedSpan.attributes, ...copyAttributes(attributes) };\n\t\t},\n\t\tsetStatus(status) {\n\t\t\tif (recordedSpan.settled) return;\n\t\t\trecordedSpan.status = copyStatus(status);\n\t\t\trecordedSpan.explicitStatus = true;\n\t\t},\n\t};\n\n\tcontextCarriers.set(span, recordedSpan.context);\n\n\ttry {\n\t\treturn await callback(span);\n\t} catch (error) {\n\t\tif (!recordedSpan.explicitStatus)\n\t\t\trecordedSpan.status =\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? { status: \"error\", error: { name: error.name, message: error.message } }\n\t\t\t\t\t: { status: \"error\" };\n\t\tthrow error;\n\t} finally {\n\t\trecordedSpan.settled = true;\n\t\trecordedSpan.endedMs = microseconds(recordedSpan.startedMs + performance.now() - recordedSpan.clock);\n\t\trecordedSpan.endSequence = state.nextEndSequence++;\n\t}\n}\n\nfunction createMeasurementRecorder(\n\tstate: InMemoryTelemetryState,\n\tkind: RecordedTelemetryMeasurement[\"kind\"],\n\tname: string,\n\toptions?: HistogramOptions,\n): (value: number, attributes?: SpanAttributes, context?: TelemetryContext) => void {\n\tconst description = options?.description;\n\tconst unit = options?.unit;\n\tconst boundaries = kind === \"histogram\" && options?.boundaries !== undefined ? [...options.boundaries] : undefined;\n\tconst metadata = {\n\t\tkind,\n\t\tname,\n\t\t...(description === undefined ? {} : { description }),\n\t\t...(unit === undefined ? {} : { unit }),\n\t\t...(boundaries === undefined ? {} : { boundaries }),\n\t};\n\treturn (value, attributes, context) => {\n\t\tconst carrier = context === undefined ? undefined : contextCarriers.get(context);\n\t\tstate.measurements.push({\n\t\t\tintervalMs: Math.floor(Date.now() / 10_000) * 10_000,\n\t\t\tmeasurement: {\n\t\t\t\t...metadata,\n\t\t\t\tvalue,\n\t\t\t\tattributes: copyAttributes(attributes),\n\t\t\t\tcontext: carrier ? { ...carrier } : null,\n\t\t\t},\n\t\t});\n\t};\n}\n\n/**\n * Backend-neutral reference implementation that records spans in process memory.\n * Create a fresh instance to isolate tests or independent recording scopes.\n */\nexport class InMemoryTelemetryContext\n\timplements TelemetryContext, TelemetryPropagation, TelemetryMetrics, TelemetryStore\n{\n\treadonly metrics: TelemetryMetrics = this;\n\treadonly propagation: TelemetryPropagation = this;\n\tprivate readonly state: InMemoryTelemetryState = {\n\t\tmetrics: this,\n\t\tpropagation: this,\n\t\tscope: crypto.randomUUID(),\n\t\tspans: [],\n\t\tmeasurements: [],\n\t\tnextSpanId: 1,\n\t\tnextEndSequence: 1,\n\t};\n\n\tstartSpan<T>(options: SpanOptions, callback: (span: TelemetrySpan) => T | Promise<T>): Promise<T> {\n\t\treturn startInMemorySpan(this.state, undefined, options, callback);\n\t}\n\n\t/** Returns a detached carrier for a known span or extracted parent, including settled spans. */\n\tinject(context: TelemetryContext): TelemetryCarrier | undefined {\n\t\tconst carrier = contextCarriers.get(context);\n\t\treturn carrier ? { ...carrier } : undefined;\n\t}\n\n\t/** Missing or non-string carrier identities fall back to this recorder's root context. */\n\textract(carrier: TelemetryCarrier | undefined): TelemetryContext {\n\t\tconst scope = carrier?.[\"pi-memory-scope\"];\n\t\tconst span = carrier?.[\"pi-memory-span\"];\n\t\tconst traceId = carrier?.[\"pi-memory-trace\"];\n\t\tif (typeof scope !== \"string\" || typeof span !== \"string\" || typeof traceId !== \"string\") return this;\n\t\tconst context = { \"pi-memory-scope\": scope, \"pi-memory-span\": span, \"pi-memory-trace\": traceId };\n\t\tconst localId = scope === this.state.scope ? Number(span) : null;\n\t\tconst parent: TelemetryContext = {\n\t\t\tmetrics: this,\n\t\t\tpropagation: this,\n\t\t\tstartSpan: <T>(options: SpanOptions, callback: (span: TelemetrySpan) => T | Promise<T>) =>\n\t\t\t\tstartInMemorySpan(this.state, { context, localId }, options, callback),\n\t\t};\n\t\tcontextCarriers.set(parent, context);\n\t\treturn parent;\n\t}\n\n\tcounter(name: string, options?: InstrumentOptions): TelemetryCounter {\n\t\treturn { add: createMeasurementRecorder(this.state, \"counter\", name, options) };\n\t}\n\n\tupDownCounter(name: string, options?: InstrumentOptions): TelemetryUpDownCounter {\n\t\treturn { add: createMeasurementRecorder(this.state, \"upDownCounter\", name, options) };\n\t}\n\n\thistogram(name: string, options?: HistogramOptions): TelemetryHistogram {\n\t\treturn { record: createMeasurementRecorder(this.state, \"histogram\", name, options) };\n\t}\n\n\tprivate storedSpans(): StoredSpan[] {\n\t\treturn this.state.spans\n\t\t\t.filter((span) => span.settled)\n\t\t\t.map((span) => ({\n\t\t\t\tid: carrierId(span.context),\n\t\t\t\ttraceId: span.context[\"pi-memory-trace\"]!,\n\t\t\t\t...(span.parentContext ? { parentId: carrierId(span.parentContext) } : {}),\n\t\t\t\tname: span.name,\n\t\t\t\tstartedMs: span.startedMs,\n\t\t\t\tendedMs: span.endedMs!,\n\t\t\t\tattributes: copyAttributes(span.attributes),\n\t\t\t\tevents: span.events.map((event) => ({\n\t\t\t\t\tname: event.name,\n\t\t\t\t\ttimeMs: event.timeMs,\n\t\t\t\t\tattributes: copyAttributes(event.attributes),\n\t\t\t\t})),\n\t\t\t\tlinks: span.links.map((link) => ({\n\t\t\t\t\ttraceId: link.context[\"pi-memory-trace\"]!,\n\t\t\t\t\tspanId: carrierId(link.context),\n\t\t\t\t\tattributes: copyAttributes(link.attributes),\n\t\t\t\t})),\n\t\t\t\tstatus: copyStatus(span.status),\n\t\t\t}))\n\t\t\t.sort((a, b) => a.startedMs - b.startedMs || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));\n\t}\n\n\tasync getTrace(traceId: string): Promise<StoredTrace | undefined> {\n\t\tconst spans = this.storedSpans().filter((span) => span.traceId === traceId);\n\t\treturn spans.length ? { traceId, spans } : undefined;\n\t}\n\n\tasync findTraces(query: TraceQuery = {}): Promise<{ traces: readonly StoredTrace[]; cursor?: string }> {\n\t\tconst limit = query.limit ?? 20;\n\t\tconst after = query.cursor === undefined ? undefined : (JSON.parse(query.cursor) as [number, string]);\n\t\tconst grouped = new Map<string, { traceId: string; spans: StoredSpan[] }>();\n\t\tfor (const span of this.storedSpans()) {\n\t\t\tlet trace = grouped.get(span.traceId);\n\t\t\tif (!trace) {\n\t\t\t\ttrace = { traceId: span.traceId, spans: [] };\n\t\t\t\tgrouped.set(span.traceId, trace);\n\t\t\t}\n\t\t\ttrace.spans.push(span);\n\t\t}\n\t\tconst matches = [...grouped.values()]\n\t\t\t.filter((trace) => {\n\t\t\t\tconst first = trace.spans[0]!;\n\t\t\t\treturn (\n\t\t\t\t\t(query.name === undefined || first.name === query.name) &&\n\t\t\t\t\t(query.startMin === undefined || first.startedMs >= query.startMin) &&\n\t\t\t\t\t(query.startMax === undefined || first.startedMs <= query.startMax) &&\n\t\t\t\t\t(!after || first.startedMs < after[0] || (first.startedMs === after[0] && trace.traceId > after[1])) &&\n\t\t\t\t\t(!query.errors || trace.spans.some((span) => span.status.status === \"error\")) &&\n\t\t\t\t\t(!query.attributes ||\n\t\t\t\t\t\ttrace.spans.some((span) =>\n\t\t\t\t\t\t\tObject.entries(query.attributes!).every(([key, value]) => span.attributes[key] === value),\n\t\t\t\t\t\t))\n\t\t\t\t);\n\t\t\t})\n\t\t\t.sort(\n\t\t\t\t(a, b) =>\n\t\t\t\t\tb.spans[0]!.startedMs - a.spans[0]!.startedMs ||\n\t\t\t\t\t(a.traceId < b.traceId ? -1 : a.traceId > b.traceId ? 1 : 0),\n\t\t\t);\n\t\tconst traces = matches.slice(0, limit);\n\t\tconst last = traces.at(-1)!;\n\t\treturn {\n\t\t\ttraces,\n\t\t\t...(matches.length > limit ? { cursor: JSON.stringify([last.spans[0]!.startedMs, last.traceId]) } : {}),\n\t\t};\n\t}\n\n\t/** Read raw measurements as count-one rows, without changing getMetrics() snapshots. */\n\tasync findMetrics(query: MetricQuery): Promise<readonly StoredMetric[]> {\n\t\treturn this.state.measurements\n\t\t\t.filter(\n\t\t\t\t({ intervalMs, measurement }) =>\n\t\t\t\t\tmeasurement.name === query.name &&\n\t\t\t\t\t(query.startMin === undefined || intervalMs >= query.startMin) &&\n\t\t\t\t\t(query.startMax === undefined || intervalMs <= query.startMax) &&\n\t\t\t\t\tObject.entries(query.attributes ?? {}).every(([key, value]) => measurement.attributes[key] === value),\n\t\t\t)\n\t\t\t.map(({ intervalMs, measurement }) => ({\n\t\t\t\tintervalMs,\n\t\t\t\tname: measurement.name,\n\t\t\t\tkind: measurement.kind,\n\t\t\t\t...(measurement.unit === undefined ? {} : { unit: measurement.unit }),\n\t\t\t\tattributes: copyAttributes(measurement.attributes),\n\t\t\t\tcount: 1,\n\t\t\t\tsum: measurement.value,\n\t\t\t\tmin: measurement.value,\n\t\t\t\tmax: measurement.value,\n\t\t\t}));\n\t}\n\n\t/** Returns detached measurements in recording order, without aggregation. */\n\tgetMetrics(): readonly RecordedTelemetryMeasurement[] {\n\t\treturn this.state.measurements.map(({ measurement }) => ({\n\t\t\t...measurement,\n\t\t\t...(measurement.boundaries === undefined ? {} : { boundaries: [...measurement.boundaries] }),\n\t\t\tattributes: copyAttributes(measurement.attributes),\n\t\t\tcontext: measurement.context ? { ...measurement.context } : null,\n\t\t}));\n\t}\n\n\t/** Returns detached snapshots in span-start order. */\n\tgetSpans(): readonly RecordedTelemetrySpan[] {\n\t\treturn this.state.spans.map((span) => ({\n\t\t\tid: span.id,\n\t\t\tparentId: span.parentId,\n\t\t\tcontext: { ...span.context },\n\t\t\tparentContext: span.parentContext ? { ...span.parentContext } : null,\n\t\t\tlinks: span.links.map((link) => ({\n\t\t\t\tcontext: { ...link.context },\n\t\t\t\tattributes: copyAttributes(link.attributes),\n\t\t\t})),\n\t\t\tname: span.name,\n\t\t\tattributes: copyAttributes(span.attributes),\n\t\t\tevents: span.events.map((event) => ({\n\t\t\t\tname: event.name,\n\t\t\t\tattributes: copyAttributes(event.attributes),\n\t\t\t})),\n\t\t\tstatus: copyStatus(span.status),\n\t\t\tsettled: span.settled,\n\t\t\t...(span.endSequence === undefined ? {} : { endSequence: span.endSequence }),\n\t\t}));\n\t}\n}\n"]}
|
package/dist/render.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { StoredSpan } from "./index.ts";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Render stored spans as a chronological forest, treating absent parents as roots. Lengths of time are milliseconds to
|
|
4
|
+
* the microsecond. Control characters in ids, names, attribute keys and error messages are escaped (attribute values
|
|
5
|
+
* are JSON).
|
|
6
|
+
*/
|
|
3
7
|
export declare function renderTrace(spans: readonly StoredSpan[]): string;
|
|
4
8
|
//# sourceMappingURL=render.d.ts.map
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,YAAY,CAAC;AAsB7D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CA4ChE"}
|
package/dist/render.js
CHANGED
|
@@ -1,9 +1,24 @@
|
|
|
1
|
+
// C0 and C1 control characters and DEL: a stored id, name or message may come from another process (a carrier), so
|
|
2
|
+
// none reaches a terminal or a viewer raw.
|
|
3
|
+
const CONTROL = /[\u0000-\u001f\u007f-\u009f]/g;
|
|
4
|
+
/** `text` with every control character written as a `\uXXXX` escape. */
|
|
5
|
+
function escaped(text) {
|
|
6
|
+
return text.replace(CONTROL, (char) => `\\u${char.charCodeAt(0).toString(16).padStart(4, "0")}`);
|
|
7
|
+
}
|
|
8
|
+
/** `ms` rounded to the microsecond, as the adapters record span times. */
|
|
9
|
+
function microseconds(ms) {
|
|
10
|
+
return Math.round(ms * 1000) / 1000;
|
|
11
|
+
}
|
|
1
12
|
function formatAttributes(attributes = {}) {
|
|
2
13
|
return Object.entries(attributes)
|
|
3
|
-
.map(([key, value]) => ` ${key}=${JSON.stringify(value)}`)
|
|
14
|
+
.map(([key, value]) => ` ${escaped(key)}=${JSON.stringify(value)}`)
|
|
4
15
|
.join("");
|
|
5
16
|
}
|
|
6
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Render stored spans as a chronological forest, treating absent parents as roots. Lengths of time are milliseconds to
|
|
19
|
+
* the microsecond. Control characters in ids, names, attribute keys and error messages are escaped (attribute values
|
|
20
|
+
* are JSON).
|
|
21
|
+
*/
|
|
7
22
|
export function renderTrace(spans) {
|
|
8
23
|
const byId = new Map(spans.map((span) => [span.id, span]));
|
|
9
24
|
const roots = [];
|
|
@@ -28,15 +43,17 @@ export function renderTrace(spans) {
|
|
|
28
43
|
let error = "";
|
|
29
44
|
if (span.status.status === "error") {
|
|
30
45
|
error = " error";
|
|
31
|
-
if (span.status.error !== undefined)
|
|
32
|
-
error += ` ${span.status.error.name}: ${span.status.error.message}`;
|
|
46
|
+
if (span.status.error !== undefined) {
|
|
47
|
+
error += ` ${escaped(span.status.error.name)}: ${escaped(span.status.error.message)}`;
|
|
48
|
+
}
|
|
33
49
|
}
|
|
34
|
-
lines.push(`${indent}${span.name}${formatAttributes(span.attributes)} (${span.endedMs - span.startedMs}ms)${error}`);
|
|
50
|
+
lines.push(`${indent}${escaped(span.name)}${formatAttributes(span.attributes)} (${microseconds(span.endedMs - span.startedMs)}ms)${error}`);
|
|
35
51
|
for (const event of span.events) {
|
|
36
|
-
lines.push(`${indent} · ${event.name}${formatAttributes(event.attributes)} (+${event.timeMs}ms)`);
|
|
52
|
+
lines.push(`${indent} · ${escaped(event.name)}${formatAttributes(event.attributes)} (+${microseconds(event.timeMs)}ms)`);
|
|
37
53
|
}
|
|
38
54
|
for (const link of span.links) {
|
|
39
|
-
|
|
55
|
+
const ids = `trace ${escaped(link.traceId)} span ${escaped(link.spanId)}`;
|
|
56
|
+
lines.push(`${indent} → link ${ids}${formatAttributes(link.attributes)}`);
|
|
40
57
|
}
|
|
41
58
|
const descendants = children.get(span.id) ?? [];
|
|
42
59
|
for (let index = descendants.length - 1; index >= 0; index--) {
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAEA,SAAS,gBAAgB,CAAC,UAAU,GAA6B,EAAE;IAClE,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;SAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SpanAttributes, StoredSpan } from \"./index.ts\";\n\n// C0 and C1 control characters and DEL: a stored id, name or message may come from another process (a carrier), so\n// none reaches a terminal or a viewer raw.\nconst CONTROL = /[\\u0000-\\u001f\\u007f-\\u009f]/g;\n\n/** `text` with every control character written as a `\\uXXXX` escape. */\nfunction escaped(text: string): string {\n\treturn text.replace(CONTROL, (char) => `\\\\u${char.charCodeAt(0).toString(16).padStart(4, \"0\")}`);\n}\n\n/** `ms` rounded to the microsecond, as the adapters record span times. */\nfunction microseconds(ms: number): number {\n\treturn Math.round(ms * 1000) / 1000;\n}\n\nfunction formatAttributes(attributes: Readonly<SpanAttributes> = {}): string {\n\treturn Object.entries(attributes)\n\t\t.map(([key, value]) => ` ${escaped(key)}=${JSON.stringify(value)}`)\n\t\t.join(\"\");\n}\n\n/**\n * Render stored spans as a chronological forest, treating absent parents as roots. Lengths of time are milliseconds to\n * the microsecond. Control characters in ids, names, attribute keys and error messages are escaped (attribute values\n * are JSON).\n */\nexport function renderTrace(spans: readonly StoredSpan[]): string {\n\tconst byId = new Map(spans.map((span) => [span.id, span]));\n\tconst roots: StoredSpan[] = [];\n\tconst children = new Map<string, StoredSpan[]>();\n\tfor (const span of [...byId.values()].sort((left, right) => left.startedMs - right.startedMs)) {\n\t\tif (span.parentId === undefined || !byId.has(span.parentId)) {\n\t\t\troots.push(span);\n\t\t} else {\n\t\t\tconst siblings = children.get(span.parentId);\n\t\t\tif (siblings === undefined) children.set(span.parentId, [span]);\n\t\t\telse siblings.push(span);\n\t\t}\n\t}\n\n\tconst lines: string[] = [];\n\tconst pending = roots.reverse().map((span) => ({ span, depth: 0 }));\n\twhile (pending.length > 0) {\n\t\tconst { span, depth } = pending.pop()!;\n\t\tconst indent = \" \".repeat(depth);\n\t\tlet error = \"\";\n\t\tif (span.status.status === \"error\") {\n\t\t\terror = \" error\";\n\t\t\tif (span.status.error !== undefined) {\n\t\t\t\terror += ` ${escaped(span.status.error.name)}: ${escaped(span.status.error.message)}`;\n\t\t\t}\n\t\t}\n\t\tlines.push(\n\t\t\t`${indent}${escaped(span.name)}${formatAttributes(span.attributes)} (${microseconds(span.endedMs - span.startedMs)}ms)${error}`,\n\t\t);\n\t\tfor (const event of span.events) {\n\t\t\tlines.push(\n\t\t\t\t`${indent} · ${escaped(event.name)}${formatAttributes(event.attributes)} (+${microseconds(event.timeMs)}ms)`,\n\t\t\t);\n\t\t}\n\t\tfor (const link of span.links) {\n\t\t\tconst ids = `trace ${escaped(link.traceId)} span ${escaped(link.spanId)}`;\n\t\t\tlines.push(`${indent} → link ${ids}${formatAttributes(link.attributes)}`);\n\t\t}\n\t\tconst descendants = children.get(span.id) ?? [];\n\t\tfor (let index = descendants.length - 1; index >= 0; index--) {\n\t\t\tpending.push({ span: descendants[index]!, depth: depth + 1 });\n\t\t}\n\t}\n\treturn lines.join(\"\\n\");\n}\n"]}
|