@qnsp/storage-sdk 0.0.1 → 0.0.2
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/event-envelope.d.ts +42 -0
- package/dist/event-envelope.d.ts.map +1 -0
- package/dist/event-envelope.js +42 -0
- package/dist/event-envelope.js.map +1 -0
- package/dist/events.d.ts +1 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -1
- package/dist/events.js.map +1 -1
- package/dist/observability.d.ts.map +1 -1
- package/dist/observability.js +19 -1
- package/dist/observability.js.map +1 -1
- package/package.json +38 -39
- package/src/event-envelope.ts +59 -0
- package/src/events.ts +2 -2
- package/src/observability.ts +41 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/.turbo/turbo-build.log +0 -5
- package/.turbo/turbo-lint.log +0 -6
- package/.turbo/turbo-test.log +0 -41
- package/.turbo/turbo-typecheck.log +0 -5
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const eventMetadataSchema: z.ZodObject<{
|
|
3
|
+
correlationId: z.ZodOptional<z.ZodString>;
|
|
4
|
+
causationId: z.ZodOptional<z.ZodString>;
|
|
5
|
+
tenantId: z.ZodOptional<z.ZodString>;
|
|
6
|
+
timestamp: z.ZodDefault<z.ZodString>;
|
|
7
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
8
|
+
sourceService: z.ZodOptional<z.ZodString>;
|
|
9
|
+
traceId: z.ZodOptional<z.ZodString>;
|
|
10
|
+
spanId: z.ZodOptional<z.ZodString>;
|
|
11
|
+
userId: z.ZodOptional<z.ZodString>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export declare const eventEnvelopeSchema: z.ZodObject<{
|
|
14
|
+
id: z.ZodDefault<z.ZodString>;
|
|
15
|
+
topic: z.ZodString;
|
|
16
|
+
version: z.ZodDefault<z.ZodString>;
|
|
17
|
+
occuredAt: z.ZodDefault<z.ZodString>;
|
|
18
|
+
payload: z.ZodUnknown;
|
|
19
|
+
metadata: z.ZodDefault<z.ZodObject<{
|
|
20
|
+
correlationId: z.ZodOptional<z.ZodString>;
|
|
21
|
+
causationId: z.ZodOptional<z.ZodString>;
|
|
22
|
+
tenantId: z.ZodOptional<z.ZodString>;
|
|
23
|
+
timestamp: z.ZodDefault<z.ZodString>;
|
|
24
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
25
|
+
sourceService: z.ZodOptional<z.ZodString>;
|
|
26
|
+
traceId: z.ZodOptional<z.ZodString>;
|
|
27
|
+
spanId: z.ZodOptional<z.ZodString>;
|
|
28
|
+
userId: z.ZodOptional<z.ZodString>;
|
|
29
|
+
}, z.core.$strip>>;
|
|
30
|
+
}, z.core.$strip>;
|
|
31
|
+
export type EventMetadata = z.infer<typeof eventMetadataSchema>;
|
|
32
|
+
export type EventEnvelope<TPayload = unknown> = z.infer<typeof eventEnvelopeSchema> & {
|
|
33
|
+
payload: TPayload;
|
|
34
|
+
};
|
|
35
|
+
export interface CreateEventEnvelopeOptions<TPayload> {
|
|
36
|
+
readonly topic: string;
|
|
37
|
+
readonly version?: string;
|
|
38
|
+
readonly metadata?: EventMetadata;
|
|
39
|
+
readonly payload: TPayload;
|
|
40
|
+
}
|
|
41
|
+
export declare function createEventEnvelope<TPayload>(options: CreateEventEnvelopeOptions<TPayload>): EventEnvelope<TPayload>;
|
|
42
|
+
//# sourceMappingURL=event-envelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-envelope.d.ts","sourceRoot":"","sources":["../src/event-envelope.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;iBAa9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;iBAe9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,aAAa,CAAC,QAAQ,GAAG,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GAAG;IACrF,OAAO,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,0BAA0B,CAAC,QAAQ;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAC3C,OAAO,EAAE,0BAA0B,CAAC,QAAQ,CAAC,GAC3C,aAAa,CAAC,QAAQ,CAAC,CASzB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const eventMetadataSchema = z.object({
|
|
4
|
+
correlationId: z.string().uuid().optional(),
|
|
5
|
+
causationId: z.string().uuid().optional(),
|
|
6
|
+
tenantId: z.string().optional(),
|
|
7
|
+
timestamp: z
|
|
8
|
+
.string()
|
|
9
|
+
.datetime({ offset: true })
|
|
10
|
+
.default(() => new Date().toISOString()),
|
|
11
|
+
requestId: z.string().optional(),
|
|
12
|
+
sourceService: z.string().optional(),
|
|
13
|
+
traceId: z.string().optional(),
|
|
14
|
+
spanId: z.string().optional(),
|
|
15
|
+
userId: z.string().optional(),
|
|
16
|
+
});
|
|
17
|
+
export const eventEnvelopeSchema = z.object({
|
|
18
|
+
id: z
|
|
19
|
+
.string()
|
|
20
|
+
.uuid()
|
|
21
|
+
.default(() => randomUUID()),
|
|
22
|
+
topic: z.string().min(1),
|
|
23
|
+
version: z.string().min(1).default("1"),
|
|
24
|
+
occuredAt: z
|
|
25
|
+
.string()
|
|
26
|
+
.datetime({ offset: true })
|
|
27
|
+
.default(() => new Date().toISOString()),
|
|
28
|
+
payload: z.unknown(),
|
|
29
|
+
metadata: eventMetadataSchema.default(() => ({
|
|
30
|
+
timestamp: new Date().toISOString(),
|
|
31
|
+
})),
|
|
32
|
+
});
|
|
33
|
+
export function createEventEnvelope(options) {
|
|
34
|
+
const envelope = eventEnvelopeSchema.parse({
|
|
35
|
+
topic: options.topic,
|
|
36
|
+
version: options.version,
|
|
37
|
+
payload: options.payload,
|
|
38
|
+
metadata: options.metadata,
|
|
39
|
+
});
|
|
40
|
+
return envelope;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=event-envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-envelope.js","sourceRoot":"","sources":["../src/event-envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAC1B,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC;SACH,MAAM,EAAE;SACR,IAAI,EAAE;SACN,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IACvC,SAAS,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAC1B,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnC,CAAC,CAAC;CACH,CAAC,CAAC;AAcH,MAAM,UAAU,mBAAmB,CAClC,OAA6C;IAE7C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC;QAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC1B,CAAC,CAAC;IAEH,OAAO,QAAmC,CAAC;AAC5C,CAAC"}
|
package/dist/events.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EventEnvelope } from "
|
|
1
|
+
import type { EventEnvelope } from "./event-envelope.js";
|
|
2
2
|
import type { StorageClientTelemetry, StorageClientTelemetryConfig } from "./observability.js";
|
|
3
3
|
type DocumentSearchEvent = EventEnvelope<{
|
|
4
4
|
documentId: string;
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EACX,sBAAsB,EACtB,4BAA4B,EAE5B,MAAM,oBAAoB,CAAC;AAG5B,KAAK,mBAAmB,GAAG,aAAa,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAEH,KAAK,UAAU,GAAG,aAAa,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC,CAAC;AAEH,KAAK,YAAY,GAAG,aAAa,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE3E,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,sBAAsB,GAAG,4BAA4B,CAAC;CAC3E;AAQD,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,MAAM,EAAE,mBAAmB;IAoBjC,WAAW,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,YAAY,EAAE,CAAC;IAuG1B,OAAO,CAAC,oBAAoB;CAM5B"}
|
package/dist/events.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { performance } from "node:perf_hooks";
|
|
2
|
-
import { createEventEnvelope } from "
|
|
2
|
+
import { createEventEnvelope } from "./event-envelope.js";
|
|
3
3
|
import { createStorageClientTelemetry, isStorageClientTelemetry } from "./observability.js";
|
|
4
4
|
export class StorageEventsClient {
|
|
5
5
|
config;
|
package/dist/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AA6C/D,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,YAAY,CAAC;CAC9C;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACtC,MAAM,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAAC;CACjD;AAED,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,4BAA4B,GAClC,sBAAsB,CAwFxB;AAED,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,sBAAsB,GAAG,4BAA4B,GAC1D,KAAK,IAAI,sBAAsB,CAEjC"}
|
package/dist/observability.js
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
2
|
-
import {
|
|
2
|
+
import { resourceFromAttributes } from "@opentelemetry/resources";
|
|
3
|
+
import { ConsoleMetricExporter, MeterProvider, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics";
|
|
4
|
+
function createMeterProvider(options, readers = []) {
|
|
5
|
+
const attributes = {
|
|
6
|
+
"service.name": options.serviceName,
|
|
7
|
+
...(options.serviceVersion ? { "service.version": options.serviceVersion } : {}),
|
|
8
|
+
"deployment.environment": options.environment ?? "development",
|
|
9
|
+
};
|
|
10
|
+
return new MeterProvider({
|
|
11
|
+
resource: resourceFromAttributes(attributes),
|
|
12
|
+
readers: [...readers],
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function createCounter(provider, name, options) {
|
|
16
|
+
return provider.getMeter("qnsp").createCounter(name, options);
|
|
17
|
+
}
|
|
18
|
+
function createHistogram(provider, name, options) {
|
|
19
|
+
return provider.getMeter("qnsp").createHistogram(name, options);
|
|
20
|
+
}
|
|
3
21
|
export function createStorageClientTelemetry(config) {
|
|
4
22
|
const interval = config.metricsIntervalMs ?? 60_000;
|
|
5
23
|
const timeout = config.metricsTimeoutMs ?? 15_000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,40 +1,39 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
2
|
+
"name": "@qnsp/storage-sdk",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"type": "module",
|
|
8
|
+
"description": "TypeScript SDK client for the QNSP storage-service API.",
|
|
9
|
+
"exports": {
|
|
10
|
+
"./package.json": "./package.json",
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc --project tsconfig.build.json",
|
|
18
|
+
"dev": "tsx watch src/index.ts",
|
|
19
|
+
"lint": "biome check .",
|
|
20
|
+
"test": "vitest run",
|
|
21
|
+
"typecheck": "tsc --project tsconfig.json --noEmit"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@opentelemetry/api": "^1.9.0",
|
|
25
|
+
"@opentelemetry/exporter-metrics-otlp-http": "^0.208.0",
|
|
26
|
+
"@opentelemetry/resources": "^2.0.0",
|
|
27
|
+
"@opentelemetry/sdk-metrics": "^2.2.0",
|
|
28
|
+
"undici": "^7.16.0",
|
|
29
|
+
"zod": "^4.1.12"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/node": "^22.13.14",
|
|
33
|
+
"tsx": "^4.20.6",
|
|
34
|
+
"vitest": "^4.0.10"
|
|
35
|
+
},
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": "24.12.0"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
|
|
4
|
+
export const eventMetadataSchema = z.object({
|
|
5
|
+
correlationId: z.string().uuid().optional(),
|
|
6
|
+
causationId: z.string().uuid().optional(),
|
|
7
|
+
tenantId: z.string().optional(),
|
|
8
|
+
timestamp: z
|
|
9
|
+
.string()
|
|
10
|
+
.datetime({ offset: true })
|
|
11
|
+
.default(() => new Date().toISOString()),
|
|
12
|
+
requestId: z.string().optional(),
|
|
13
|
+
sourceService: z.string().optional(),
|
|
14
|
+
traceId: z.string().optional(),
|
|
15
|
+
spanId: z.string().optional(),
|
|
16
|
+
userId: z.string().optional(),
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export const eventEnvelopeSchema = z.object({
|
|
20
|
+
id: z
|
|
21
|
+
.string()
|
|
22
|
+
.uuid()
|
|
23
|
+
.default(() => randomUUID()),
|
|
24
|
+
topic: z.string().min(1),
|
|
25
|
+
version: z.string().min(1).default("1"),
|
|
26
|
+
occuredAt: z
|
|
27
|
+
.string()
|
|
28
|
+
.datetime({ offset: true })
|
|
29
|
+
.default(() => new Date().toISOString()),
|
|
30
|
+
payload: z.unknown(),
|
|
31
|
+
metadata: eventMetadataSchema.default(() => ({
|
|
32
|
+
timestamp: new Date().toISOString(),
|
|
33
|
+
})),
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export type EventMetadata = z.infer<typeof eventMetadataSchema>;
|
|
37
|
+
export type EventEnvelope<TPayload = unknown> = z.infer<typeof eventEnvelopeSchema> & {
|
|
38
|
+
payload: TPayload;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export interface CreateEventEnvelopeOptions<TPayload> {
|
|
42
|
+
readonly topic: string;
|
|
43
|
+
readonly version?: string;
|
|
44
|
+
readonly metadata?: EventMetadata;
|
|
45
|
+
readonly payload: TPayload;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function createEventEnvelope<TPayload>(
|
|
49
|
+
options: CreateEventEnvelopeOptions<TPayload>,
|
|
50
|
+
): EventEnvelope<TPayload> {
|
|
51
|
+
const envelope = eventEnvelopeSchema.parse({
|
|
52
|
+
topic: options.topic,
|
|
53
|
+
version: options.version,
|
|
54
|
+
payload: options.payload,
|
|
55
|
+
metadata: options.metadata,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
return envelope as EventEnvelope<TPayload>;
|
|
59
|
+
}
|
package/src/events.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { performance } from "node:perf_hooks";
|
|
2
2
|
|
|
3
|
-
import type { EventEnvelope } from "
|
|
4
|
-
import { createEventEnvelope } from "
|
|
3
|
+
import type { EventEnvelope } from "./event-envelope.js";
|
|
4
|
+
import { createEventEnvelope } from "./event-envelope.js";
|
|
5
5
|
import type {
|
|
6
6
|
StorageClientTelemetry,
|
|
7
7
|
StorageClientTelemetryConfig,
|
package/src/observability.ts
CHANGED
|
@@ -1,13 +1,50 @@
|
|
|
1
1
|
import type { Attributes } from "@opentelemetry/api";
|
|
2
2
|
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
3
|
+
import { resourceFromAttributes } from "@opentelemetry/resources";
|
|
3
4
|
import type { MetricReader } from "@opentelemetry/sdk-metrics";
|
|
4
5
|
import {
|
|
5
6
|
ConsoleMetricExporter,
|
|
6
|
-
|
|
7
|
-
createHistogram,
|
|
8
|
-
createMeterProvider,
|
|
7
|
+
MeterProvider,
|
|
9
8
|
PeriodicExportingMetricReader,
|
|
10
|
-
} from "@
|
|
9
|
+
} from "@opentelemetry/sdk-metrics";
|
|
10
|
+
|
|
11
|
+
type TelemetryResourceOptions = {
|
|
12
|
+
readonly serviceName: string;
|
|
13
|
+
readonly serviceVersion?: string;
|
|
14
|
+
readonly environment?: string;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
function createMeterProvider(
|
|
18
|
+
options: TelemetryResourceOptions,
|
|
19
|
+
readers: readonly MetricReader[] = [],
|
|
20
|
+
): MeterProvider {
|
|
21
|
+
const attributes: Record<string, string | number | boolean> = {
|
|
22
|
+
"service.name": options.serviceName,
|
|
23
|
+
...(options.serviceVersion ? { "service.version": options.serviceVersion } : {}),
|
|
24
|
+
"deployment.environment": options.environment ?? "development",
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
return new MeterProvider({
|
|
28
|
+
resource: resourceFromAttributes(attributes),
|
|
29
|
+
readers: [...readers],
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function createCounter(
|
|
34
|
+
provider: MeterProvider,
|
|
35
|
+
name: string,
|
|
36
|
+
options?: Parameters<ReturnType<MeterProvider["getMeter"]>["createCounter"]>[1],
|
|
37
|
+
) {
|
|
38
|
+
return provider.getMeter("qnsp").createCounter(name, options);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function createHistogram(
|
|
42
|
+
provider: MeterProvider,
|
|
43
|
+
name: string,
|
|
44
|
+
options?: Parameters<ReturnType<MeterProvider["getMeter"]>["createHistogram"]>[1],
|
|
45
|
+
) {
|
|
46
|
+
return provider.getMeter("qnsp").createHistogram(name, options);
|
|
47
|
+
}
|
|
11
48
|
|
|
12
49
|
export interface StorageClientTelemetryConfig {
|
|
13
50
|
readonly serviceName: string;
|