@fedify/fedify 1.9.0-pr.388.1454 → 1.9.0-pr.388.1457

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 (83) hide show
  1. package/dist/{actor-D6e9qEkV.js → actor-CEIQwVvy.js} +1 -1
  2. package/dist/{actor-rnKKWIEt.js → actor-i3pzmrNX.js} +187 -187
  3. package/dist/{authdocloader-DNXCwhe4.js → authdocloader-DPNTnzyp.js} +3 -3
  4. package/dist/{authdocloader-BLlcg6OT.js → authdocloader-Dpnm-yj0.js} +3 -3
  5. package/dist/{builder-rbQSp-ig.js → builder-BDqcViO8.js} +4 -4
  6. package/dist/{client-V4MB7-QC.js → client-BralNOu0.js} +1 -1
  7. package/dist/compat/transformers.test.js +16 -16
  8. package/dist/{denokv-C-wcHaX0.js → denokv-Bv33Xxea.js} +3 -0
  9. package/dist/{docloader-B0JdtOnB.js → docloader-DLKyJWIV.js} +2 -2
  10. package/dist/{esm-Lllns3MF.js → esm-DkPW-ccg.js} +1 -1
  11. package/dist/federation/builder.test.js +5 -5
  12. package/dist/federation/collection.test.js +3 -3
  13. package/dist/federation/handler.test.js +17 -17
  14. package/dist/federation/inbox.test.js +4 -4
  15. package/dist/federation/keycache.test.js +4 -4
  16. package/dist/federation/kv.test.js +3 -3
  17. package/dist/federation/middleware.test.js +18 -18
  18. package/dist/federation/mod.js +10 -10
  19. package/dist/federation/mq.test.js +5 -5
  20. package/dist/federation/retry.test.js +3 -3
  21. package/dist/federation/router.test.js +3 -3
  22. package/dist/federation/send.test.js +10 -10
  23. package/dist/fixtures/oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd.json +24 -0
  24. package/dist/{http-Udeoz_Al.js → http-BRCgmmm5.js} +51 -5
  25. package/dist/{http-CyF0WaM0.js → http-CDu8ZPCY.js} +50 -4
  26. package/dist/{inbox-5hqyXKPa.js → inbox-Dm26WBZx.js} +1 -1
  27. package/dist/{key-7MvpRoyd.js → key-DIQpEghv.js} +2 -2
  28. package/dist/{key-CTkfaVig.js → key-DPTlnsSF.js} +3 -3
  29. package/dist/{key-5ppjSAIK.js → key-DcXTzzNv.js} +4 -4
  30. package/dist/{key-DIPT1P-B.js → key-DzPMkR_z.js} +2 -2
  31. package/dist/{keycache-rmZ6V89m.js → keycache-Dgohl1Dd.js} +1 -1
  32. package/dist/{keys-DwuXi5ni.js → keys-DTBGTGWL.js} +1 -1
  33. package/dist/{ld-pm8P5ZxN.js → ld-CzE3ibrJ.js} +2 -2
  34. package/dist/{lookup-DV4bXX-_.js → lookup-DMCX9XMw.js} +1 -1
  35. package/dist/{lookup-RSoRngQM.js → lookup-DnJ8NYRt.js} +1 -1
  36. package/dist/{middleware-u3F5lAP_.js → middleware-B3cHCCxV.js} +10 -10
  37. package/dist/middleware-B497T-Of.js +17 -0
  38. package/dist/middleware-B50gGkMU.js +26 -0
  39. package/dist/{middleware-DLtvTXdd.js → middleware-COq0pYjE.js} +13 -13
  40. package/dist/mod.js +10 -10
  41. package/dist/nodeinfo/client.test.js +5 -5
  42. package/dist/nodeinfo/handler.test.js +16 -16
  43. package/dist/nodeinfo/mod.js +2 -2
  44. package/dist/nodeinfo/semver.test.js +3 -3
  45. package/dist/nodeinfo/types.test.js +3 -3
  46. package/dist/{owner-Dyov2Vyh.js → owner-DvQeuc07.js} +2 -2
  47. package/dist/{proof-DOdxEdqB.js → proof-CGewCl6O.js} +2 -2
  48. package/dist/{proof-BKV2LcLG.js → proof-D0vH8pjh.js} +3 -3
  49. package/dist/runtime/authdocloader.test.js +9 -9
  50. package/dist/runtime/docloader.test.js +28 -4
  51. package/dist/runtime/key.test.js +5 -5
  52. package/dist/runtime/langstr.test.js +3 -3
  53. package/dist/runtime/mod.js +6 -6
  54. package/dist/runtime/multibase/multibase.test.js +3 -3
  55. package/dist/runtime/url.test.js +3 -3
  56. package/dist/{send-BW12PG34.js → send-BigK9oaG.js} +2 -2
  57. package/dist/sig/http.test.js +24 -8
  58. package/dist/sig/key.test.js +6 -6
  59. package/dist/sig/ld.test.js +7 -7
  60. package/dist/sig/mod.js +6 -6
  61. package/dist/sig/owner.test.js +7 -7
  62. package/dist/sig/proof.test.js +7 -7
  63. package/dist/testing/docloader.test.js +3 -3
  64. package/dist/testing/mod.js +3 -3
  65. package/dist/{testing-BVgrw3iR.js → testing-BaNygUsb.js} +2 -2
  66. package/dist/{type-DGVk0-c1.js → type-DL-xGM3B.js} +187 -187
  67. package/dist/{types-DpoqseBT.js → types-Bew-0Gg8.js} +1 -1
  68. package/dist/vocab/actor.test.js +5 -5
  69. package/dist/vocab/lookup.test.js +4 -4
  70. package/dist/vocab/mod.js +4 -4
  71. package/dist/vocab/type.test.js +3 -3
  72. package/dist/vocab/vocab.test.js +4 -4
  73. package/dist/{vocab-xe_N1JvM.js → vocab-Bk8QAL3P.js} +3 -3
  74. package/dist/webfinger/handler.test.js +16 -16
  75. package/dist/webfinger/lookup.test.js +4 -4
  76. package/dist/webfinger/mod.js +2 -2
  77. package/dist/x/cfworkers.js +6 -0
  78. package/dist/x/cfworkers.test.js +8 -3
  79. package/dist/x/hono.js +8 -0
  80. package/dist/x/sveltekit.js +8 -0
  81. package/package.json +1 -1
  82. package/dist/middleware-C6C_eSdH.js +0 -17
  83. package/dist/middleware-kt4x4bcT.js +0 -26
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, deno_default } from "./type-DGVk0-c1.js";
7
- import { fetchKey, validateCryptoKey } from "./key-7MvpRoyd.js";
6
+ import { CryptographicKey, deno_default } from "./type-DL-xGM3B.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-DIQpEghv.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";
@@ -366,7 +366,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
366
366
  return null;
367
367
  }
368
368
  }
369
- const sigValues = Object.fromEntries(sigHeader.split(",").map((pair) => pair.match(/^\s*([A-Za-z]+)="([^"]*)"\s*$/)).filter((m) => m != null).map((m) => m.slice(1, 3)));
369
+ const sigValues = Object.fromEntries(sigHeader.split(",").map((pair) => pair.match(/^\s*([A-Za-z]+)=(?:"([^"]*)"|(\d+))\s*$/)).filter((m) => m != null).map((m) => [m[1], m[2] ?? m[3]]));
370
370
  if (!("keyId" in sigValues)) {
371
371
  logger.debug("Failed to verify; no keyId field found in the Signature header.", { signature: sigHeader });
372
372
  return null;
@@ -377,6 +377,52 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
377
377
  logger.debug("Failed to verify; no signature field found in the Signature header.", { signature: sigHeader });
378
378
  return null;
379
379
  }
380
+ if ("expires" in sigValues) {
381
+ const expiresSeconds = parseInt(sigValues.expires);
382
+ if (!Number.isInteger(expiresSeconds)) {
383
+ logger.debug("Failed to verify; invalid expires field in the Signature header: {expires}.", {
384
+ expires: sigValues.expires,
385
+ signature: sigHeader
386
+ });
387
+ return null;
388
+ }
389
+ const expires = Temporal.Instant.fromEpochMilliseconds(expiresSeconds * 1e3);
390
+ if (Temporal.Instant.compare(now, expires) > 0) {
391
+ logger.debug("Failed to verify; signature expired at {expires} (now: {now}).", {
392
+ expires: expires.toString(),
393
+ now: now.toString(),
394
+ signature: sigHeader
395
+ });
396
+ return null;
397
+ }
398
+ }
399
+ if ("created" in sigValues) {
400
+ const createdSeconds = parseInt(sigValues.created);
401
+ if (!Number.isInteger(createdSeconds)) {
402
+ logger.debug("Failed to verify; invalid created field in the Signature header: {created}.", {
403
+ created: sigValues.created,
404
+ signature: sigHeader
405
+ });
406
+ return null;
407
+ }
408
+ if (timeWindow !== false) {
409
+ const created = Temporal.Instant.fromEpochMilliseconds(createdSeconds * 1e3);
410
+ const tw = timeWindow ?? { minutes: 1 };
411
+ if (Temporal.Instant.compare(created, now.add(tw)) > 0) {
412
+ logger.debug("Failed to verify; created is too far in the future.", {
413
+ created: created.toString(),
414
+ now: now.toString()
415
+ });
416
+ return null;
417
+ } else if (Temporal.Instant.compare(created, now.subtract(tw)) < 0) {
418
+ logger.debug("Failed to verify; created is too far in the past.", {
419
+ created: created.toString(),
420
+ now: now.toString()
421
+ });
422
+ return null;
423
+ }
424
+ }
425
+ }
380
426
  const { keyId, headers, signature } = sigValues;
381
427
  span?.setAttribute("http_signatures.key_id", keyId);
382
428
  if ("algorithm" in sigValues) span?.setAttribute("http_signatures.algorithm", sigValues.algorithm);
@@ -396,7 +442,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
396
442
  logger.debug("Failed to verify; required headers missing in the Signature header: {headers}.", { headers });
397
443
  return null;
398
444
  }
399
- const message = headerNames.map((name) => `${name}: ` + (name == "(request-target)" ? `${request.method.toLowerCase()} ${new URL(request.url).pathname}` : name == "host" ? request.headers.get("host") ?? new URL(request.url).host : request.headers.get(name))).join("\n");
445
+ const message = headerNames.map((name) => `${name}: ` + (name === "(request-target)" ? `${request.method.toLowerCase()} ${new URL(request.url).pathname}` : name === "(created)" ? sigValues.created ?? "" : name === "(expires)" ? sigValues.expires ?? "" : name === "host" ? request.headers.get("host") ?? new URL(request.url).host : request.headers.get(name))).join("\n");
400
446
  const sig = decodeBase64(signature);
401
447
  span?.setAttribute("http_signatures.signature", encodeHex(sig));
402
448
  const verified = await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, sig, new TextEncoder().encode(message));
@@ -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-DGVk0-c1.js";
6
+ import { Activity, deno_default, getTypeId } from "./type-DL-xGM3B.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 { CryptographicKey, Object as Object$1, deno_default, getDocumentLoader } from "./type-DGVk0-c1.js";
7
- import { isActor } from "./actor-D6e9qEkV.js";
6
+ import { CryptographicKey, Object as Object$1, deno_default, getDocumentLoader } from "./type-DL-xGM3B.js";
7
+ import { isActor } from "./actor-CEIQwVvy.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-DGVk0-c1.js";
7
- import "./actor-D6e9qEkV.js";
8
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-7MvpRoyd.js";
6
+ import "./type-DL-xGM3B.js";
7
+ import "./actor-CEIQwVvy.js";
8
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-DIQpEghv.js";
9
9
 
10
10
  export { validateCryptoKey };
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import "./docloader-B0JdtOnB.js";
6
- import "./actor-rnKKWIEt.js";
7
- import "./lookup-DV4bXX-_.js";
8
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-DIPT1P-B.js";
5
+ import "./docloader-DLKyJWIV.js";
6
+ import "./actor-i3pzmrNX.js";
7
+ import "./lookup-DMCX9XMw.js";
8
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-DzPMkR_z.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-B0JdtOnB.js";
6
- import { CryptographicKey, Object as Object$1, isActor } from "./actor-rnKKWIEt.js";
5
+ import { deno_default, getDocumentLoader } from "./docloader-DLKyJWIV.js";
6
+ import { CryptographicKey, Object as Object$1, isActor } from "./actor-i3pzmrNX.js";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
9
9
 
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Multikey } from "./type-DGVk0-c1.js";
6
+ import { CryptographicKey, Multikey } from "./type-DL-xGM3B.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-DGVk0-c1.js";
6
+ import { CryptographicKey, Multikey, importSpki } from "./type-DL-xGM3B.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-DGVk0-c1.js";
7
- import { fetchKey, validateCryptoKey } from "./key-7MvpRoyd.js";
6
+ import { Activity, CryptographicKey, Object as Object$1, deno_default, getDocumentLoader, getTypeId } from "./type-DL-xGM3B.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-DIQpEghv.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-B0JdtOnB.js";
5
+ import { UrlError, deno_default, getUserAgent, validatePublicUrl } from "./docloader-DLKyJWIV.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
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Object as Object$1, deno_default, getDocumentLoader, getTypeId, lookupWebFinger } from "./type-DGVk0-c1.js";
6
+ import { Object as Object$1, deno_default, getDocumentLoader, getTypeId, lookupWebFinger } from "./type-DL-xGM3B.js";
7
7
  import { cloneDeep, delay } from "es-toolkit";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
@@ -3,15 +3,15 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
5
  import { getDefaultActivityTransformers } from "./transformers-Dna8Fg7k.js";
6
- import { deno_default, getDocumentLoader, kvCache } from "./docloader-B0JdtOnB.js";
7
- import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-rnKKWIEt.js";
8
- import { lookupWebFinger } from "./lookup-DV4bXX-_.js";
9
- import { exportJwk, importJwk, validateCryptoKey } from "./key-DIPT1P-B.js";
10
- import { doubleKnock, verifyRequest } from "./http-Udeoz_Al.js";
11
- import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-BKV2LcLG.js";
12
- import { getNodeInfo, nodeInfoToJson } from "./types-DpoqseBT.js";
13
- import { getAuthenticatedDocumentLoader } from "./authdocloader-DNXCwhe4.js";
14
- import { lookupObject, traverseCollection } from "./vocab-xe_N1JvM.js";
6
+ import { deno_default, getDocumentLoader, kvCache } from "./docloader-DLKyJWIV.js";
7
+ import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-i3pzmrNX.js";
8
+ import { lookupWebFinger } from "./lookup-DMCX9XMw.js";
9
+ import { exportJwk, importJwk, validateCryptoKey } from "./key-DzPMkR_z.js";
10
+ import { doubleKnock, verifyRequest } from "./http-BRCgmmm5.js";
11
+ import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-D0vH8pjh.js";
12
+ import { getNodeInfo, nodeInfoToJson } from "./types-Bew-0Gg8.js";
13
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-DPNTnzyp.js";
14
+ import { lookupObject, traverseCollection } from "./vocab-Bk8QAL3P.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";
@@ -320,7 +320,7 @@ var FederationBuilderImpl = class {
320
320
  this.collectionTypeIds = {};
321
321
  }
322
322
  async build(options) {
323
- const { FederationImpl: FederationImpl$1 } = await import("./middleware-C6C_eSdH.js");
323
+ const { FederationImpl: FederationImpl$1 } = await import("./middleware-B497T-Of.js");
324
324
  const f = new FederationImpl$1(options);
325
325
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
326
326
  f.router = this.router.clone();
@@ -0,0 +1,17 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+
5
+ import "./transformers-Dna8Fg7k.js";
6
+ import "./docloader-DLKyJWIV.js";
7
+ import "./actor-i3pzmrNX.js";
8
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-B3cHCCxV.js";
9
+ import "./lookup-DMCX9XMw.js";
10
+ import "./key-DzPMkR_z.js";
11
+ import "./http-BRCgmmm5.js";
12
+ import "./proof-D0vH8pjh.js";
13
+ import "./types-Bew-0Gg8.js";
14
+ import "./authdocloader-DPNTnzyp.js";
15
+ import "./vocab-Bk8QAL3P.js";
16
+
17
+ export { 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-DL-xGM3B.js";
7
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-COq0pYjE.js";
8
+ import "./semver-dArNLkR9.js";
9
+ import "./client-BralNOu0.js";
10
+ import "./lookup-DnJ8NYRt.js";
11
+ import "./types-BIgY6c-l.js";
12
+ import "./actor-CEIQwVvy.js";
13
+ import "./key-DIQpEghv.js";
14
+ import "./http-CDu8ZPCY.js";
15
+ import "./authdocloader-Dpnm-yj0.js";
16
+ import "./ld-CzE3ibrJ.js";
17
+ import "./owner-DvQeuc07.js";
18
+ import "./proof-CGewCl6O.js";
19
+ import "./inbox-Dm26WBZx.js";
20
+ import "./builder-BDqcViO8.js";
21
+ import "./collection-CSzG2j1P.js";
22
+ import "./keycache-Dgohl1Dd.js";
23
+ import "./retry-D4GJ670a.js";
24
+ import "./send-BigK9oaG.js";
25
+
26
+ export { FederationImpl };
@@ -3,22 +3,22 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, deno_default, getDocumentLoader, getTypeId, kvCache, lookupWebFinger } from "./type-DGVk0-c1.js";
7
- import { getNodeInfo } from "./client-V4MB7-QC.js";
8
- import { RouterError, lookupObject, traverseCollection } from "./lookup-RSoRngQM.js";
6
+ import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, deno_default, getDocumentLoader, getTypeId, kvCache, lookupWebFinger } from "./type-DL-xGM3B.js";
7
+ import { getNodeInfo } from "./client-BralNOu0.js";
8
+ import { RouterError, lookupObject, traverseCollection } from "./lookup-DnJ8NYRt.js";
9
9
  import { nodeInfoToJson } from "./types-BIgY6c-l.js";
10
- import { exportJwk, importJwk, validateCryptoKey } from "./key-7MvpRoyd.js";
11
- import { verifyRequest } from "./http-CyF0WaM0.js";
12
- import { getAuthenticatedDocumentLoader } from "./authdocloader-BLlcg6OT.js";
13
- import { detachSignature, hasSignature, signJsonLd, verifyJsonLd } from "./ld-pm8P5ZxN.js";
14
- import { doesActorOwnKey, getKeyOwner } from "./owner-Dyov2Vyh.js";
15
- import { signObject, verifyObject } from "./proof-DOdxEdqB.js";
16
- import { routeActivity } from "./inbox-5hqyXKPa.js";
17
- import { FederationBuilderImpl } from "./builder-rbQSp-ig.js";
10
+ import { exportJwk, importJwk, validateCryptoKey } from "./key-DIQpEghv.js";
11
+ import { verifyRequest } from "./http-CDu8ZPCY.js";
12
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-Dpnm-yj0.js";
13
+ import { detachSignature, hasSignature, signJsonLd, verifyJsonLd } from "./ld-CzE3ibrJ.js";
14
+ import { doesActorOwnKey, getKeyOwner } from "./owner-DvQeuc07.js";
15
+ import { signObject, verifyObject } from "./proof-CGewCl6O.js";
16
+ import { routeActivity } from "./inbox-Dm26WBZx.js";
17
+ import { FederationBuilderImpl } from "./builder-BDqcViO8.js";
18
18
  import { buildCollectionSynchronizationHeader } from "./collection-CSzG2j1P.js";
19
- import { KvKeyCache } from "./keycache-rmZ6V89m.js";
19
+ import { KvKeyCache } from "./keycache-Dgohl1Dd.js";
20
20
  import { createExponentialBackoffPolicy } from "./retry-D4GJ670a.js";
21
- import { extractInboxes, sendActivity } from "./send-BW12PG34.js";
21
+ import { extractInboxes, sendActivity } from "./send-BigK9oaG.js";
22
22
  import { getLogger, withContext } from "@logtape/logtape";
23
23
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
24
24
  import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_HTTP_RESPONSE_HEADER, ATTR_HTTP_RESPONSE_STATUS_CODE, ATTR_URL_FULL } from "@opentelemetry/semantic-conventions";
package/dist/mod.js CHANGED
@@ -4,17 +4,17 @@
4
4
 
5
5
  import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./transformers-Dna8Fg7k.js";
6
6
  import "./compat-Bb5myD13.js";
7
- import { FetchError, fetchDocumentLoader, getDocumentLoader, getUserAgent, kvCache } from "./docloader-B0JdtOnB.js";
8
- import { Accept, Activity, Add, Announce, Application, Arrive, Article, Audio, Block, ChatMessage, Collection, CollectionPage, Create, CryptographicKey, DataIntegrityProof, Delete, DidService, Dislike, Document, Emoji, EmojiReact, Endpoints, Event, Export, Flag, Follow, Group, Hashtag, Ignore, Image, IntransitiveActivity, Invite, Join, LanguageString, Leave, Like, Link, Listen, Mention, Move, Multikey, Note, Object as Object$1, Offer, OrderedCollection, OrderedCollectionPage, Organization, Page, Person, Place, Profile, PropertyValue, Question, Read, Reject, Relationship, Remove, Service, Source, TentativeAccept, TentativeReject, Tombstone, Travel, Undo, Update, Video, View, exportMultibaseKey, exportSpki, getActorClassByTypeName, getActorHandle, getActorTypeName, getTypeId, importMultibaseKey, importPem, importPkcs1, importSpki, isActor, normalizeActorHandle } from "./actor-rnKKWIEt.js";
9
- import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "./middleware-u3F5lAP_.js";
10
- import { lookupWebFinger } from "./lookup-DV4bXX-_.js";
11
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk } from "./key-DIPT1P-B.js";
12
- import { signRequest, verifyRequest } from "./http-Udeoz_Al.js";
13
- import { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, getKeyOwner, signJsonLd, signObject, verifyJsonLd, verifyObject, verifyProof, verifySignature } from "./proof-BKV2LcLG.js";
7
+ import { FetchError, fetchDocumentLoader, getDocumentLoader, getUserAgent, kvCache } from "./docloader-DLKyJWIV.js";
8
+ import { Accept, Activity, Add, Announce, Application, Arrive, Article, Audio, Block, ChatMessage, Collection, CollectionPage, Create, CryptographicKey, DataIntegrityProof, Delete, DidService, Dislike, Document, Emoji, EmojiReact, Endpoints, Event, Export, Flag, Follow, Group, Hashtag, Ignore, Image, IntransitiveActivity, Invite, Join, LanguageString, Leave, Like, Link, Listen, Mention, Move, Multikey, Note, Object as Object$1, Offer, OrderedCollection, OrderedCollectionPage, Organization, Page, Person, Place, Profile, PropertyValue, Question, Read, Reject, Relationship, Remove, Service, Source, TentativeAccept, TentativeReject, Tombstone, Travel, Undo, Update, Video, View, exportMultibaseKey, exportSpki, getActorClassByTypeName, getActorHandle, getActorTypeName, getTypeId, importMultibaseKey, importPem, importPkcs1, importSpki, isActor, normalizeActorHandle } from "./actor-i3pzmrNX.js";
9
+ import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "./middleware-B3cHCCxV.js";
10
+ import { lookupWebFinger } from "./lookup-DMCX9XMw.js";
11
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk } from "./key-DzPMkR_z.js";
12
+ import { signRequest, verifyRequest } from "./http-BRCgmmm5.js";
13
+ import { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, getKeyOwner, signJsonLd, signObject, verifyJsonLd, verifyObject, verifyProof, verifySignature } from "./proof-D0vH8pjh.js";
14
14
  import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "./federation-CMX7WzeL.js";
15
- import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "./types-DpoqseBT.js";
16
- import { getAuthenticatedDocumentLoader } from "./authdocloader-DNXCwhe4.js";
17
- import { PUBLIC_COLLECTION, isFediverseHandle, lookupObject, parseFediverseHandle, toAcctUrl, traverseCollection } from "./vocab-xe_N1JvM.js";
15
+ import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "./types-Bew-0Gg8.js";
16
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-DPNTnzyp.js";
17
+ import { PUBLIC_COLLECTION, isFediverseHandle, lookupObject, parseFediverseHandle, toAcctUrl, traverseCollection } from "./vocab-Bk8QAL3P.js";
18
18
  import "./nodeinfo-CyEbLjHs.js";
19
19
  import "./runtime-BSkOVUWM.js";
20
20
  import "./sig-BXJO--F9.js";
@@ -3,20 +3,20 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-DGVk0-c1.js";
6
+ import "../type-DL-xGM3B.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import "../semver-dArNLkR9.js";
11
- import { getNodeInfo, parseInboundService, parseNodeInfo, parseOutboundService, parseProtocol, parseServices, parseSoftware, parseUsage } from "../client-V4MB7-QC.js";
12
- import "../lookup-RSoRngQM.js";
13
- import { test } from "../testing-BVgrw3iR.js";
11
+ import { getNodeInfo, parseInboundService, parseNodeInfo, parseOutboundService, parseProtocol, parseServices, parseSoftware, parseUsage } from "../client-BralNOu0.js";
12
+ import "../lookup-DnJ8NYRt.js";
13
+ import { test } from "../testing-BaNygUsb.js";
14
14
  import "../std__assert-X-_kMxKM.js";
15
15
  import "../assert_rejects-DiIiJbZn.js";
16
16
  import "../assert_is_error-BPGph1Jx.js";
17
17
  import "../assert_not_equals-f3m3epl3.js";
18
18
  import "../assert_throws-BOO88avQ.js";
19
- import { esm_default } from "../esm-Lllns3MF.js";
19
+ import { esm_default } from "../esm-DkPW-ccg.js";
20
20
 
21
21
  //#region src/nodeinfo/client.test.ts
22
22
  test("getNodeInfo()", async (t) => {
@@ -3,30 +3,30 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-DGVk0-c1.js";
6
+ import "../type-DL-xGM3B.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import { createFederation, handleNodeInfo, handleNodeInfoJrd } from "../middleware-DLtvTXdd.js";
11
+ import { createFederation, handleNodeInfo, handleNodeInfoJrd } from "../middleware-COq0pYjE.js";
12
12
  import { parseSemVer } from "../semver-dArNLkR9.js";
13
- import "../client-V4MB7-QC.js";
14
- import "../lookup-RSoRngQM.js";
13
+ import "../client-BralNOu0.js";
14
+ import "../lookup-DnJ8NYRt.js";
15
15
  import "../types-BIgY6c-l.js";
16
- import "../actor-D6e9qEkV.js";
17
- import "../key-7MvpRoyd.js";
18
- import "../http-CyF0WaM0.js";
19
- import "../authdocloader-BLlcg6OT.js";
20
- import "../ld-pm8P5ZxN.js";
21
- import "../owner-Dyov2Vyh.js";
22
- import "../proof-DOdxEdqB.js";
23
- import "../inbox-5hqyXKPa.js";
24
- import "../builder-rbQSp-ig.js";
16
+ import "../actor-CEIQwVvy.js";
17
+ import "../key-DIQpEghv.js";
18
+ import "../http-CDu8ZPCY.js";
19
+ import "../authdocloader-Dpnm-yj0.js";
20
+ import "../ld-CzE3ibrJ.js";
21
+ import "../owner-DvQeuc07.js";
22
+ import "../proof-CGewCl6O.js";
23
+ import "../inbox-Dm26WBZx.js";
24
+ import "../builder-BDqcViO8.js";
25
25
  import "../collection-CSzG2j1P.js";
26
- import "../keycache-rmZ6V89m.js";
26
+ import "../keycache-Dgohl1Dd.js";
27
27
  import "../retry-D4GJ670a.js";
28
- import "../send-BW12PG34.js";
29
- import { createRequestContext, test } from "../testing-BVgrw3iR.js";
28
+ import "../send-BigK9oaG.js";
29
+ import { createRequestContext, test } from "../testing-BaNygUsb.js";
30
30
  import "../std__assert-X-_kMxKM.js";
31
31
  import "../assert_rejects-DiIiJbZn.js";
32
32
  import "../assert_is_error-BPGph1Jx.js";
@@ -2,8 +2,8 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import "../docloader-B0JdtOnB.js";
6
- import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "../types-DpoqseBT.js";
5
+ import "../docloader-DLKyJWIV.js";
6
+ import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "../types-Bew-0Gg8.js";
7
7
  import "../nodeinfo-CyEbLjHs.js";
8
8
 
9
9
  export { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer };
@@ -3,13 +3,13 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-DGVk0-c1.js";
6
+ import "../type-DL-xGM3B.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { formatSemVer, parseSemVer } from "../semver-dArNLkR9.js";
11
- import "../lookup-RSoRngQM.js";
12
- import { test } from "../testing-BVgrw3iR.js";
11
+ import "../lookup-DnJ8NYRt.js";
12
+ import { test } from "../testing-BaNygUsb.js";
13
13
  import "../std__assert-X-_kMxKM.js";
14
14
  import "../assert_rejects-DiIiJbZn.js";
15
15
  import "../assert_is_error-BPGph1Jx.js";
@@ -3,14 +3,14 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-DGVk0-c1.js";
6
+ import "../type-DL-xGM3B.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import "../semver-dArNLkR9.js";
11
- import "../lookup-RSoRngQM.js";
11
+ import "../lookup-DnJ8NYRt.js";
12
12
  import { nodeInfoToJson } from "../types-BIgY6c-l.js";
13
- import { test } from "../testing-BVgrw3iR.js";
13
+ import { test } from "../testing-BaNygUsb.js";
14
14
  import "../std__assert-X-_kMxKM.js";
15
15
  import "../assert_rejects-DiIiJbZn.js";
16
16
  import "../assert_is_error-BPGph1Jx.js";
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Object as Object$1, getDocumentLoader } from "./type-DGVk0-c1.js";
7
- import { isActor } from "./actor-D6e9qEkV.js";
6
+ import { CryptographicKey, Object as Object$1, getDocumentLoader } from "./type-DL-xGM3B.js";
7
+ import { isActor } from "./actor-CEIQwVvy.js";
8
8
  import { trace } from "@opentelemetry/api";
9
9
 
10
10
  //#region src/sig/owner.ts
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, DataIntegrityProof, Multikey, deno_default, getTypeId } from "./type-DGVk0-c1.js";
7
- import { fetchKey, validateCryptoKey } from "./key-7MvpRoyd.js";
6
+ import { Activity, DataIntegrityProof, Multikey, deno_default, getTypeId } from "./type-DL-xGM3B.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-DIQpEghv.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
10
10
  import { encodeHex } from "byte-encodings/hex";
@@ -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, getDocumentLoader } from "./docloader-B0JdtOnB.js";
6
- import { Activity, CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1, getTypeId, isActor } from "./actor-rnKKWIEt.js";
7
- import { fetchKey, validateCryptoKey } from "./key-DIPT1P-B.js";
5
+ import { deno_default, getDocumentLoader } from "./docloader-DLKyJWIV.js";
6
+ import { Activity, CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1, getTypeId, isActor } from "./actor-i3pzmrNX.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-DzPMkR_z.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
10
10
  import jsonld from "jsonld";
@@ -3,23 +3,23 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { UrlError } from "../type-DGVk0-c1.js";
6
+ import { UrlError } from "../type-DL-xGM3B.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
- import "../lookup-RSoRngQM.js";
11
- import "../actor-D6e9qEkV.js";
12
- import "../key-7MvpRoyd.js";
13
- import { verifyRequest } from "../http-CyF0WaM0.js";
14
- import { getAuthenticatedDocumentLoader } from "../authdocloader-BLlcg6OT.js";
15
- import { mockDocumentLoader, test } from "../testing-BVgrw3iR.js";
10
+ import "../lookup-DnJ8NYRt.js";
11
+ import "../actor-CEIQwVvy.js";
12
+ import "../key-DIQpEghv.js";
13
+ import { verifyRequest } from "../http-CDu8ZPCY.js";
14
+ import { getAuthenticatedDocumentLoader } from "../authdocloader-Dpnm-yj0.js";
15
+ import { mockDocumentLoader, test } from "../testing-BaNygUsb.js";
16
16
  import "../std__assert-X-_kMxKM.js";
17
17
  import { assertRejects } from "../assert_rejects-DiIiJbZn.js";
18
18
  import "../assert_is_error-BPGph1Jx.js";
19
19
  import "../assert_not_equals-f3m3epl3.js";
20
20
  import "../assert_throws-BOO88avQ.js";
21
- import { rsaPrivateKey2 } from "../keys-DwuXi5ni.js";
22
- import { esm_default } from "../esm-Lllns3MF.js";
21
+ import { rsaPrivateKey2 } from "../keys-DTBGTGWL.js";
22
+ import { esm_default } from "../esm-DkPW-ccg.js";
23
23
 
24
24
  //#region src/runtime/authdocloader.test.ts
25
25
  test("getAuthenticatedDocumentLoader()", async (t) => {
@@ -3,19 +3,19 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { FetchError, UrlError, contexts_default, deno_default, getDocumentLoader, getUserAgent, kvCache } from "../type-DGVk0-c1.js";
6
+ import { FetchError, UrlError, contexts_default, deno_default, getDocumentLoader, getUserAgent, kvCache } from "../type-DL-xGM3B.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import "../lookup-RSoRngQM.js";
12
- import { mockDocumentLoader, test } from "../testing-BVgrw3iR.js";
11
+ import "../lookup-DnJ8NYRt.js";
12
+ import { mockDocumentLoader, test } from "../testing-BaNygUsb.js";
13
13
  import "../std__assert-X-_kMxKM.js";
14
14
  import { assertRejects } from "../assert_rejects-DiIiJbZn.js";
15
15
  import "../assert_is_error-BPGph1Jx.js";
16
16
  import "../assert_not_equals-f3m3epl3.js";
17
17
  import { assertThrows } from "../assert_throws-BOO88avQ.js";
18
- import { esm_default } from "../esm-Lllns3MF.js";
18
+ import { esm_default } from "../esm-DkPW-ccg.js";
19
19
  import process from "node:process";
20
20
 
21
21
  //#region src/runtime/docloader.test.ts
@@ -158,6 +158,30 @@ test("getDocumentLoader()", async (t) => {
158
158
  }
159
159
  });
160
160
  });
161
+ esm_default.get("https://example.com/xhtml-link", {
162
+ body: `<html>
163
+ <head>
164
+ <meta charset="utf-8" />
165
+ <link
166
+ rel=alternate
167
+ type="application/activity+json"
168
+ href="https://example.com/object" />
169
+ </head>
170
+ </html>`,
171
+ headers: { "Content-Type": "application/xhtml+xml; charset=utf-8" }
172
+ });
173
+ await t.step("XHTML <link>", async () => {
174
+ assertEquals(await fetchDocumentLoader("https://example.com/xhtml-link"), {
175
+ contextUrl: null,
176
+ documentUrl: "https://example.com/object",
177
+ document: {
178
+ "@context": "https://www.w3.org/ns/activitystreams",
179
+ id: "https://example.com/object",
180
+ name: "Fetched object",
181
+ type: "Object"
182
+ }
183
+ });
184
+ });
161
185
  esm_default.get("https://example.com/html-a", {
162
186
  body: `<html>
163
187
  <head>
@@ -3,14 +3,14 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { exportMultibaseKey, exportSpki, importMultibaseKey, importPem, importPkcs1, importSpki } from "../type-DGVk0-c1.js";
6
+ import { exportMultibaseKey, exportSpki, importMultibaseKey, importPem, importPkcs1, importSpki } from "../type-DL-xGM3B.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
- import "../lookup-RSoRngQM.js";
11
- import "../actor-D6e9qEkV.js";
12
- import { exportJwk, importJwk } from "../key-7MvpRoyd.js";
13
- import { test } from "../testing-BVgrw3iR.js";
10
+ import "../lookup-DnJ8NYRt.js";
11
+ import "../actor-CEIQwVvy.js";
12
+ import { exportJwk, importJwk } from "../key-DIQpEghv.js";
13
+ import { test } from "../testing-BaNygUsb.js";
14
14
  import "../std__assert-X-_kMxKM.js";
15
15
  import "../assert_rejects-DiIiJbZn.js";
16
16
  import "../assert_is_error-BPGph1Jx.js";