@fedify/fedify 2.0.0-pr.435.1667 → 2.0.0-pr.445.1694

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 (147) hide show
  1. package/dist/{actor-C3gJhZJj.cjs → actor-CwZ2m5rG.cjs} +7263 -2440
  2. package/dist/{actor-DMgu-ZjT.d.cts → actor-D6K058Tb.d.cts} +1 -1
  3. package/dist/{actor-Cpal85xW.js → actor-D8gCwLzv.js} +1 -1
  4. package/dist/{actor-CnVfp1Hp.js → actor-DoMcqXsW.js} +7263 -2440
  5. package/dist/{actor-C22bXuuC.d.ts → actor-T6RyhRgk.d.ts} +1 -1
  6. package/dist/{assert_rejects-7UF4R_Qs.js → assert_rejects-DiIiJbZn.js} +1 -1
  7. package/dist/{assert_throws-53_pKeP3.js → assert_throws-BOO88avQ.js} +1 -1
  8. package/dist/{authdocloader-DWnwkjvZ.js → authdocloader-Cv_qEn1G.js} +3 -3
  9. package/dist/{authdocloader-Df2BFefL.js → authdocloader-DYTNpaMA.js} +3 -3
  10. package/dist/{authdocloader-DPCGwidE.cjs → authdocloader-bsmVF6eO.cjs} +3 -3
  11. package/dist/{builder-CMxichO9.js → builder-1_skw-d2.js} +10 -4
  12. package/dist/{client-BqyuOGiQ.js → client-D5CBsPrc.js} +1 -1
  13. package/dist/compat/mod.d.cts +7 -7
  14. package/dist/compat/mod.d.ts +7 -7
  15. package/dist/compat/transformers.test.js +18 -17
  16. package/dist/{context-CDSZdQHD.d.ts → context-DBKpNBnc.d.ts} +66 -12
  17. package/dist/{context-Dq8aCtMH.d.cts → context-DiqjMRef.d.cts} +66 -12
  18. package/dist/{docloader-B1O1Z5OK.cjs → docloader-CYnQRIXv.cjs} +2 -2
  19. package/dist/{docloader-xJVzq9O0.js → docloader-Czl3xV10.js} +2 -2
  20. package/dist/{esm-BBznxjVc.js → esm-Dl5T1RNE.js} +1 -1
  21. package/dist/federation/builder.test.js +10 -10
  22. package/dist/federation/collection.test.js +8 -8
  23. package/dist/federation/handler.test.js +26 -145
  24. package/dist/federation/idempotency.test.d.ts +3 -0
  25. package/dist/federation/idempotency.test.js +202 -0
  26. package/dist/federation/inbox.test.js +6 -6
  27. package/dist/federation/keycache.test.js +4 -4
  28. package/dist/federation/kv.test.js +8 -8
  29. package/dist/federation/middleware.test.js +238 -44
  30. package/dist/federation/mod.cjs +10 -10
  31. package/dist/federation/mod.d.cts +7 -7
  32. package/dist/federation/mod.d.ts +7 -7
  33. package/dist/federation/mod.js +10 -10
  34. package/dist/federation/mq.test.js +10 -10
  35. package/dist/federation/negotiation.test.d.ts +3 -0
  36. package/dist/federation/negotiation.test.js +28 -0
  37. package/dist/federation/retry.test.js +5 -5
  38. package/dist/federation/router.test.js +8 -8
  39. package/dist/federation/send.test.js +15 -15
  40. package/dist/fixtures/media.example.com/avatars/test-avatar.jpg.json +6 -0
  41. package/dist/{http-Hw9HJp9i.cjs → http-CAusBl_3.cjs} +3 -3
  42. package/dist/{http-CovAm6we.js → http-C_Qc2neP.js} +3 -3
  43. package/dist/{http-y7khnX5Q.js → http-CuS-d4U0.js} +2 -2
  44. package/dist/{http-BS6766zs.d.cts → http-D-e6AFwR.d.cts} +1 -1
  45. package/dist/{http-DqSNLFNY.d.ts → http-D6Uj2x2y.d.ts} +1 -1
  46. package/dist/{inbox-DpcYOzs8.js → inbox-IETv_Qez.js} +24 -7
  47. package/dist/{key-BRmlopJL.js → key-BNJQQm3h.js} +2 -2
  48. package/dist/{key-lapZwBwG.js → key-C_ruQbbl.js} +4 -4
  49. package/dist/key-DIMJMxf4.cjs +10 -0
  50. package/dist/{key-DORX19Bl.js → key-DnqhSgAv.js} +2 -2
  51. package/dist/{key-jf6dIIF-.js → key-DpFjiItf.js} +3 -3
  52. package/dist/{key-CzF9SAEI.cjs → key-DuXv64tg.cjs} +2 -2
  53. package/dist/{keycache-AH1uj1j-.js → keycache-CSBkusP8.js} +1 -1
  54. package/dist/{keys-B3fzLXBG.js → keys-D3_MDK7n.js} +1 -1
  55. package/dist/{ld-D3cq9xO1.js → ld-Isot0tiW.js} +2 -2
  56. package/dist/{lookup-BrhURkmj.js → lookup-CbtuFbtg.js} +21 -12
  57. package/dist/{lookup-7u217Q3H.cjs → lookup-D6dro5Au.cjs} +1 -1
  58. package/dist/{lookup-CfU0DgLr.js → lookup-Dhm78GlK.js} +1 -1
  59. package/dist/middleware-BpR6186a.js +26 -0
  60. package/dist/{middleware-DXWUGrBQ.js → middleware-BuHr2fzh.js} +73 -81
  61. package/dist/middleware-DDMxdtWM.cjs +17 -0
  62. package/dist/{middleware-BDN7YoYJ.js → middleware-DQYscW90.js} +47 -142
  63. package/dist/{middleware-Gsxukxs5.cjs → middleware-Dgmdgrvb.cjs} +73 -81
  64. package/dist/middleware-T-knSMwl.js +17 -0
  65. package/dist/{mod-Drmz72EK.d.ts → mod-BhUKmBJD.d.ts} +2 -2
  66. package/dist/{mod-BhMnAkFX.d.cts → mod-Bpb5QLaZ.d.cts} +2 -2
  67. package/dist/{mod-TFoH2Ql8.d.ts → mod-CerN_Sza.d.ts} +1 -1
  68. package/dist/{mod-Dc_-mf8s.d.cts → mod-Cj1tHXBR.d.cts} +1 -1
  69. package/dist/{mod-evzlRVZq.d.cts → mod-CxkWO3Mg.d.cts} +19 -1
  70. package/dist/{mod-RI3-KvUI.d.ts → mod-D_y2y32N.d.ts} +2 -2
  71. package/dist/{mod-BClfg3ej.d.cts → mod-Djzcw2ry.d.cts} +2 -2
  72. package/dist/{mod-Cxt4Kpf6.d.ts → mod-DlU8ISoa.d.ts} +19 -1
  73. package/dist/mod.cjs +10 -10
  74. package/dist/mod.d.cts +10 -10
  75. package/dist/mod.d.ts +10 -10
  76. package/dist/mod.js +10 -10
  77. package/dist/negotiation-5NPJL6zp.js +71 -0
  78. package/dist/nodeinfo/client.test.js +10 -10
  79. package/dist/nodeinfo/handler.test.js +23 -22
  80. package/dist/nodeinfo/mod.cjs +2 -2
  81. package/dist/nodeinfo/mod.js +2 -2
  82. package/dist/nodeinfo/types.test.js +8 -8
  83. package/dist/{owner-B-7Ptt_m.d.cts → owner-BN_tO3cY.d.cts} +2 -2
  84. package/dist/{owner-NFlQJyvM.js → owner-ChSL4aJ7.js} +2 -2
  85. package/dist/{owner-CQPnQVtf.d.ts → owner-hd9lvQcP.d.ts} +2 -2
  86. package/dist/{proof-Be1oOYEh.js → proof-BiSCuwyA.js} +3 -3
  87. package/dist/{proof-Gip91fK7.cjs → proof-ONNmhInb.cjs} +3 -3
  88. package/dist/{proof-ar9xgPWi.js → proof-x3IBewan.js} +2 -2
  89. package/dist/runtime/authdocloader.test.js +14 -14
  90. package/dist/runtime/docloader.test.js +9 -9
  91. package/dist/runtime/key.test.js +10 -10
  92. package/dist/runtime/langstr.test.js +8 -8
  93. package/dist/runtime/link.test.js +3 -3
  94. package/dist/runtime/mod.cjs +6 -6
  95. package/dist/runtime/mod.d.cts +3 -3
  96. package/dist/runtime/mod.d.ts +3 -3
  97. package/dist/runtime/mod.js +6 -6
  98. package/dist/runtime/multibase/multibase.test.js +8 -8
  99. package/dist/runtime/url.test.js +5 -5
  100. package/dist/{send-DkwkMFjJ.js → send-D5fjmUEj.js} +2 -2
  101. package/dist/sig/http.test.js +13 -13
  102. package/dist/sig/key.test.js +11 -11
  103. package/dist/sig/ld.test.js +10 -10
  104. package/dist/sig/mod.cjs +6 -6
  105. package/dist/sig/mod.d.cts +5 -5
  106. package/dist/sig/mod.d.ts +5 -5
  107. package/dist/sig/mod.js +6 -6
  108. package/dist/sig/owner.test.js +12 -12
  109. package/dist/sig/proof.test.js +12 -12
  110. package/dist/testing/docloader.test.js +8 -8
  111. package/dist/testing/mod.d.ts +272 -0
  112. package/dist/testing/mod.js +3 -3
  113. package/dist/{testing-BMBhkcz9.js → testing-tWr1VQxx.js} +2 -2
  114. package/dist/{type-FCer_9yh.js → type-DaUr3Il7.js} +6944 -2121
  115. package/dist/{types-CZ_qo9KW.cjs → types-D2Nyz0tR.cjs} +1 -1
  116. package/dist/{types-CNWeAz8v.js → types-DQuSDtDg.js} +1 -1
  117. package/dist/vocab/actor.test.js +10 -10
  118. package/dist/vocab/lookup.test.js +259 -9
  119. package/dist/vocab/mod.cjs +4 -4
  120. package/dist/vocab/mod.d.cts +3 -3
  121. package/dist/vocab/mod.d.ts +3 -3
  122. package/dist/vocab/mod.js +4 -4
  123. package/dist/vocab/type.test.js +3 -3
  124. package/dist/vocab/vocab.test.js +402 -13
  125. package/dist/{vocab-SOE1ifCr.d.ts → vocab-BI0Ak5lL.d.ts} +290 -0
  126. package/dist/{vocab-9MjZjuZb.cjs → vocab-Dd4VMrr0.cjs} +23 -14
  127. package/dist/{vocab-DJTYMqyU.d.cts → vocab-Dw1-yVGg.d.cts} +290 -0
  128. package/dist/{vocab-gpwUU9fc.js → vocab-w--qk7HF.js} +23 -14
  129. package/dist/webfinger/handler.test.js +23 -22
  130. package/dist/webfinger/lookup.test.js +9 -9
  131. package/dist/webfinger/mod.cjs +2 -2
  132. package/dist/webfinger/mod.js +2 -2
  133. package/dist/x/cfworkers.test.js +8 -8
  134. package/dist/x/hono.d.cts +6 -6
  135. package/dist/x/hono.d.ts +6 -6
  136. package/dist/x/sveltekit.d.cts +6 -6
  137. package/dist/x/sveltekit.d.ts +6 -6
  138. package/package.json +1 -1
  139. package/dist/key-CV3FT32G.cjs +0 -10
  140. package/dist/middleware-CV-OPMlZ.js +0 -17
  141. package/dist/middleware-DGqnaAbp.cjs +0 -17
  142. package/dist/middleware-cCdfTTMv.js +0 -25
  143. /package/dist/{assert_is_error-B035L3om.js → assert_is_error-BPGph1Jx.js} +0 -0
  144. /package/dist/{assert_not_equals-C80BG-_5.js → assert_not_equals-f3m3epl3.js} +0 -0
  145. /package/dist/{denokv-jZ0Z2h0M.js → denokv-Bv33Xxea.js} +0 -0
  146. /package/dist/{retry-CfF8Gn4d.js → retry-D4GJ670a.js} +0 -0
  147. /package/dist/{std__assert-DWivtrGR.js → std__assert-X-_kMxKM.js} +0 -0
@@ -3,12 +3,12 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-FCer_9yh.js";
6
+ import "../type-DaUr3Il7.js";
7
7
  import { AssertionError, assertEquals } from "../assert_equals-DSbWqCm3.js";
8
- import "../lookup-BrhURkmj.js";
9
- import { createExponentialBackoffPolicy } from "../retry-CfF8Gn4d.js";
10
- import { test } from "../testing-BMBhkcz9.js";
11
- import { assertNotEquals } from "../assert_not_equals-C80BG-_5.js";
8
+ import "../lookup-CbtuFbtg.js";
9
+ import { createExponentialBackoffPolicy } from "../retry-D4GJ670a.js";
10
+ import { test } from "../testing-tWr1VQxx.js";
11
+ import { assertNotEquals } from "../assert_not_equals-f3m3epl3.js";
12
12
 
13
13
  //#region src/federation/retry.test.ts
14
14
  test("createExponentialBackoffPolicy()", () => {
@@ -3,17 +3,17 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-FCer_9yh.js";
6
+ import "../type-DaUr3Il7.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-BrhURkmj.js";
11
- import { test } from "../testing-BMBhkcz9.js";
12
- import "../std__assert-DWivtrGR.js";
13
- import { assertFalse } from "../assert_rejects-7UF4R_Qs.js";
14
- import "../assert_is_error-B035L3om.js";
15
- import "../assert_not_equals-C80BG-_5.js";
16
- import { assertThrows } from "../assert_throws-53_pKeP3.js";
10
+ import { Router, RouterError } from "../lookup-CbtuFbtg.js";
11
+ import { test } from "../testing-tWr1VQxx.js";
12
+ import "../std__assert-X-_kMxKM.js";
13
+ import { assertFalse } from "../assert_rejects-DiIiJbZn.js";
14
+ import "../assert_is_error-BPGph1Jx.js";
15
+ import "../assert_not_equals-f3m3epl3.js";
16
+ import { assertThrows } from "../assert_throws-BOO88avQ.js";
17
17
 
18
18
  //#region src/federation/router.test.ts
19
19
  function setUp(options = {}) {
@@ -3,24 +3,24 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, Application, Endpoints, Group, Person, Service } from "../type-FCer_9yh.js";
6
+ import { Activity, Application, Endpoints, Group, Person, Service } from "../type-DaUr3Il7.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-BrhURkmj.js";
11
- import "../actor-Cpal85xW.js";
12
- import "../key-DORX19Bl.js";
13
- import { verifyRequest } from "../http-y7khnX5Q.js";
14
- import { doesActorOwnKey } from "../owner-NFlQJyvM.js";
15
- import { extractInboxes, sendActivity } from "../send-DkwkMFjJ.js";
16
- import { mockDocumentLoader, test } from "../testing-BMBhkcz9.js";
17
- import "../std__assert-DWivtrGR.js";
18
- import { assertFalse, assertRejects } from "../assert_rejects-7UF4R_Qs.js";
19
- import "../assert_is_error-B035L3om.js";
20
- import { assertNotEquals } from "../assert_not_equals-C80BG-_5.js";
21
- import "../assert_throws-53_pKeP3.js";
22
- import { ed25519Multikey, ed25519PrivateKey, rsaPrivateKey2, rsaPublicKey2 } from "../keys-B3fzLXBG.js";
23
- import { esm_default } from "../esm-BBznxjVc.js";
10
+ import "../lookup-CbtuFbtg.js";
11
+ import "../actor-D8gCwLzv.js";
12
+ import "../key-DnqhSgAv.js";
13
+ import { verifyRequest } from "../http-CuS-d4U0.js";
14
+ import { doesActorOwnKey } from "../owner-ChSL4aJ7.js";
15
+ import { extractInboxes, sendActivity } from "../send-D5fjmUEj.js";
16
+ import { mockDocumentLoader, test } from "../testing-tWr1VQxx.js";
17
+ import "../std__assert-X-_kMxKM.js";
18
+ import { assertFalse, assertRejects } from "../assert_rejects-DiIiJbZn.js";
19
+ import "../assert_is_error-BPGph1Jx.js";
20
+ import { assertNotEquals } from "../assert_not_equals-f3m3epl3.js";
21
+ import "../assert_throws-BOO88avQ.js";
22
+ import { ed25519Multikey, ed25519PrivateKey, rsaPrivateKey2, rsaPublicKey2 } from "../keys-D3_MDK7n.js";
23
+ import { esm_default } from "../esm-Dl5T1RNE.js";
24
24
 
25
25
  //#region src/federation/send.test.ts
26
26
  test("extractInboxes()", () => {
@@ -0,0 +1,6 @@
1
+ {
2
+ "@context": "https://www.w3.org/ns/activitystreams",
3
+ "id": "https://media.example.com/avatars/test-avatar.jpg",
4
+ "type": "Image",
5
+ "url": "/avatars/test-avatar.jpg"
6
+ }
@@ -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-B1O1Z5OK.cjs');
7
- const require_actor = require('./actor-C3gJhZJj.cjs');
8
- const require_key = require('./key-CzF9SAEI.cjs');
6
+ const require_docloader = require('./docloader-CYnQRIXv.cjs');
7
+ const require_actor = require('./actor-CwZ2m5rG.cjs');
8
+ const require_key = require('./key-DuXv64tg.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-xJVzq9O0.js";
6
- import { CryptographicKey } from "./actor-CnVfp1Hp.js";
7
- import { fetchKey, validateCryptoKey } from "./key-BRmlopJL.js";
5
+ import { deno_default } from "./docloader-Czl3xV10.js";
6
+ import { CryptographicKey } from "./actor-DoMcqXsW.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-BNJQQm3h.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-FCer_9yh.js";
7
- import { fetchKey, validateCryptoKey } from "./key-DORX19Bl.js";
6
+ import { CryptographicKey, deno_default } from "./type-DaUr3Il7.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-DnqhSgAv.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";
@@ -1,5 +1,5 @@
1
1
  import { DocumentLoader } from "./docloader-D-MrRyHl.cjs";
2
- import { CryptographicKey, Multikey } from "./vocab-DJTYMqyU.cjs";
2
+ import { CryptographicKey, Multikey } from "./vocab-Dw1-yVGg.cjs";
3
3
  import { TracerProvider } from "@opentelemetry/api";
4
4
 
5
5
  //#region src/sig/key.d.ts
@@ -1,7 +1,7 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  import { DocumentLoader } from "./docloader-CxWcuWqQ.js";
4
- import { CryptographicKey, Multikey } from "./vocab-SOE1ifCr.js";
4
+ import { CryptographicKey, Multikey } from "./vocab-BI0Ak5lL.js";
5
5
  import { TracerProvider } from "@opentelemetry/api";
6
6
 
7
7
  //#region src/sig/key.d.ts
@@ -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-FCer_9yh.js";
6
+ import { Activity, deno_default, getTypeId } from "./type-DaUr3Il7.js";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
9
9
 
@@ -41,17 +41,34 @@ var InboxListenerSet = class InboxListenerSet {
41
41
  return this.dispatchWithClass(activity)?.listener ?? null;
42
42
  }
43
43
  };
44
- async function routeActivity({ context: ctx, json, activity, recipient, inboxListeners, inboxContextFactory, inboxErrorHandler, kv, kvPrefixes, queue, span, tracerProvider }) {
44
+ async function routeActivity({ context: ctx, json, activity, recipient, inboxListeners, inboxContextFactory, inboxErrorHandler, kv, kvPrefixes, queue, span, tracerProvider, idempotencyStrategy }) {
45
45
  const logger = getLogger([
46
46
  "fedify",
47
47
  "federation",
48
48
  "inbox"
49
49
  ]);
50
- const cacheKey = activity.id == null ? null : [
51
- ...kvPrefixes.activityIdempotence,
52
- ctx.origin,
53
- activity.id.href
54
- ];
50
+ let cacheKey = null;
51
+ if (activity.id != null) {
52
+ const inboxContext = inboxContextFactory(recipient, json, activity.id?.href, getTypeId(activity).href);
53
+ const strategy = idempotencyStrategy ?? "per-inbox";
54
+ let keyString;
55
+ if (typeof strategy === "function") {
56
+ const result = await strategy(inboxContext, activity);
57
+ keyString = result;
58
+ } else switch (strategy) {
59
+ case "global":
60
+ keyString = activity.id.href;
61
+ break;
62
+ case "per-origin":
63
+ keyString = `${ctx.origin}\n${activity.id.href}`;
64
+ break;
65
+ case "per-inbox":
66
+ keyString = `${ctx.origin}\n${activity.id.href}\n${recipient == null ? "sharedInbox" : `inbox\n${recipient}`}`;
67
+ break;
68
+ default: keyString = `${ctx.origin}\n${activity.id.href}`;
69
+ }
70
+ if (keyString != null) cacheKey = [...kvPrefixes.activityIdempotence, keyString];
71
+ }
55
72
  if (cacheKey != null) {
56
73
  const cached = await kv.get(cacheKey);
57
74
  if (cached === true) {
@@ -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-xJVzq9O0.js";
6
- import { CryptographicKey, Object as Object$1, isActor } from "./actor-CnVfp1Hp.js";
5
+ import { deno_default, getDocumentLoader } from "./docloader-Czl3xV10.js";
6
+ import { CryptographicKey, Object as Object$1, isActor } from "./actor-DoMcqXsW.js";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
9
9
 
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import "./docloader-xJVzq9O0.js";
6
- import "./actor-CnVfp1Hp.js";
7
- import "./lookup-CfU0DgLr.js";
8
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-BRmlopJL.js";
5
+ import "./docloader-Czl3xV10.js";
6
+ import "./actor-DoMcqXsW.js";
7
+ import "./lookup-Dhm78GlK.js";
8
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-BNJQQm3h.js";
9
9
 
10
10
  export { validateCryptoKey };
@@ -0,0 +1,10 @@
1
+
2
+ const { Temporal } = require("@js-temporal/polyfill");
3
+ const { URLPattern } = require("urlpattern-polyfill");
4
+
5
+ require('./docloader-CYnQRIXv.cjs');
6
+ require('./actor-CwZ2m5rG.cjs');
7
+ require('./lookup-D6dro5Au.cjs');
8
+ const require_key = require('./key-DuXv64tg.cjs');
9
+
10
+ exports.validateCryptoKey = require_key.validateCryptoKey;
@@ -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-FCer_9yh.js";
7
- import { isActor } from "./actor-Cpal85xW.js";
6
+ import { CryptographicKey, Object as Object$1, deno_default, getDocumentLoader } from "./type-DaUr3Il7.js";
7
+ import { isActor } from "./actor-D8gCwLzv.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
10
10
 
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "./type-FCer_9yh.js";
7
- import "./actor-Cpal85xW.js";
8
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-DORX19Bl.js";
6
+ import "./type-DaUr3Il7.js";
7
+ import "./actor-D8gCwLzv.js";
8
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-DnqhSgAv.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-B1O1Z5OK.cjs');
7
- const require_actor = require('./actor-C3gJhZJj.cjs');
6
+ const require_docloader = require('./docloader-CYnQRIXv.cjs');
7
+ const require_actor = require('./actor-CwZ2m5rG.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
 
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Multikey } from "./type-FCer_9yh.js";
6
+ import { CryptographicKey, Multikey } from "./type-DaUr3Il7.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-FCer_9yh.js";
6
+ import { CryptographicKey, Multikey, importSpki } from "./type-DaUr3Il7.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-FCer_9yh.js";
7
- import { fetchKey, validateCryptoKey } from "./key-DORX19Bl.js";
6
+ import { Activity, CryptographicKey, Object as Object$1, deno_default, getDocumentLoader, getTypeId } from "./type-DaUr3Il7.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-DnqhSgAv.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,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-FCer_9yh.js";
6
+ import { Object as Object$1, deno_default, getDocumentLoader, getTypeId, lookupWebFinger } from "./type-DaUr3Il7.js";
7
7
  import { cloneDeep, delay } from "es-toolkit";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
@@ -240,14 +240,13 @@ async function lookupObject(identifier, options = {}) {
240
240
  async function lookupObjectInternal(identifier, options = {}) {
241
241
  const documentLoader = options.documentLoader ?? getDocumentLoader({ userAgent: options.userAgent });
242
242
  if (typeof identifier === "string") identifier = toAcctUrl(identifier) ?? new URL(identifier);
243
- let document = null;
243
+ let remoteDoc = null;
244
244
  if (identifier.protocol === "http:" || identifier.protocol === "https:") try {
245
- const remoteDoc = await documentLoader(identifier.href, { signal: options.signal });
246
- document = remoteDoc.document;
245
+ remoteDoc = await documentLoader(identifier.href, { signal: options.signal });
247
246
  } catch (error) {
248
247
  logger.debug("Failed to fetch remote document:\n{error}", { error });
249
248
  }
250
- if (document == null) {
249
+ if (remoteDoc == null) {
251
250
  const jrd = await lookupWebFinger(identifier, {
252
251
  userAgent: options.userAgent,
253
252
  tracerProvider: options.tracerProvider,
@@ -258,8 +257,7 @@ async function lookupObjectInternal(identifier, options = {}) {
258
257
  for (const l of jrd.links) {
259
258
  if (l.type !== "application/activity+json" && !l.type?.match(/application\/ld\+json;\s*profile="https:\/\/www.w3.org\/ns\/activitystreams"/) || l.rel !== "self" || l.href == null) continue;
260
259
  try {
261
- const remoteDoc = await documentLoader(l.href, { signal: options.signal });
262
- document = remoteDoc.document;
260
+ remoteDoc = await documentLoader(l.href, { signal: options.signal });
263
261
  break;
264
262
  } catch (error) {
265
263
  logger.debug("Failed to fetch remote document:\n{error}", { error });
@@ -267,23 +265,34 @@ async function lookupObjectInternal(identifier, options = {}) {
267
265
  }
268
266
  }
269
267
  }
270
- if (document == null) return null;
268
+ if (remoteDoc == null) return null;
269
+ let object;
271
270
  try {
272
- return await Object$1.fromJsonLd(document, {
271
+ object = await Object$1.fromJsonLd(remoteDoc.document, {
273
272
  documentLoader,
274
273
  contextLoader: options.contextLoader,
275
- tracerProvider: options.tracerProvider
274
+ tracerProvider: options.tracerProvider,
275
+ baseUrl: new URL(remoteDoc.documentUrl)
276
276
  });
277
277
  } catch (error) {
278
278
  if (error instanceof TypeError) {
279
279
  logger.debug("Failed to parse JSON-LD document: {error}\n{document}", {
280
- error,
281
- document
280
+ ...remoteDoc,
281
+ error
282
282
  });
283
283
  return null;
284
284
  }
285
285
  throw error;
286
286
  }
287
+ if (options.crossOrigin !== "trust" && object.id != null && object.id.origin !== new URL(remoteDoc.documentUrl).origin) {
288
+ if (options.crossOrigin === "throw") throw new Error(`The object's @id (${object.id.href}) has a different origin than the document URL (${remoteDoc.documentUrl}); refusing to return the object. If you want to bypass this check and are aware of the security implications, set the crossOrigin option to "trust".`);
289
+ logger.warn("The object's @id ({objectId}) has a different origin than the document URL ({documentUrl}); refusing to return the object. If you want to bypass this check and are aware of the security implications, set the crossOrigin option to \"trust\".", {
290
+ ...remoteDoc,
291
+ objectId: object.id.href
292
+ });
293
+ return null;
294
+ }
295
+ return object;
287
296
  }
288
297
  /**
289
298
  * Traverses a collection, yielding each item in the collection.
@@ -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-B1O1Z5OK.cjs');
6
+ const require_docloader = require('./docloader-CYnQRIXv.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
 
@@ -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-xJVzq9O0.js";
5
+ import { UrlError, deno_default, getUserAgent, validatePublicUrl } from "./docloader-Czl3xV10.js";
6
6
  import { getLogger } from "@logtape/logtape";
7
7
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
8
8
 
@@ -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-DaUr3Il7.js";
7
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-DQYscW90.js";
8
+ import "./client-D5CBsPrc.js";
9
+ import "./lookup-CbtuFbtg.js";
10
+ import "./types-BSuWJsOm.js";
11
+ import "./actor-D8gCwLzv.js";
12
+ import "./key-DnqhSgAv.js";
13
+ import "./http-CuS-d4U0.js";
14
+ import "./authdocloader-DYTNpaMA.js";
15
+ import "./ld-Isot0tiW.js";
16
+ import "./owner-ChSL4aJ7.js";
17
+ import "./proof-x3IBewan.js";
18
+ import "./inbox-IETv_Qez.js";
19
+ import "./builder-1_skw-d2.js";
20
+ import "./collection-CcnIw1qY.js";
21
+ import "./keycache-CSBkusP8.js";
22
+ import "./negotiation-5NPJL6zp.js";
23
+ import "./retry-D4GJ670a.js";
24
+ import "./send-D5fjmUEj.js";
25
+
26
+ export { FederationImpl };