@fedify/fedify 2.0.8 → 2.0.10
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/{assert-MZs1qjMx.js → assert-ddO5KLpe.mjs} +5 -9
- package/dist/{assert_equals-DSbWqCm3.js → assert_equals-Ew3jOFa3.mjs} +55 -69
- package/dist/{assert_instance_of-DHz7EHNU.js → assert_instance_of-C4Ri6VuN.mjs} +5 -9
- package/dist/{assert_not_equals-C80BG-_5.js → assert_not_equals--wG9hV7u.mjs} +6 -13
- package/dist/{assert_rejects-Ce45JcFg.js → assert_rejects-B-qJtC9Z.mjs} +6 -11
- package/dist/{assert_throws-BNXdRGWP.js → assert_throws-4NwKEy2q.mjs} +5 -10
- package/dist/{builder-B5cKln9v.js → builder-opzCVeXZ.mjs} +32 -41
- package/dist/{chunk-CGaQZ11T.cjs → chunk-DDcVe30Y.cjs} +23 -24
- package/dist/{chunk-DJNbSFdH.js → chunk-nlSIicah.js} +8 -8
- package/dist/{client-CoCIaTNO.js → client-A1UrnX6I.mjs} +9 -13
- package/dist/{client-BxMZiQaD.d.ts → client-AtlibPOU.d.ts} +1 -1
- package/dist/{client-C97KOq3x.d.cts → client-z-8dc-e1.d.cts} +1 -1
- package/dist/{collection-CcnIw1qY.js → collection-ChgDTHLz.mjs} +7 -12
- package/dist/compat/mod.cjs +5 -8
- package/dist/compat/mod.d.cts +78 -6
- package/dist/compat/mod.d.ts +78 -6
- package/dist/compat/mod.js +4 -8
- package/dist/compat/transformers.test.mjs +62 -0
- package/dist/{context-D3QkEtZd.d.cts → context-CNIt-Qn7.d.cts} +9 -18
- package/dist/{context-DZJhUmzF.d.ts → context-Dyg7P1qW.d.ts} +9 -18
- package/dist/{context-pa9aIrwp.js → context-Juj6bdHC.mjs} +7 -11
- package/dist/deno-CrjRl2cm.mjs +8 -0
- package/dist/{docloader-CBHh0rC5.js → docloader-35wi0JO1.mjs} +8 -14
- package/dist/{esm-nLm00z9V.js → esm-DVILvP5e.mjs} +50 -89
- package/dist/federation/builder.test.d.mts +2 -0
- package/dist/federation/{builder.test.js → builder.test.mjs} +19 -38
- package/dist/federation/collection.test.d.mts +2 -0
- package/dist/federation/collection.test.mjs +21 -0
- package/dist/federation/handler.test.d.mts +2 -0
- package/dist/federation/{handler.test.js → handler.test.mjs} +26 -56
- package/dist/federation/idempotency.test.d.mts +2 -0
- package/dist/federation/{idempotency.test.js → idempotency.test.mjs} +31 -62
- package/dist/federation/inbox.test.d.mts +2 -0
- package/dist/federation/{inbox.test.js → inbox.test.mjs} +8 -12
- package/dist/federation/keycache.test.d.mts +2 -0
- package/dist/federation/{keycache.test.js → keycache.test.mjs} +11 -15
- package/dist/federation/kv.test.d.mts +2 -0
- package/dist/federation/{kv.test.js → kv.test.mjs} +11 -22
- package/dist/federation/middleware.test.d.mts +2 -0
- package/dist/federation/{middleware.test.js → middleware.test.mjs} +146 -225
- package/dist/federation/mod.cjs +327 -16
- package/dist/federation/mod.d.cts +3 -6
- package/dist/federation/mod.d.ts +3 -6
- package/dist/federation/mod.js +322 -13
- package/dist/federation/mq.test.d.mts +2 -0
- package/dist/federation/{mq.test.js → mq.test.mjs} +21 -35
- package/dist/federation/negotiation.test.d.mts +2 -0
- package/dist/federation/{negotiation.test.js → negotiation.test.mjs} +9 -16
- package/dist/federation/retry.test.d.mts +2 -0
- package/dist/federation/{retry.test.js → retry.test.mjs} +8 -11
- package/dist/federation/router.test.d.mts +2 -0
- package/dist/federation/{router.test.js → router.test.mjs} +11 -16
- package/dist/federation/send.test.d.mts +2 -0
- package/dist/federation/{send.test.js → send.test.mjs} +22 -29
- package/dist/federation/webfinger.test.d.mts +2 -0
- package/dist/federation/{webfinger.test.js → webfinger.test.mjs} +22 -55
- package/dist/{http-DkHdFfrc.d.ts → http-B2wiNmSo.d.ts} +1 -6
- package/dist/{http-C_RwU_oN.js → http-BGjkvEDc.js} +25 -156
- package/dist/{http-Cz3MlXAZ.d.cts → http-C_tEAiZj.d.cts} +1 -6
- package/dist/{http-DGs_78tx.cjs → http-DLnqzOtY.cjs} +110 -235
- package/dist/{http-Br3-1dRf.js → http-VQAKycaZ.mjs} +17 -33
- package/dist/{inbox-3bZUqDLE.js → inbox-B6DfJ3h9.mjs} +18 -26
- package/dist/{key-D7Y_J9kt.js → key-C9oV7wk8.mjs} +12 -19
- package/dist/{keycache-BASM0rrX.js → keycache-DaQ3ndaJ.mjs} +5 -9
- package/dist/{keys-ZbcByPg9.js → keys-CtZLJq76.mjs} +5 -9
- package/dist/{kv-QzKcOQgP.js → kv-BrZHNugx.mjs} +6 -10
- package/dist/{kv-BL4nlICN.d.cts → kv-CbLNp3zQ.d.cts} +1 -1
- package/dist/{kv-DXEUEP6z.d.ts → kv-GFYnFoOl.d.ts} +1 -1
- package/dist/{kv-cache-9PANi4tA.cjs → kv-cache-BAEaVRvi.cjs} +27 -34
- package/dist/{kv-cache-El7We5sy.js → kv-cache-OWmRLHir.mjs} +4 -8
- package/dist/{kv-cache-CMM5VJsc.js → kv-cache-QxhhotWv.js} +6 -13
- package/dist/{ld-Bjq9Z4St.js → ld-BfEccFSP.mjs} +17 -31
- package/dist/{middleware-Bj30TZll.js → middleware-Bc4sY_YW.js} +320 -363
- package/dist/middleware-CGkdTPmX.mjs +5 -0
- package/dist/{middleware-CQeA5yF7.cjs → middleware-Dj7uT9F8.cjs} +513 -564
- package/dist/middleware-DuFvBMT2.cjs +4 -0
- package/dist/{middleware-DozhKfB6.js → middleware-ReZIkikn.mjs} +260 -292
- package/dist/{mod-DPkRU3EK.d.cts → mod-1xhgsHef.d.cts} +2 -2
- package/dist/{mod-DUWcVv49.d.ts → mod-BGtYJZKu.d.ts} +2 -2
- package/dist/{mod-DXsQakeS.d.cts → mod-Bld7oeqf.d.cts} +3 -3
- package/dist/{mod-DnSsduJF.d.ts → mod-BnAKGh2w.d.ts} +2 -2
- package/dist/{mod-CwZXZJ9d.d.ts → mod-DTOUyCce.d.ts} +3 -3
- package/dist/{mod-Di3W5OdP.d.cts → mod-DWoQffTD.d.cts} +2 -2
- package/dist/mod.cjs +29 -68
- package/dist/mod.d.cts +11 -14
- package/dist/mod.d.ts +11 -15
- package/dist/mod.js +17 -65
- package/dist/{negotiation-5NPJL6zp.js → negotiation-BehA2uul.mjs} +7 -11
- package/dist/nodeinfo/client.test.d.mts +2 -0
- package/dist/nodeinfo/{client.test.js → client.test.mjs} +22 -40
- package/dist/nodeinfo/handler.test.d.mts +2 -0
- package/dist/nodeinfo/{handler.test.js → handler.test.mjs} +13 -42
- package/dist/nodeinfo/mod.cjs +5 -8
- package/dist/nodeinfo/mod.d.cts +2 -3
- package/dist/nodeinfo/mod.d.ts +2 -3
- package/dist/nodeinfo/mod.js +4 -8
- package/dist/nodeinfo/types.test.d.mts +2 -0
- package/dist/nodeinfo/{types.test.js → types.test.mjs} +9 -16
- package/dist/otel/exporter.test.d.mts +2 -0
- package/dist/otel/{exporter.test.js → exporter.test.mjs} +117 -169
- package/dist/otel/mod.cjs +15 -20
- package/dist/otel/mod.d.cts +2 -2
- package/dist/otel/mod.d.ts +2 -2
- package/dist/otel/mod.js +8 -14
- package/dist/{owner-gd0Q9FuU.d.ts → owner-74ARJ5TL.d.ts} +1 -1
- package/dist/{owner-CImU2dKz.js → owner-CRLqJlP_.mjs} +11 -16
- package/dist/{owner-1AbPBOOZ.d.cts → owner-CptqhsOy.d.cts} +1 -1
- package/dist/{proof-DLL0MLmV.js → proof-9SGtq4tE.mjs} +21 -33
- package/dist/{proof-UhA5do8k.cjs → proof-B4SaJCmK.cjs} +133 -157
- package/dist/{proof-BygvN4r5.js → proof-DvQ28mUJ.js} +32 -58
- package/dist/{retry-D4GJ670a.js → retry-Ddbq3AcK.mjs} +4 -7
- package/dist/{router-D9eI0s4b.js → router-CrMLXoOr.mjs} +4 -8
- package/dist/runtime/mod.cjs +11 -13
- package/dist/runtime/mod.d.cts +6 -2
- package/dist/runtime/mod.d.ts +0 -1
- package/dist/runtime/mod.js +4 -7
- package/dist/{send-DbW03azY.js → send-DN2ywoe8.mjs} +8 -13
- package/dist/sig/http.test.d.mts +2 -0
- package/dist/sig/{http.test.js → http.test.mjs} +117 -199
- package/dist/sig/key.test.d.mts +2 -0
- package/dist/sig/{key.test.js → key.test.mjs} +11 -18
- package/dist/sig/ld.test.d.mts +2 -0
- package/dist/sig/{ld.test.js → ld.test.mjs} +22 -35
- package/dist/sig/mod.cjs +6 -9
- package/dist/sig/mod.d.cts +3 -3
- package/dist/sig/mod.d.ts +3 -3
- package/dist/sig/mod.js +5 -9
- package/dist/sig/owner.test.d.mts +2 -0
- package/dist/sig/{owner.test.js → owner.test.mjs} +19 -34
- package/dist/sig/proof.test.d.mts +2 -0
- package/dist/sig/{proof.test.js → proof.test.mjs} +16 -27
- package/dist/{std__assert-DWivtrGR.js → std__assert-Duiq_YC9.mjs} +12 -24
- package/dist/testing/{mod.d.ts → mod.d.mts} +26 -78
- package/dist/testing/mod.mjs +6 -0
- package/dist/{transformers-3g8GZwkZ.cjs → transformers-NeAONrAq.cjs} +20 -25
- package/dist/{transformers-C3FLHUd6.js → transformers-ve6e2xcg.js} +3 -7
- package/dist/{types-CPz01LGH.js → types-C37hquWI.mjs} +4 -7
- package/dist/{types-Cd_hszr_.cjs → types-KC4QAoxe.cjs} +29 -34
- package/dist/{types-C93Ob9cU.js → types-hvL8ElAs.js} +8 -13
- package/dist/utils/docloader.test.d.mts +2 -0
- package/dist/utils/{docloader.test.js → docloader.test.mjs} +14 -24
- package/dist/utils/kv-cache.test.d.mts +2 -0
- package/dist/utils/{kv-cache.test.js → kv-cache.test.mjs} +25 -40
- package/dist/utils/mod.cjs +5 -9
- package/dist/utils/mod.d.cts +1 -3
- package/dist/utils/mod.d.ts +1 -3
- package/dist/utils/mod.js +4 -9
- package/dist/vocab/cjs.test.d.mts +2 -0
- package/dist/vocab/cjs.test.mjs +14 -0
- package/dist/vocab/mod.cjs +10 -12
- package/dist/vocab/mod.js +3 -5
- package/package.json +8 -8
- package/dist/compat/transformers.test.d.ts +0 -3
- package/dist/compat/transformers.test.js +0 -87
- package/dist/compat-Bb4NuTUO.js +0 -4
- package/dist/compat-DmDDELst.cjs +0 -4
- package/dist/deno-4w047OFk.js +0 -121
- package/dist/federation/builder.test.d.ts +0 -3
- package/dist/federation/collection.test.d.ts +0 -3
- package/dist/federation/collection.test.js +0 -32
- package/dist/federation/handler.test.d.ts +0 -3
- package/dist/federation/idempotency.test.d.ts +0 -3
- package/dist/federation/inbox.test.d.ts +0 -3
- package/dist/federation/keycache.test.d.ts +0 -3
- package/dist/federation/kv.test.d.ts +0 -3
- package/dist/federation/middleware.test.d.ts +0 -3
- package/dist/federation/mq.test.d.ts +0 -3
- package/dist/federation/negotiation.test.d.ts +0 -3
- package/dist/federation/retry.test.d.ts +0 -3
- package/dist/federation/router.test.d.ts +0 -3
- package/dist/federation/send.test.d.ts +0 -3
- package/dist/federation/webfinger.test.d.ts +0 -3
- package/dist/federation-Bp3HI26G.cjs +0 -350
- package/dist/federation-DaMfqRm4.js +0 -332
- package/dist/middleware-B73ZyDmk.js +0 -12
- package/dist/middleware-Dr61i4Jo.cjs +0 -12
- package/dist/middleware-_1PYruC5.js +0 -26
- package/dist/mod-Bh8mqlYw.d.cts +0 -9
- package/dist/mod-D6HodEq7.d.ts +0 -7
- package/dist/mod-DVwHUI_x.d.cts +0 -80
- package/dist/mod-DosD6NsG.d.ts +0 -82
- package/dist/mod-gq_Xfdz8.d.cts +0 -1
- package/dist/nodeinfo/client.test.d.ts +0 -3
- package/dist/nodeinfo/handler.test.d.ts +0 -3
- package/dist/nodeinfo/types.test.d.ts +0 -3
- package/dist/nodeinfo-DoESQxq5.js +0 -4
- package/dist/nodeinfo-DuMYTpbZ.cjs +0 -4
- package/dist/otel/exporter.test.d.ts +0 -3
- package/dist/runtime-c2Njxsry.cjs +0 -17
- package/dist/runtime-poamPCMb.js +0 -13
- package/dist/sig/http.test.d.ts +0 -3
- package/dist/sig/key.test.d.ts +0 -3
- package/dist/sig/ld.test.d.ts +0 -3
- package/dist/sig/owner.test.d.ts +0 -3
- package/dist/sig/proof.test.d.ts +0 -3
- package/dist/sig-BNhspNOf.js +0 -4
- package/dist/sig-vX39WyWI.cjs +0 -4
- package/dist/testing/mod.js +0 -10
- package/dist/utils/docloader.test.d.ts +0 -3
- package/dist/utils/kv-cache.test.d.ts +0 -3
- package/dist/utils-BQ9KqEK9.cjs +0 -4
- package/dist/utils-Dn5OPdSW.js +0 -4
- /package/dist/{mod-AGjRfPjT.d.ts → compat/transformers.test.d.mts} +0 -0
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
import "../assert-MZs1qjMx.js";
|
|
8
|
-
import "../assert_instance_of-DHz7EHNU.js";
|
|
9
|
-
import { MemoryKvStore } from "../kv-QzKcOQgP.js";
|
|
10
|
-
import "../std__assert-DWivtrGR.js";
|
|
11
|
-
import "../assert_rejects-Ce45JcFg.js";
|
|
12
|
-
import "../assert_throws-BNXdRGWP.js";
|
|
13
|
-
import "../assert_not_equals-C80BG-_5.js";
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import "urlpattern-polyfill";
|
|
3
|
+
globalThis.addEventListener = () => {};
|
|
4
|
+
import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
|
|
5
|
+
import "../std__assert-Duiq_YC9.mjs";
|
|
6
|
+
import { t as MemoryKvStore } from "../kv-BrZHNugx.mjs";
|
|
14
7
|
import { test } from "@fedify/fixture";
|
|
15
|
-
import { getLogger } from "@logtape/logtape";
|
|
16
8
|
import { SpanKind, SpanStatusCode, TraceFlags } from "@opentelemetry/api";
|
|
9
|
+
import { getLogger } from "@logtape/logtape";
|
|
17
10
|
import { ExportResultCode } from "@opentelemetry/core";
|
|
18
|
-
|
|
19
11
|
//#region src/otel/exporter.ts
|
|
20
12
|
/**
|
|
21
13
|
* A SpanExporter that persists ActivityPub activity traces to a
|
|
@@ -100,8 +92,7 @@ var FedifySpanExporter = class {
|
|
|
100
92
|
const records = this.#extractRecords(span);
|
|
101
93
|
for (const record of records) storeOperations.push(this.#storeRecord(record));
|
|
102
94
|
}
|
|
103
|
-
const
|
|
104
|
-
const rejected = results.filter((r) => r.status === "rejected");
|
|
95
|
+
const rejected = (await Promise.allSettled(storeOperations)).filter((r) => r.status === "rejected");
|
|
105
96
|
if (rejected.length > 0) throw new AggregateError(rejected.map((r) => r.reason), "Failed to store one or more trace activity records.");
|
|
106
97
|
}
|
|
107
98
|
#extractRecords(span) {
|
|
@@ -200,12 +191,11 @@ var FedifySpanExporter = class {
|
|
|
200
191
|
}
|
|
201
192
|
async #setWithCasRetry(key, transform, options) {
|
|
202
193
|
if (this.#kv.cas != null) for (let attempt = 0; attempt < 3; attempt++) {
|
|
203
|
-
const existing
|
|
204
|
-
const newValue
|
|
205
|
-
if (await this.#kv.cas(key, existing
|
|
194
|
+
const existing = await this.#kv.get(key);
|
|
195
|
+
const newValue = transform(existing);
|
|
196
|
+
if (await this.#kv.cas(key, existing, newValue, options)) return;
|
|
206
197
|
}
|
|
207
|
-
const
|
|
208
|
-
const newValue = transform(existing);
|
|
198
|
+
const newValue = transform(await this.#kv.get(key));
|
|
209
199
|
await this.#kv.set(key, newValue, options);
|
|
210
200
|
}
|
|
211
201
|
async #updateTraceSummary(record, options) {
|
|
@@ -261,15 +251,13 @@ var FedifySpanExporter = class {
|
|
|
261
251
|
*/
|
|
262
252
|
async shutdown() {}
|
|
263
253
|
};
|
|
264
|
-
|
|
265
254
|
//#endregion
|
|
266
255
|
//#region src/otel/exporter.test.ts
|
|
267
256
|
function createMockSpan(options) {
|
|
268
257
|
const traceId = options.traceId ?? "0123456789abcdef0123456789abcdef";
|
|
269
|
-
const spanId = options.spanId ?? "0123456789abcdef";
|
|
270
258
|
const spanContext = {
|
|
271
259
|
traceId,
|
|
272
|
-
spanId,
|
|
260
|
+
spanId: options.spanId ?? "0123456789abcdef",
|
|
273
261
|
traceFlags: TraceFlags.SAMPLED
|
|
274
262
|
};
|
|
275
263
|
const parentSpanContext = options.parentSpanId ? {
|
|
@@ -331,13 +319,10 @@ function createActivitySentEvent(options) {
|
|
|
331
319
|
}
|
|
332
320
|
test("FedifySpanExporter", async (t) => {
|
|
333
321
|
await t.step("constructor accepts KvStore with list()", () => {
|
|
334
|
-
|
|
335
|
-
const exporter = new FedifySpanExporter(kv);
|
|
336
|
-
assertEquals(exporter instanceof FedifySpanExporter, true);
|
|
322
|
+
assertEquals(new FedifySpanExporter(new MemoryKvStore()) instanceof FedifySpanExporter, true);
|
|
337
323
|
});
|
|
338
324
|
await t.step("export() stores inbound activity from span event", async () => {
|
|
339
|
-
const
|
|
340
|
-
const exporter = new FedifySpanExporter(kv);
|
|
325
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
341
326
|
const traceId = "trace123";
|
|
342
327
|
const spanId = "span456";
|
|
343
328
|
const activity = {
|
|
@@ -378,8 +363,7 @@ test("FedifySpanExporter", async (t) => {
|
|
|
378
363
|
assertEquals(activities[0].verified, true);
|
|
379
364
|
});
|
|
380
365
|
await t.step("export() stores outbound activity from span event", async () => {
|
|
381
|
-
const
|
|
382
|
-
const exporter = new FedifySpanExporter(kv);
|
|
366
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
383
367
|
const traceId = "trace789";
|
|
384
368
|
const spanId = "span012";
|
|
385
369
|
const inboxUrl = "https://example.com/users/alice/inbox";
|
|
@@ -390,13 +374,12 @@ test("FedifySpanExporter", async (t) => {
|
|
|
390
374
|
actor: "https://myserver.com/users/bob",
|
|
391
375
|
object: "https://example.com/users/alice"
|
|
392
376
|
};
|
|
393
|
-
const activityJson = JSON.stringify(activity);
|
|
394
377
|
const span = createMockSpan({
|
|
395
378
|
traceId,
|
|
396
379
|
spanId,
|
|
397
380
|
name: "activitypub.send_activity",
|
|
398
381
|
events: [createActivitySentEvent({
|
|
399
|
-
activityJson,
|
|
382
|
+
activityJson: JSON.stringify(activity),
|
|
400
383
|
inboxUrl,
|
|
401
384
|
activityId: activity.id
|
|
402
385
|
})]
|
|
@@ -417,8 +400,7 @@ test("FedifySpanExporter", async (t) => {
|
|
|
417
400
|
assertEquals(activities[0].inboxUrl, inboxUrl);
|
|
418
401
|
});
|
|
419
402
|
await t.step("export() ignores spans without activity events", async () => {
|
|
420
|
-
const
|
|
421
|
-
const exporter = new FedifySpanExporter(kv);
|
|
403
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
422
404
|
const span = createMockSpan({
|
|
423
405
|
traceId: "trace999",
|
|
424
406
|
spanId: "span999",
|
|
@@ -431,12 +413,10 @@ test("FedifySpanExporter", async (t) => {
|
|
|
431
413
|
resolve();
|
|
432
414
|
});
|
|
433
415
|
});
|
|
434
|
-
|
|
435
|
-
assertEquals(activities.length, 0);
|
|
416
|
+
assertEquals((await exporter.getActivitiesByTraceId("trace999")).length, 0);
|
|
436
417
|
});
|
|
437
418
|
await t.step("export() stores multiple activities from same trace", async () => {
|
|
438
|
-
const
|
|
439
|
-
const exporter = new FedifySpanExporter(kv);
|
|
419
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
440
420
|
const inboundActivity = JSON.stringify({
|
|
441
421
|
"@context": "https://www.w3.org/ns/activitystreams",
|
|
442
422
|
type: "Create",
|
|
@@ -478,8 +458,7 @@ test("FedifySpanExporter", async (t) => {
|
|
|
478
458
|
assertEquals(outbound?.parentSpanId, "span1");
|
|
479
459
|
});
|
|
480
460
|
await t.step("getRecentTraces() returns recent traces", async () => {
|
|
481
|
-
const
|
|
482
|
-
const exporter = new FedifySpanExporter(kv);
|
|
461
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
483
462
|
for (let i = 0; i < 5; i++) {
|
|
484
463
|
const activityJson = JSON.stringify({
|
|
485
464
|
"@context": "https://www.w3.org/ns/activitystreams",
|
|
@@ -496,12 +475,10 @@ test("FedifySpanExporter", async (t) => {
|
|
|
496
475
|
exporter.export([span], () => resolve());
|
|
497
476
|
});
|
|
498
477
|
}
|
|
499
|
-
|
|
500
|
-
assertEquals(traces.length, 3);
|
|
478
|
+
assertEquals((await exporter.getRecentTraces({ limit: 3 })).length, 3);
|
|
501
479
|
});
|
|
502
480
|
await t.step("getRecentTraces() returns all traces when limit not specified", async () => {
|
|
503
|
-
const
|
|
504
|
-
const exporter = new FedifySpanExporter(kv);
|
|
481
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
505
482
|
for (let i = 0; i < 3; i++) {
|
|
506
483
|
const activityJson = JSON.stringify({
|
|
507
484
|
"@context": "https://www.w3.org/ns/activitystreams",
|
|
@@ -518,22 +495,17 @@ test("FedifySpanExporter", async (t) => {
|
|
|
518
495
|
exporter.export([span], () => resolve());
|
|
519
496
|
});
|
|
520
497
|
}
|
|
521
|
-
|
|
522
|
-
assertEquals(traces.length >= 3, true);
|
|
498
|
+
assertEquals((await exporter.getRecentTraces()).length >= 3, true);
|
|
523
499
|
});
|
|
524
500
|
await t.step("forceFlush() returns resolved promise", async () => {
|
|
525
|
-
|
|
526
|
-
const exporter = new FedifySpanExporter(kv);
|
|
527
|
-
await exporter.forceFlush();
|
|
501
|
+
await new FedifySpanExporter(new MemoryKvStore()).forceFlush();
|
|
528
502
|
});
|
|
529
503
|
await t.step("shutdown() completes successfully", async () => {
|
|
530
|
-
|
|
531
|
-
const exporter = new FedifySpanExporter(kv);
|
|
532
|
-
await exporter.shutdown();
|
|
504
|
+
await new FedifySpanExporter(new MemoryKvStore()).shutdown();
|
|
533
505
|
});
|
|
534
506
|
await t.step("works with custom KvStore implementation", async () => {
|
|
535
507
|
const storedData = {};
|
|
536
|
-
const
|
|
508
|
+
const exporter = new FedifySpanExporter({
|
|
537
509
|
get: (key) => {
|
|
538
510
|
const k = JSON.stringify(key);
|
|
539
511
|
return Promise.resolve(storedData[k]);
|
|
@@ -561,18 +533,16 @@ test("FedifySpanExporter", async (t) => {
|
|
|
561
533
|
};
|
|
562
534
|
}
|
|
563
535
|
}
|
|
564
|
-
};
|
|
565
|
-
const exporter = new FedifySpanExporter(kv);
|
|
566
|
-
const activityJson = JSON.stringify({
|
|
567
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
568
|
-
type: "Like",
|
|
569
|
-
id: "https://example.com/activities/like"
|
|
570
536
|
});
|
|
571
537
|
const span = createMockSpan({
|
|
572
538
|
traceId: "cas-trace",
|
|
573
539
|
spanId: "cas-span",
|
|
574
540
|
name: "activitypub.inbox",
|
|
575
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
541
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
542
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
543
|
+
type: "Like",
|
|
544
|
+
id: "https://example.com/activities/like"
|
|
545
|
+
}) })]
|
|
576
546
|
});
|
|
577
547
|
await new Promise((resolve) => {
|
|
578
548
|
exporter.export([span], (result) => {
|
|
@@ -585,36 +555,31 @@ test("FedifySpanExporter", async (t) => {
|
|
|
585
555
|
assertEquals(activities[0].activityType, "Like");
|
|
586
556
|
});
|
|
587
557
|
await t.step("TTL option is respected", async () => {
|
|
588
|
-
const
|
|
589
|
-
const exporter = new FedifySpanExporter(kv, { ttl: Temporal.Duration.from({ hours: 1 }) });
|
|
590
|
-
const activityJson = JSON.stringify({
|
|
591
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
592
|
-
type: "Create"
|
|
593
|
-
});
|
|
558
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore(), { ttl: Temporal.Duration.from({ hours: 1 }) });
|
|
594
559
|
const span = createMockSpan({
|
|
595
560
|
traceId: "ttl-trace",
|
|
596
561
|
spanId: "ttl-span",
|
|
597
562
|
name: "activitypub.inbox",
|
|
598
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
563
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
564
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
565
|
+
type: "Create"
|
|
566
|
+
}) })]
|
|
599
567
|
});
|
|
600
568
|
await new Promise((resolve) => {
|
|
601
569
|
exporter.export([span], () => resolve());
|
|
602
570
|
});
|
|
603
|
-
|
|
604
|
-
assertEquals(activities.length, 1);
|
|
571
|
+
assertEquals((await exporter.getActivitiesByTraceId("ttl-trace")).length, 1);
|
|
605
572
|
});
|
|
606
573
|
await t.step("keyPrefix option customizes storage keys", async () => {
|
|
607
|
-
const
|
|
608
|
-
const exporter = new FedifySpanExporter(kv, { keyPrefix: ["custom", "prefix"] });
|
|
609
|
-
const activityJson = JSON.stringify({
|
|
610
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
611
|
-
type: "Announce"
|
|
612
|
-
});
|
|
574
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore(), { keyPrefix: ["custom", "prefix"] });
|
|
613
575
|
const span = createMockSpan({
|
|
614
576
|
traceId: "prefix-trace",
|
|
615
577
|
spanId: "prefix-span",
|
|
616
578
|
name: "activitypub.inbox",
|
|
617
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
579
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
580
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
581
|
+
type: "Announce"
|
|
582
|
+
}) })]
|
|
618
583
|
});
|
|
619
584
|
await new Promise((resolve) => {
|
|
620
585
|
exporter.export([span], () => resolve());
|
|
@@ -628,39 +593,37 @@ test("FedifySpanExporter", async (t) => {
|
|
|
628
593
|
const webServerExporter = new FedifySpanExporter(sharedKv);
|
|
629
594
|
const workerExporter = new FedifySpanExporter(sharedKv);
|
|
630
595
|
const dashboardExporter = new FedifySpanExporter(sharedKv);
|
|
631
|
-
const inboundActivity = JSON.stringify({
|
|
632
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
633
|
-
type: "Follow",
|
|
634
|
-
id: "https://remote.example/activities/follow-1",
|
|
635
|
-
actor: "https://remote.example/users/alice",
|
|
636
|
-
object: "https://local.example/users/bob"
|
|
637
|
-
});
|
|
638
596
|
const inboxSpan = createMockSpan({
|
|
639
597
|
traceId: "distributed-trace-001",
|
|
640
598
|
spanId: "inbox-span",
|
|
641
599
|
name: "activitypub.inbox",
|
|
642
600
|
events: [createActivityReceivedEvent({
|
|
643
|
-
activityJson:
|
|
601
|
+
activityJson: JSON.stringify({
|
|
602
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
603
|
+
type: "Follow",
|
|
604
|
+
id: "https://remote.example/activities/follow-1",
|
|
605
|
+
actor: "https://remote.example/users/alice",
|
|
606
|
+
object: "https://local.example/users/bob"
|
|
607
|
+
}),
|
|
644
608
|
verified: true
|
|
645
609
|
})]
|
|
646
610
|
});
|
|
647
611
|
await new Promise((resolve) => {
|
|
648
612
|
webServerExporter.export([inboxSpan], () => resolve());
|
|
649
613
|
});
|
|
650
|
-
const outboundActivity = JSON.stringify({
|
|
651
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
652
|
-
type: "Accept",
|
|
653
|
-
id: "https://local.example/activities/accept-1",
|
|
654
|
-
actor: "https://local.example/users/bob",
|
|
655
|
-
object: "https://remote.example/activities/follow-1"
|
|
656
|
-
});
|
|
657
614
|
const sendSpan = createMockSpan({
|
|
658
615
|
traceId: "distributed-trace-001",
|
|
659
616
|
spanId: "send-span",
|
|
660
617
|
parentSpanId: "inbox-span",
|
|
661
618
|
name: "activitypub.send_activity",
|
|
662
619
|
events: [createActivitySentEvent({
|
|
663
|
-
activityJson:
|
|
620
|
+
activityJson: JSON.stringify({
|
|
621
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
622
|
+
type: "Accept",
|
|
623
|
+
id: "https://local.example/activities/accept-1",
|
|
624
|
+
actor: "https://local.example/users/bob",
|
|
625
|
+
object: "https://remote.example/activities/follow-1"
|
|
626
|
+
}),
|
|
664
627
|
inboxUrl: "https://remote.example/users/alice/inbox",
|
|
665
628
|
activityId: "https://local.example/activities/accept-1"
|
|
666
629
|
})]
|
|
@@ -679,8 +642,7 @@ test("FedifySpanExporter", async (t) => {
|
|
|
679
642
|
assertEquals(accept?.direction, "outbound");
|
|
680
643
|
assertEquals(accept?.inboxUrl, "https://remote.example/users/alice/inbox");
|
|
681
644
|
assertEquals(accept?.parentSpanId, "inbox-span");
|
|
682
|
-
const
|
|
683
|
-
const ourTrace = recentTraces.find((t$1) => t$1.traceId === "distributed-trace-001");
|
|
645
|
+
const ourTrace = (await dashboardExporter.getRecentTraces()).find((t) => t.traceId === "distributed-trace-001");
|
|
684
646
|
assertEquals(ourTrace != null, true);
|
|
685
647
|
assertEquals(ourTrace?.activityCount, 2);
|
|
686
648
|
assertEquals(ourTrace?.activityTypes.includes("Follow"), true);
|
|
@@ -714,34 +676,30 @@ test("FedifySpanExporter", async (t) => {
|
|
|
714
676
|
});
|
|
715
677
|
});
|
|
716
678
|
await Promise.all(exportPromises);
|
|
717
|
-
const
|
|
718
|
-
const activities = await dashboard.getActivitiesByTraceId(traceId);
|
|
679
|
+
const activities = await new FedifySpanExporter(sharedKv).getActivitiesByTraceId(traceId);
|
|
719
680
|
assertEquals(activities.length, 3);
|
|
720
|
-
|
|
721
|
-
assertEquals(inboxUrls, [
|
|
681
|
+
assertEquals(activities.map((a) => a.inboxUrl).sort(), [
|
|
722
682
|
"https://follower-0.example/inbox",
|
|
723
683
|
"https://follower-1.example/inbox",
|
|
724
684
|
"https://follower-2.example/inbox"
|
|
725
685
|
]);
|
|
726
686
|
});
|
|
727
687
|
await t.step("extracts actorId from activity with string actor", async () => {
|
|
728
|
-
const
|
|
729
|
-
const exporter = new FedifySpanExporter(kv);
|
|
730
|
-
const activityJson = JSON.stringify({
|
|
731
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
732
|
-
type: "Create",
|
|
733
|
-
id: "https://example.com/activities/123",
|
|
734
|
-
actor: "https://example.com/users/alice",
|
|
735
|
-
object: {
|
|
736
|
-
type: "Note",
|
|
737
|
-
content: "Hello!"
|
|
738
|
-
}
|
|
739
|
-
});
|
|
688
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
740
689
|
const span = createMockSpan({
|
|
741
690
|
traceId: "actor-string-trace",
|
|
742
691
|
spanId: "span1",
|
|
743
692
|
name: "activitypub.inbox",
|
|
744
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
693
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
694
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
695
|
+
type: "Create",
|
|
696
|
+
id: "https://example.com/activities/123",
|
|
697
|
+
actor: "https://example.com/users/alice",
|
|
698
|
+
object: {
|
|
699
|
+
type: "Note",
|
|
700
|
+
content: "Hello!"
|
|
701
|
+
}
|
|
702
|
+
}) })]
|
|
745
703
|
});
|
|
746
704
|
await new Promise((resolve) => {
|
|
747
705
|
exporter.export([span], () => resolve());
|
|
@@ -751,27 +709,25 @@ test("FedifySpanExporter", async (t) => {
|
|
|
751
709
|
assertEquals(activities[0].actorId, "https://example.com/users/alice");
|
|
752
710
|
});
|
|
753
711
|
await t.step("extracts actorId from activity with object actor", async () => {
|
|
754
|
-
const
|
|
755
|
-
const exporter = new FedifySpanExporter(kv);
|
|
756
|
-
const activityJson = JSON.stringify({
|
|
757
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
758
|
-
type: "Create",
|
|
759
|
-
id: "https://example.com/activities/456",
|
|
760
|
-
actor: {
|
|
761
|
-
type: "Person",
|
|
762
|
-
id: "https://example.com/users/bob",
|
|
763
|
-
name: "Bob"
|
|
764
|
-
},
|
|
765
|
-
object: {
|
|
766
|
-
type: "Note",
|
|
767
|
-
content: "Hello!"
|
|
768
|
-
}
|
|
769
|
-
});
|
|
712
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
770
713
|
const span = createMockSpan({
|
|
771
714
|
traceId: "actor-object-trace",
|
|
772
715
|
spanId: "span1",
|
|
773
716
|
name: "activitypub.inbox",
|
|
774
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
717
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
718
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
719
|
+
type: "Create",
|
|
720
|
+
id: "https://example.com/activities/456",
|
|
721
|
+
actor: {
|
|
722
|
+
type: "Person",
|
|
723
|
+
id: "https://example.com/users/bob",
|
|
724
|
+
name: "Bob"
|
|
725
|
+
},
|
|
726
|
+
object: {
|
|
727
|
+
type: "Note",
|
|
728
|
+
content: "Hello!"
|
|
729
|
+
}
|
|
730
|
+
}) })]
|
|
775
731
|
});
|
|
776
732
|
await new Promise((resolve) => {
|
|
777
733
|
exporter.export([span], () => resolve());
|
|
@@ -781,21 +737,19 @@ test("FedifySpanExporter", async (t) => {
|
|
|
781
737
|
assertEquals(activities[0].actorId, "https://example.com/users/bob");
|
|
782
738
|
});
|
|
783
739
|
await t.step("extracts actorId from outbound activity", async () => {
|
|
784
|
-
const
|
|
785
|
-
const exporter = new FedifySpanExporter(kv);
|
|
786
|
-
const activityJson = JSON.stringify({
|
|
787
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
788
|
-
type: "Follow",
|
|
789
|
-
id: "https://myserver.com/activities/789",
|
|
790
|
-
actor: "https://myserver.com/users/charlie",
|
|
791
|
-
object: "https://example.com/users/alice"
|
|
792
|
-
});
|
|
740
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
793
741
|
const span = createMockSpan({
|
|
794
742
|
traceId: "outbound-actor-trace",
|
|
795
743
|
spanId: "span1",
|
|
796
744
|
name: "activitypub.send_activity",
|
|
797
745
|
events: [createActivitySentEvent({
|
|
798
|
-
activityJson
|
|
746
|
+
activityJson: JSON.stringify({
|
|
747
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
748
|
+
type: "Follow",
|
|
749
|
+
id: "https://myserver.com/activities/789",
|
|
750
|
+
actor: "https://myserver.com/users/charlie",
|
|
751
|
+
object: "https://example.com/users/alice"
|
|
752
|
+
}),
|
|
799
753
|
inboxUrl: "https://example.com/users/alice/inbox"
|
|
800
754
|
})]
|
|
801
755
|
});
|
|
@@ -807,20 +761,18 @@ test("FedifySpanExporter", async (t) => {
|
|
|
807
761
|
assertEquals(activities[0].actorId, "https://myserver.com/users/charlie");
|
|
808
762
|
});
|
|
809
763
|
await t.step("extracts signature verification details for inbound activity", async () => {
|
|
810
|
-
const
|
|
811
|
-
const exporter = new FedifySpanExporter(kv);
|
|
812
|
-
const activityJson = JSON.stringify({
|
|
813
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
814
|
-
type: "Create",
|
|
815
|
-
id: "https://example.com/activities/sig-test",
|
|
816
|
-
actor: "https://example.com/users/alice"
|
|
817
|
-
});
|
|
764
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
818
765
|
const span = createMockSpan({
|
|
819
766
|
traceId: "sig-details-trace",
|
|
820
767
|
spanId: "span1",
|
|
821
768
|
name: "activitypub.inbox",
|
|
822
769
|
events: [createActivityReceivedEvent({
|
|
823
|
-
activityJson
|
|
770
|
+
activityJson: JSON.stringify({
|
|
771
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
772
|
+
type: "Create",
|
|
773
|
+
id: "https://example.com/activities/sig-test",
|
|
774
|
+
actor: "https://example.com/users/alice"
|
|
775
|
+
}),
|
|
824
776
|
verified: true,
|
|
825
777
|
httpSigVerified: true,
|
|
826
778
|
httpSigKeyId: "https://example.com/users/alice#main-key",
|
|
@@ -839,20 +791,18 @@ test("FedifySpanExporter", async (t) => {
|
|
|
839
791
|
assertEquals(activities[0].signatureDetails?.ldSignaturesVerified, false);
|
|
840
792
|
});
|
|
841
793
|
await t.step("signature details with LD signatures verified", async () => {
|
|
842
|
-
const
|
|
843
|
-
const exporter = new FedifySpanExporter(kv);
|
|
844
|
-
const activityJson = JSON.stringify({
|
|
845
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
846
|
-
type: "Delete",
|
|
847
|
-
id: "https://example.com/activities/ld-sig-test",
|
|
848
|
-
actor: "https://example.com/users/alice"
|
|
849
|
-
});
|
|
794
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
850
795
|
const span = createMockSpan({
|
|
851
796
|
traceId: "ld-sig-trace",
|
|
852
797
|
spanId: "span1",
|
|
853
798
|
name: "activitypub.inbox",
|
|
854
799
|
events: [createActivityReceivedEvent({
|
|
855
|
-
activityJson
|
|
800
|
+
activityJson: JSON.stringify({
|
|
801
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
802
|
+
type: "Delete",
|
|
803
|
+
id: "https://example.com/activities/ld-sig-test",
|
|
804
|
+
actor: "https://example.com/users/alice"
|
|
805
|
+
}),
|
|
856
806
|
verified: true,
|
|
857
807
|
httpSigVerified: false,
|
|
858
808
|
ldSigVerified: true
|
|
@@ -867,19 +817,17 @@ test("FedifySpanExporter", async (t) => {
|
|
|
867
817
|
assertEquals(activities[0].signatureDetails?.ldSignaturesVerified, true);
|
|
868
818
|
});
|
|
869
819
|
await t.step("handles activity without actor field", async () => {
|
|
870
|
-
const
|
|
871
|
-
const exporter = new FedifySpanExporter(kv);
|
|
872
|
-
const activityJson = JSON.stringify({
|
|
873
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
874
|
-
type: "Delete",
|
|
875
|
-
id: "https://example.com/activities/no-actor",
|
|
876
|
-
object: "https://example.com/posts/123"
|
|
877
|
-
});
|
|
820
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
878
821
|
const span = createMockSpan({
|
|
879
822
|
traceId: "no-actor-trace",
|
|
880
823
|
spanId: "span1",
|
|
881
824
|
name: "activitypub.inbox",
|
|
882
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
825
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
826
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
827
|
+
type: "Delete",
|
|
828
|
+
id: "https://example.com/activities/no-actor",
|
|
829
|
+
object: "https://example.com/posts/123"
|
|
830
|
+
}) })]
|
|
883
831
|
});
|
|
884
832
|
await new Promise((resolve) => {
|
|
885
833
|
exporter.export([span], () => resolve());
|
|
@@ -889,5 +837,5 @@ test("FedifySpanExporter", async (t) => {
|
|
|
889
837
|
assertEquals(activities[0].actorId, void 0);
|
|
890
838
|
});
|
|
891
839
|
});
|
|
892
|
-
|
|
893
|
-
|
|
840
|
+
//#endregion
|
|
841
|
+
export {};
|
package/dist/otel/mod.cjs
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const __opentelemetry_core = require_chunk.__toESM(require("@opentelemetry/core"));
|
|
8
|
-
|
|
1
|
+
const { Temporal } = require("@js-temporal/polyfill");
|
|
2
|
+
const { URLPattern } = require("urlpattern-polyfill");
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
|
+
require("../chunk-DDcVe30Y.cjs");
|
|
5
|
+
let _logtape_logtape = require("@logtape/logtape");
|
|
6
|
+
let _opentelemetry_core = require("@opentelemetry/core");
|
|
9
7
|
//#region src/otel/exporter.ts
|
|
10
8
|
/**
|
|
11
9
|
* A SpanExporter that persists ActivityPub activity traces to a
|
|
@@ -75,13 +73,13 @@ var FedifySpanExporter = class {
|
|
|
75
73
|
* @param resultCallback Callback to invoke with the export result.
|
|
76
74
|
*/
|
|
77
75
|
export(spans, resultCallback) {
|
|
78
|
-
this.#exportAsync(spans).then(() => resultCallback({ code:
|
|
79
|
-
(0,
|
|
76
|
+
this.#exportAsync(spans).then(() => resultCallback({ code: _opentelemetry_core.ExportResultCode.SUCCESS })).catch((error) => {
|
|
77
|
+
(0, _logtape_logtape.getLogger)([
|
|
80
78
|
"fedify",
|
|
81
79
|
"otel",
|
|
82
80
|
"exporter"
|
|
83
81
|
]).error("Failed to export spans to KvStore: {error}", { error });
|
|
84
|
-
resultCallback({ code:
|
|
82
|
+
resultCallback({ code: _opentelemetry_core.ExportResultCode.FAILED });
|
|
85
83
|
});
|
|
86
84
|
}
|
|
87
85
|
async #exportAsync(spans) {
|
|
@@ -90,8 +88,7 @@ var FedifySpanExporter = class {
|
|
|
90
88
|
const records = this.#extractRecords(span);
|
|
91
89
|
for (const record of records) storeOperations.push(this.#storeRecord(record));
|
|
92
90
|
}
|
|
93
|
-
const
|
|
94
|
-
const rejected = results.filter((r) => r.status === "rejected");
|
|
91
|
+
const rejected = (await Promise.allSettled(storeOperations)).filter((r) => r.status === "rejected");
|
|
95
92
|
if (rejected.length > 0) throw new AggregateError(rejected.map((r) => r.reason), "Failed to store one or more trace activity records.");
|
|
96
93
|
}
|
|
97
94
|
#extractRecords(span) {
|
|
@@ -190,12 +187,11 @@ var FedifySpanExporter = class {
|
|
|
190
187
|
}
|
|
191
188
|
async #setWithCasRetry(key, transform, options) {
|
|
192
189
|
if (this.#kv.cas != null) for (let attempt = 0; attempt < 3; attempt++) {
|
|
193
|
-
const existing
|
|
194
|
-
const newValue
|
|
195
|
-
if (await this.#kv.cas(key, existing
|
|
190
|
+
const existing = await this.#kv.get(key);
|
|
191
|
+
const newValue = transform(existing);
|
|
192
|
+
if (await this.#kv.cas(key, existing, newValue, options)) return;
|
|
196
193
|
}
|
|
197
|
-
const
|
|
198
|
-
const newValue = transform(existing);
|
|
194
|
+
const newValue = transform(await this.#kv.get(key));
|
|
199
195
|
await this.#kv.set(key, newValue, options);
|
|
200
196
|
}
|
|
201
197
|
async #updateTraceSummary(record, options) {
|
|
@@ -251,6 +247,5 @@ var FedifySpanExporter = class {
|
|
|
251
247
|
*/
|
|
252
248
|
async shutdown() {}
|
|
253
249
|
};
|
|
254
|
-
|
|
255
250
|
//#endregion
|
|
256
|
-
exports.FedifySpanExporter = FedifySpanExporter;
|
|
251
|
+
exports.FedifySpanExporter = FedifySpanExporter;
|
package/dist/otel/mod.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as KvStore, t as KvKey } from "../kv-CbLNp3zQ.cjs";
|
|
2
2
|
import { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base";
|
|
3
3
|
import { ExportResultCode } from "@opentelemetry/core";
|
|
4
4
|
|
|
@@ -227,4 +227,4 @@ declare class FedifySpanExporter implements SpanExporter {
|
|
|
227
227
|
shutdown(): Promise<void>;
|
|
228
228
|
}
|
|
229
229
|
//#endregion
|
|
230
|
-
export { ActivityDirection, FedifySpanExporter, FedifySpanExporterOptions, GetRecentTracesOptions, SignatureVerificationDetails, TraceActivityRecord, TraceSummary };
|
|
230
|
+
export { type ActivityDirection, FedifySpanExporter, type FedifySpanExporterOptions, type GetRecentTracesOptions, type SignatureVerificationDetails, type TraceActivityRecord, type TraceSummary };
|
package/dist/otel/mod.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
|
-
import {
|
|
3
|
+
import { n as KvStore, t as KvKey } from "../kv-GFYnFoOl.js";
|
|
4
4
|
import { ExportResultCode } from "@opentelemetry/core";
|
|
5
5
|
import { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base";
|
|
6
6
|
|
|
@@ -229,4 +229,4 @@ declare class FedifySpanExporter implements SpanExporter {
|
|
|
229
229
|
shutdown(): Promise<void>;
|
|
230
230
|
}
|
|
231
231
|
//#endregion
|
|
232
|
-
export { ActivityDirection, FedifySpanExporter, FedifySpanExporterOptions, GetRecentTracesOptions, SignatureVerificationDetails, TraceActivityRecord, TraceSummary };
|
|
232
|
+
export { type ActivityDirection, FedifySpanExporter, type FedifySpanExporterOptions, type GetRecentTracesOptions, type SignatureVerificationDetails, type TraceActivityRecord, type TraceSummary };
|