@fedify/fedify 1.9.5 → 1.9.6

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 (101) hide show
  1. package/dist/{actor-BScoqM7M.js → actor-CEGEmRll.js} +187 -187
  2. package/dist/{actor-EEh71Njb.js → actor-DbpZ6pzg.js} +1 -1
  3. package/dist/{actor-Bpeh1XeR.cjs → actor-DlS-Q8hE.cjs} +187 -187
  4. package/dist/{authdocloader-zA6GeFTV.js → authdocloader-BLqMyboS.js} +3 -3
  5. package/dist/{authdocloader-Cln84bGw.cjs → authdocloader-CT_V4Z7G.cjs} +3 -3
  6. package/dist/{authdocloader-Dzg6OOeX.js → authdocloader-DUQcOTRS.js} +3 -3
  7. package/dist/{builder-vhQAUB_c.js → builder-BO61xeXE.js} +4 -4
  8. package/dist/{client-BjEfcq0Q.js → client-UG5wpNhG.js} +1 -1
  9. package/dist/compat/transformers.test.js +16 -16
  10. package/dist/{docloader-D_YsJgEb.cjs → docloader-BIFI3OS7.cjs} +31 -11
  11. package/dist/{docloader-ygR0HOEb.js → docloader-fJgJeqiX.js} +31 -11
  12. package/dist/{esm-CpGJtXU9.js → esm-C1EfGjSS.js} +1 -1
  13. package/dist/federation/builder.test.js +5 -5
  14. package/dist/federation/collection.test.js +3 -3
  15. package/dist/federation/handler.test.js +17 -17
  16. package/dist/federation/idempotency.test.js +17 -17
  17. package/dist/federation/inbox.test.js +4 -4
  18. package/dist/federation/keycache.test.js +8 -4
  19. package/dist/federation/kv.test.js +3 -3
  20. package/dist/federation/middleware.test.js +18 -18
  21. package/dist/federation/mod.cjs +10 -10
  22. package/dist/federation/mod.js +10 -10
  23. package/dist/federation/mq.test.js +3 -3
  24. package/dist/federation/retry.test.js +3 -3
  25. package/dist/federation/router.test.js +3 -3
  26. package/dist/federation/send.test.js +10 -10
  27. package/dist/{http-Ddo0ZppP.js → http-05HxN-lp.js} +17 -6
  28. package/dist/{http-BvRfZYTf.cjs → http-BgopPF-8.cjs} +18 -7
  29. package/dist/{http-Cstrlwgg.js → http-CR-Eg1Uq.js} +18 -7
  30. package/dist/{inbox-D2vwgPg3.js → inbox-DcJN1cxM.js} +1 -1
  31. package/dist/{key--6LDhz4H.js → key-BCUd8FWp.js} +4 -4
  32. package/dist/key-BUardnTH.cjs +10 -0
  33. package/dist/{key-s7VkHdD2.js → key-CPJcJjp-.js} +2 -2
  34. package/dist/{key-daNTxBaX.cjs → key-DjS1X9TG.cjs} +2 -2
  35. package/dist/{key-iV9rIe_w.js → key-Dr6H_e3K.js} +3 -3
  36. package/dist/{key-i1AKuYo2.js → key-ibMO03_0.js} +2 -2
  37. package/dist/{keycache-D-5tZgkF.js → keycache-CMUfqYqr.js} +11 -2
  38. package/dist/{keys-CfyZsHFW.js → keys-IZ5050fT.js} +1 -1
  39. package/dist/{ld-D08-gVSY.js → ld-DHNA2RSQ.js} +2 -2
  40. package/dist/{lookup-BY7ipa5A.js → lookup-BMAWLsP2.js} +1 -1
  41. package/dist/{lookup-B8OwEXPT.cjs → lookup-C4_dVYz7.cjs} +1 -1
  42. package/dist/{lookup-DKLV3BDT.js → lookup-CKZfuyxA.js} +1 -1
  43. package/dist/middleware-BJ83veqi.js +26 -0
  44. package/dist/{middleware-BPgbdjdi.cjs → middleware-CGbvIGvy.cjs} +20 -11
  45. package/dist/middleware-CJ4W2ir5.cjs +17 -0
  46. package/dist/{middleware-BU1AB564.js → middleware-DrhEvfTo.js} +13 -13
  47. package/dist/{middleware-DqaAsuyL.js → middleware-ODfDRN3q.js} +20 -11
  48. package/dist/middleware-Ve2mHJgo.js +17 -0
  49. package/dist/mod.cjs +10 -10
  50. package/dist/mod.js +10 -10
  51. package/dist/nodeinfo/client.test.js +5 -5
  52. package/dist/nodeinfo/handler.test.js +16 -16
  53. package/dist/nodeinfo/mod.cjs +2 -2
  54. package/dist/nodeinfo/mod.js +2 -2
  55. package/dist/nodeinfo/semver.test.js +3 -3
  56. package/dist/nodeinfo/types.test.js +3 -3
  57. package/dist/{owner-DwNbDv2o.js → owner-DDHsHYQO.js} +2 -2
  58. package/dist/{proof-Cf8y40Qt.cjs → proof-CX7ujFFX.cjs} +3 -3
  59. package/dist/{proof-D6yDDNPJ.js → proof-V1uQaB2y.js} +3 -3
  60. package/dist/{proof-CesqsPsI.js → proof-exgGRW88.js} +2 -2
  61. package/dist/runtime/authdocloader.test.js +9 -9
  62. package/dist/runtime/docloader.test.js +51 -4
  63. package/dist/runtime/key.test.js +5 -5
  64. package/dist/runtime/langstr.test.js +3 -3
  65. package/dist/runtime/link.test.js +3 -3
  66. package/dist/runtime/mod.cjs +6 -6
  67. package/dist/runtime/mod.js +6 -6
  68. package/dist/runtime/multibase/multibase.test.js +3 -3
  69. package/dist/runtime/url.test.js +3 -3
  70. package/dist/{send-CLRuMS0k.js → send-BfMYakUE.js} +2 -2
  71. package/dist/sig/http.test.js +51 -8
  72. package/dist/sig/key.test.js +6 -6
  73. package/dist/sig/ld.test.js +7 -7
  74. package/dist/sig/mod.cjs +6 -6
  75. package/dist/sig/mod.js +6 -6
  76. package/dist/sig/owner.test.js +7 -7
  77. package/dist/sig/proof.test.js +7 -7
  78. package/dist/testing/docloader.test.js +3 -3
  79. package/dist/testing/mod.js +3 -3
  80. package/dist/{testing-D3joI56Q.js → testing-RPOc_gVG.js} +2 -2
  81. package/dist/{type-CfOWb_f6.js → type-COPv6pMi.js} +216 -196
  82. package/dist/{types-CUQq-S-s.cjs → types-CGnM1vft.cjs} +1 -1
  83. package/dist/{types-C8K_AzLR.js → types-Cptev2nt.js} +1 -1
  84. package/dist/vocab/actor.test.js +5 -5
  85. package/dist/vocab/lookup.test.js +4 -4
  86. package/dist/vocab/mod.cjs +4 -4
  87. package/dist/vocab/mod.js +4 -4
  88. package/dist/vocab/type.test.js +3 -3
  89. package/dist/vocab/vocab.test.js +4 -4
  90. package/dist/{vocab-tt4hGhXv.cjs → vocab-BFy1CS5L.cjs} +3 -3
  91. package/dist/{vocab-YzUIufJF.js → vocab-BPFiQ650.js} +3 -3
  92. package/dist/webfinger/handler.test.js +16 -16
  93. package/dist/webfinger/lookup.test.js +4 -4
  94. package/dist/webfinger/mod.cjs +2 -2
  95. package/dist/webfinger/mod.js +2 -2
  96. package/dist/x/cfworkers.test.js +3 -3
  97. package/package.json +1 -1
  98. package/dist/key-sPbIt6SQ.cjs +0 -10
  99. package/dist/middleware-BNuGkCfG.js +0 -17
  100. package/dist/middleware-BVlxjlGK.js +0 -26
  101. package/dist/middleware-DGlXFNnB.cjs +0 -17
@@ -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-ygR0HOEb.js";
7
- import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-BScoqM7M.js";
8
- import { lookupWebFinger } from "./lookup-DKLV3BDT.js";
9
- import { exportJwk, importJwk, validateCryptoKey } from "./key-i1AKuYo2.js";
10
- import { doubleKnock, verifyRequest } from "./http-Cstrlwgg.js";
11
- import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-D6yDDNPJ.js";
12
- import { getNodeInfo, nodeInfoToJson } from "./types-C8K_AzLR.js";
13
- import { getAuthenticatedDocumentLoader } from "./authdocloader-Dzg6OOeX.js";
14
- import { lookupObject, traverseCollection } from "./vocab-YzUIufJF.js";
6
+ import { deno_default, getDocumentLoader, kvCache } from "./docloader-fJgJeqiX.js";
7
+ import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-CEGEmRll.js";
8
+ import { lookupWebFinger } from "./lookup-CKZfuyxA.js";
9
+ import { exportJwk, importJwk, validateCryptoKey } from "./key-ibMO03_0.js";
10
+ import { doubleKnock, verifyRequest } from "./http-CR-Eg1Uq.js";
11
+ import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-V1uQaB2y.js";
12
+ import { getNodeInfo, nodeInfoToJson } from "./types-Cptev2nt.js";
13
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-DUQcOTRS.js";
14
+ import { lookupObject, traverseCollection } from "./vocab-BPFiQ650.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-BNuGkCfG.js");
347
+ const { FederationImpl: FederationImpl$1 } = await import("./middleware-Ve2mHJgo.js");
348
348
  const f = new FederationImpl$1(options);
349
349
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
350
350
  f.router = this.router.clone();
@@ -912,6 +912,11 @@ async function buildCollectionSynchronizationHeader(collectionId, actorIds) {
912
912
 
913
913
  //#endregion
914
914
  //#region src/federation/keycache.ts
915
+ const NULL_KEY_CACHE_VALUE = { _fedify: "key-unavailable" };
916
+ const NULL_KEY_CACHE_TTL = Temporal.Duration.from({ minutes: 5 });
917
+ function isNullKeyCacheValue(value) {
918
+ return typeof value === "object" && value != null && "_fedify" in value && value._fedify === NULL_KEY_CACHE_VALUE._fedify;
919
+ }
915
920
  var KvKeyCache = class {
916
921
  kv;
917
922
  prefix;
@@ -927,6 +932,10 @@ var KvKeyCache = class {
927
932
  if (this.nullKeys.has(keyId.href)) return null;
928
933
  const serialized = await this.kv.get([...this.prefix, keyId.href]);
929
934
  if (serialized == null) return void 0;
935
+ if (isNullKeyCacheValue(serialized)) {
936
+ this.nullKeys.add(keyId.href);
937
+ return null;
938
+ }
930
939
  try {
931
940
  return await CryptographicKey.fromJsonLd(serialized, this.options);
932
941
  } catch {
@@ -941,7 +950,7 @@ var KvKeyCache = class {
941
950
  async set(keyId, key) {
942
951
  if (key == null) {
943
952
  this.nullKeys.add(keyId.href);
944
- await this.kv.delete([...this.prefix, keyId.href]);
953
+ await this.kv.set([...this.prefix, keyId.href], NULL_KEY_CACHE_VALUE, { ttl: NULL_KEY_CACHE_TTL });
945
954
  return;
946
955
  }
947
956
  this.nullKeys.delete(keyId.href);
@@ -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-fJgJeqiX.js";
7
+ import "./actor-CEGEmRll.js";
8
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-ODfDRN3q.js";
9
+ import "./lookup-CKZfuyxA.js";
10
+ import "./key-ibMO03_0.js";
11
+ import "./http-CR-Eg1Uq.js";
12
+ import "./proof-V1uQaB2y.js";
13
+ import "./types-Cptev2nt.js";
14
+ import "./authdocloader-DUQcOTRS.js";
15
+ import "./vocab-BPFiQ650.js";
16
+
17
+ export { FederationImpl };
package/dist/mod.cjs CHANGED
@@ -4,17 +4,17 @@
4
4
 
5
5
  const require_transformers = require('./transformers-CoBS-oFG.cjs');
6
6
  require('./compat-DmDDELst.cjs');
7
- const require_docloader = require('./docloader-D_YsJgEb.cjs');
8
- const require_actor = require('./actor-Bpeh1XeR.cjs');
9
- const require_middleware = require('./middleware-BPgbdjdi.cjs');
10
- const require_lookup = require('./lookup-B8OwEXPT.cjs');
11
- const require_key = require('./key-daNTxBaX.cjs');
12
- const require_http = require('./http-BvRfZYTf.cjs');
13
- const require_proof = require('./proof-Cf8y40Qt.cjs');
7
+ const require_docloader = require('./docloader-BIFI3OS7.cjs');
8
+ const require_actor = require('./actor-DlS-Q8hE.cjs');
9
+ const require_middleware = require('./middleware-CGbvIGvy.cjs');
10
+ const require_lookup = require('./lookup-C4_dVYz7.cjs');
11
+ const require_key = require('./key-DjS1X9TG.cjs');
12
+ const require_http = require('./http-BgopPF-8.cjs');
13
+ const require_proof = require('./proof-CX7ujFFX.cjs');
14
14
  const require_federation = require('./federation-H2_En3j5.cjs');
15
- const require_types = require('./types-CUQq-S-s.cjs');
16
- const require_authdocloader = require('./authdocloader-Cln84bGw.cjs');
17
- const require_vocab = require('./vocab-tt4hGhXv.cjs');
15
+ const require_types = require('./types-CGnM1vft.cjs');
16
+ const require_authdocloader = require('./authdocloader-CT_V4Z7G.cjs');
17
+ const require_vocab = require('./vocab-BFy1CS5L.cjs');
18
18
  require('./nodeinfo-Co9lJrWl.cjs');
19
19
  require('./runtime-C58AJWSv.cjs');
20
20
  require('./sig-ByHXzqUi.cjs');
package/dist/mod.js CHANGED
@@ -4,17 +4,17 @@
4
4
 
5
5
  import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./transformers-BFT6d7J5.js";
6
6
  import "./compat-nxUqe4Z-.js";
7
- import { FetchError, fetchDocumentLoader, getDocumentLoader, getUserAgent, kvCache } from "./docloader-ygR0HOEb.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-BScoqM7M.js";
9
- import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "./middleware-DqaAsuyL.js";
10
- import { lookupWebFinger } from "./lookup-DKLV3BDT.js";
11
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk } from "./key-i1AKuYo2.js";
12
- import { signRequest, verifyRequest } from "./http-Cstrlwgg.js";
13
- import { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, getKeyOwner, signJsonLd, signObject, verifyJsonLd, verifyObject, verifyProof, verifySignature } from "./proof-D6yDDNPJ.js";
7
+ import { FetchError, fetchDocumentLoader, getDocumentLoader, getUserAgent, kvCache } from "./docloader-fJgJeqiX.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-CEGEmRll.js";
9
+ import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "./middleware-ODfDRN3q.js";
10
+ import { lookupWebFinger } from "./lookup-CKZfuyxA.js";
11
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk } from "./key-ibMO03_0.js";
12
+ import { signRequest, verifyRequest } from "./http-CR-Eg1Uq.js";
13
+ import { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, getKeyOwner, signJsonLd, signObject, verifyJsonLd, verifyObject, verifyProof, verifySignature } from "./proof-V1uQaB2y.js";
14
14
  import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "./federation-D1U8YY9t.js";
15
- import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "./types-C8K_AzLR.js";
16
- import { getAuthenticatedDocumentLoader } from "./authdocloader-Dzg6OOeX.js";
17
- import { PUBLIC_COLLECTION, isFediverseHandle, lookupObject, parseFediverseHandle, toAcctUrl, traverseCollection } from "./vocab-YzUIufJF.js";
15
+ import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "./types-Cptev2nt.js";
16
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-DUQcOTRS.js";
17
+ import { PUBLIC_COLLECTION, isFediverseHandle, lookupObject, parseFediverseHandle, toAcctUrl, traverseCollection } from "./vocab-BPFiQ650.js";
18
18
  import "./nodeinfo-DfycQ8Wf.js";
19
19
  import "./runtime-DPYEDf-o.js";
20
20
  import "./sig-Cj3tk-ig.js";
@@ -3,20 +3,20 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-CfOWb_f6.js";
6
+ import "../type-COPv6pMi.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-BjEfcq0Q.js";
12
- import "../lookup-BY7ipa5A.js";
13
- import { test } from "../testing-D3joI56Q.js";
11
+ import { getNodeInfo, parseInboundService, parseNodeInfo, parseOutboundService, parseProtocol, parseServices, parseSoftware, parseUsage } from "../client-UG5wpNhG.js";
12
+ import "../lookup-BMAWLsP2.js";
13
+ import { test } from "../testing-RPOc_gVG.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-CpGJtXU9.js";
19
+ import { esm_default } from "../esm-C1EfGjSS.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-CfOWb_f6.js";
6
+ import "../type-COPv6pMi.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-BU1AB564.js";
11
+ import { createFederation, handleNodeInfo, handleNodeInfoJrd } from "../middleware-DrhEvfTo.js";
12
12
  import { parseSemVer } from "../semver-dArNLkR9.js";
13
- import "../client-BjEfcq0Q.js";
14
- import "../lookup-BY7ipa5A.js";
13
+ import "../client-UG5wpNhG.js";
14
+ import "../lookup-BMAWLsP2.js";
15
15
  import "../types-BIgY6c-l.js";
16
- import "../actor-EEh71Njb.js";
17
- import "../key-s7VkHdD2.js";
18
- import "../http-Ddo0ZppP.js";
19
- import "../authdocloader-zA6GeFTV.js";
20
- import "../ld-D08-gVSY.js";
21
- import "../owner-DwNbDv2o.js";
22
- import "../proof-CesqsPsI.js";
23
- import "../inbox-D2vwgPg3.js";
24
- import "../builder-vhQAUB_c.js";
16
+ import "../actor-DbpZ6pzg.js";
17
+ import "../key-CPJcJjp-.js";
18
+ import "../http-05HxN-lp.js";
19
+ import "../authdocloader-BLqMyboS.js";
20
+ import "../ld-DHNA2RSQ.js";
21
+ import "../owner-DDHsHYQO.js";
22
+ import "../proof-exgGRW88.js";
23
+ import "../inbox-DcJN1cxM.js";
24
+ import "../builder-BO61xeXE.js";
25
25
  import "../collection-CSzG2j1P.js";
26
- import "../keycache-D-5tZgkF.js";
26
+ import "../keycache-CMUfqYqr.js";
27
27
  import "../retry-D4GJ670a.js";
28
- import "../send-CLRuMS0k.js";
29
- import { createRequestContext, test } from "../testing-D3joI56Q.js";
28
+ import "../send-BfMYakUE.js";
29
+ import { createRequestContext, test } from "../testing-RPOc_gVG.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
  const { Temporal } = require("@js-temporal/polyfill");
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
- require('../docloader-D_YsJgEb.cjs');
6
- const require_types = require('../types-CUQq-S-s.cjs');
5
+ require('../docloader-BIFI3OS7.cjs');
6
+ const require_types = require('../types-CGnM1vft.cjs');
7
7
  require('../nodeinfo-Co9lJrWl.cjs');
8
8
 
9
9
  exports.formatSemVer = require_types.formatSemVer;
@@ -2,8 +2,8 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import "../docloader-ygR0HOEb.js";
6
- import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "../types-C8K_AzLR.js";
5
+ import "../docloader-fJgJeqiX.js";
6
+ import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "../types-Cptev2nt.js";
7
7
  import "../nodeinfo-DfycQ8Wf.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-CfOWb_f6.js";
6
+ import "../type-COPv6pMi.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-BY7ipa5A.js";
12
- import { test } from "../testing-D3joI56Q.js";
11
+ import "../lookup-BMAWLsP2.js";
12
+ import { test } from "../testing-RPOc_gVG.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-CfOWb_f6.js";
6
+ import "../type-COPv6pMi.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-BY7ipa5A.js";
11
+ import "../lookup-BMAWLsP2.js";
12
12
  import { nodeInfoToJson } from "../types-BIgY6c-l.js";
13
- import { test } from "../testing-D3joI56Q.js";
13
+ import { test } from "../testing-RPOc_gVG.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-CfOWb_f6.js";
7
- import { isActor } from "./actor-EEh71Njb.js";
6
+ import { CryptographicKey, Object as Object$1, getDocumentLoader } from "./type-COPv6pMi.js";
7
+ import { isActor } from "./actor-DbpZ6pzg.js";
8
8
  import { trace } from "@opentelemetry/api";
9
9
 
10
10
  //#region src/sig/owner.ts
@@ -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-D_YsJgEb.cjs');
7
- const require_actor = require('./actor-Bpeh1XeR.cjs');
8
- const require_key = require('./key-daNTxBaX.cjs');
6
+ const require_docloader = require('./docloader-BIFI3OS7.cjs');
7
+ const require_actor = require('./actor-DlS-Q8hE.cjs');
8
+ const require_key = require('./key-DjS1X9TG.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 jsonld = require_chunk.__toESM(require("jsonld"));
@@ -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-ygR0HOEb.js";
6
- import { Activity, CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1, getTypeId, isActor } from "./actor-BScoqM7M.js";
7
- import { fetchKey, validateCryptoKey } from "./key-i1AKuYo2.js";
5
+ import { deno_default, getDocumentLoader } from "./docloader-fJgJeqiX.js";
6
+ import { Activity, CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1, getTypeId, isActor } from "./actor-CEGEmRll.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-ibMO03_0.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
10
10
  import jsonld from "jsonld";
@@ -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-CfOWb_f6.js";
7
- import { fetchKey, validateCryptoKey } from "./key-s7VkHdD2.js";
6
+ import { Activity, DataIntegrityProof, Multikey, deno_default, getTypeId } from "./type-COPv6pMi.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-CPJcJjp-.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
10
10
  import { encodeHex } from "byte-encodings/hex";
@@ -3,23 +3,23 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { UrlError } from "../type-CfOWb_f6.js";
6
+ import { UrlError } from "../type-COPv6pMi.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-BY7ipa5A.js";
11
- import "../actor-EEh71Njb.js";
12
- import "../key-s7VkHdD2.js";
13
- import { verifyRequest } from "../http-Ddo0ZppP.js";
14
- import { getAuthenticatedDocumentLoader } from "../authdocloader-zA6GeFTV.js";
15
- import { mockDocumentLoader, test } from "../testing-D3joI56Q.js";
10
+ import "../lookup-BMAWLsP2.js";
11
+ import "../actor-DbpZ6pzg.js";
12
+ import "../key-CPJcJjp-.js";
13
+ import { verifyRequest } from "../http-05HxN-lp.js";
14
+ import { getAuthenticatedDocumentLoader } from "../authdocloader-BLqMyboS.js";
15
+ import { mockDocumentLoader, test } from "../testing-RPOc_gVG.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-CfyZsHFW.js";
22
- import { esm_default } from "../esm-CpGJtXU9.js";
21
+ import { rsaPrivateKey2 } from "../keys-IZ5050fT.js";
22
+ import { esm_default } from "../esm-C1EfGjSS.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-CfOWb_f6.js";
6
+ import { FetchError, UrlError, contexts_default, deno_default, getDocumentLoader, getUserAgent, kvCache } from "../type-COPv6pMi.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
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import "../lookup-BY7ipa5A.js";
12
- import { mockDocumentLoader, test } from "../testing-D3joI56Q.js";
11
+ import "../lookup-BMAWLsP2.js";
12
+ import { mockDocumentLoader, test } from "../testing-RPOc_gVG.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-CpGJtXU9.js";
18
+ import { esm_default } from "../esm-C1EfGjSS.js";
19
19
  import process from "node:process";
20
20
 
21
21
  //#region src/runtime/docloader.test.ts
@@ -286,6 +286,53 @@ test("getDocumentLoader()", async (t) => {
286
286
  assertEquals(await fetchDocumentLoader2("https://example.com/localhost-redirect"), expected);
287
287
  assertEquals(await fetchDocumentLoader2("https://example.com/localhost-link"), expected);
288
288
  });
289
+ let redirectAttempts = 0;
290
+ esm_default.get("begin:https://example.com/too-many-redirects/", (cl) => {
291
+ redirectAttempts++;
292
+ const index = Number(cl.url.split("/").at(-1));
293
+ return {
294
+ status: 302,
295
+ headers: { Location: `https://example.com/too-many-redirects/${index + 1}` }
296
+ };
297
+ });
298
+ await t.step("too many redirects", async () => {
299
+ redirectAttempts = 0;
300
+ await assertRejects(() => fetchDocumentLoader("https://example.com/too-many-redirects/0"), FetchError, "Too many redirections");
301
+ assertEquals(redirectAttempts, 21);
302
+ });
303
+ let loopAttempts = 0;
304
+ esm_default.get("https://example.com/redirect-loop-a", () => {
305
+ loopAttempts++;
306
+ return {
307
+ status: 302,
308
+ headers: { Location: "https://example.com/redirect-loop-b" }
309
+ };
310
+ });
311
+ esm_default.get("https://example.com/redirect-loop-b", () => {
312
+ loopAttempts++;
313
+ return {
314
+ status: 302,
315
+ headers: { Location: "https://example.com/redirect-loop-a" }
316
+ };
317
+ });
318
+ await t.step("redirect loop", async () => {
319
+ loopAttempts = 0;
320
+ await assertRejects(() => fetchDocumentLoader("https://example.com/redirect-loop-a"), FetchError, "Redirect loop detected");
321
+ assertEquals(loopAttempts, 2);
322
+ });
323
+ let relativeLoopAttempts = 0;
324
+ esm_default.get("https://example.com/redirect-loop-relative", () => {
325
+ relativeLoopAttempts++;
326
+ return {
327
+ status: 302,
328
+ headers: { Location: "/redirect-loop-relative" }
329
+ };
330
+ });
331
+ await t.step("redirect loop with relative location", async () => {
332
+ relativeLoopAttempts = 0;
333
+ await assertRejects(() => fetchDocumentLoader("https://example.com/redirect-loop-relative"), FetchError, "Redirect loop detected");
334
+ assertEquals(relativeLoopAttempts, 1);
335
+ });
289
336
  const maliciousPayload = "<a" + " a=\"b\"".repeat(30) + " ";
290
337
  esm_default.get("https://example.com/redos", {
291
338
  body: maliciousPayload,
@@ -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-CfOWb_f6.js";
6
+ import { exportMultibaseKey, exportSpki, importMultibaseKey, importPem, importPkcs1, importSpki } from "../type-COPv6pMi.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-BY7ipa5A.js";
11
- import "../actor-EEh71Njb.js";
12
- import { exportJwk, importJwk } from "../key-s7VkHdD2.js";
13
- import { test } from "../testing-D3joI56Q.js";
10
+ import "../lookup-BMAWLsP2.js";
11
+ import "../actor-DbpZ6pzg.js";
12
+ import { exportJwk, importJwk } from "../key-CPJcJjp-.js";
13
+ import { test } from "../testing-RPOc_gVG.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,12 +3,12 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { LanguageString } from "../type-CfOWb_f6.js";
6
+ import { LanguageString } from "../type-COPv6pMi.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-BY7ipa5A.js";
11
- import { test } from "../testing-D3joI56Q.js";
10
+ import "../lookup-BMAWLsP2.js";
11
+ import { test } from "../testing-RPOc_gVG.js";
12
12
  import "../std__assert-X-_kMxKM.js";
13
13
  import "../assert_rejects-DiIiJbZn.js";
14
14
  import "../assert_is_error-BPGph1Jx.js";
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { HttpHeaderLink } from "../type-CfOWb_f6.js";
7
- import "../lookup-BY7ipa5A.js";
8
- import { test } from "../testing-D3joI56Q.js";
6
+ import { HttpHeaderLink } from "../type-COPv6pMi.js";
7
+ import "../lookup-BMAWLsP2.js";
8
+ import { test } from "../testing-RPOc_gVG.js";
9
9
  import { deepStrictEqual, throws } from "node:assert";
10
10
 
11
11
  //#region src/runtime/link.test.ts
@@ -2,12 +2,12 @@
2
2
  const { Temporal } = require("@js-temporal/polyfill");
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
- const require_docloader = require('../docloader-D_YsJgEb.cjs');
6
- const require_actor = require('../actor-Bpeh1XeR.cjs');
7
- require('../lookup-B8OwEXPT.cjs');
8
- require('../key-daNTxBaX.cjs');
9
- require('../http-BvRfZYTf.cjs');
10
- const require_authdocloader = require('../authdocloader-Cln84bGw.cjs');
5
+ const require_docloader = require('../docloader-BIFI3OS7.cjs');
6
+ const require_actor = require('../actor-DlS-Q8hE.cjs');
7
+ require('../lookup-C4_dVYz7.cjs');
8
+ require('../key-DjS1X9TG.cjs');
9
+ require('../http-BgopPF-8.cjs');
10
+ const require_authdocloader = require('../authdocloader-CT_V4Z7G.cjs');
11
11
  require('../runtime-C58AJWSv.cjs');
12
12
 
13
13
  exports.FetchError = require_docloader.FetchError;
@@ -2,12 +2,12 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { FetchError, fetchDocumentLoader, getDocumentLoader, getUserAgent, kvCache } from "../docloader-ygR0HOEb.js";
6
- import { LanguageString, exportMultibaseKey, exportSpki, importMultibaseKey, importPem, importPkcs1, importSpki } from "../actor-BScoqM7M.js";
7
- import "../lookup-DKLV3BDT.js";
8
- import "../key-i1AKuYo2.js";
9
- import "../http-Cstrlwgg.js";
10
- import { getAuthenticatedDocumentLoader } from "../authdocloader-Dzg6OOeX.js";
5
+ import { FetchError, fetchDocumentLoader, getDocumentLoader, getUserAgent, kvCache } from "../docloader-fJgJeqiX.js";
6
+ import { LanguageString, exportMultibaseKey, exportSpki, importMultibaseKey, importPem, importPkcs1, importSpki } from "../actor-CEGEmRll.js";
7
+ import "../lookup-CKZfuyxA.js";
8
+ import "../key-ibMO03_0.js";
9
+ import "../http-CR-Eg1Uq.js";
10
+ import { getAuthenticatedDocumentLoader } from "../authdocloader-DUQcOTRS.js";
11
11
  import "../runtime-DPYEDf-o.js";
12
12
 
13
13
  export { FetchError, LanguageString, exportMultibaseKey, exportSpki, fetchDocumentLoader, getAuthenticatedDocumentLoader, getDocumentLoader, getUserAgent, importMultibaseKey, importPem, importPkcs1, importSpki, kvCache };
@@ -3,12 +3,12 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { codes, decode, decodeText, encode, encodeText, names } from "../../type-CfOWb_f6.js";
6
+ import { codes, decode, decodeText, encode, encodeText, names } from "../../type-COPv6pMi.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-BY7ipa5A.js";
11
- import { test } from "../../testing-D3joI56Q.js";
10
+ import "../../lookup-BMAWLsP2.js";
11
+ import { test } from "../../testing-RPOc_gVG.js";
12
12
  import "../../std__assert-X-_kMxKM.js";
13
13
  import "../../assert_rejects-DiIiJbZn.js";
14
14
  import "../../assert_is_error-BPGph1Jx.js";
@@ -3,11 +3,11 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { UrlError, expandIPv6Address, isValidPublicIPv4Address, isValidPublicIPv6Address, validatePublicUrl } from "../type-CfOWb_f6.js";
6
+ import { UrlError, expandIPv6Address, isValidPublicIPv4Address, isValidPublicIPv6Address, validatePublicUrl } from "../type-COPv6pMi.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
- import "../lookup-BY7ipa5A.js";
10
- import { test } from "../testing-D3joI56Q.js";
9
+ import "../lookup-BMAWLsP2.js";
10
+ import { test } from "../testing-RPOc_gVG.js";
11
11
  import { assertFalse, assertRejects } from "../assert_rejects-DiIiJbZn.js";
12
12
  import "../assert_is_error-BPGph1Jx.js";
13
13
 
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./type-CfOWb_f6.js";
7
- import { doubleKnock } from "./http-Ddo0ZppP.js";
6
+ import { deno_default } from "./type-COPv6pMi.js";
7
+ import { doubleKnock } from "./http-05HxN-lp.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
10
10