@fedify/fedify 2.2.0-dev.610 → 2.2.0-dev.622
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/README.md +2 -5
- package/dist/{accept-D7sAxyNa.js → accept-Dd__NiUL.mjs} +10 -8
- 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-f3m3epl3.js → assert_not_equals--wG9hV7u.mjs} +6 -13
- package/dist/{assert_rejects-0h7I2Esa.js → assert_rejects-B-qJtC9Z.mjs} +6 -11
- package/dist/{assert_throws-rjdMBf31.js → assert_throws-4NwKEy2q.mjs} +5 -10
- package/dist/{builder-Bkqx5fo0.js → builder-DcSpny3g.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-BxMZiQaD.d.ts → client-AtlibPOU.d.ts} +1 -1
- package/dist/{client-CoCIaTNO.js → client-DEpOVgY1.mjs} +9 -13
- package/dist/{client-C97KOq3x.d.cts → client-z-8dc-e1.d.cts} +1 -1
- package/dist/{collection-CSzG2j1P.js → collection-BD6-SZ6O.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-DyJjQQ_H.d.ts → context-BOiMZBu5.d.ts} +9 -18
- package/dist/{context-BcqA-0BL.d.cts → context-BhZVy7RB.d.cts} +9 -18
- package/dist/{context-Aqenou7c.js → context-Juj6bdHC.mjs} +7 -11
- package/dist/deno-D682wzlW.mjs +8 -0
- package/dist/{docloader-ORTT1bPi.js → docloader-CCWf4tNV.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} +21 -44
- 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} +69 -131
- package/dist/federation/idempotency.test.d.mts +2 -0
- package/dist/federation/{idempotency.test.js → idempotency.test.mjs} +31 -63
- 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} +13 -19
- 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} +173 -262
- 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 -30
- package/dist/federation/webfinger.test.d.mts +2 -0
- package/dist/federation/{webfinger.test.js → webfinger.test.mjs} +22 -56
- package/dist/{http-BDf1pBmE.cjs → http-BQccxQlj.cjs} +177 -302
- package/dist/{http-By9CCocC.js → http-CNsnyqrO.mjs} +23 -43
- package/dist/{http-BudnHZE2.d.cts → http-CrGuipxe.d.cts} +1 -6
- package/dist/{http-DLQMXj_1.js → http-DhwEMhtv.js} +53 -184
- package/dist/{http-Dax_FIBo.d.ts → http-aQzN9Ayi.d.ts} +1 -6
- package/dist/{inbox-CTJeEur6.js → inbox-DegXbbbS.mjs} +18 -26
- package/dist/{key-OaS_196P.js → key-vL60OvqM.mjs} +29 -37
- package/dist/{keycache-CpGWAUbj.js → keycache-CCSwkQcY.mjs} +5 -10
- package/dist/{keys-BFve7QQv.js → keys-BAK-tUlf.mjs} +5 -9
- 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-Bw2F2ABq.js → kv-cache-B01V7s3h.mjs} +4 -8
- package/dist/{kv-cache-COnBmjEC.js → kv-cache-CTj3iCix.js} +6 -13
- package/dist/{kv-cache-DG491NbS.cjs → kv-cache-DxdXJNbj.cjs} +27 -34
- package/dist/{kv-QzKcOQgP.js → kv-tL2TOE9X.mjs} +6 -10
- package/dist/{ld-5udwE1JY.js → ld-C3CO00YY.mjs} +17 -31
- package/dist/{middleware-3FSu2a2W.js → middleware-BmsVSOeS.js} +335 -382
- package/dist/middleware-C7shNcsp.cjs +4 -0
- package/dist/{middleware-CFuio6Y_.cjs → middleware-Cx0Ny6_7.cjs} +532 -587
- package/dist/middleware-DqVGYk56.mjs +5 -0
- package/dist/{middleware-DRWIaDqh.js → middleware-Du-vh7I_.mjs} +282 -317
- package/dist/{mod-em2Il1eD.d.cts → mod-Bp_CzKd4.d.cts} +2 -2
- package/dist/{mod-DCbh1JQ5.d.ts → mod-CLgIXe9w.d.ts} +3 -3
- package/dist/{mod-jfnweK2w.d.cts → mod-CMEbIaNh.d.cts} +3 -3
- package/dist/{mod-D6MdymW7.d.ts → mod-DKOAow7a.d.ts} +2 -2
- package/dist/{mod-Coe7KEgX.d.cts → mod-DoJBjjnO.d.cts} +2 -2
- package/dist/{mod-D6dOd--H.d.ts → mod-DvxszxXC.d.ts} +2 -2
- package/dist/mod.cjs +29 -74
- package/dist/mod.d.cts +11 -14
- package/dist/mod.d.ts +11 -15
- package/dist/mod.js +17 -71
- package/dist/{negotiation-BlAuS_nr.js → negotiation-DnsfFF8I.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 -43
- 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} +124 -178
- 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-1AbPBOOZ.d.cts → owner-CptqhsOy.d.cts} +1 -1
- package/dist/{owner-DuRG_QYg.js → owner-DF320w6K.mjs} +11 -16
- package/dist/{proof-DG0_Hm4d.js → proof-BCWk5oas.js} +32 -58
- package/dist/{proof-DFffIwhK.js → proof-IyDwwmzL.mjs} +21 -33
- package/dist/{proof-WJjJMjvC.cjs → proof-WhNxSv_N.cjs} +133 -157
- package/dist/{retry-mqLf4b-R.js → retry-B_E3V_Dx.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-CJAMZwWu.js → send-CJQubr5t.mjs} +8 -13
- package/dist/sig/accept.test.d.mts +2 -0
- package/dist/sig/{accept.test.js → accept.test.mjs} +35 -70
- package/dist/sig/http.test.d.mts +2 -0
- package/dist/sig/{http.test.js → http.test.mjs} +166 -280
- 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-X-_kMxKM.js → std__assert-Duiq_YC9.mjs} +12 -24
- package/dist/testing/{mod.d.ts → mod.d.mts} +26 -90
- 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-DCP0WLdt.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 -25
- 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 -88
- package/dist/compat-Bb4NuTUO.js +0 -4
- package/dist/compat-DmDDELst.cjs +0 -4
- package/dist/deno-CMcbjYDs.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-BzcyJjau.js +0 -12
- package/dist/middleware-HlNnBIDX.js +0 -27
- package/dist/middleware-i-8IYJwY.cjs +0 -12
- package/dist/mod-B7QkWzrL.d.cts +0 -80
- package/dist/mod-Bh8mqlYw.d.cts +0 -9
- package/dist/mod-D6HodEq7.d.ts +0 -7
- package/dist/mod-SMHOMNpZ.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/accept.test.d.ts +0 -3
- 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-X-_kMxKM.js";
|
|
11
|
-
import "../assert_rejects-0h7I2Esa.js";
|
|
12
|
-
import "../assert_throws-rjdMBf31.js";
|
|
13
|
-
import "../assert_not_equals-f3m3epl3.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-tL2TOE9X.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) {
|
|
@@ -206,12 +197,11 @@ var FedifySpanExporter = class {
|
|
|
206
197
|
}
|
|
207
198
|
async #setWithCasRetry(key, transform, options) {
|
|
208
199
|
if (this.#kv.cas != null) for (let attempt = 0; attempt < 3; attempt++) {
|
|
209
|
-
const existing
|
|
210
|
-
const newValue
|
|
211
|
-
if (await this.#kv.cas(key, existing
|
|
200
|
+
const existing = await this.#kv.get(key);
|
|
201
|
+
const newValue = transform(existing);
|
|
202
|
+
if (await this.#kv.cas(key, existing, newValue, options)) return;
|
|
212
203
|
}
|
|
213
|
-
const
|
|
214
|
-
const newValue = transform(existing);
|
|
204
|
+
const newValue = transform(await this.#kv.get(key));
|
|
215
205
|
await this.#kv.set(key, newValue, options);
|
|
216
206
|
}
|
|
217
207
|
async #updateTraceSummary(record, options) {
|
|
@@ -267,15 +257,13 @@ var FedifySpanExporter = class {
|
|
|
267
257
|
*/
|
|
268
258
|
async shutdown() {}
|
|
269
259
|
};
|
|
270
|
-
|
|
271
260
|
//#endregion
|
|
272
261
|
//#region src/otel/exporter.test.ts
|
|
273
262
|
function createMockSpan(options) {
|
|
274
263
|
const traceId = options.traceId ?? "0123456789abcdef0123456789abcdef";
|
|
275
|
-
const spanId = options.spanId ?? "0123456789abcdef";
|
|
276
264
|
const spanContext = {
|
|
277
265
|
traceId,
|
|
278
|
-
spanId,
|
|
266
|
+
spanId: options.spanId ?? "0123456789abcdef",
|
|
279
267
|
traceFlags: TraceFlags.SAMPLED
|
|
280
268
|
};
|
|
281
269
|
const parentSpanContext = options.parentSpanId ? {
|
|
@@ -340,13 +328,10 @@ function createActivitySentEvent(options) {
|
|
|
340
328
|
}
|
|
341
329
|
test("FedifySpanExporter", async (t) => {
|
|
342
330
|
await t.step("constructor accepts KvStore with list()", () => {
|
|
343
|
-
|
|
344
|
-
const exporter = new FedifySpanExporter(kv);
|
|
345
|
-
assertEquals(exporter instanceof FedifySpanExporter, true);
|
|
331
|
+
assertEquals(new FedifySpanExporter(new MemoryKvStore()) instanceof FedifySpanExporter, true);
|
|
346
332
|
});
|
|
347
333
|
await t.step("export() stores inbound activity from span event", async () => {
|
|
348
|
-
const
|
|
349
|
-
const exporter = new FedifySpanExporter(kv);
|
|
334
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
350
335
|
const traceId = "trace123";
|
|
351
336
|
const spanId = "span456";
|
|
352
337
|
const activity = {
|
|
@@ -387,8 +372,7 @@ test("FedifySpanExporter", async (t) => {
|
|
|
387
372
|
assertEquals(activities[0].verified, true);
|
|
388
373
|
});
|
|
389
374
|
await t.step("export() stores outbound activity from span event", async () => {
|
|
390
|
-
const
|
|
391
|
-
const exporter = new FedifySpanExporter(kv);
|
|
375
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
392
376
|
const traceId = "trace789";
|
|
393
377
|
const spanId = "span012";
|
|
394
378
|
const inboxUrl = "https://example.com/users/alice/inbox";
|
|
@@ -399,13 +383,12 @@ test("FedifySpanExporter", async (t) => {
|
|
|
399
383
|
actor: "https://myserver.com/users/bob",
|
|
400
384
|
object: "https://example.com/users/alice"
|
|
401
385
|
};
|
|
402
|
-
const activityJson = JSON.stringify(activity);
|
|
403
386
|
const span = createMockSpan({
|
|
404
387
|
traceId,
|
|
405
388
|
spanId,
|
|
406
389
|
name: "activitypub.send_activity",
|
|
407
390
|
events: [createActivitySentEvent({
|
|
408
|
-
activityJson,
|
|
391
|
+
activityJson: JSON.stringify(activity),
|
|
409
392
|
inboxUrl,
|
|
410
393
|
activityId: activity.id
|
|
411
394
|
})]
|
|
@@ -426,8 +409,7 @@ test("FedifySpanExporter", async (t) => {
|
|
|
426
409
|
assertEquals(activities[0].inboxUrl, inboxUrl);
|
|
427
410
|
});
|
|
428
411
|
await t.step("export() ignores spans without activity events", async () => {
|
|
429
|
-
const
|
|
430
|
-
const exporter = new FedifySpanExporter(kv);
|
|
412
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
431
413
|
const span = createMockSpan({
|
|
432
414
|
traceId: "trace999",
|
|
433
415
|
spanId: "span999",
|
|
@@ -440,12 +422,10 @@ test("FedifySpanExporter", async (t) => {
|
|
|
440
422
|
resolve();
|
|
441
423
|
});
|
|
442
424
|
});
|
|
443
|
-
|
|
444
|
-
assertEquals(activities.length, 0);
|
|
425
|
+
assertEquals((await exporter.getActivitiesByTraceId("trace999")).length, 0);
|
|
445
426
|
});
|
|
446
427
|
await t.step("export() stores multiple activities from same trace", async () => {
|
|
447
|
-
const
|
|
448
|
-
const exporter = new FedifySpanExporter(kv);
|
|
428
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
449
429
|
const inboundActivity = JSON.stringify({
|
|
450
430
|
"@context": "https://www.w3.org/ns/activitystreams",
|
|
451
431
|
type: "Create",
|
|
@@ -487,8 +467,7 @@ test("FedifySpanExporter", async (t) => {
|
|
|
487
467
|
assertEquals(outbound?.parentSpanId, "span1");
|
|
488
468
|
});
|
|
489
469
|
await t.step("getRecentTraces() returns recent traces", async () => {
|
|
490
|
-
const
|
|
491
|
-
const exporter = new FedifySpanExporter(kv);
|
|
470
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
492
471
|
for (let i = 0; i < 5; i++) {
|
|
493
472
|
const activityJson = JSON.stringify({
|
|
494
473
|
"@context": "https://www.w3.org/ns/activitystreams",
|
|
@@ -505,12 +484,10 @@ test("FedifySpanExporter", async (t) => {
|
|
|
505
484
|
exporter.export([span], () => resolve());
|
|
506
485
|
});
|
|
507
486
|
}
|
|
508
|
-
|
|
509
|
-
assertEquals(traces.length, 3);
|
|
487
|
+
assertEquals((await exporter.getRecentTraces({ limit: 3 })).length, 3);
|
|
510
488
|
});
|
|
511
489
|
await t.step("getRecentTraces() returns all traces when limit not specified", async () => {
|
|
512
|
-
const
|
|
513
|
-
const exporter = new FedifySpanExporter(kv);
|
|
490
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
514
491
|
for (let i = 0; i < 3; i++) {
|
|
515
492
|
const activityJson = JSON.stringify({
|
|
516
493
|
"@context": "https://www.w3.org/ns/activitystreams",
|
|
@@ -527,22 +504,17 @@ test("FedifySpanExporter", async (t) => {
|
|
|
527
504
|
exporter.export([span], () => resolve());
|
|
528
505
|
});
|
|
529
506
|
}
|
|
530
|
-
|
|
531
|
-
assertEquals(traces.length >= 3, true);
|
|
507
|
+
assertEquals((await exporter.getRecentTraces()).length >= 3, true);
|
|
532
508
|
});
|
|
533
509
|
await t.step("forceFlush() returns resolved promise", async () => {
|
|
534
|
-
|
|
535
|
-
const exporter = new FedifySpanExporter(kv);
|
|
536
|
-
await exporter.forceFlush();
|
|
510
|
+
await new FedifySpanExporter(new MemoryKvStore()).forceFlush();
|
|
537
511
|
});
|
|
538
512
|
await t.step("shutdown() completes successfully", async () => {
|
|
539
|
-
|
|
540
|
-
const exporter = new FedifySpanExporter(kv);
|
|
541
|
-
await exporter.shutdown();
|
|
513
|
+
await new FedifySpanExporter(new MemoryKvStore()).shutdown();
|
|
542
514
|
});
|
|
543
515
|
await t.step("works with custom KvStore implementation", async () => {
|
|
544
516
|
const storedData = {};
|
|
545
|
-
const
|
|
517
|
+
const exporter = new FedifySpanExporter({
|
|
546
518
|
get: (key) => {
|
|
547
519
|
const k = JSON.stringify(key);
|
|
548
520
|
return Promise.resolve(storedData[k]);
|
|
@@ -570,18 +542,16 @@ test("FedifySpanExporter", async (t) => {
|
|
|
570
542
|
};
|
|
571
543
|
}
|
|
572
544
|
}
|
|
573
|
-
};
|
|
574
|
-
const exporter = new FedifySpanExporter(kv);
|
|
575
|
-
const activityJson = JSON.stringify({
|
|
576
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
577
|
-
type: "Like",
|
|
578
|
-
id: "https://example.com/activities/like"
|
|
579
545
|
});
|
|
580
546
|
const span = createMockSpan({
|
|
581
547
|
traceId: "cas-trace",
|
|
582
548
|
spanId: "cas-span",
|
|
583
549
|
name: "activitypub.inbox",
|
|
584
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
550
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
551
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
552
|
+
type: "Like",
|
|
553
|
+
id: "https://example.com/activities/like"
|
|
554
|
+
}) })]
|
|
585
555
|
});
|
|
586
556
|
await new Promise((resolve) => {
|
|
587
557
|
exporter.export([span], (result) => {
|
|
@@ -594,36 +564,31 @@ test("FedifySpanExporter", async (t) => {
|
|
|
594
564
|
assertEquals(activities[0].activityType, "Like");
|
|
595
565
|
});
|
|
596
566
|
await t.step("TTL option is respected", async () => {
|
|
597
|
-
const
|
|
598
|
-
const exporter = new FedifySpanExporter(kv, { ttl: Temporal.Duration.from({ hours: 1 }) });
|
|
599
|
-
const activityJson = JSON.stringify({
|
|
600
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
601
|
-
type: "Create"
|
|
602
|
-
});
|
|
567
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore(), { ttl: Temporal.Duration.from({ hours: 1 }) });
|
|
603
568
|
const span = createMockSpan({
|
|
604
569
|
traceId: "ttl-trace",
|
|
605
570
|
spanId: "ttl-span",
|
|
606
571
|
name: "activitypub.inbox",
|
|
607
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
572
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
573
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
574
|
+
type: "Create"
|
|
575
|
+
}) })]
|
|
608
576
|
});
|
|
609
577
|
await new Promise((resolve) => {
|
|
610
578
|
exporter.export([span], () => resolve());
|
|
611
579
|
});
|
|
612
|
-
|
|
613
|
-
assertEquals(activities.length, 1);
|
|
580
|
+
assertEquals((await exporter.getActivitiesByTraceId("ttl-trace")).length, 1);
|
|
614
581
|
});
|
|
615
582
|
await t.step("keyPrefix option customizes storage keys", async () => {
|
|
616
|
-
const
|
|
617
|
-
const exporter = new FedifySpanExporter(kv, { keyPrefix: ["custom", "prefix"] });
|
|
618
|
-
const activityJson = JSON.stringify({
|
|
619
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
620
|
-
type: "Announce"
|
|
621
|
-
});
|
|
583
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore(), { keyPrefix: ["custom", "prefix"] });
|
|
622
584
|
const span = createMockSpan({
|
|
623
585
|
traceId: "prefix-trace",
|
|
624
586
|
spanId: "prefix-span",
|
|
625
587
|
name: "activitypub.inbox",
|
|
626
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
588
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
589
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
590
|
+
type: "Announce"
|
|
591
|
+
}) })]
|
|
627
592
|
});
|
|
628
593
|
await new Promise((resolve) => {
|
|
629
594
|
exporter.export([span], () => resolve());
|
|
@@ -637,39 +602,37 @@ test("FedifySpanExporter", async (t) => {
|
|
|
637
602
|
const webServerExporter = new FedifySpanExporter(sharedKv);
|
|
638
603
|
const workerExporter = new FedifySpanExporter(sharedKv);
|
|
639
604
|
const dashboardExporter = new FedifySpanExporter(sharedKv);
|
|
640
|
-
const inboundActivity = JSON.stringify({
|
|
641
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
642
|
-
type: "Follow",
|
|
643
|
-
id: "https://remote.example/activities/follow-1",
|
|
644
|
-
actor: "https://remote.example/users/alice",
|
|
645
|
-
object: "https://local.example/users/bob"
|
|
646
|
-
});
|
|
647
605
|
const inboxSpan = createMockSpan({
|
|
648
606
|
traceId: "distributed-trace-001",
|
|
649
607
|
spanId: "inbox-span",
|
|
650
608
|
name: "activitypub.inbox",
|
|
651
609
|
events: [createActivityReceivedEvent({
|
|
652
|
-
activityJson:
|
|
610
|
+
activityJson: JSON.stringify({
|
|
611
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
612
|
+
type: "Follow",
|
|
613
|
+
id: "https://remote.example/activities/follow-1",
|
|
614
|
+
actor: "https://remote.example/users/alice",
|
|
615
|
+
object: "https://local.example/users/bob"
|
|
616
|
+
}),
|
|
653
617
|
verified: true
|
|
654
618
|
})]
|
|
655
619
|
});
|
|
656
620
|
await new Promise((resolve) => {
|
|
657
621
|
webServerExporter.export([inboxSpan], () => resolve());
|
|
658
622
|
});
|
|
659
|
-
const outboundActivity = JSON.stringify({
|
|
660
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
661
|
-
type: "Accept",
|
|
662
|
-
id: "https://local.example/activities/accept-1",
|
|
663
|
-
actor: "https://local.example/users/bob",
|
|
664
|
-
object: "https://remote.example/activities/follow-1"
|
|
665
|
-
});
|
|
666
623
|
const sendSpan = createMockSpan({
|
|
667
624
|
traceId: "distributed-trace-001",
|
|
668
625
|
spanId: "send-span",
|
|
669
626
|
parentSpanId: "inbox-span",
|
|
670
627
|
name: "activitypub.send_activity",
|
|
671
628
|
events: [createActivitySentEvent({
|
|
672
|
-
activityJson:
|
|
629
|
+
activityJson: JSON.stringify({
|
|
630
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
631
|
+
type: "Accept",
|
|
632
|
+
id: "https://local.example/activities/accept-1",
|
|
633
|
+
actor: "https://local.example/users/bob",
|
|
634
|
+
object: "https://remote.example/activities/follow-1"
|
|
635
|
+
}),
|
|
673
636
|
inboxUrl: "https://remote.example/users/alice/inbox",
|
|
674
637
|
activityId: "https://local.example/activities/accept-1"
|
|
675
638
|
})]
|
|
@@ -688,8 +651,7 @@ test("FedifySpanExporter", async (t) => {
|
|
|
688
651
|
assertEquals(accept?.direction, "outbound");
|
|
689
652
|
assertEquals(accept?.inboxUrl, "https://remote.example/users/alice/inbox");
|
|
690
653
|
assertEquals(accept?.parentSpanId, "inbox-span");
|
|
691
|
-
const
|
|
692
|
-
const ourTrace = recentTraces.find((t$1) => t$1.traceId === "distributed-trace-001");
|
|
654
|
+
const ourTrace = (await dashboardExporter.getRecentTraces()).find((t) => t.traceId === "distributed-trace-001");
|
|
693
655
|
assertEquals(ourTrace != null, true);
|
|
694
656
|
assertEquals(ourTrace?.activityCount, 2);
|
|
695
657
|
assertEquals(ourTrace?.activityTypes.includes("Follow"), true);
|
|
@@ -723,34 +685,30 @@ test("FedifySpanExporter", async (t) => {
|
|
|
723
685
|
});
|
|
724
686
|
});
|
|
725
687
|
await Promise.all(exportPromises);
|
|
726
|
-
const
|
|
727
|
-
const activities = await dashboard.getActivitiesByTraceId(traceId);
|
|
688
|
+
const activities = await new FedifySpanExporter(sharedKv).getActivitiesByTraceId(traceId);
|
|
728
689
|
assertEquals(activities.length, 3);
|
|
729
|
-
|
|
730
|
-
assertEquals(inboxUrls, [
|
|
690
|
+
assertEquals(activities.map((a) => a.inboxUrl).sort(), [
|
|
731
691
|
"https://follower-0.example/inbox",
|
|
732
692
|
"https://follower-1.example/inbox",
|
|
733
693
|
"https://follower-2.example/inbox"
|
|
734
694
|
]);
|
|
735
695
|
});
|
|
736
696
|
await t.step("extracts actorId from activity with string actor", async () => {
|
|
737
|
-
const
|
|
738
|
-
const exporter = new FedifySpanExporter(kv);
|
|
739
|
-
const activityJson = JSON.stringify({
|
|
740
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
741
|
-
type: "Create",
|
|
742
|
-
id: "https://example.com/activities/123",
|
|
743
|
-
actor: "https://example.com/users/alice",
|
|
744
|
-
object: {
|
|
745
|
-
type: "Note",
|
|
746
|
-
content: "Hello!"
|
|
747
|
-
}
|
|
748
|
-
});
|
|
697
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
749
698
|
const span = createMockSpan({
|
|
750
699
|
traceId: "actor-string-trace",
|
|
751
700
|
spanId: "span1",
|
|
752
701
|
name: "activitypub.inbox",
|
|
753
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
702
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
703
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
704
|
+
type: "Create",
|
|
705
|
+
id: "https://example.com/activities/123",
|
|
706
|
+
actor: "https://example.com/users/alice",
|
|
707
|
+
object: {
|
|
708
|
+
type: "Note",
|
|
709
|
+
content: "Hello!"
|
|
710
|
+
}
|
|
711
|
+
}) })]
|
|
754
712
|
});
|
|
755
713
|
await new Promise((resolve) => {
|
|
756
714
|
exporter.export([span], () => resolve());
|
|
@@ -760,27 +718,25 @@ test("FedifySpanExporter", async (t) => {
|
|
|
760
718
|
assertEquals(activities[0].actorId, "https://example.com/users/alice");
|
|
761
719
|
});
|
|
762
720
|
await t.step("extracts actorId from activity with object actor", async () => {
|
|
763
|
-
const
|
|
764
|
-
const exporter = new FedifySpanExporter(kv);
|
|
765
|
-
const activityJson = JSON.stringify({
|
|
766
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
767
|
-
type: "Create",
|
|
768
|
-
id: "https://example.com/activities/456",
|
|
769
|
-
actor: {
|
|
770
|
-
type: "Person",
|
|
771
|
-
id: "https://example.com/users/bob",
|
|
772
|
-
name: "Bob"
|
|
773
|
-
},
|
|
774
|
-
object: {
|
|
775
|
-
type: "Note",
|
|
776
|
-
content: "Hello!"
|
|
777
|
-
}
|
|
778
|
-
});
|
|
721
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
779
722
|
const span = createMockSpan({
|
|
780
723
|
traceId: "actor-object-trace",
|
|
781
724
|
spanId: "span1",
|
|
782
725
|
name: "activitypub.inbox",
|
|
783
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
726
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
727
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
728
|
+
type: "Create",
|
|
729
|
+
id: "https://example.com/activities/456",
|
|
730
|
+
actor: {
|
|
731
|
+
type: "Person",
|
|
732
|
+
id: "https://example.com/users/bob",
|
|
733
|
+
name: "Bob"
|
|
734
|
+
},
|
|
735
|
+
object: {
|
|
736
|
+
type: "Note",
|
|
737
|
+
content: "Hello!"
|
|
738
|
+
}
|
|
739
|
+
}) })]
|
|
784
740
|
});
|
|
785
741
|
await new Promise((resolve) => {
|
|
786
742
|
exporter.export([span], () => resolve());
|
|
@@ -790,21 +746,19 @@ test("FedifySpanExporter", async (t) => {
|
|
|
790
746
|
assertEquals(activities[0].actorId, "https://example.com/users/bob");
|
|
791
747
|
});
|
|
792
748
|
await t.step("extracts actorId from outbound activity", async () => {
|
|
793
|
-
const
|
|
794
|
-
const exporter = new FedifySpanExporter(kv);
|
|
795
|
-
const activityJson = JSON.stringify({
|
|
796
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
797
|
-
type: "Follow",
|
|
798
|
-
id: "https://myserver.com/activities/789",
|
|
799
|
-
actor: "https://myserver.com/users/charlie",
|
|
800
|
-
object: "https://example.com/users/alice"
|
|
801
|
-
});
|
|
749
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
802
750
|
const span = createMockSpan({
|
|
803
751
|
traceId: "outbound-actor-trace",
|
|
804
752
|
spanId: "span1",
|
|
805
753
|
name: "activitypub.send_activity",
|
|
806
754
|
events: [createActivitySentEvent({
|
|
807
|
-
activityJson
|
|
755
|
+
activityJson: JSON.stringify({
|
|
756
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
757
|
+
type: "Follow",
|
|
758
|
+
id: "https://myserver.com/activities/789",
|
|
759
|
+
actor: "https://myserver.com/users/charlie",
|
|
760
|
+
object: "https://example.com/users/alice"
|
|
761
|
+
}),
|
|
808
762
|
inboxUrl: "https://example.com/users/alice/inbox"
|
|
809
763
|
})]
|
|
810
764
|
});
|
|
@@ -816,20 +770,18 @@ test("FedifySpanExporter", async (t) => {
|
|
|
816
770
|
assertEquals(activities[0].actorId, "https://myserver.com/users/charlie");
|
|
817
771
|
});
|
|
818
772
|
await t.step("extracts signature verification details for inbound activity", async () => {
|
|
819
|
-
const
|
|
820
|
-
const exporter = new FedifySpanExporter(kv);
|
|
821
|
-
const activityJson = JSON.stringify({
|
|
822
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
823
|
-
type: "Create",
|
|
824
|
-
id: "https://example.com/activities/sig-test",
|
|
825
|
-
actor: "https://example.com/users/alice"
|
|
826
|
-
});
|
|
773
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
827
774
|
const span = createMockSpan({
|
|
828
775
|
traceId: "sig-details-trace",
|
|
829
776
|
spanId: "span1",
|
|
830
777
|
name: "activitypub.inbox",
|
|
831
778
|
events: [createActivityReceivedEvent({
|
|
832
|
-
activityJson
|
|
779
|
+
activityJson: JSON.stringify({
|
|
780
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
781
|
+
type: "Create",
|
|
782
|
+
id: "https://example.com/activities/sig-test",
|
|
783
|
+
actor: "https://example.com/users/alice"
|
|
784
|
+
}),
|
|
833
785
|
verified: true,
|
|
834
786
|
httpSigVerified: true,
|
|
835
787
|
httpSigKeyId: "https://example.com/users/alice#main-key",
|
|
@@ -848,20 +800,18 @@ test("FedifySpanExporter", async (t) => {
|
|
|
848
800
|
assertEquals(activities[0].signatureDetails?.ldSignaturesVerified, false);
|
|
849
801
|
});
|
|
850
802
|
await t.step("signature details with LD signatures verified", async () => {
|
|
851
|
-
const
|
|
852
|
-
const exporter = new FedifySpanExporter(kv);
|
|
853
|
-
const activityJson = JSON.stringify({
|
|
854
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
855
|
-
type: "Delete",
|
|
856
|
-
id: "https://example.com/activities/ld-sig-test",
|
|
857
|
-
actor: "https://example.com/users/alice"
|
|
858
|
-
});
|
|
803
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
859
804
|
const span = createMockSpan({
|
|
860
805
|
traceId: "ld-sig-trace",
|
|
861
806
|
spanId: "span1",
|
|
862
807
|
name: "activitypub.inbox",
|
|
863
808
|
events: [createActivityReceivedEvent({
|
|
864
|
-
activityJson
|
|
809
|
+
activityJson: JSON.stringify({
|
|
810
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
811
|
+
type: "Delete",
|
|
812
|
+
id: "https://example.com/activities/ld-sig-test",
|
|
813
|
+
actor: "https://example.com/users/alice"
|
|
814
|
+
}),
|
|
865
815
|
verified: true,
|
|
866
816
|
httpSigVerified: false,
|
|
867
817
|
ldSigVerified: true
|
|
@@ -876,20 +826,18 @@ test("FedifySpanExporter", async (t) => {
|
|
|
876
826
|
assertEquals(activities[0].signatureDetails?.ldSignaturesVerified, true);
|
|
877
827
|
});
|
|
878
828
|
await t.step("extracts HTTP signature failure details for inbound activity", async () => {
|
|
879
|
-
const
|
|
880
|
-
const exporter = new FedifySpanExporter(kv);
|
|
881
|
-
const activityJson = JSON.stringify({
|
|
882
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
883
|
-
type: "Delete",
|
|
884
|
-
id: "https://example.com/activities/unverified",
|
|
885
|
-
actor: "https://example.com/users/alice"
|
|
886
|
-
});
|
|
829
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
887
830
|
const span = createMockSpan({
|
|
888
831
|
traceId: "sig-failure-trace",
|
|
889
832
|
spanId: "span1",
|
|
890
833
|
name: "activitypub.inbox",
|
|
891
834
|
events: [createActivityReceivedEvent({
|
|
892
|
-
activityJson
|
|
835
|
+
activityJson: JSON.stringify({
|
|
836
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
837
|
+
type: "Delete",
|
|
838
|
+
id: "https://example.com/activities/unverified",
|
|
839
|
+
actor: "https://example.com/users/alice"
|
|
840
|
+
}),
|
|
893
841
|
verified: false,
|
|
894
842
|
httpSigVerified: false,
|
|
895
843
|
httpSigKeyId: "https://example.com/users/alice#main-key",
|
|
@@ -908,19 +856,17 @@ test("FedifySpanExporter", async (t) => {
|
|
|
908
856
|
assertEquals(activities[0].signatureDetails?.httpSignaturesKeyFetchError, void 0);
|
|
909
857
|
});
|
|
910
858
|
await t.step("handles activity without actor field", async () => {
|
|
911
|
-
const
|
|
912
|
-
const exporter = new FedifySpanExporter(kv);
|
|
913
|
-
const activityJson = JSON.stringify({
|
|
914
|
-
"@context": "https://www.w3.org/ns/activitystreams",
|
|
915
|
-
type: "Delete",
|
|
916
|
-
id: "https://example.com/activities/no-actor",
|
|
917
|
-
object: "https://example.com/posts/123"
|
|
918
|
-
});
|
|
859
|
+
const exporter = new FedifySpanExporter(new MemoryKvStore());
|
|
919
860
|
const span = createMockSpan({
|
|
920
861
|
traceId: "no-actor-trace",
|
|
921
862
|
spanId: "span1",
|
|
922
863
|
name: "activitypub.inbox",
|
|
923
|
-
events: [createActivityReceivedEvent({ activityJson
|
|
864
|
+
events: [createActivityReceivedEvent({ activityJson: JSON.stringify({
|
|
865
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
866
|
+
type: "Delete",
|
|
867
|
+
id: "https://example.com/activities/no-actor",
|
|
868
|
+
object: "https://example.com/posts/123"
|
|
869
|
+
}) })]
|
|
924
870
|
});
|
|
925
871
|
await new Promise((resolve) => {
|
|
926
872
|
exporter.export([span], () => resolve());
|
|
@@ -930,5 +876,5 @@ test("FedifySpanExporter", async (t) => {
|
|
|
930
876
|
assertEquals(activities[0].actorId, void 0);
|
|
931
877
|
});
|
|
932
878
|
});
|
|
933
|
-
|
|
934
|
-
|
|
879
|
+
//#endregion
|
|
880
|
+
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) {
|
|
@@ -196,12 +193,11 @@ var FedifySpanExporter = class {
|
|
|
196
193
|
}
|
|
197
194
|
async #setWithCasRetry(key, transform, options) {
|
|
198
195
|
if (this.#kv.cas != null) for (let attempt = 0; attempt < 3; attempt++) {
|
|
199
|
-
const existing
|
|
200
|
-
const newValue
|
|
201
|
-
if (await this.#kv.cas(key, existing
|
|
196
|
+
const existing = await this.#kv.get(key);
|
|
197
|
+
const newValue = transform(existing);
|
|
198
|
+
if (await this.#kv.cas(key, existing, newValue, options)) return;
|
|
202
199
|
}
|
|
203
|
-
const
|
|
204
|
-
const newValue = transform(existing);
|
|
200
|
+
const newValue = transform(await this.#kv.get(key));
|
|
205
201
|
await this.#kv.set(key, newValue, options);
|
|
206
202
|
}
|
|
207
203
|
async #updateTraceSummary(record, options) {
|
|
@@ -257,6 +253,5 @@ var FedifySpanExporter = class {
|
|
|
257
253
|
*/
|
|
258
254
|
async shutdown() {}
|
|
259
255
|
};
|
|
260
|
-
|
|
261
256
|
//#endregion
|
|
262
|
-
exports.FedifySpanExporter = FedifySpanExporter;
|
|
257
|
+
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
|
|
|
@@ -239,4 +239,4 @@ declare class FedifySpanExporter implements SpanExporter {
|
|
|
239
239
|
shutdown(): Promise<void>;
|
|
240
240
|
}
|
|
241
241
|
//#endregion
|
|
242
|
-
export { ActivityDirection, FedifySpanExporter, FedifySpanExporterOptions, GetRecentTracesOptions, SignatureVerificationDetails, TraceActivityRecord, TraceSummary };
|
|
242
|
+
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
|
|
|
@@ -241,4 +241,4 @@ declare class FedifySpanExporter implements SpanExporter {
|
|
|
241
241
|
shutdown(): Promise<void>;
|
|
242
242
|
}
|
|
243
243
|
//#endregion
|
|
244
|
-
export { ActivityDirection, FedifySpanExporter, FedifySpanExporterOptions, GetRecentTracesOptions, SignatureVerificationDetails, TraceActivityRecord, TraceSummary };
|
|
244
|
+
export { type ActivityDirection, FedifySpanExporter, type FedifySpanExporterOptions, type GetRecentTracesOptions, type SignatureVerificationDetails, type TraceActivityRecord, type TraceSummary };
|