@fedify/fedify 1.6.4 → 1.7.0-dev.888

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 (108) hide show
  1. package/dist/{actor-BfzxE2QN.js → actor-D_TAErPk.js} +184 -199
  2. package/dist/{actor-CHPy3MD6.js → actor-DtsixKAW.js} +3 -3
  3. package/dist/{assert-0DSnLFa8.js → assert-YJk-1DlZ.js} +1 -1
  4. package/dist/{assert_equals-XhPMqqO2.js → assert_equals-Dnj7ejjL.js} +7 -19
  5. package/dist/{assert_instance_of-v5adm_-K.js → assert_instance_of-DBIoG5k7.js} +1 -1
  6. package/dist/{assert_is_error-Drwb_yQp.js → assert_is_error-jyzqjHud.js} +1 -1
  7. package/dist/{assert_not_equals-BRPdeJ9D.js → assert_not_equals-wx-SRs4i.js} +1 -1
  8. package/dist/{assert_rejects-D_nYI1gs.js → assert_rejects-BZjUwo62.js} +2 -2
  9. package/dist/{assert_throws-DNuPhPNp.js → assert_throws-gBPv3v2V.js} +2 -2
  10. package/dist/{authdocloader-8yB-xGBR.js → authdocloader-Cj8NhE13.js} +3 -3
  11. package/dist/{authdocloader-qBxZEEi9.js → authdocloader-D3lP3oQJ.js} +3 -3
  12. package/dist/{builder-NApTRrpC.js → builder-q1rdJ7Qu.js} +3 -3
  13. package/dist/{client-DFAp6PBu.js → client-DUX3b6Xa.js} +2 -2
  14. package/dist/compat/mod.d.ts +3 -3
  15. package/dist/compat/transformers.test.js +23 -23
  16. package/dist/{context-DPm_2m4V.js → context-CJunwlbH.js} +2 -2
  17. package/dist/{context-DRhhOsMk.d.ts → context-DdICJaUT.d.ts} +1 -1
  18. package/dist/{denokv-B_GFWjrl.js → denokv-CvROlGYX.js} +5 -0
  19. package/dist/{docloader-Chzwgszm.js → docloader-CD0wlEX1.js} +1 -1
  20. package/dist/{docloader-BGQB_PFT.js → docloader-D933g4kZ.js} +1 -1
  21. package/dist/{esm-CASHO3OR.js → esm-Btx3E8og.js} +12 -18
  22. package/dist/federation/builder.test.js +14 -14
  23. package/dist/federation/collection.test.js +9 -9
  24. package/dist/federation/handler.test.js +31 -34
  25. package/dist/federation/inbox.test.js +7 -7
  26. package/dist/federation/keycache.test.js +7 -7
  27. package/dist/federation/kv.test.js +9 -9
  28. package/dist/federation/middleware.test.js +167 -31
  29. package/dist/federation/mod.d.ts +2 -2
  30. package/dist/federation/mod.js +11 -11
  31. package/dist/federation/mq.test.js +66 -10
  32. package/dist/federation/retry.test.js +3 -3
  33. package/dist/federation/router.test.js +9 -9
  34. package/dist/federation/send.test.js +19 -19
  35. package/dist/{federation-3B6BDKCK.js → federation-lZOZyLAo.js} +11 -0
  36. package/dist/{http-DJcO8N65.js → http-CQmvdqnv.js} +9 -23
  37. package/dist/{http-CoPwpYGd.js → http-fivRSxPO.js} +9 -23
  38. package/dist/{inbox-CL7Y2POM.js → inbox-Dxm3dzXC.js} +2 -2
  39. package/dist/{key-vNs-KWCR.js → key-8FgmjBQw.js} +2 -2
  40. package/dist/{key-5iwxfdk7.js → key-Bd9x5bZc.js} +3 -3
  41. package/dist/{key-BQEmzABV.js → key-CDrBZp4z.js} +4 -4
  42. package/dist/{key-dki_alWE.js → key-DA2WNLBR.js} +5 -5
  43. package/dist/{keycache-oIWQCIss.js → keycache-DpxW9Koh.js} +1 -1
  44. package/dist/{keys-BF9Wnizj.js → keys-B0uS_qcm.js} +1 -1
  45. package/dist/{ld-Bro1OUaC.js → ld-EwYuTK6H.js} +3 -3
  46. package/dist/{lookup-DVLRiy-x.js → lookup-DEkWpnDW.js} +1 -1
  47. package/dist/{lookup-BE2D88-F.js → lookup-DF-Kf8aT.js} +1 -1
  48. package/dist/{lookup-BNZr2r1q.js → lookup-DJEy1utC.js} +3 -3
  49. package/dist/{middleware-BoJeFg8A.js → middleware-BP-bBD2r.js} +37 -16
  50. package/dist/{middleware-DIMI9i2M.js → middleware-CQ7qEYyO.js} +31 -10
  51. package/dist/middleware-CWgW_9AC.js +17 -0
  52. package/dist/middleware-D9gKZ14Q.js +33 -0
  53. package/dist/{mod-CgmTOt4z.d.ts → mod-5orySGMZ.d.ts} +1 -1
  54. package/dist/mod.d.ts +3 -3
  55. package/dist/mod.js +11 -11
  56. package/dist/{mq-nceTGCuc.d.ts → mq-DYKDDJmp.d.ts} +20 -0
  57. package/dist/nodeinfo/client.test.js +13 -13
  58. package/dist/nodeinfo/handler.test.js +29 -29
  59. package/dist/nodeinfo/mod.js +2 -2
  60. package/dist/nodeinfo/semver.test.js +10 -10
  61. package/dist/nodeinfo/types.test.js +11 -11
  62. package/dist/{owner-B5psHPX0.js → owner-Cc4nwvMO.js} +3 -3
  63. package/dist/{proof-Bxho-Eev.js → proof-CQOQgQLC.js} +3 -3
  64. package/dist/{proof-Ck9qUTzW.js → proof-dej36xUb.js} +3 -3
  65. package/dist/runtime/authdocloader.test.js +18 -18
  66. package/dist/runtime/docloader.test.js +11 -11
  67. package/dist/runtime/key.test.js +14 -14
  68. package/dist/runtime/langstr.test.js +9 -9
  69. package/dist/runtime/mod.js +6 -6
  70. package/dist/runtime/multibase/multibase.test.js +9 -9
  71. package/dist/runtime/url.test.js +5 -5
  72. package/dist/{semver-DWClQt_5.js → semver-CbbIgUsa.js} +2 -2
  73. package/dist/{send-D4-hN_vq.js → send-Cs6hGpVz.js} +2 -2
  74. package/dist/sig/http.test.js +23 -51
  75. package/dist/sig/key.test.js +15 -15
  76. package/dist/sig/ld.test.js +13 -13
  77. package/dist/sig/mod.js +6 -6
  78. package/dist/sig/owner.test.js +17 -17
  79. package/dist/sig/proof.test.js +17 -17
  80. package/dist/{std__assert-CmyZxqPw.js → std__assert-CHXwj7zk.js} +1 -1
  81. package/dist/testing/docloader.test.js +9 -9
  82. package/dist/testing/mod.js +1 -1
  83. package/dist/{testing-BZ0dJ4qn.js → testing-jcGLO9Lp.js} +1 -1
  84. package/dist/{types-BaxpHQDE.js → types-Bn2FleIz.js} +3 -3
  85. package/dist/{types-C7C_l-jz.js → types-CqoqWDkp.js} +1 -1
  86. package/dist/vocab/actor.test.js +15 -15
  87. package/dist/vocab/announce.yaml +1 -3
  88. package/dist/vocab/create.yaml +1 -3
  89. package/dist/vocab/delete.yaml +1 -3
  90. package/dist/vocab/lookup.test.js +14 -14
  91. package/dist/vocab/mod.js +4 -4
  92. package/dist/vocab/question.yaml +1 -3
  93. package/dist/vocab/type.test.js +4 -4
  94. package/dist/vocab/update.yaml +1 -3
  95. package/dist/vocab/vocab.test.js +34 -37
  96. package/dist/{vocab-Bcgf3ubZ.js → vocab-BKrOvMEW.js} +3 -3
  97. package/dist/{vocab-DrV5TQKL.js → vocab-BeUz_sCd.js} +184 -199
  98. package/dist/webfinger/handler.test.js +29 -29
  99. package/dist/webfinger/lookup.test.js +12 -12
  100. package/dist/webfinger/mod.js +2 -2
  101. package/dist/x/cfworkers.d.ts +7 -1
  102. package/dist/x/cfworkers.js +6 -0
  103. package/dist/x/cfworkers.test.js +15 -9
  104. package/dist/x/hono.d.ts +2 -2
  105. package/dist/x/sveltekit.d.ts +2 -2
  106. package/package.json +1 -1
  107. package/dist/middleware-30sYf6H-.js +0 -17
  108. package/dist/middleware-DvIti4UE.js +0 -33
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./docloader-Chzwgszm.js";
7
- import { CryptographicKey } from "./vocab-DrV5TQKL.js";
8
- import { fetchKey, validateCryptoKey } from "./key-5iwxfdk7.js";
6
+ import { deno_default } from "./docloader-CD0wlEX1.js";
7
+ import { CryptographicKey } from "./vocab-BeUz_sCd.js";
8
+ import { fetchKey, validateCryptoKey } from "./key-Bd9x5bZc.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { SpanStatusCode, trace } from "@opentelemetry/api";
11
11
  import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } from "@opentelemetry/semantic-conventions";
@@ -212,15 +212,10 @@ async function signRequestRfc9421(request, privateKey, keyId, span, currentTime)
212
212
  keyId,
213
213
  created
214
214
  });
215
- let signatureBase;
216
- try {
217
- signatureBase = createRfc9421SignatureBase(new Request(request.url, {
218
- method: request.method,
219
- headers
220
- }), components, signatureParams);
221
- } catch (error) {
222
- throw new TypeError(`Failed to create signature base: ${String(error)}; it is probably a bug in the implementation. Please report it at Fedify's issue tracker.`);
223
- }
215
+ const signatureBase = createRfc9421SignatureBase(new Request(request.url, {
216
+ method: request.method,
217
+ headers
218
+ }), components, signatureParams);
224
219
  const signatureBytes = await crypto.subtle.sign("RSASSA-PKCS1-v1_5", privateKey, new TextEncoder().encode(signatureBase));
225
220
  const [signatureInput, signature] = formatRfc9421Signature(signatureBytes, components, signatureParams);
226
221
  headers.set("Signature-Input", signatureInput);
@@ -600,16 +595,7 @@ async function verifyRequestRfc9421(request, span, { documentLoader, contextLoad
600
595
  });
601
596
  continue;
602
597
  }
603
- let signatureBase;
604
- try {
605
- signatureBase = createRfc9421SignatureBase(request, sigInput.components, sigInput.parameters);
606
- } catch (error) {
607
- logger.debug("Failed to create signature base for verification: {error}", {
608
- error,
609
- signatureInput: sigInput
610
- });
611
- continue;
612
- }
598
+ const signatureBase = createRfc9421SignatureBase(request, sigInput.components, sigInput.parameters);
613
599
  const signatureBaseBytes = new TextEncoder().encode(signatureBase);
614
600
  span?.setAttribute("http_signatures.signature", encodeHex(sigBytes));
615
601
  try {
@@ -680,7 +666,7 @@ async function doubleKnock(request, identity, options = {}) {
680
666
  integrity: request.integrity,
681
667
  keepalive: request.keepalive
682
668
  }), identity, options);
683
- } else if (response.status === 400 || response.status === 401 || response.status > 401) {
669
+ } else if (response.status === 400 || response.status === 401) {
684
670
  const spec = firstTrySpec === "draft-cavage-http-signatures-12" ? "rfc9421" : "draft-cavage-http-signatures-12";
685
671
  getLogger([
686
672
  "fedify",
@@ -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-BGQB_PFT.js";
6
- import { CryptographicKey } from "./actor-BfzxE2QN.js";
7
- import { fetchKey, validateCryptoKey } from "./key-vNs-KWCR.js";
5
+ import { deno_default } from "./docloader-D933g4kZ.js";
6
+ import { CryptographicKey } from "./actor-D_TAErPk.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-8FgmjBQw.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";
@@ -211,15 +211,10 @@ async function signRequestRfc9421(request, privateKey, keyId, span, currentTime)
211
211
  keyId,
212
212
  created
213
213
  });
214
- let signatureBase;
215
- try {
216
- signatureBase = createRfc9421SignatureBase(new Request(request.url, {
217
- method: request.method,
218
- headers
219
- }), components, signatureParams);
220
- } catch (error) {
221
- throw new TypeError(`Failed to create signature base: ${String(error)}; it is probably a bug in the implementation. Please report it at Fedify's issue tracker.`);
222
- }
214
+ const signatureBase = createRfc9421SignatureBase(new Request(request.url, {
215
+ method: request.method,
216
+ headers
217
+ }), components, signatureParams);
223
218
  const signatureBytes = await crypto.subtle.sign("RSASSA-PKCS1-v1_5", privateKey, new TextEncoder().encode(signatureBase));
224
219
  const [signatureInput, signature] = formatRfc9421Signature(signatureBytes, components, signatureParams);
225
220
  headers.set("Signature-Input", signatureInput);
@@ -599,16 +594,7 @@ async function verifyRequestRfc9421(request, span, { documentLoader, contextLoad
599
594
  });
600
595
  continue;
601
596
  }
602
- let signatureBase;
603
- try {
604
- signatureBase = createRfc9421SignatureBase(request, sigInput.components, sigInput.parameters);
605
- } catch (error) {
606
- logger.debug("Failed to create signature base for verification: {error}", {
607
- error,
608
- signatureInput: sigInput
609
- });
610
- continue;
611
- }
597
+ const signatureBase = createRfc9421SignatureBase(request, sigInput.components, sigInput.parameters);
612
598
  const signatureBaseBytes = new TextEncoder().encode(signatureBase);
613
599
  span?.setAttribute("http_signatures.signature", encodeHex(sigBytes));
614
600
  try {
@@ -679,7 +665,7 @@ async function doubleKnock(request, identity, options = {}) {
679
665
  integrity: request.integrity,
680
666
  keepalive: request.keepalive
681
667
  }), identity, options);
682
- } else if (response.status === 400 || response.status === 401 || response.status > 401) {
668
+ } else if (response.status === 400 || response.status === 401) {
683
669
  const spec = firstTrySpec === "draft-cavage-http-signatures-12" ? "rfc9421" : "draft-cavage-http-signatures-12";
684
670
  getLogger([
685
671
  "fedify",
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./docloader-Chzwgszm.js";
7
- import { Activity } from "./vocab-DrV5TQKL.js";
6
+ import { deno_default } from "./docloader-CD0wlEX1.js";
7
+ import { Activity } from "./vocab-BeUz_sCd.js";
8
8
  import { getTypeId } from "./type-D2s5lmbZ.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
@@ -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-BGQB_PFT.js";
6
- import { CryptographicKey, Object as Object$1, isActor } from "./actor-BfzxE2QN.js";
5
+ import { deno_default, getDocumentLoader } from "./docloader-D933g4kZ.js";
6
+ import { CryptographicKey, Object as Object$1, isActor } from "./actor-D_TAErPk.js";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
9
9
 
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default, getDocumentLoader } from "./docloader-Chzwgszm.js";
7
- import { CryptographicKey, Object as Object$1 } from "./vocab-DrV5TQKL.js";
8
- import { isActor } from "./actor-CHPy3MD6.js";
6
+ import { deno_default, getDocumentLoader } from "./docloader-CD0wlEX1.js";
7
+ import { CryptographicKey, Object as Object$1 } from "./vocab-BeUz_sCd.js";
8
+ import { isActor } from "./actor-DtsixKAW.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
11
11
 
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import "./docloader-BGQB_PFT.js";
6
- import "./actor-BfzxE2QN.js";
7
- import "./lookup-DVLRiy-x.js";
8
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-vNs-KWCR.js";
5
+ import "./docloader-D933g4kZ.js";
6
+ import "./actor-D_TAErPk.js";
7
+ import "./lookup-DEkWpnDW.js";
8
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-8FgmjBQw.js";
9
9
 
10
10
  export { validateCryptoKey };
@@ -3,14 +3,14 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "./docloader-Chzwgszm.js";
6
+ import "./docloader-CD0wlEX1.js";
7
7
  import "./url-kTAI6_KP.js";
8
8
  import "./multibase-DeCHcK8L.js";
9
- import "./vocab-DrV5TQKL.js";
9
+ import "./vocab-BeUz_sCd.js";
10
10
  import "./langstr-DbWheeIS.js";
11
- import "./lookup-BE2D88-F.js";
11
+ import "./lookup-DF-Kf8aT.js";
12
12
  import "./type-D2s5lmbZ.js";
13
- import "./actor-CHPy3MD6.js";
14
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-5iwxfdk7.js";
13
+ import "./actor-DtsixKAW.js";
14
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-Bd9x5bZc.js";
15
15
 
16
16
  export { validateCryptoKey };
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Multikey } from "./vocab-DrV5TQKL.js";
6
+ import { CryptographicKey, Multikey } from "./vocab-BeUz_sCd.js";
7
7
 
8
8
  //#region 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 "./vocab-DrV5TQKL.js";
6
+ import { CryptographicKey, Multikey, importSpki } from "./vocab-BeUz_sCd.js";
7
7
 
8
8
  //#region testing/keys.ts
9
9
  const rsaPublicKey1 = new CryptographicKey({
@@ -3,10 +3,10 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default, getDocumentLoader } from "./docloader-Chzwgszm.js";
7
- import { Activity, CryptographicKey, Object as Object$1 } from "./vocab-DrV5TQKL.js";
6
+ import { deno_default, getDocumentLoader } from "./docloader-CD0wlEX1.js";
7
+ import { Activity, CryptographicKey, Object as Object$1 } from "./vocab-BeUz_sCd.js";
8
8
  import { getTypeId } from "./type-D2s5lmbZ.js";
9
- import { fetchKey, validateCryptoKey } from "./key-5iwxfdk7.js";
9
+ import { fetchKey, validateCryptoKey } from "./key-Bd9x5bZc.js";
10
10
  import { getLogger } from "@logtape/logtape";
11
11
  import { SpanStatusCode, trace } from "@opentelemetry/api";
12
12
  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-BGQB_PFT.js";
5
+ import { UrlError, deno_default, getUserAgent, validatePublicUrl } from "./docloader-D933g4kZ.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 { deno_default, getUserAgent } from "./docloader-Chzwgszm.js";
6
+ import { deno_default, getUserAgent } from "./docloader-CD0wlEX1.js";
7
7
  import { UrlError, validatePublicUrl } from "./url-kTAI6_KP.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default, getDocumentLoader } from "./docloader-Chzwgszm.js";
7
- import { Object as Object$1 } from "./vocab-DrV5TQKL.js";
8
- import { lookupWebFinger } from "./lookup-BE2D88-F.js";
6
+ import { deno_default, getDocumentLoader } from "./docloader-CD0wlEX1.js";
7
+ import { Object as Object$1 } from "./vocab-BeUz_sCd.js";
8
+ import { lookupWebFinger } from "./lookup-DF-Kf8aT.js";
9
9
  import { getTypeId } from "./type-D2s5lmbZ.js";
10
10
  import { getLogger } from "@logtape/logtape";
11
11
  import { SpanStatusCode, trace } from "@opentelemetry/api";
@@ -3,26 +3,26 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default, getDocumentLoader, kvCache } from "./docloader-Chzwgszm.js";
7
- import { getNodeInfo } from "./client-DFAp6PBu.js";
6
+ import { deno_default, getDocumentLoader, kvCache } from "./docloader-CD0wlEX1.js";
7
+ import { getNodeInfo } from "./client-DUX3b6Xa.js";
8
8
  import { RouterError } from "./router-D_aVZZUc.js";
9
- import { nodeInfoToJson } from "./types-C7C_l-jz.js";
10
- import { Activity, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage } from "./vocab-DrV5TQKL.js";
11
- import { lookupWebFinger } from "./lookup-BE2D88-F.js";
9
+ import { nodeInfoToJson } from "./types-CqoqWDkp.js";
10
+ import { Activity, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage } from "./vocab-BeUz_sCd.js";
11
+ import { lookupWebFinger } from "./lookup-DF-Kf8aT.js";
12
12
  import { getTypeId } from "./type-D2s5lmbZ.js";
13
- import { exportJwk, importJwk, validateCryptoKey } from "./key-5iwxfdk7.js";
14
- import { verifyRequest } from "./http-DJcO8N65.js";
15
- import { getAuthenticatedDocumentLoader } from "./authdocloader-qBxZEEi9.js";
16
- import { detachSignature, hasSignature, signJsonLd, verifyJsonLd } from "./ld-Bro1OUaC.js";
17
- import { doesActorOwnKey, getKeyOwner } from "./owner-B5psHPX0.js";
18
- import { signObject, verifyObject } from "./proof-Ck9qUTzW.js";
19
- import { lookupObject, traverseCollection } from "./lookup-BNZr2r1q.js";
20
- import { routeActivity } from "./inbox-CL7Y2POM.js";
21
- import { FederationBuilderImpl } from "./builder-NApTRrpC.js";
13
+ import { exportJwk, importJwk, validateCryptoKey } from "./key-Bd9x5bZc.js";
14
+ import { verifyRequest } from "./http-CQmvdqnv.js";
15
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-D3lP3oQJ.js";
16
+ import { detachSignature, hasSignature, signJsonLd, verifyJsonLd } from "./ld-EwYuTK6H.js";
17
+ import { doesActorOwnKey, getKeyOwner } from "./owner-Cc4nwvMO.js";
18
+ import { signObject, verifyObject } from "./proof-dej36xUb.js";
19
+ import { lookupObject, traverseCollection } from "./lookup-DJEy1utC.js";
20
+ import { routeActivity } from "./inbox-Dxm3dzXC.js";
21
+ import { FederationBuilderImpl } from "./builder-q1rdJ7Qu.js";
22
22
  import { buildCollectionSynchronizationHeader } from "./collection-Dfb0TPno.js";
23
- import { KvKeyCache } from "./keycache-oIWQCIss.js";
23
+ import { KvKeyCache } from "./keycache-DpxW9Koh.js";
24
24
  import { createExponentialBackoffPolicy } from "./retry-BiIhZWgD.js";
25
- import { extractInboxes, sendActivity } from "./send-D4-hN_vq.js";
25
+ import { extractInboxes, sendActivity } from "./send-Cs6hGpVz.js";
26
26
  import { getLogger, withContext } from "@logtape/logtape";
27
27
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
28
28
  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";
@@ -1185,6 +1185,13 @@ var FederationImpl = class extends FederationBuilderImpl {
1185
1185
  error: error$1
1186
1186
  });
1187
1187
  }
1188
+ if (this.outboxQueue?.nativeRetrial) {
1189
+ logger$2.error("Failed to send activity {activityId} to {inbox}; backend will handle retry:\n{error}", {
1190
+ ...logData,
1191
+ error
1192
+ });
1193
+ throw error;
1194
+ }
1188
1195
  const delay = this.outboxRetryPolicy({
1189
1196
  elapsedTime: Temporal.Instant.from(message.started).until(Temporal.Now.instant()),
1190
1197
  attempts: message.attempt
@@ -1270,6 +1277,20 @@ var FederationImpl = class extends FederationBuilderImpl {
1270
1277
  recipient: message.identifier
1271
1278
  });
1272
1279
  }
1280
+ if (this.inboxQueue?.nativeRetrial) {
1281
+ logger$2.error("Failed to process the incoming activity {activityId}; backend will handle retry:\n{error}", {
1282
+ error,
1283
+ activityId: activity.id?.href,
1284
+ activity: message.activity,
1285
+ recipient: message.identifier
1286
+ });
1287
+ span$1.setStatus({
1288
+ code: SpanStatusCode.ERROR,
1289
+ message: String(error)
1290
+ });
1291
+ span$1.end();
1292
+ throw error;
1293
+ }
1273
1294
  const delay = this.inboxRetryPolicy({
1274
1295
  elapsedTime: Temporal.Instant.from(message.started).until(Temporal.Now.instant()),
1275
1296
  attempts: message.attempt
@@ -3,15 +3,15 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
5
  import { getDefaultActivityTransformers } from "./transformers-ghwJuzGY.js";
6
- import { deno_default, getDocumentLoader, kvCache } from "./docloader-BGQB_PFT.js";
7
- import { Activity, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-BfzxE2QN.js";
8
- import { lookupWebFinger } from "./lookup-DVLRiy-x.js";
9
- import { exportJwk, importJwk, validateCryptoKey } from "./key-vNs-KWCR.js";
10
- import { doubleKnock, verifyRequest } from "./http-CoPwpYGd.js";
11
- import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-Bxho-Eev.js";
12
- import { getNodeInfo, nodeInfoToJson } from "./types-BaxpHQDE.js";
13
- import { getAuthenticatedDocumentLoader } from "./authdocloader-8yB-xGBR.js";
14
- import { lookupObject, traverseCollection } from "./vocab-Bcgf3ubZ.js";
6
+ import { deno_default, getDocumentLoader, kvCache } from "./docloader-D933g4kZ.js";
7
+ import { Activity, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-D_TAErPk.js";
8
+ import { lookupWebFinger } from "./lookup-DEkWpnDW.js";
9
+ import { exportJwk, importJwk, validateCryptoKey } from "./key-8FgmjBQw.js";
10
+ import { doubleKnock, verifyRequest } from "./http-fivRSxPO.js";
11
+ import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-CQOQgQLC.js";
12
+ import { getNodeInfo, nodeInfoToJson } from "./types-Bn2FleIz.js";
13
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-Cj8NhE13.js";
14
+ import { lookupObject, traverseCollection } from "./vocab-BKrOvMEW.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";
@@ -312,7 +312,7 @@ var FederationBuilderImpl = class {
312
312
  this.objectTypeIds = {};
313
313
  }
314
314
  async build(options) {
315
- const { FederationImpl: FederationImpl$1 } = await import("./middleware-30sYf6H-.js");
315
+ const { FederationImpl: FederationImpl$1 } = await import("./middleware-CWgW_9AC.js");
316
316
  const f = new FederationImpl$1(options);
317
317
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
318
318
  f.router = this.router.clone();
@@ -2050,6 +2050,13 @@ var FederationImpl = class extends FederationBuilderImpl {
2050
2050
  error: error$1
2051
2051
  });
2052
2052
  }
2053
+ if (this.outboxQueue?.nativeRetrial) {
2054
+ logger$1.error("Failed to send activity {activityId} to {inbox}; backend will handle retry:\n{error}", {
2055
+ ...logData,
2056
+ error
2057
+ });
2058
+ throw error;
2059
+ }
2053
2060
  const delay$1 = this.outboxRetryPolicy({
2054
2061
  elapsedTime: Temporal.Instant.from(message.started).until(Temporal.Now.instant()),
2055
2062
  attempts: message.attempt
@@ -2135,6 +2142,20 @@ var FederationImpl = class extends FederationBuilderImpl {
2135
2142
  recipient: message.identifier
2136
2143
  });
2137
2144
  }
2145
+ if (this.inboxQueue?.nativeRetrial) {
2146
+ logger$1.error("Failed to process the incoming activity {activityId}; backend will handle retry:\n{error}", {
2147
+ error,
2148
+ activityId: activity.id?.href,
2149
+ activity: message.activity,
2150
+ recipient: message.identifier
2151
+ });
2152
+ span$1.setStatus({
2153
+ code: SpanStatusCode.ERROR,
2154
+ message: String(error)
2155
+ });
2156
+ span$1.end();
2157
+ throw error;
2158
+ }
2138
2159
  const delay$1 = this.inboxRetryPolicy({
2139
2160
  elapsedTime: Temporal.Instant.from(message.started).until(Temporal.Now.instant()),
2140
2161
  attempts: message.attempt
@@ -0,0 +1,17 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+
5
+ import "./transformers-ghwJuzGY.js";
6
+ import "./docloader-D933g4kZ.js";
7
+ import "./actor-D_TAErPk.js";
8
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-CQ7qEYyO.js";
9
+ import "./lookup-DEkWpnDW.js";
10
+ import "./key-8FgmjBQw.js";
11
+ import "./http-fivRSxPO.js";
12
+ import "./proof-CQOQgQLC.js";
13
+ import "./types-Bn2FleIz.js";
14
+ import "./authdocloader-Cj8NhE13.js";
15
+ import "./vocab-BKrOvMEW.js";
16
+
17
+ export { FederationImpl };
@@ -0,0 +1,33 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+ globalThis.addEventListener = () => {};
5
+
6
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-BP-bBD2r.js";
7
+ import "./docloader-CD0wlEX1.js";
8
+ import "./url-kTAI6_KP.js";
9
+ import "./semver-CbbIgUsa.js";
10
+ import "./client-DUX3b6Xa.js";
11
+ import "./router-D_aVZZUc.js";
12
+ import "./types-CqoqWDkp.js";
13
+ import "./multibase-DeCHcK8L.js";
14
+ import "./vocab-BeUz_sCd.js";
15
+ import "./langstr-DbWheeIS.js";
16
+ import "./lookup-DF-Kf8aT.js";
17
+ import "./type-D2s5lmbZ.js";
18
+ import "./actor-DtsixKAW.js";
19
+ import "./key-Bd9x5bZc.js";
20
+ import "./http-CQmvdqnv.js";
21
+ import "./authdocloader-D3lP3oQJ.js";
22
+ import "./ld-EwYuTK6H.js";
23
+ import "./owner-Cc4nwvMO.js";
24
+ import "./proof-dej36xUb.js";
25
+ import "./lookup-DJEy1utC.js";
26
+ import "./inbox-Dxm3dzXC.js";
27
+ import "./builder-q1rdJ7Qu.js";
28
+ import "./collection-Dfb0TPno.js";
29
+ import "./keycache-DpxW9Koh.js";
30
+ import "./retry-BiIhZWgD.js";
31
+ import "./send-Cs6hGpVz.js";
32
+
33
+ export { FederationImpl };
@@ -1,7 +1,7 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  import { Activity } from "./vocab-DSFLLLe6.js";
4
- import { ActivityTransformer, Context } from "./context-DRhhOsMk.js";
4
+ import { ActivityTransformer, Context } from "./context-DdICJaUT.js";
5
5
 
6
6
  //#region compat/transformers.d.ts
7
7
 
package/dist/mod.d.ts CHANGED
@@ -9,9 +9,9 @@ import { FetchKeyOptions, FetchKeyResult, HttpMessageSignaturesSpec, HttpMessage
9
9
  import { DoesActorOwnKeyOptions, GetKeyOwnerOptions, doesActorOwnKey, getKeyOwner } from "./owner-CbRc94FP.js";
10
10
  import { LookupObjectOptions, PUBLIC_COLLECTION, TraverseCollectionOptions, getTypeId, lookupObject, traverseCollection } from "./mod-DSPyncxx.js";
11
11
  import { ResourceDescriptor, lookupWebFinger } from "./lookup-vJccIKCS.js";
12
- import { ActivityTransformer, ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, Context, CreateExponentialBackoffPolicyOptions, CreateFederationOptions, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, PageItems, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "./context-DRhhOsMk.js";
13
- import { InProcessMessageQueue, InProcessMessageQueueOptions, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, ParallelMessageQueue } from "./mq-nceTGCuc.js";
14
- import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./mod-CgmTOt4z.js";
12
+ import { ActivityTransformer, ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, Context, CreateExponentialBackoffPolicyOptions, CreateFederationOptions, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, PageItems, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "./context-DdICJaUT.js";
13
+ import { InProcessMessageQueue, InProcessMessageQueueOptions, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, ParallelMessageQueue } from "./mq-DYKDDJmp.js";
14
+ import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./mod-5orySGMZ.js";
15
15
  import "./mod-g0xFzAP9.js";
16
16
  import "./mod-1pDWKvUL.js";
17
17
  import { GetAuthenticatedDocumentLoaderOptions, exportMultibaseKey, exportSpki, getAuthenticatedDocumentLoader, importMultibaseKey, importPem, importPkcs1, importSpki } from "./mod-BTHfUeLo.js";
package/dist/mod.js CHANGED
@@ -4,17 +4,17 @@
4
4
 
5
5
  import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./transformers-ghwJuzGY.js";
6
6
  import "./compat-Bb5myD13.js";
7
- import { FetchError, fetchDocumentLoader, getDocumentLoader, getUserAgent, kvCache } from "./docloader-BGQB_PFT.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-BfzxE2QN.js";
9
- import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "./middleware-DIMI9i2M.js";
10
- import { lookupWebFinger } from "./lookup-DVLRiy-x.js";
11
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk } from "./key-vNs-KWCR.js";
12
- import { signRequest, verifyRequest } from "./http-CoPwpYGd.js";
13
- import { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, getKeyOwner, signJsonLd, signObject, verifyJsonLd, verifyObject, verifyProof, verifySignature } from "./proof-Bxho-Eev.js";
14
- import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "./federation-3B6BDKCK.js";
15
- import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "./types-BaxpHQDE.js";
16
- import { getAuthenticatedDocumentLoader } from "./authdocloader-8yB-xGBR.js";
17
- import { PUBLIC_COLLECTION, lookupObject, traverseCollection } from "./vocab-Bcgf3ubZ.js";
7
+ import { FetchError, fetchDocumentLoader, getDocumentLoader, getUserAgent, kvCache } from "./docloader-D933g4kZ.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-D_TAErPk.js";
9
+ import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "./middleware-CQ7qEYyO.js";
10
+ import { lookupWebFinger } from "./lookup-DEkWpnDW.js";
11
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk } from "./key-8FgmjBQw.js";
12
+ import { signRequest, verifyRequest } from "./http-fivRSxPO.js";
13
+ import { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, getKeyOwner, signJsonLd, signObject, verifyJsonLd, verifyObject, verifyProof, verifySignature } from "./proof-CQOQgQLC.js";
14
+ import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "./federation-lZOZyLAo.js";
15
+ import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "./types-Bn2FleIz.js";
16
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-Cj8NhE13.js";
17
+ import { PUBLIC_COLLECTION, lookupObject, traverseCollection } from "./vocab-BKrOvMEW.js";
18
18
  import "./nodeinfo-CyEbLjHs.js";
19
19
  import "./runtime-BSkOVUWM.js";
20
20
  import "./sig-BXJO--F9.js";
@@ -32,6 +32,16 @@ interface MessageQueueListenOptions {
32
32
  * @since 0.5.0
33
33
  */
34
34
  interface MessageQueue {
35
+ /**
36
+ * Whether the message queue backend provides native retry mechanisms.
37
+ * When `true`, Fedify will skip its own retry logic and rely on the backend
38
+ * to handle retries. When `false` or omitted, Fedify will handle retries
39
+ * using its own retry policies.
40
+ *
41
+ * @default `false`
42
+ * @since 1.7.0
43
+ */
44
+ readonly nativeRetrial?: boolean;
35
45
  /**
36
46
  * Enqueues a message in the queue.
37
47
  * @param message The message to enqueue.
@@ -77,6 +87,11 @@ interface InProcessMessageQueueOptions {
77
87
  */
78
88
  declare class InProcessMessageQueue implements MessageQueue {
79
89
  #private;
90
+ /**
91
+ * In-process message queue does not provide native retry mechanisms.
92
+ * @since 1.7.0
93
+ */
94
+ readonly nativeRetrial = false;
80
95
  /**
81
96
  * Constructs a new {@link InProcessMessageQueue} with the given options.
82
97
  * @param options Additional options for the in-process message queue.
@@ -105,6 +120,11 @@ declare class ParallelMessageQueue implements MessageQueue {
105
120
  #private;
106
121
  readonly queue: MessageQueue;
107
122
  readonly workers: number;
123
+ /**
124
+ * Inherits the native retry capability from the wrapped queue.
125
+ * @since 1.7.0
126
+ */
127
+ readonly nativeRetrial?: boolean;
108
128
  /**
109
129
  * Constructs a new {@link ParallelMessageQueue} with the given queue and
110
130
  * number of workers.
@@ -3,20 +3,20 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { assertEquals } from "../assert_equals-XhPMqqO2.js";
7
- import "../assert-0DSnLFa8.js";
8
- import "../assert_instance_of-v5adm_-K.js";
9
- import "../docloader-Chzwgszm.js";
6
+ import { assertEquals } from "../assert_equals-Dnj7ejjL.js";
7
+ import "../assert-YJk-1DlZ.js";
8
+ import "../assert_instance_of-DBIoG5k7.js";
9
+ import "../docloader-CD0wlEX1.js";
10
10
  import "../url-kTAI6_KP.js";
11
- import "../semver-DWClQt_5.js";
12
- import { getNodeInfo, parseInboundService, parseNodeInfo, parseOutboundService, parseProtocol, parseServices, parseSoftware, parseUsage } from "../client-DFAp6PBu.js";
13
- import { test } from "../testing-BZ0dJ4qn.js";
14
- import "../std__assert-CmyZxqPw.js";
15
- import "../assert_rejects-D_nYI1gs.js";
16
- import "../assert_is_error-Drwb_yQp.js";
17
- import "../assert_not_equals-BRPdeJ9D.js";
18
- import "../assert_throws-DNuPhPNp.js";
19
- import { esm_default } from "../esm-CASHO3OR.js";
11
+ import "../semver-CbbIgUsa.js";
12
+ import { getNodeInfo, parseInboundService, parseNodeInfo, parseOutboundService, parseProtocol, parseServices, parseSoftware, parseUsage } from "../client-DUX3b6Xa.js";
13
+ import { test } from "../testing-jcGLO9Lp.js";
14
+ import "../std__assert-CHXwj7zk.js";
15
+ import "../assert_rejects-BZjUwo62.js";
16
+ import "../assert_is_error-jyzqjHud.js";
17
+ import "../assert_not_equals-wx-SRs4i.js";
18
+ import "../assert_throws-gBPv3v2V.js";
19
+ import { esm_default } from "../esm-Btx3E8og.js";
20
20
 
21
21
  //#region nodeinfo/client.test.ts
22
22
  test("getNodeInfo()", async (t) => {