@fedify/fedify 1.9.2-dev.1890 → 1.10.0-dev.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.
Files changed (104) hide show
  1. package/README.md +3 -0
  2. package/dist/{actor-C2kxp5Fl.cjs → actor-8zynMl2a.cjs} +187 -187
  3. package/dist/{actor-DyfGDQJB.js → actor-Bv7llTFW.js} +1 -1
  4. package/dist/{actor-LJkP7iVc.js → actor-eIATKOh7.js} +187 -187
  5. package/dist/{authdocloader-DaFhFZWS.cjs → authdocloader-BEPeTSD8.cjs} +3 -3
  6. package/dist/{authdocloader-Djn6Z8TB.js → authdocloader-BNIyrORx.js} +3 -3
  7. package/dist/{authdocloader-8jtTmnjn.js → authdocloader-TNeksncq.js} +3 -3
  8. package/dist/{builder-DG1srBKu.js → builder-C7fApQY_.js} +4 -4
  9. package/dist/{client-Dq-zkC8Y.js → client-Bwnrdh_A.js} +1 -1
  10. package/dist/compat/transformers.test.js +16 -16
  11. package/dist/{docloader-B_A2nB2W.js → docloader-CLYexeNv.js} +38 -9
  12. package/dist/{docloader-Uh0ciwr4.cjs → docloader-CdsuyjrU.cjs} +38 -9
  13. package/dist/{esm-D-py171v.js → esm-aj4vkb76.js} +1 -1
  14. package/dist/federation/builder.test.js +5 -5
  15. package/dist/federation/collection.test.js +3 -3
  16. package/dist/federation/handler.test.js +104 -17
  17. package/dist/federation/idempotency.test.js +17 -17
  18. package/dist/federation/inbox.test.js +4 -4
  19. package/dist/federation/keycache.test.js +4 -4
  20. package/dist/federation/kv.test.js +3 -3
  21. package/dist/federation/middleware.test.js +18 -18
  22. package/dist/federation/mod.cjs +10 -10
  23. package/dist/federation/mod.js +10 -10
  24. package/dist/federation/mq.test.js +5 -5
  25. package/dist/federation/retry.test.js +3 -3
  26. package/dist/federation/router.test.js +3 -3
  27. package/dist/federation/send.test.js +53 -10
  28. package/dist/{http-DNoRdF3N.cjs → http-CK80ff9S.cjs} +3 -3
  29. package/dist/{http-CJ7SfCok.js → http-DMJrVRf0.js} +3 -3
  30. package/dist/{http-jrUnvC1R.js → http-DXmKLE1t.js} +2 -2
  31. package/dist/{inbox-C3N4s1QJ.js → inbox-Dt-Q2rJt.js} +1 -1
  32. package/dist/{key-D-Vs5Xls.js → key-BL8DRhuI.js} +3 -3
  33. package/dist/{key-CkxzRYsV.cjs → key-BU1Vsq8S.cjs} +2 -2
  34. package/dist/{key-CtByaj7Q.js → key-DTzAk78O.js} +4 -4
  35. package/dist/{key-CAH7GCWj.js → key-DWDJFZzD.js} +2 -2
  36. package/dist/{key-Ci7FKLpn.js → key-Tt9B2Qkj.js} +2 -2
  37. package/dist/key-gZEWdYwT.cjs +10 -0
  38. package/dist/{keycache-CEs327f0.js → keycache-CXF4YAON.js} +1 -1
  39. package/dist/{keys-BgYAMY7I.js → keys-CAUbEZtV.js} +1 -1
  40. package/dist/{ld-CF-_Iv3N.js → ld-CqoYKNwB.js} +2 -2
  41. package/dist/{lookup-DqmSkJVj.js → lookup-8Ik9lSMm.js} +1 -1
  42. package/dist/{lookup-BqEeMRXW.cjs → lookup-BXlOCJsH.cjs} +1 -1
  43. package/dist/{lookup-BA3bNgf4.js → lookup-Co4Y1ycg.js} +6 -1
  44. package/dist/middleware-09gZVY21.cjs +17 -0
  45. package/dist/middleware-B8Q9c1ys.js +26 -0
  46. package/dist/middleware-DHUCp8iq.js +17 -0
  47. package/dist/{middleware-DFDGXfT5.js → middleware-DnXc8LK4.js} +24 -12
  48. package/dist/{middleware-BhU7xqzl.cjs → middleware-bN29Orv5.cjs} +24 -12
  49. package/dist/{middleware-8Utrfm2B.js → middleware-nSw7nWf8.js} +20 -13
  50. package/dist/mod.cjs +10 -10
  51. package/dist/mod.js +10 -10
  52. package/dist/nodeinfo/client.test.js +5 -5
  53. package/dist/nodeinfo/handler.test.js +16 -16
  54. package/dist/nodeinfo/mod.cjs +2 -2
  55. package/dist/nodeinfo/mod.js +2 -2
  56. package/dist/nodeinfo/semver.test.js +3 -3
  57. package/dist/nodeinfo/types.test.js +3 -3
  58. package/dist/otel-Chy5T2Xh.js +64 -0
  59. package/dist/{owner-D2N6v5Gm.js → owner-9jSx_21P.js} +44 -8
  60. package/dist/{proof-GwNAN3ln.js → proof-B5YI7sn5.js} +2 -2
  61. package/dist/{proof-XCcYDcHk.js → proof-BT3OPhWQ.js} +45 -9
  62. package/dist/{proof-CbitzfgJ.cjs → proof-BuLnngRI.cjs} +44 -8
  63. package/dist/runtime/authdocloader.test.js +9 -9
  64. package/dist/runtime/docloader.test.js +70 -4
  65. package/dist/runtime/key.test.js +5 -5
  66. package/dist/runtime/langstr.test.js +3 -3
  67. package/dist/runtime/link.test.js +3 -3
  68. package/dist/runtime/mod.cjs +6 -6
  69. package/dist/runtime/mod.js +6 -6
  70. package/dist/runtime/multibase/multibase.test.js +3 -3
  71. package/dist/runtime/url.test.js +3 -3
  72. package/dist/{send-D_f3mgyD.js → send-DlPE7bKe.js} +9 -4
  73. package/dist/sig/http.test.js +8 -8
  74. package/dist/sig/key.test.js +6 -6
  75. package/dist/sig/ld.test.js +7 -7
  76. package/dist/sig/mod.cjs +6 -6
  77. package/dist/sig/mod.js +6 -6
  78. package/dist/sig/owner.test.js +31 -7
  79. package/dist/sig/proof.test.js +7 -7
  80. package/dist/testing/docloader.test.js +3 -3
  81. package/dist/testing/mod.js +3 -3
  82. package/dist/{testing-hVeFvsZ9.js → testing-B17zODFD.js} +2 -2
  83. package/dist/{type-CfrcT6D9.js → type-E_91dusN.js} +222 -194
  84. package/dist/{types-apcavnI7.js → types-By5LByL1.js} +1 -1
  85. package/dist/{types-DvsdrWOg.cjs → types-Ci8XKEfO.cjs} +1 -1
  86. package/dist/vocab/actor.test.js +5 -5
  87. package/dist/vocab/lookup.test.js +27 -5
  88. package/dist/vocab/mod.cjs +4 -4
  89. package/dist/vocab/mod.js +4 -4
  90. package/dist/vocab/type.test.js +3 -3
  91. package/dist/vocab/vocab.test.js +4 -4
  92. package/dist/{vocab-0FCIW9qL.cjs → vocab-BjnZ49Xt.cjs} +8 -3
  93. package/dist/{vocab-DGzlpjfi.js → vocab-CthegyUc.js} +8 -3
  94. package/dist/webfinger/handler.test.js +16 -16
  95. package/dist/webfinger/lookup.test.js +4 -4
  96. package/dist/webfinger/mod.cjs +2 -2
  97. package/dist/webfinger/mod.js +2 -2
  98. package/dist/x/cfworkers.test.js +3 -3
  99. package/package.json +5 -3
  100. package/dist/key-CEK-2eTr.cjs +0 -10
  101. package/dist/middleware-BQ3VcPQj.js +0 -17
  102. package/dist/middleware-BxBgtIG4.js +0 -26
  103. package/dist/middleware-UJYNu-kk.cjs +0 -17
  104. /package/dist/{denokv-Bv33Xxea.js → denokv-D0nfNQ1x.js} +0 -0
@@ -3,37 +3,37 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, Announce, Create, FetchError, Invite, Multikey, Note, Object as Object$1, Offer, Person, fetchDocumentLoader, getTypeId } from "../type-CfrcT6D9.js";
6
+ import { Activity, Announce, Create, FetchError, Invite, Multikey, Note, Object as Object$1, Offer, Person, fetchDocumentLoader, getTypeId } from "../type-E_91dusN.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-8Utrfm2B.js";
11
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-nSw7nWf8.js";
12
12
  import "../semver-dArNLkR9.js";
13
- import "../client-Dq-zkC8Y.js";
14
- import { RouterError, lookupObject } from "../lookup-BA3bNgf4.js";
13
+ import "../client-Bwnrdh_A.js";
14
+ import { RouterError, lookupObject } from "../lookup-Co4Y1ycg.js";
15
15
  import "../types-BIgY6c-l.js";
16
- import "../actor-DyfGDQJB.js";
17
- import "../key-Ci7FKLpn.js";
18
- import { signRequest, verifyRequest } from "../http-jrUnvC1R.js";
19
- import { getAuthenticatedDocumentLoader } from "../authdocloader-8jtTmnjn.js";
20
- import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-CF-_Iv3N.js";
21
- import { doesActorOwnKey } from "../owner-D2N6v5Gm.js";
22
- import { signObject, verifyObject } from "../proof-GwNAN3ln.js";
23
- import "../inbox-C3N4s1QJ.js";
24
- import "../builder-DG1srBKu.js";
16
+ import "../actor-Bv7llTFW.js";
17
+ import "../key-Tt9B2Qkj.js";
18
+ import { signRequest, verifyRequest } from "../http-DXmKLE1t.js";
19
+ import { getAuthenticatedDocumentLoader } from "../authdocloader-TNeksncq.js";
20
+ import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-CqoYKNwB.js";
21
+ import { doesActorOwnKey } from "../owner-9jSx_21P.js";
22
+ import { signObject, verifyObject } from "../proof-B5YI7sn5.js";
23
+ import "../inbox-Dt-Q2rJt.js";
24
+ import "../builder-C7fApQY_.js";
25
25
  import "../collection-CSzG2j1P.js";
26
- import "../keycache-CEs327f0.js";
26
+ import "../keycache-CXF4YAON.js";
27
27
  import "../retry-D4GJ670a.js";
28
- import "../send-D_f3mgyD.js";
29
- import { mockDocumentLoader, test } from "../testing-hVeFvsZ9.js";
28
+ import "../send-DlPE7bKe.js";
29
+ import { mockDocumentLoader, test } from "../testing-B17zODFD.js";
30
30
  import { assertStrictEquals } from "../std__assert-X-_kMxKM.js";
31
31
  import { assertFalse, assertRejects } from "../assert_rejects-DiIiJbZn.js";
32
32
  import "../assert_is_error-BPGph1Jx.js";
33
33
  import { assertNotEquals } from "../assert_not_equals-f3m3epl3.js";
34
34
  import { assertThrows } from "../assert_throws-BOO88avQ.js";
35
- import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-BgYAMY7I.js";
36
- import { esm_default } from "../esm-D-py171v.js";
35
+ import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-CAUbEZtV.js";
36
+ import { esm_default } from "../esm-aj4vkb76.js";
37
37
 
38
38
  //#region src/testing/fixtures/example.com/person.json
39
39
  var __context$1 = ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1"];
@@ -3,17 +3,17 @@
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
5
  require('../transformers-CoBS-oFG.cjs');
6
- require('../docloader-Uh0ciwr4.cjs');
7
- require('../actor-C2kxp5Fl.cjs');
8
- const require_middleware = require('../middleware-BhU7xqzl.cjs');
9
- require('../lookup-BqEeMRXW.cjs');
10
- require('../key-CkxzRYsV.cjs');
11
- require('../http-DNoRdF3N.cjs');
12
- require('../proof-CbitzfgJ.cjs');
6
+ require('../docloader-CdsuyjrU.cjs');
7
+ require('../actor-8zynMl2a.cjs');
8
+ const require_middleware = require('../middleware-bN29Orv5.cjs');
9
+ require('../lookup-BXlOCJsH.cjs');
10
+ require('../key-BU1Vsq8S.cjs');
11
+ require('../http-CK80ff9S.cjs');
12
+ require('../proof-BuLnngRI.cjs');
13
13
  const require_federation = require('../federation-H2_En3j5.cjs');
14
- require('../types-DvsdrWOg.cjs');
15
- require('../authdocloader-DaFhFZWS.cjs');
16
- require('../vocab-0FCIW9qL.cjs');
14
+ require('../types-Ci8XKEfO.cjs');
15
+ require('../authdocloader-BEPeTSD8.cjs');
16
+ require('../vocab-BjnZ49Xt.cjs');
17
17
 
18
18
  exports.InProcessMessageQueue = require_federation.InProcessMessageQueue;
19
19
  exports.MemoryKvStore = require_federation.MemoryKvStore;
@@ -3,16 +3,16 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
5
  import "../transformers-BFT6d7J5.js";
6
- import "../docloader-B_A2nB2W.js";
7
- import "../actor-LJkP7iVc.js";
8
- import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-DFDGXfT5.js";
9
- import "../lookup-DqmSkJVj.js";
10
- import "../key-CAH7GCWj.js";
11
- import "../http-CJ7SfCok.js";
12
- import "../proof-XCcYDcHk.js";
6
+ import "../docloader-CLYexeNv.js";
7
+ import "../actor-eIATKOh7.js";
8
+ import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-DnXc8LK4.js";
9
+ import "../lookup-8Ik9lSMm.js";
10
+ import "../key-DWDJFZzD.js";
11
+ import "../http-DMJrVRf0.js";
12
+ import "../proof-BT3OPhWQ.js";
13
13
  import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "../federation-D1U8YY9t.js";
14
- import "../types-apcavnI7.js";
15
- import "../authdocloader-Djn6Z8TB.js";
16
- import "../vocab-DGzlpjfi.js";
14
+ import "../types-By5LByL1.js";
15
+ import "../authdocloader-BNIyrORx.js";
16
+ import "../vocab-CthegyUc.js";
17
17
 
18
18
  export { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue, Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable };
@@ -3,12 +3,12 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-CfrcT6D9.js";
6
+ import "../type-E_91dusN.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
- import "../lookup-BA3bNgf4.js";
11
- import { test } from "../testing-hVeFvsZ9.js";
10
+ import "../lookup-Co4Y1ycg.js";
11
+ import { test } from "../testing-B17zODFD.js";
12
12
  import { assertGreater, assertGreaterOrEqual } from "../std__assert-X-_kMxKM.js";
13
13
  import { assertFalse } from "../assert_rejects-DiIiJbZn.js";
14
14
  import "../assert_is_error-BPGph1Jx.js";
@@ -227,7 +227,7 @@ test("InProcessMessageQueue", async (t) => {
227
227
  });
228
228
  test("MessageQueue.nativeRetrial", async (t) => {
229
229
  if ("Deno" in globalThis && "openKv" in globalThis.Deno && typeof globalThis.Deno.openKv === "function") await t.step("DenoKvMessageQueue", async () => {
230
- const { DenoKvMessageQueue } = await import("../denokv-Bv33Xxea.js");
230
+ const { DenoKvMessageQueue } = await import("../denokv-D0nfNQ1x.js");
231
231
  const mq = new DenoKvMessageQueue(await globalThis.Deno.openKv(":memory:"));
232
232
  assert(mq.nativeRetrial);
233
233
  if (Symbol.dispose in mq) {
@@ -266,7 +266,7 @@ test("MessageQueue.nativeRetrial", async (t) => {
266
266
  });
267
267
  const queues = { InProcessMessageQueue: () => Promise.resolve(new InProcessMessageQueue()) };
268
268
  if ("Deno" in globalThis && "openKv" in globalThis.Deno && typeof globalThis.Deno.openKv === "function") {
269
- const { DenoKvMessageQueue } = await import("../denokv-Bv33Xxea.js");
269
+ const { DenoKvMessageQueue } = await import("../denokv-D0nfNQ1x.js");
270
270
  queues.DenoKvMessageQueue = async () => new DenoKvMessageQueue(await globalThis.Deno.openKv(":memory:"));
271
271
  }
272
272
  for (const mqName in queues) test({
@@ -3,11 +3,11 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-CfrcT6D9.js";
6
+ import "../type-E_91dusN.js";
7
7
  import { AssertionError, assertEquals } from "../assert_equals-DSbWqCm3.js";
8
- import "../lookup-BA3bNgf4.js";
8
+ import "../lookup-Co4Y1ycg.js";
9
9
  import { createExponentialBackoffPolicy } from "../retry-D4GJ670a.js";
10
- import { test } from "../testing-hVeFvsZ9.js";
10
+ import { test } from "../testing-B17zODFD.js";
11
11
  import { assertNotEquals } from "../assert_not_equals-f3m3epl3.js";
12
12
 
13
13
  //#region src/federation/retry.test.ts
@@ -3,12 +3,12 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-CfrcT6D9.js";
6
+ import "../type-E_91dusN.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
- import { Router, RouterError } from "../lookup-BA3bNgf4.js";
11
- import { test } from "../testing-hVeFvsZ9.js";
10
+ import { Router, RouterError } from "../lookup-Co4Y1ycg.js";
11
+ import { test } from "../testing-B17zODFD.js";
12
12
  import "../std__assert-X-_kMxKM.js";
13
13
  import { assertFalse } from "../assert_rejects-DiIiJbZn.js";
14
14
  import "../assert_is_error-BPGph1Jx.js";
@@ -3,24 +3,25 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, Application, Endpoints, Group, Person, Service } from "../type-CfrcT6D9.js";
6
+ import { Activity, Application, Endpoints, Group, Person, Service } from "../type-E_91dusN.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
- import "../lookup-BA3bNgf4.js";
11
- import "../actor-DyfGDQJB.js";
12
- import "../key-Ci7FKLpn.js";
13
- import { verifyRequest } from "../http-jrUnvC1R.js";
14
- import { doesActorOwnKey } from "../owner-D2N6v5Gm.js";
15
- import { extractInboxes, sendActivity } from "../send-D_f3mgyD.js";
16
- import { mockDocumentLoader, test } from "../testing-hVeFvsZ9.js";
10
+ import "../lookup-Co4Y1ycg.js";
11
+ import "../actor-Bv7llTFW.js";
12
+ import "../key-Tt9B2Qkj.js";
13
+ import { verifyRequest } from "../http-DXmKLE1t.js";
14
+ import { doesActorOwnKey } from "../owner-9jSx_21P.js";
15
+ import { extractInboxes, sendActivity } from "../send-DlPE7bKe.js";
16
+ import { mockDocumentLoader, test } from "../testing-B17zODFD.js";
17
17
  import "../std__assert-X-_kMxKM.js";
18
18
  import { assertFalse, assertRejects } from "../assert_rejects-DiIiJbZn.js";
19
19
  import "../assert_is_error-BPGph1Jx.js";
20
20
  import { assertNotEquals } from "../assert_not_equals-f3m3epl3.js";
21
21
  import "../assert_throws-BOO88avQ.js";
22
- import { ed25519Multikey, ed25519PrivateKey, rsaPrivateKey2, rsaPublicKey2 } from "../keys-BgYAMY7I.js";
23
- import { esm_default } from "../esm-D-py171v.js";
22
+ import { ed25519Multikey, ed25519PrivateKey, rsaPrivateKey2, rsaPublicKey2 } from "../keys-CAUbEZtV.js";
23
+ import { createTestTracerProvider } from "../otel-Chy5T2Xh.js";
24
+ import { esm_default } from "../esm-aj4vkb76.js";
24
25
 
25
26
  //#region src/federation/send.test.ts
26
27
  test("extractInboxes()", () => {
@@ -214,5 +215,47 @@ test("sendActivity()", async (t) => {
214
215
  });
215
216
  esm_default.hardReset();
216
217
  });
218
+ test("sendActivity() records OpenTelemetry span events", async (t) => {
219
+ const [tracerProvider, exporter] = createTestTracerProvider();
220
+ esm_default.spyGlobal();
221
+ await t.step("successful send", async () => {
222
+ esm_default.get("https://example.com/", { status: 404 });
223
+ esm_default.post("https://example.com/inbox", { status: 202 });
224
+ const activity = {
225
+ "@context": "https://www.w3.org/ns/activitystreams",
226
+ type: "Create",
227
+ id: "https://example.com/activity",
228
+ actor: "https://example.com/person"
229
+ };
230
+ await sendActivity({
231
+ activity,
232
+ activityId: "https://example.com/activity",
233
+ activityType: "https://www.w3.org/ns/activitystreams#Create",
234
+ keys: [{
235
+ keyId: new URL("https://example.com/person#key"),
236
+ privateKey: rsaPrivateKey2
237
+ }],
238
+ inbox: new URL("https://example.com/inbox"),
239
+ tracerProvider
240
+ });
241
+ const spans = exporter.getSpans("activitypub.send_activity");
242
+ assertEquals(spans.length, 1);
243
+ const span = spans[0];
244
+ assertEquals(span.attributes["activitypub.activity.id"], "https://example.com/activity");
245
+ assertEquals(span.attributes["activitypub.activity.type"], "https://www.w3.org/ns/activitystreams#Create");
246
+ const events = exporter.getEvents("activitypub.send_activity", "activitypub.activity.sent");
247
+ assertEquals(events.length, 1);
248
+ const event = events[0];
249
+ assert(event.attributes != null);
250
+ assertEquals(event.attributes["activitypub.inbox.url"], "https://example.com/inbox");
251
+ assertEquals(event.attributes["activitypub.activity.id"], "https://example.com/activity");
252
+ assert(typeof event.attributes["activitypub.activity.json"] === "string");
253
+ const recordedActivity = JSON.parse(event.attributes["activitypub.activity.json"]);
254
+ assertEquals(recordedActivity.id, "https://example.com/activity");
255
+ assertEquals(recordedActivity.type, "Create");
256
+ exporter.clear();
257
+ esm_default.hardReset();
258
+ });
259
+ });
217
260
 
218
261
  //#endregion
@@ -3,9 +3,9 @@
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
5
  const require_chunk = require('./chunk-DqRYRqnO.cjs');
6
- const require_docloader = require('./docloader-Uh0ciwr4.cjs');
7
- const require_actor = require('./actor-C2kxp5Fl.cjs');
8
- const require_key = require('./key-CkxzRYsV.cjs');
6
+ const require_docloader = require('./docloader-CdsuyjrU.cjs');
7
+ const require_actor = require('./actor-8zynMl2a.cjs');
8
+ const require_key = require('./key-BU1Vsq8S.cjs');
9
9
  const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
10
10
  const __opentelemetry_api = require_chunk.__toESM(require("@opentelemetry/api"));
11
11
  const byte_encodings_base64 = require_chunk.__toESM(require("byte-encodings/base64"));
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { deno_default } from "./docloader-B_A2nB2W.js";
6
- import { CryptographicKey } from "./actor-LJkP7iVc.js";
7
- import { fetchKey, validateCryptoKey } from "./key-CAH7GCWj.js";
5
+ import { deno_default } from "./docloader-CLYexeNv.js";
6
+ import { CryptographicKey } from "./actor-eIATKOh7.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-DWDJFZzD.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
10
10
  import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, deno_default } from "./type-CfrcT6D9.js";
7
- import { fetchKey, validateCryptoKey } from "./key-Ci7FKLpn.js";
6
+ import { CryptographicKey, deno_default } from "./type-E_91dusN.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-Tt9B2Qkj.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
10
10
  import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } from "@opentelemetry/semantic-conventions";
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, deno_default, getTypeId } from "./type-CfrcT6D9.js";
6
+ import { Activity, deno_default, getTypeId } from "./type-E_91dusN.js";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
9
9
 
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "./type-CfrcT6D9.js";
7
- import "./actor-DyfGDQJB.js";
8
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-Ci7FKLpn.js";
6
+ import "./type-E_91dusN.js";
7
+ import "./actor-Bv7llTFW.js";
8
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-Tt9B2Qkj.js";
9
9
 
10
10
  export { validateCryptoKey };
@@ -3,8 +3,8 @@
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
5
  const require_chunk = require('./chunk-DqRYRqnO.cjs');
6
- const require_docloader = require('./docloader-Uh0ciwr4.cjs');
7
- const require_actor = require('./actor-C2kxp5Fl.cjs');
6
+ const require_docloader = require('./docloader-CdsuyjrU.cjs');
7
+ const require_actor = require('./actor-8zynMl2a.cjs');
8
8
  const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
9
9
  const __opentelemetry_api = require_chunk.__toESM(require("@opentelemetry/api"));
10
10
 
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import "./docloader-B_A2nB2W.js";
6
- import "./actor-LJkP7iVc.js";
7
- import "./lookup-DqmSkJVj.js";
8
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-CAH7GCWj.js";
5
+ import "./docloader-CLYexeNv.js";
6
+ import "./actor-eIATKOh7.js";
7
+ import "./lookup-8Ik9lSMm.js";
8
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-DWDJFZzD.js";
9
9
 
10
10
  export { validateCryptoKey };
@@ -2,8 +2,8 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { deno_default, getDocumentLoader } from "./docloader-B_A2nB2W.js";
6
- import { CryptographicKey, Object as Object$1, isActor } from "./actor-LJkP7iVc.js";
5
+ import { deno_default, getDocumentLoader } from "./docloader-CLYexeNv.js";
6
+ import { CryptographicKey, Object as Object$1, isActor } from "./actor-eIATKOh7.js";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
9
9
 
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Object as Object$1, deno_default, getDocumentLoader } from "./type-CfrcT6D9.js";
7
- import { isActor } from "./actor-DyfGDQJB.js";
6
+ import { CryptographicKey, Object as Object$1, deno_default, getDocumentLoader } from "./type-E_91dusN.js";
7
+ import { isActor } from "./actor-Bv7llTFW.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
10
10
 
@@ -0,0 +1,10 @@
1
+
2
+ const { Temporal } = require("@js-temporal/polyfill");
3
+ const { URLPattern } = require("urlpattern-polyfill");
4
+
5
+ require('./docloader-CdsuyjrU.cjs');
6
+ require('./actor-8zynMl2a.cjs');
7
+ require('./lookup-BXlOCJsH.cjs');
8
+ const require_key = require('./key-BU1Vsq8S.cjs');
9
+
10
+ exports.validateCryptoKey = require_key.validateCryptoKey;
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Multikey } from "./type-CfrcT6D9.js";
6
+ import { CryptographicKey, Multikey } from "./type-E_91dusN.js";
7
7
 
8
8
  //#region src/federation/keycache.ts
9
9
  var KvKeyCache = class {
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Multikey, importSpki } from "./type-CfrcT6D9.js";
6
+ import { CryptographicKey, Multikey, importSpki } from "./type-E_91dusN.js";
7
7
 
8
8
  //#region src/testing/keys.ts
9
9
  const rsaPublicKey1 = new CryptographicKey({
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, CryptographicKey, Object as Object$1, deno_default, getDocumentLoader, getTypeId } from "./type-CfrcT6D9.js";
7
- import { fetchKey, validateCryptoKey } from "./key-Ci7FKLpn.js";
6
+ import { Activity, CryptographicKey, Object as Object$1, deno_default, getDocumentLoader, getTypeId } from "./type-E_91dusN.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-Tt9B2Qkj.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
10
10
  import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
@@ -2,7 +2,7 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { UrlError, deno_default, getUserAgent, validatePublicUrl } from "./docloader-B_A2nB2W.js";
5
+ import { UrlError, deno_default, getUserAgent, validatePublicUrl } from "./docloader-CLYexeNv.js";
6
6
  import { getLogger } from "@logtape/logtape";
7
7
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
8
8
 
@@ -3,7 +3,7 @@
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
5
  const require_chunk = require('./chunk-DqRYRqnO.cjs');
6
- const require_docloader = require('./docloader-Uh0ciwr4.cjs');
6
+ const require_docloader = require('./docloader-CdsuyjrU.cjs');
7
7
  const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
8
8
  const __opentelemetry_api = require_chunk.__toESM(require("@opentelemetry/api"));
9
9
 
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Object as Object$1, deno_default, getDocumentLoader, getTypeId, lookupWebFinger } from "./type-CfrcT6D9.js";
6
+ import { Object as Object$1, deno_default, getDocumentLoader, getTypeId, lookupWebFinger } from "./type-E_91dusN.js";
7
7
  import { cloneDeep, delay } from "es-toolkit";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
@@ -224,9 +224,14 @@ async function lookupObject(identifier, options = {}) {
224
224
  if (result.id != null) span.setAttribute("activitypub.object.id", result.id.href);
225
225
  span.setAttribute("activitypub.object.type", getTypeId(result).href);
226
226
  if (result.replyTargetIds.length > 0) span.setAttribute("activitypub.object.in_reply_to", result.replyTargetIds.map((id) => id.href));
227
+ span.addEvent("activitypub.object.fetched", {
228
+ "activitypub.object.type": getTypeId(result).href,
229
+ "activitypub.object.json": JSON.stringify(await result.toJsonLd(options))
230
+ });
227
231
  }
228
232
  return result;
229
233
  } catch (error) {
234
+ span.recordException(error);
230
235
  span.setStatus({
231
236
  code: SpanStatusCode.ERROR,
232
237
  message: String(error)
@@ -0,0 +1,17 @@
1
+
2
+ const { Temporal } = require("@js-temporal/polyfill");
3
+ const { URLPattern } = require("urlpattern-polyfill");
4
+
5
+ require('./transformers-CoBS-oFG.cjs');
6
+ require('./docloader-CdsuyjrU.cjs');
7
+ require('./actor-8zynMl2a.cjs');
8
+ const require_middleware = require('./middleware-bN29Orv5.cjs');
9
+ require('./lookup-BXlOCJsH.cjs');
10
+ require('./key-BU1Vsq8S.cjs');
11
+ require('./http-CK80ff9S.cjs');
12
+ require('./proof-BuLnngRI.cjs');
13
+ require('./types-Ci8XKEfO.cjs');
14
+ require('./authdocloader-BEPeTSD8.cjs');
15
+ require('./vocab-BjnZ49Xt.cjs');
16
+
17
+ exports.FederationImpl = require_middleware.FederationImpl;
@@ -0,0 +1,26 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+ globalThis.addEventListener = () => {};
5
+
6
+ import "./type-E_91dusN.js";
7
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-nSw7nWf8.js";
8
+ import "./semver-dArNLkR9.js";
9
+ import "./client-Bwnrdh_A.js";
10
+ import "./lookup-Co4Y1ycg.js";
11
+ import "./types-BIgY6c-l.js";
12
+ import "./actor-Bv7llTFW.js";
13
+ import "./key-Tt9B2Qkj.js";
14
+ import "./http-DXmKLE1t.js";
15
+ import "./authdocloader-TNeksncq.js";
16
+ import "./ld-CqoYKNwB.js";
17
+ import "./owner-9jSx_21P.js";
18
+ import "./proof-B5YI7sn5.js";
19
+ import "./inbox-Dt-Q2rJt.js";
20
+ import "./builder-C7fApQY_.js";
21
+ import "./collection-CSzG2j1P.js";
22
+ import "./keycache-CXF4YAON.js";
23
+ import "./retry-D4GJ670a.js";
24
+ import "./send-DlPE7bKe.js";
25
+
26
+ export { FederationImpl };
@@ -0,0 +1,17 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+
5
+ import "./transformers-BFT6d7J5.js";
6
+ import "./docloader-CLYexeNv.js";
7
+ import "./actor-eIATKOh7.js";
8
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-DnXc8LK4.js";
9
+ import "./lookup-8Ik9lSMm.js";
10
+ import "./key-DWDJFZzD.js";
11
+ import "./http-DMJrVRf0.js";
12
+ import "./proof-BT3OPhWQ.js";
13
+ import "./types-By5LByL1.js";
14
+ import "./authdocloader-BNIyrORx.js";
15
+ import "./vocab-CthegyUc.js";
16
+
17
+ export { FederationImpl };
@@ -3,15 +3,15 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
5
  import { getDefaultActivityTransformers } from "./transformers-BFT6d7J5.js";
6
- import { deno_default, getDocumentLoader, kvCache } from "./docloader-B_A2nB2W.js";
7
- import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-LJkP7iVc.js";
8
- import { lookupWebFinger } from "./lookup-DqmSkJVj.js";
9
- import { exportJwk, importJwk, validateCryptoKey } from "./key-CAH7GCWj.js";
10
- import { doubleKnock, verifyRequest } from "./http-CJ7SfCok.js";
11
- import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-XCcYDcHk.js";
12
- import { getNodeInfo, nodeInfoToJson } from "./types-apcavnI7.js";
13
- import { getAuthenticatedDocumentLoader } from "./authdocloader-Djn6Z8TB.js";
14
- import { lookupObject, traverseCollection } from "./vocab-DGzlpjfi.js";
6
+ import { deno_default, getDocumentLoader, kvCache } from "./docloader-CLYexeNv.js";
7
+ import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-eIATKOh7.js";
8
+ import { lookupWebFinger } from "./lookup-8Ik9lSMm.js";
9
+ import { exportJwk, importJwk, validateCryptoKey } from "./key-DWDJFZzD.js";
10
+ import { doubleKnock, verifyRequest } from "./http-DMJrVRf0.js";
11
+ import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-BT3OPhWQ.js";
12
+ import { getNodeInfo, nodeInfoToJson } from "./types-By5LByL1.js";
13
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-BNIyrORx.js";
14
+ import { lookupObject, traverseCollection } from "./vocab-CthegyUc.js";
15
15
  import { getLogger, withContext } from "@logtape/logtape";
16
16
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
17
17
  import { encodeHex } from "byte-encodings/hex";
@@ -344,7 +344,7 @@ var FederationBuilderImpl = class {
344
344
  this.collectionTypeIds = {};
345
345
  }
346
346
  async build(options) {
347
- const { FederationImpl: FederationImpl$1 } = await import("./middleware-BQ3VcPQj.js");
347
+ const { FederationImpl: FederationImpl$1 } = await import("./middleware-DHUCp8iq.js");
348
348
  const f = new FederationImpl$1(options);
349
349
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
350
350
  f.router = this.router.clone();
@@ -1499,6 +1499,13 @@ async function handleInboxInternal(request, parameters, span) {
1499
1499
  }
1500
1500
  if (activity.id != null) span.setAttribute("activitypub.activity.id", activity.id.href);
1501
1501
  span.setAttribute("activitypub.activity.type", getTypeId(activity).href);
1502
+ span.addEvent("activitypub.activity.received", {
1503
+ "activitypub.activity.json": JSON.stringify(json),
1504
+ "activitypub.activity.verified": activity != null,
1505
+ "ld_signatures.verified": ldSigVerified,
1506
+ "http_signatures.verified": httpSigKey != null,
1507
+ "http_signatures.key_id": httpSigKey?.id?.href ?? ""
1508
+ });
1502
1509
  if (httpSigKey != null && !await doesActorOwnKey(activity, httpSigKey, ctx)) {
1503
1510
  logger$1.error("The signer ({keyId}) and the actor ({actorId}) do not match.", {
1504
1511
  activity: json,
@@ -2272,7 +2279,7 @@ function sendActivity(options) {
2272
2279
  await sendActivityInternal({
2273
2280
  ...options,
2274
2281
  tracerProvider
2275
- });
2282
+ }, span);
2276
2283
  } catch (e) {
2277
2284
  span.setStatus({
2278
2285
  code: SpanStatusCode.ERROR,
@@ -2284,7 +2291,7 @@ function sendActivity(options) {
2284
2291
  }
2285
2292
  });
2286
2293
  }
2287
- async function sendActivityInternal({ activity, activityId, keys, inbox, headers, specDeterminer, tracerProvider }) {
2294
+ async function sendActivityInternal({ activity, activityId, keys, inbox, headers, specDeterminer, tracerProvider }, span) {
2288
2295
  const logger$1 = getLogger([
2289
2296
  "fedify",
2290
2297
  "federation",
@@ -2339,6 +2346,11 @@ async function sendActivityInternal({ activity, activityId, keys, inbox, headers
2339
2346
  });
2340
2347
  throw new Error(`Failed to send activity ${activityId} to ${inbox.href} (${response.status} ${response.statusText}):\n${error}`);
2341
2348
  }
2349
+ span.addEvent("activitypub.activity.sent", {
2350
+ "activitypub.activity.json": JSON.stringify(activity),
2351
+ "activitypub.inbox.url": inbox.href,
2352
+ "activitypub.activity.id": activityId ?? ""
2353
+ });
2342
2354
  }
2343
2355
 
2344
2356
  //#endregion