@fedify/fedify 2.0.0-pr.435.1673 → 2.0.0-pr.449.1725

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 (138) hide show
  1. package/dist/{actor-m_ko-86v.js → actor-C0gLJq8I.js} +7263 -2440
  2. package/dist/{actor-CNUje03O.cjs → actor-CsRJa7wV.cjs} +7263 -2440
  3. package/dist/{actor-DMgu-ZjT.d.cts → actor-D6K058Tb.d.cts} +1 -1
  4. package/dist/{actor-C22bXuuC.d.ts → actor-T6RyhRgk.d.ts} +1 -1
  5. package/dist/{actor-BxAu0qet.js → actor-VrXd7EdX.js} +1 -1
  6. package/dist/{authdocloader-nRFL9luh.js → authdocloader-6F9IP-VO.js} +3 -3
  7. package/dist/{authdocloader-D_3mtAjX.cjs → authdocloader-BkuVo8LL.cjs} +3 -3
  8. package/dist/{authdocloader-Chl2nuOI.js → authdocloader-C8LXxsmU.js} +3 -3
  9. package/dist/{builder-C8Of4dPy.js → builder-JjsppXTK.js} +14 -8
  10. package/dist/{client-yGBH5stP.js → client-BS-GE3XI.js} +1 -1
  11. package/dist/compat/mod.d.cts +7 -7
  12. package/dist/compat/mod.d.ts +7 -7
  13. package/dist/compat/transformers.test.js +16 -16
  14. package/dist/{context-CQsAT7xk.d.ts → context-B1X8-X33.d.ts} +186 -98
  15. package/dist/{context-tVOQ76fi.d.cts → context-DYCJXr7J.d.cts} +186 -98
  16. package/dist/{docloader-_WdHTWQR.js → docloader-AMdJU291.js} +1 -1
  17. package/dist/{docloader-SZjTrl6Z.cjs → docloader-BdF5STdg.cjs} +1 -1
  18. package/dist/{esm-e_G_xo95.js → esm-CvUgdJZ_.js} +1 -1
  19. package/dist/federation/builder.test.js +5 -5
  20. package/dist/federation/collection.test.js +3 -3
  21. package/dist/federation/handler.test.js +17 -17
  22. package/dist/federation/idempotency.test.d.ts +3 -0
  23. package/dist/federation/idempotency.test.js +202 -0
  24. package/dist/federation/inbox.test.js +4 -4
  25. package/dist/federation/keycache.test.js +4 -4
  26. package/dist/federation/kv.test.js +3 -3
  27. package/dist/federation/middleware.test.js +24 -47
  28. package/dist/federation/mod.cjs +10 -10
  29. package/dist/federation/mod.d.cts +7 -7
  30. package/dist/federation/mod.d.ts +7 -7
  31. package/dist/federation/mod.js +10 -10
  32. package/dist/federation/mq.test.js +3 -3
  33. package/dist/federation/negotiation.test.js +3 -3
  34. package/dist/federation/retry.test.js +3 -3
  35. package/dist/federation/router.test.js +3 -3
  36. package/dist/federation/send.test.js +10 -10
  37. package/dist/fixtures/media.example.com/avatars/test-avatar.jpg.json +6 -0
  38. package/dist/{http-BS6766zs.d.cts → http-D-e6AFwR.d.cts} +1 -1
  39. package/dist/{http-DqSNLFNY.d.ts → http-D6Uj2x2y.d.ts} +1 -1
  40. package/dist/{http-BpoEurUR.js → http-DVQEn98K.js} +3 -3
  41. package/dist/{http-DREvFalF.cjs → http-D_BI5KHC.cjs} +3 -3
  42. package/dist/{http-BEo67UOx.js → http-DbyMqL2X.js} +2 -2
  43. package/dist/{inbox-D-B5xFtJ.js → inbox-DQlf_-Dz.js} +24 -7
  44. package/dist/{key-DJpcumqB.js → key-BBzfhQGE.js} +4 -4
  45. package/dist/key-BMz_uAnc.cjs +10 -0
  46. package/dist/{key-Cps8Sv3N.js → key-BSJX6n9o.js} +2 -2
  47. package/dist/{key-JqiQvcq1.cjs → key-D-RgWfcf.cjs} +2 -2
  48. package/dist/{key-Cf8KTg-A.js → key-DFefr8X2.js} +2 -2
  49. package/dist/{key-DqrTz8Xq.js → key-DW2DrPGl.js} +3 -3
  50. package/dist/{keycache-D_Q1fPV0.js → keycache-CcIfdj0m.js} +1 -1
  51. package/dist/{keys-F0jh2GNR.js → keys-DnSaJmvD.js} +1 -1
  52. package/dist/{ld-CXygHn_m.js → ld-CAJ6Q2od.js} +2 -2
  53. package/dist/{lookup-C-Y0Ep1a.cjs → lookup-B2Bsau2g.cjs} +1 -1
  54. package/dist/{lookup-C6WSLjPE.js → lookup-BGCuyJRy.js} +1 -1
  55. package/dist/{lookup-DuqY2_In.js → lookup-C3pnuyiD.js} +21 -12
  56. package/dist/{middleware-2qNNXYEE.js → middleware-1oxZY_0z.js} +78 -56
  57. package/dist/middleware-B8WWe8Q2.js +26 -0
  58. package/dist/{middleware-CMiUxZ6O.js → middleware-BDqkoMAQ.js} +48 -49
  59. package/dist/{middleware-BsFAFlnZ.cjs → middleware-D0XMPoN8.cjs} +78 -56
  60. package/dist/middleware-DipQbJmB.js +17 -0
  61. package/dist/middleware-mLaQeD_Z.cjs +17 -0
  62. package/dist/{mod-Drmz72EK.d.ts → mod-BhUKmBJD.d.ts} +2 -2
  63. package/dist/{mod-TFoH2Ql8.d.ts → mod-CerN_Sza.d.ts} +1 -1
  64. package/dist/{mod-Dc_-mf8s.d.cts → mod-Cj1tHXBR.d.cts} +1 -1
  65. package/dist/{mod-evzlRVZq.d.cts → mod-CxkWO3Mg.d.cts} +19 -1
  66. package/dist/{mod-B26zRlH1.d.ts → mod-DcKxhFQ8.d.ts} +2 -2
  67. package/dist/{mod-BClfg3ej.d.cts → mod-Djzcw2ry.d.cts} +2 -2
  68. package/dist/{mod-Cxt4Kpf6.d.ts → mod-DlU8ISoa.d.ts} +19 -1
  69. package/dist/{mod-DBQAI4v9.d.cts → mod-twdvV2hR.d.cts} +2 -2
  70. package/dist/mod.cjs +10 -10
  71. package/dist/mod.d.cts +10 -10
  72. package/dist/mod.d.ts +10 -10
  73. package/dist/mod.js +10 -10
  74. package/dist/nodeinfo/client.test.js +5 -5
  75. package/dist/nodeinfo/handler.test.js +16 -16
  76. package/dist/nodeinfo/mod.cjs +2 -2
  77. package/dist/nodeinfo/mod.js +2 -2
  78. package/dist/nodeinfo/types.test.js +3 -3
  79. package/dist/{owner-B-7Ptt_m.d.cts → owner-BN_tO3cY.d.cts} +2 -2
  80. package/dist/{owner-D2fTlp_x.js → owner-CaIfLBwg.js} +2 -2
  81. package/dist/{owner-CQPnQVtf.d.ts → owner-hd9lvQcP.d.ts} +2 -2
  82. package/dist/{proof-C4Y4gJcm.cjs → proof-AhyVJcNZ.cjs} +3 -3
  83. package/dist/{proof-kEUjWRNJ.js → proof-BQwXHakc.js} +2 -2
  84. package/dist/{proof-CHM9su4L.js → proof-CKXppjee.js} +3 -3
  85. package/dist/runtime/authdocloader.test.js +9 -9
  86. package/dist/runtime/docloader.test.js +4 -4
  87. package/dist/runtime/key.test.js +5 -5
  88. package/dist/runtime/langstr.test.js +3 -3
  89. package/dist/runtime/link.test.js +3 -3
  90. package/dist/runtime/mod.cjs +6 -6
  91. package/dist/runtime/mod.d.cts +3 -3
  92. package/dist/runtime/mod.d.ts +3 -3
  93. package/dist/runtime/mod.js +6 -6
  94. package/dist/runtime/multibase/multibase.test.js +3 -3
  95. package/dist/runtime/url.test.js +3 -3
  96. package/dist/{send-Utq2Jm0I.js → send-DQd3R1Oc.js} +2 -2
  97. package/dist/sig/http.test.js +8 -8
  98. package/dist/sig/key.test.js +6 -6
  99. package/dist/sig/ld.test.js +7 -7
  100. package/dist/sig/mod.cjs +6 -6
  101. package/dist/sig/mod.d.cts +5 -5
  102. package/dist/sig/mod.d.ts +5 -5
  103. package/dist/sig/mod.js +6 -6
  104. package/dist/sig/owner.test.js +7 -7
  105. package/dist/sig/proof.test.js +7 -7
  106. package/dist/testing/docloader.test.js +3 -3
  107. package/dist/testing/mod.d.ts +391 -86
  108. package/dist/testing/mod.js +3 -3
  109. package/dist/{testing-DUpTIvNE.js → testing-BljKU-GG.js} +2 -2
  110. package/dist/{type-BYN6Ax2M.js → type-COb6KNlm.js} +6943 -2120
  111. package/dist/{types-BXkh8ctL.js → types-CEn4wB51.js} +1 -1
  112. package/dist/{types-BBpQe860.cjs → types-DI0yutHB.cjs} +1 -1
  113. package/dist/vocab/actor.test.js +5 -5
  114. package/dist/vocab/lookup.test.js +255 -5
  115. package/dist/vocab/mod.cjs +4 -4
  116. package/dist/vocab/mod.d.cts +3 -3
  117. package/dist/vocab/mod.d.ts +3 -3
  118. package/dist/vocab/mod.js +4 -4
  119. package/dist/vocab/type.test.js +3 -3
  120. package/dist/vocab/vocab.test.js +397 -8
  121. package/dist/{vocab-SOE1ifCr.d.ts → vocab-BI0Ak5lL.d.ts} +290 -0
  122. package/dist/{vocab-PKJB4DyY.js → vocab-CkWH9P5l.js} +23 -14
  123. package/dist/{vocab-DJTYMqyU.d.cts → vocab-Dw1-yVGg.d.cts} +290 -0
  124. package/dist/{vocab-DWZQ7gVQ.cjs → vocab-NZXL5Pr-.cjs} +23 -14
  125. package/dist/webfinger/handler.test.js +16 -16
  126. package/dist/webfinger/lookup.test.js +4 -4
  127. package/dist/webfinger/mod.cjs +2 -2
  128. package/dist/webfinger/mod.js +2 -2
  129. package/dist/x/cfworkers.test.js +3 -3
  130. package/dist/x/hono.d.cts +6 -6
  131. package/dist/x/hono.d.ts +6 -6
  132. package/dist/x/sveltekit.d.cts +6 -6
  133. package/dist/x/sveltekit.d.ts +6 -6
  134. package/package.json +1 -1
  135. package/dist/key-BvvbahfP.cjs +0 -10
  136. package/dist/middleware-BD1IE5O5.js +0 -26
  137. package/dist/middleware-BuZrvrDv.js +0 -17
  138. package/dist/middleware-h_3nRr8m.cjs +0 -17
@@ -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-COb6KNlm.js";
7
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-BDqkoMAQ.js";
8
+ import "./client-BS-GE3XI.js";
9
+ import "./lookup-C3pnuyiD.js";
10
+ import "./types-BSuWJsOm.js";
11
+ import "./actor-VrXd7EdX.js";
12
+ import "./key-BSJX6n9o.js";
13
+ import "./http-DbyMqL2X.js";
14
+ import "./authdocloader-C8LXxsmU.js";
15
+ import "./ld-CAJ6Q2od.js";
16
+ import "./owner-CaIfLBwg.js";
17
+ import "./proof-BQwXHakc.js";
18
+ import "./inbox-DQlf_-Dz.js";
19
+ import "./builder-JjsppXTK.js";
20
+ import "./collection-CcnIw1qY.js";
21
+ import "./keycache-CcIfdj0m.js";
22
+ import "./negotiation-5NPJL6zp.js";
23
+ import "./retry-D4GJ670a.js";
24
+ import "./send-DQd3R1Oc.js";
25
+
26
+ export { FederationImpl };
@@ -3,23 +3,23 @@
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-BYN6Ax2M.js";
7
- import { getNodeInfo } from "./client-yGBH5stP.js";
8
- import { RouterError, lookupObject, traverseCollection } from "./lookup-DuqY2_In.js";
6
+ import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, deno_default, getDocumentLoader, getTypeId, kvCache, lookupWebFinger } from "./type-COb6KNlm.js";
7
+ import { getNodeInfo } from "./client-BS-GE3XI.js";
8
+ import { RouterError, lookupObject, traverseCollection } from "./lookup-C3pnuyiD.js";
9
9
  import { nodeInfoToJson } from "./types-BSuWJsOm.js";
10
- import { exportJwk, importJwk, validateCryptoKey } from "./key-Cps8Sv3N.js";
11
- import { verifyRequest } from "./http-BEo67UOx.js";
12
- import { getAuthenticatedDocumentLoader } from "./authdocloader-Chl2nuOI.js";
13
- import { detachSignature, hasSignature, signJsonLd, verifyJsonLd } from "./ld-CXygHn_m.js";
14
- import { doesActorOwnKey, getKeyOwner } from "./owner-D2fTlp_x.js";
15
- import { signObject, verifyObject } from "./proof-kEUjWRNJ.js";
16
- import { routeActivity } from "./inbox-D-B5xFtJ.js";
17
- import { FederationBuilderImpl } from "./builder-C8Of4dPy.js";
10
+ import { exportJwk, importJwk, validateCryptoKey } from "./key-BSJX6n9o.js";
11
+ import { verifyRequest } from "./http-DbyMqL2X.js";
12
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-C8LXxsmU.js";
13
+ import { detachSignature, hasSignature, signJsonLd, verifyJsonLd } from "./ld-CAJ6Q2od.js";
14
+ import { doesActorOwnKey, getKeyOwner } from "./owner-CaIfLBwg.js";
15
+ import { signObject, verifyObject } from "./proof-BQwXHakc.js";
16
+ import { routeActivity } from "./inbox-DQlf_-Dz.js";
17
+ import { FederationBuilderImpl } from "./builder-JjsppXTK.js";
18
18
  import { buildCollectionSynchronizationHeader } from "./collection-CcnIw1qY.js";
19
- import { KvKeyCache } from "./keycache-D_Q1fPV0.js";
19
+ import { KvKeyCache } from "./keycache-CcIfdj0m.js";
20
20
  import { acceptsJsonLd } from "./negotiation-5NPJL6zp.js";
21
21
  import { createExponentialBackoffPolicy } from "./retry-D4GJ670a.js";
22
- import { extractInboxes, sendActivity } from "./send-Utq2Jm0I.js";
22
+ import { extractInboxes, sendActivity } from "./send-DQd3R1Oc.js";
23
23
  import { getLogger, withContext } from "@logtape/logtape";
24
24
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
25
25
  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";
@@ -604,7 +604,8 @@ async function handleInbox(request, options) {
604
604
  * @param span The OpenTelemetry span for tracing.
605
605
  * @returns A promise that resolves to an HTTP response.
606
606
  */
607
- async function handleInboxInternal(request, { recipient, context: ctx, inboxContextFactory, kv, kvPrefixes, queue, actorDispatcher, inboxListeners, inboxErrorHandler, onNotFound, signatureTimeWindow, skipSignatureVerification, tracerProvider }, span) {
607
+ async function handleInboxInternal(request, parameters, span) {
608
+ const { recipient, context: ctx, inboxContextFactory, kv, kvPrefixes, queue, actorDispatcher, inboxListeners, inboxErrorHandler, onNotFound, signatureTimeWindow, skipSignatureVerification, tracerProvider } = parameters;
608
609
  const logger$2 = getLogger([
609
610
  "fedify",
610
611
  "federation",
@@ -806,7 +807,8 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
806
807
  kvPrefixes,
807
808
  queue,
808
809
  span,
809
- tracerProvider
810
+ tracerProvider,
811
+ idempotencyStrategy: parameters.idempotencyStrategy
810
812
  });
811
813
  if (routeResult === "alreadyProcessed") return new Response(`Activity <${activity.id}> has already been processed.`, {
812
814
  status: 202,
@@ -836,7 +838,7 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
836
838
  /**
837
839
  * Handles a custom collection request.
838
840
  * @template TItem The type of items in the collection.
839
- * @template TParams The parameter names of the requested URL.
841
+ * @template TParam The parameter names of the requested URL.
840
842
  * @template TContext The type of the context, extending {@link RequestContext}.
841
843
  * @template TContextData The context data to pass to the `TContext`.
842
844
  * @param request The HTTP request.
@@ -854,7 +856,7 @@ async function _handleCustomCollection(request, { name, values, context: context
854
856
  /**
855
857
  * Handles an ordered collection request.
856
858
  * @template TItem The type of items in the collection.
857
- * @template TParams The parameter names of the requested URL.
859
+ * @template TParam The parameter names of the requested URL.
858
860
  * @template TContext The type of the context, extending {@link RequestContext}.
859
861
  * @template TContextData The context data to pass to the `TContext`.
860
862
  * @param request The HTTP request.
@@ -874,7 +876,7 @@ async function _handleOrderedCollection(request, { name, values, context: contex
874
876
  * The main flow is on `getCollection`, `dispatch`.
875
877
  *
876
878
  * @template TItem The type of items in the collection.
877
- * @template TParams The parameter names of the requested URL.
879
+ * @template TParam The parameter names of the requested URL.
878
880
  * @template TContext The type of the context. {@link Context} or {@link RequestContext}.
879
881
  * @template TContextData The context data to pass to the `TContext`.
880
882
  * @template TCollection The type of the collection, extending {@link Collection}.
@@ -908,14 +910,14 @@ var CustomCollectionHandler = class {
908
910
  #collection = null;
909
911
  /**
910
912
  * Creates a new CustomCollection instance.
911
- * @param {string} name The name of the collection.
912
- * @param {TParams} values The parameter values for the collection.
913
- * @param {TContext} context The request context.
914
- * @param {CustomCollectionCallbacks} callbacks The collection callbacks.
915
- * @param {TracerProvider} tracerProvider The tracer provider for telemetry.
916
- * @param {ConstructorWithTypeId<TCollection>} Collection The Collection constructor.
917
- * @param {ConstructorWithTypeId<TCollectionPage>} CollectionPage The CollectionPage constructor.
918
- * @param {(item: TItem) => boolean} filterPredicate Optional filter predicate for items.
913
+ * @param name The name of the collection.
914
+ * @param values The parameter values for the collection.
915
+ * @param context The request context.
916
+ * @param callbacks The collection callbacks.
917
+ * @param tracerProvider The tracer provider for telemetry.
918
+ * @param Collection The Collection constructor.
919
+ * @param CollectionPage The CollectionPage constructor.
920
+ * @param filterPredicate Optional filter predicate for items.
919
921
  */
920
922
  constructor(name, values, context$1, callbacks, tracerProvider = trace.getTracerProvider(), Collection$1, CollectionPage$1, filterPredicate) {
921
923
  this.name = name;
@@ -1040,7 +1042,7 @@ var CustomCollectionHandler = class {
1040
1042
  /**
1041
1043
  * Creates a function to wrap the dispatcher so tracing can be applied.
1042
1044
  * @param params Parameters including cursor and total items.
1043
- * @returns {(span: Span) => Promise<PageItems<TItem>>} A function that handles the span operation.
1045
+ * @returns A function that handles the span operation.
1044
1046
  */
1045
1047
  spanPages = ({ totalItems = null, cursor = null }) => async (span) => {
1046
1048
  try {
@@ -1061,23 +1063,23 @@ var CustomCollectionHandler = class {
1061
1063
  };
1062
1064
  /**
1063
1065
  * Dispatches the collection request to get items.
1064
- * @param {string | null} cursor The cursor for pagination, or null for the first page.
1065
- * @returns {Promise<PageItems<TItem>>} A promise that resolves to the page items.
1066
+ * @param cursor The cursor for pagination, or null for the first page.
1067
+ * @returns A promise that resolves to the page items.
1066
1068
  */
1067
1069
  async dispatch(cursor = null) {
1068
1070
  return await this.#dispatcher(this.context, this.values, cursor) ?? new ItemsNotFoundError().throw();
1069
1071
  }
1070
1072
  /**
1071
1073
  * Filters the items in the collection.
1072
- * @param {TItem[]} items The items to filter.
1073
- * @returns {(Object | Link | URL)[]} The filtered items.
1074
+ * @param items The items to filter.
1075
+ * @returns The filtered items.
1074
1076
  */
1075
1077
  filterItems(items) {
1076
1078
  return filterCollectionItems(items, this.name, this.filterPredicate);
1077
1079
  }
1078
1080
  /**
1079
1081
  * Appends a cursor to the URL if it exists.
1080
- * @param {string | null | undefined} cursor The cursor to append, or null/undefined.
1082
+ * @param cursor The cursor to append, or null/undefined.
1081
1083
  * @returns The URL with cursor appended, or null if cursor is null/undefined.
1082
1084
  */
1083
1085
  appendToUrl(cursor) {
@@ -1085,8 +1087,7 @@ var CustomCollectionHandler = class {
1085
1087
  }
1086
1088
  /**
1087
1089
  * Gets the stored collection or collection page.
1088
- * @returns {Promise<TCollection | TCollectionPage>} A promise that resolves to
1089
- the collection or collection page.
1090
+ * @returns A promise that resolves to the collection or collection page.
1090
1091
  */
1091
1092
  get collection() {
1092
1093
  if (this.#collection === null) this.#collection = this.getCollection();
@@ -1094,8 +1095,8 @@ var CustomCollectionHandler = class {
1094
1095
  }
1095
1096
  /**
1096
1097
  * Gets the total number of items in the collection.
1097
- * @returns {Promise<number | null>} A promise that
1098
- resolves to the total items count, or null if not available.
1098
+ * @returns A promise that resolves to the total items count,
1099
+ * or null if not available.
1099
1100
  */
1100
1101
  get totalItems() {
1101
1102
  if (this.#totalItems === void 0) this.totalItems = this.callbacks.counter?.(this.context, this.values);
@@ -1111,8 +1112,8 @@ var CustomCollectionHandler = class {
1111
1112
  }
1112
1113
  /**
1113
1114
  * Gets the first cursor for pagination.
1114
- * @returns {Promise<string | null>} A promise that resolves to the first cursor,
1115
- or null if not available.
1115
+ * @returns A promise that resolves to the first cursor,
1116
+ * or null if not available.
1116
1117
  */
1117
1118
  get firstCursor() {
1118
1119
  const cursor = this.callbacks.firstCursor?.(this.context, this.values);
@@ -1317,7 +1318,6 @@ var FederationImpl = class extends FederationBuilderImpl {
1317
1318
  firstKnock;
1318
1319
  constructor(options) {
1319
1320
  super();
1320
- const logger$2 = getLogger(["fedify", "federation"]);
1321
1321
  this.kv = options.kv;
1322
1322
  this.kvPrefixes = {
1323
1323
  activityIdempotence: ["_fedify", "activityIdempotence"],
@@ -1365,8 +1365,9 @@ var FederationImpl = class extends FederationBuilderImpl {
1365
1365
  this.router.trailingSlashInsensitive = options.trailingSlashInsensitive ?? false;
1366
1366
  this._initializeRouter();
1367
1367
  if (options.allowPrivateAddress || options.userAgent != null) {
1368
- if (options.contextLoader != null) throw new TypeError("Cannot set contextLoader with allowPrivateAddress or userAgent options.");
1369
- else if (options.authenticatedDocumentLoaderFactory != null) throw new TypeError("Cannot set authenticatedDocumentLoaderFactory with allowPrivateAddress or userAgent options.");
1368
+ if (options.documentLoaderFactory != null) throw new TypeError("Cannot set documentLoaderFactory with allowPrivateAddress or userAgent options.");
1369
+ if (options.contextLoaderFactory != null) throw new TypeError("Cannot set contextLoaderFactory with allowPrivateAddress or userAgent options.");
1370
+ if (options.authenticatedDocumentLoaderFactory != null) throw new TypeError("Cannot set authenticatedDocumentLoaderFactory with allowPrivateAddress or userAgent options.");
1370
1371
  }
1371
1372
  const { allowPrivateAddress, userAgent } = options;
1372
1373
  this.allowPrivateAddress = allowPrivateAddress ?? false;
@@ -1380,11 +1381,7 @@ var FederationImpl = class extends FederationBuilderImpl {
1380
1381
  prefix: this.kvPrefixes.remoteDocument
1381
1382
  });
1382
1383
  });
1383
- if (options.contextLoader != null) {
1384
- if (options.contextLoaderFactory != null) throw new TypeError("Cannot set both contextLoader and contextLoaderFactory options at a time; use contextLoaderFactory only.");
1385
- this.contextLoaderFactory = () => options.contextLoader;
1386
- logger$2.warn("The contextLoader option is deprecated; use contextLoaderFactory option instead.");
1387
- } else this.contextLoaderFactory = options.contextLoaderFactory ?? this.documentLoaderFactory;
1384
+ this.contextLoaderFactory = options.contextLoaderFactory ?? this.documentLoaderFactory;
1388
1385
  this.authenticatedDocumentLoaderFactory = options.authenticatedDocumentLoaderFactory ?? ((identity) => getAuthenticatedDocumentLoader(identity, {
1389
1386
  allowPrivateAddress,
1390
1387
  userAgent,
@@ -1988,7 +1985,7 @@ var FederationImpl = class extends FederationBuilderImpl {
1988
1985
  nodeInfoDispatcher: this.nodeInfoDispatcher
1989
1986
  });
1990
1987
  }
1991
- if (!acceptsJsonLd(request)) return await onNotAcceptable(request);
1988
+ if (request.method !== "POST" && !acceptsJsonLd(request)) return await onNotAcceptable(request);
1992
1989
  switch (routeName) {
1993
1990
  case "actor":
1994
1991
  context$1 = this.#createContext(request, contextData, { invokedFromActorDispatcher: { identifier: route.values.identifier ?? route.values.handle } });
@@ -2058,7 +2055,8 @@ var FederationImpl = class extends FederationBuilderImpl {
2058
2055
  onNotFound,
2059
2056
  signatureTimeWindow: this.signatureTimeWindow,
2060
2057
  skipSignatureVerification: this.skipSignatureVerification,
2061
- tracerProvider: this.tracerProvider
2058
+ tracerProvider: this.tracerProvider,
2059
+ idempotencyStrategy: this.idempotencyStrategy
2062
2060
  });
2063
2061
  case "following": return await handleCollection(request, {
2064
2062
  name: "following",
@@ -2801,7 +2799,8 @@ var ContextImpl = class ContextImpl {
2801
2799
  kvPrefixes: this.federation.kvPrefixes,
2802
2800
  queue: this.federation.inboxQueue,
2803
2801
  span,
2804
- tracerProvider: options.tracerProvider ?? this.tracerProvider
2802
+ tracerProvider: options.tracerProvider ?? this.tracerProvider,
2803
+ idempotencyStrategy: this.federation.idempotencyStrategy
2805
2804
  });
2806
2805
  return routeResult === "alreadyProcessed" || routeResult === "enqueued" || routeResult === "unsupportedActivity" || routeResult === "success";
2807
2806
  }
@@ -4,15 +4,15 @@
4
4
 
5
5
  const require_chunk = require('./chunk-DqRYRqnO.cjs');
6
6
  const require_transformers = require('./transformers-CoBS-oFG.cjs');
7
- const require_docloader = require('./docloader-SZjTrl6Z.cjs');
8
- const require_actor = require('./actor-CNUje03O.cjs');
9
- const require_lookup = require('./lookup-C-Y0Ep1a.cjs');
10
- const require_key = require('./key-JqiQvcq1.cjs');
11
- const require_http = require('./http-DREvFalF.cjs');
12
- const require_proof = require('./proof-C4Y4gJcm.cjs');
13
- const require_types = require('./types-BBpQe860.cjs');
14
- const require_authdocloader = require('./authdocloader-D_3mtAjX.cjs');
15
- const require_vocab = require('./vocab-DWZQ7gVQ.cjs');
7
+ const require_docloader = require('./docloader-BdF5STdg.cjs');
8
+ const require_actor = require('./actor-CsRJa7wV.cjs');
9
+ const require_lookup = require('./lookup-B2Bsau2g.cjs');
10
+ const require_key = require('./key-D-RgWfcf.cjs');
11
+ const require_http = require('./http-D_BI5KHC.cjs');
12
+ const require_proof = require('./proof-AhyVJcNZ.cjs');
13
+ const require_types = require('./types-DI0yutHB.cjs');
14
+ const require_authdocloader = require('./authdocloader-BkuVo8LL.cjs');
15
+ const require_vocab = require('./vocab-NZXL5Pr-.cjs');
16
16
  const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
17
17
  const __opentelemetry_api = require_chunk.__toESM(require("@opentelemetry/api"));
18
18
  const byte_encodings_hex = require_chunk.__toESM(require("byte-encodings/hex"));
@@ -56,17 +56,34 @@ var InboxListenerSet = class InboxListenerSet {
56
56
  return this.dispatchWithClass(activity)?.listener ?? null;
57
57
  }
58
58
  };
59
- async function routeActivity({ context: ctx, json, activity, recipient, inboxListeners, inboxContextFactory, inboxErrorHandler, kv, kvPrefixes, queue, span, tracerProvider }) {
59
+ async function routeActivity({ context: ctx, json, activity, recipient, inboxListeners, inboxContextFactory, inboxErrorHandler, kv, kvPrefixes, queue, span, tracerProvider, idempotencyStrategy }) {
60
60
  const logger$1 = (0, __logtape_logtape.getLogger)([
61
61
  "fedify",
62
62
  "federation",
63
63
  "inbox"
64
64
  ]);
65
- const cacheKey = activity.id == null ? null : [
66
- ...kvPrefixes.activityIdempotence,
67
- ctx.origin,
68
- activity.id.href
69
- ];
65
+ let cacheKey = null;
66
+ if (activity.id != null) {
67
+ const inboxContext = inboxContextFactory(recipient, json, activity.id?.href, require_actor.getTypeId(activity).href);
68
+ const strategy = idempotencyStrategy ?? "per-inbox";
69
+ let keyString;
70
+ if (typeof strategy === "function") {
71
+ const result = await strategy(inboxContext, activity);
72
+ keyString = result;
73
+ } else switch (strategy) {
74
+ case "global":
75
+ keyString = activity.id.href;
76
+ break;
77
+ case "per-origin":
78
+ keyString = `${ctx.origin}\n${activity.id.href}`;
79
+ break;
80
+ case "per-inbox":
81
+ keyString = `${ctx.origin}\n${activity.id.href}\n${recipient == null ? "sharedInbox" : `inbox\n${recipient}`}`;
82
+ break;
83
+ default: keyString = `${ctx.origin}\n${activity.id.href}`;
84
+ }
85
+ if (keyString != null) cacheKey = [...kvPrefixes.activityIdempotence, keyString];
86
+ }
70
87
  if (cacheKey != null) {
71
88
  const cached = await kv.get(cacheKey);
72
89
  if (cached === true) {
@@ -308,6 +325,7 @@ var FederationBuilderImpl = class {
308
325
  inboxListeners;
309
326
  inboxErrorHandler;
310
327
  sharedInboxKeyDispatcher;
328
+ idempotencyStrategy;
311
329
  collectionTypeIds;
312
330
  collectionCallbacks;
313
331
  /**
@@ -322,7 +340,7 @@ var FederationBuilderImpl = class {
322
340
  this.collectionTypeIds = {};
323
341
  }
324
342
  async build(options) {
325
- const { FederationImpl: FederationImpl$1 } = await Promise.resolve().then(() => require("./middleware-h_3nRr8m.cjs"));
343
+ const { FederationImpl: FederationImpl$1 } = await Promise.resolve().then(() => require("./middleware-mLaQeD_Z.cjs"));
326
344
  const f = new FederationImpl$1(options);
327
345
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
328
346
  f.router = this.router.clone();
@@ -344,6 +362,7 @@ var FederationBuilderImpl = class {
344
362
  f.inboxListeners = this.inboxListeners?.clone();
345
363
  f.inboxErrorHandler = this.inboxErrorHandler;
346
364
  f.sharedInboxKeyDispatcher = this.sharedInboxKeyDispatcher;
365
+ f.idempotencyStrategy = this.idempotencyStrategy;
347
366
  return f;
348
367
  }
349
368
  _getTracer() {
@@ -766,15 +785,19 @@ var FederationBuilderImpl = class {
766
785
  setSharedKeyDispatcher: (dispatcher) => {
767
786
  this.sharedInboxKeyDispatcher = dispatcher;
768
787
  return setters;
788
+ },
789
+ withIdempotency: (strategy) => {
790
+ this.idempotencyStrategy = strategy;
791
+ return setters;
769
792
  }
770
793
  };
771
794
  return setters;
772
795
  }
773
- setCollectionDispatcher(name, ...args) {
774
- return this.#setCustomCollectionDispatcher(name, "collection", ...args);
796
+ setCollectionDispatcher(name, itemType, path, dispatcher) {
797
+ return this.#setCustomCollectionDispatcher(name, "collection", itemType, path, dispatcher);
775
798
  }
776
- setOrderedCollectionDispatcher(name, ...args) {
777
- return this.#setCustomCollectionDispatcher(name, "orderedCollection", ...args);
799
+ setOrderedCollectionDispatcher(name, itemType, path, dispatcher) {
800
+ return this.#setCustomCollectionDispatcher(name, "orderedCollection", itemType, path, dispatcher);
778
801
  }
779
802
  #setCustomCollectionDispatcher(name, collectionType, itemType, path, dispatcher) {
780
803
  const strName = String(name);
@@ -1294,7 +1317,8 @@ async function handleInbox(request, options) {
1294
1317
  * @param span The OpenTelemetry span for tracing.
1295
1318
  * @returns A promise that resolves to an HTTP response.
1296
1319
  */
1297
- async function handleInboxInternal(request, { recipient, context: ctx, inboxContextFactory, kv, kvPrefixes, queue, actorDispatcher, inboxListeners, inboxErrorHandler, onNotFound, signatureTimeWindow, skipSignatureVerification, tracerProvider }, span) {
1320
+ async function handleInboxInternal(request, parameters, span) {
1321
+ const { recipient, context: ctx, inboxContextFactory, kv, kvPrefixes, queue, actorDispatcher, inboxListeners, inboxErrorHandler, onNotFound, signatureTimeWindow, skipSignatureVerification, tracerProvider } = parameters;
1298
1322
  const logger$1 = (0, __logtape_logtape.getLogger)([
1299
1323
  "fedify",
1300
1324
  "federation",
@@ -1496,7 +1520,8 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
1496
1520
  kvPrefixes,
1497
1521
  queue,
1498
1522
  span,
1499
- tracerProvider
1523
+ tracerProvider,
1524
+ idempotencyStrategy: parameters.idempotencyStrategy
1500
1525
  });
1501
1526
  if (routeResult === "alreadyProcessed") return new Response(`Activity <${activity.id}> has already been processed.`, {
1502
1527
  status: 202,
@@ -1526,7 +1551,7 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
1526
1551
  /**
1527
1552
  * Handles a custom collection request.
1528
1553
  * @template TItem The type of items in the collection.
1529
- * @template TParams The parameter names of the requested URL.
1554
+ * @template TParam The parameter names of the requested URL.
1530
1555
  * @template TContext The type of the context, extending {@link RequestContext}.
1531
1556
  * @template TContextData The context data to pass to the `TContext`.
1532
1557
  * @param request The HTTP request.
@@ -1544,7 +1569,7 @@ async function _handleCustomCollection(request, { name, values, context: context
1544
1569
  /**
1545
1570
  * Handles an ordered collection request.
1546
1571
  * @template TItem The type of items in the collection.
1547
- * @template TParams The parameter names of the requested URL.
1572
+ * @template TParam The parameter names of the requested URL.
1548
1573
  * @template TContext The type of the context, extending {@link RequestContext}.
1549
1574
  * @template TContextData The context data to pass to the `TContext`.
1550
1575
  * @param request The HTTP request.
@@ -1564,7 +1589,7 @@ async function _handleOrderedCollection(request, { name, values, context: contex
1564
1589
  * The main flow is on `getCollection`, `dispatch`.
1565
1590
  *
1566
1591
  * @template TItem The type of items in the collection.
1567
- * @template TParams The parameter names of the requested URL.
1592
+ * @template TParam The parameter names of the requested URL.
1568
1593
  * @template TContext The type of the context. {@link Context} or {@link RequestContext}.
1569
1594
  * @template TContextData The context data to pass to the `TContext`.
1570
1595
  * @template TCollection The type of the collection, extending {@link Collection}.
@@ -1598,14 +1623,14 @@ var CustomCollectionHandler = class {
1598
1623
  #collection = null;
1599
1624
  /**
1600
1625
  * Creates a new CustomCollection instance.
1601
- * @param {string} name The name of the collection.
1602
- * @param {TParams} values The parameter values for the collection.
1603
- * @param {TContext} context The request context.
1604
- * @param {CustomCollectionCallbacks} callbacks The collection callbacks.
1605
- * @param {TracerProvider} tracerProvider The tracer provider for telemetry.
1606
- * @param {ConstructorWithTypeId<TCollection>} Collection The Collection constructor.
1607
- * @param {ConstructorWithTypeId<TCollectionPage>} CollectionPage The CollectionPage constructor.
1608
- * @param {(item: TItem) => boolean} filterPredicate Optional filter predicate for items.
1626
+ * @param name The name of the collection.
1627
+ * @param values The parameter values for the collection.
1628
+ * @param context The request context.
1629
+ * @param callbacks The collection callbacks.
1630
+ * @param tracerProvider The tracer provider for telemetry.
1631
+ * @param Collection The Collection constructor.
1632
+ * @param CollectionPage The CollectionPage constructor.
1633
+ * @param filterPredicate Optional filter predicate for items.
1609
1634
  */
1610
1635
  constructor(name, values, context$2, callbacks, tracerProvider = __opentelemetry_api.trace.getTracerProvider(), Collection$1, CollectionPage$1, filterPredicate) {
1611
1636
  this.name = name;
@@ -1730,7 +1755,7 @@ var CustomCollectionHandler = class {
1730
1755
  /**
1731
1756
  * Creates a function to wrap the dispatcher so tracing can be applied.
1732
1757
  * @param params Parameters including cursor and total items.
1733
- * @returns {(span: Span) => Promise<PageItems<TItem>>} A function that handles the span operation.
1758
+ * @returns A function that handles the span operation.
1734
1759
  */
1735
1760
  spanPages = ({ totalItems = null, cursor = null }) => async (span) => {
1736
1761
  try {
@@ -1751,23 +1776,23 @@ var CustomCollectionHandler = class {
1751
1776
  };
1752
1777
  /**
1753
1778
  * Dispatches the collection request to get items.
1754
- * @param {string | null} cursor The cursor for pagination, or null for the first page.
1755
- * @returns {Promise<PageItems<TItem>>} A promise that resolves to the page items.
1779
+ * @param cursor The cursor for pagination, or null for the first page.
1780
+ * @returns A promise that resolves to the page items.
1756
1781
  */
1757
1782
  async dispatch(cursor = null) {
1758
1783
  return await this.#dispatcher(this.context, this.values, cursor) ?? new ItemsNotFoundError().throw();
1759
1784
  }
1760
1785
  /**
1761
1786
  * Filters the items in the collection.
1762
- * @param {TItem[]} items The items to filter.
1763
- * @returns {(Object | Link | URL)[]} The filtered items.
1787
+ * @param items The items to filter.
1788
+ * @returns The filtered items.
1764
1789
  */
1765
1790
  filterItems(items) {
1766
1791
  return filterCollectionItems(items, this.name, this.filterPredicate);
1767
1792
  }
1768
1793
  /**
1769
1794
  * Appends a cursor to the URL if it exists.
1770
- * @param {string | null | undefined} cursor The cursor to append, or null/undefined.
1795
+ * @param cursor The cursor to append, or null/undefined.
1771
1796
  * @returns The URL with cursor appended, or null if cursor is null/undefined.
1772
1797
  */
1773
1798
  appendToUrl(cursor) {
@@ -1775,8 +1800,7 @@ var CustomCollectionHandler = class {
1775
1800
  }
1776
1801
  /**
1777
1802
  * Gets the stored collection or collection page.
1778
- * @returns {Promise<TCollection | TCollectionPage>} A promise that resolves to
1779
- the collection or collection page.
1803
+ * @returns A promise that resolves to the collection or collection page.
1780
1804
  */
1781
1805
  get collection() {
1782
1806
  if (this.#collection === null) this.#collection = this.getCollection();
@@ -1784,8 +1808,8 @@ var CustomCollectionHandler = class {
1784
1808
  }
1785
1809
  /**
1786
1810
  * Gets the total number of items in the collection.
1787
- * @returns {Promise<number | null>} A promise that
1788
- resolves to the total items count, or null if not available.
1811
+ * @returns A promise that resolves to the total items count,
1812
+ * or null if not available.
1789
1813
  */
1790
1814
  get totalItems() {
1791
1815
  if (this.#totalItems === void 0) this.totalItems = this.callbacks.counter?.(this.context, this.values);
@@ -1801,8 +1825,8 @@ var CustomCollectionHandler = class {
1801
1825
  }
1802
1826
  /**
1803
1827
  * Gets the first cursor for pagination.
1804
- * @returns {Promise<string | null>} A promise that resolves to the first cursor,
1805
- or null if not available.
1828
+ * @returns A promise that resolves to the first cursor,
1829
+ * or null if not available.
1806
1830
  */
1807
1831
  get firstCursor() {
1808
1832
  const cursor = this.callbacks.firstCursor?.(this.context, this.values);
@@ -2326,7 +2350,6 @@ var FederationImpl = class extends FederationBuilderImpl {
2326
2350
  firstKnock;
2327
2351
  constructor(options) {
2328
2352
  super();
2329
- const logger$1 = (0, __logtape_logtape.getLogger)(["fedify", "federation"]);
2330
2353
  this.kv = options.kv;
2331
2354
  this.kvPrefixes = {
2332
2355
  activityIdempotence: ["_fedify", "activityIdempotence"],
@@ -2374,8 +2397,9 @@ var FederationImpl = class extends FederationBuilderImpl {
2374
2397
  this.router.trailingSlashInsensitive = options.trailingSlashInsensitive ?? false;
2375
2398
  this._initializeRouter();
2376
2399
  if (options.allowPrivateAddress || options.userAgent != null) {
2377
- if (options.contextLoader != null) throw new TypeError("Cannot set contextLoader with allowPrivateAddress or userAgent options.");
2378
- else if (options.authenticatedDocumentLoaderFactory != null) throw new TypeError("Cannot set authenticatedDocumentLoaderFactory with allowPrivateAddress or userAgent options.");
2400
+ if (options.documentLoaderFactory != null) throw new TypeError("Cannot set documentLoaderFactory with allowPrivateAddress or userAgent options.");
2401
+ if (options.contextLoaderFactory != null) throw new TypeError("Cannot set contextLoaderFactory with allowPrivateAddress or userAgent options.");
2402
+ if (options.authenticatedDocumentLoaderFactory != null) throw new TypeError("Cannot set authenticatedDocumentLoaderFactory with allowPrivateAddress or userAgent options.");
2379
2403
  }
2380
2404
  const { allowPrivateAddress, userAgent } = options;
2381
2405
  this.allowPrivateAddress = allowPrivateAddress ?? false;
@@ -2389,11 +2413,7 @@ var FederationImpl = class extends FederationBuilderImpl {
2389
2413
  prefix: this.kvPrefixes.remoteDocument
2390
2414
  });
2391
2415
  });
2392
- if (options.contextLoader != null) {
2393
- if (options.contextLoaderFactory != null) throw new TypeError("Cannot set both contextLoader and contextLoaderFactory options at a time; use contextLoaderFactory only.");
2394
- this.contextLoaderFactory = () => options.contextLoader;
2395
- logger$1.warn("The contextLoader option is deprecated; use contextLoaderFactory option instead.");
2396
- } else this.contextLoaderFactory = options.contextLoaderFactory ?? this.documentLoaderFactory;
2416
+ this.contextLoaderFactory = options.contextLoaderFactory ?? this.documentLoaderFactory;
2397
2417
  this.authenticatedDocumentLoaderFactory = options.authenticatedDocumentLoaderFactory ?? ((identity) => require_authdocloader.getAuthenticatedDocumentLoader(identity, {
2398
2418
  allowPrivateAddress,
2399
2419
  userAgent,
@@ -2997,7 +3017,7 @@ var FederationImpl = class extends FederationBuilderImpl {
2997
3017
  nodeInfoDispatcher: this.nodeInfoDispatcher
2998
3018
  });
2999
3019
  }
3000
- if (!acceptsJsonLd(request)) return await onNotAcceptable(request);
3020
+ if (request.method !== "POST" && !acceptsJsonLd(request)) return await onNotAcceptable(request);
3001
3021
  switch (routeName) {
3002
3022
  case "actor":
3003
3023
  context$2 = this.#createContext(request, contextData, { invokedFromActorDispatcher: { identifier: route.values.identifier ?? route.values.handle } });
@@ -3067,7 +3087,8 @@ var FederationImpl = class extends FederationBuilderImpl {
3067
3087
  onNotFound,
3068
3088
  signatureTimeWindow: this.signatureTimeWindow,
3069
3089
  skipSignatureVerification: this.skipSignatureVerification,
3070
- tracerProvider: this.tracerProvider
3090
+ tracerProvider: this.tracerProvider,
3091
+ idempotencyStrategy: this.idempotencyStrategy
3071
3092
  });
3072
3093
  case "following": return await handleCollection(request, {
3073
3094
  name: "following",
@@ -3810,7 +3831,8 @@ var ContextImpl = class ContextImpl {
3810
3831
  kvPrefixes: this.federation.kvPrefixes,
3811
3832
  queue: this.federation.inboxQueue,
3812
3833
  span,
3813
- tracerProvider: options.tracerProvider ?? this.tracerProvider
3834
+ tracerProvider: options.tracerProvider ?? this.tracerProvider,
3835
+ idempotencyStrategy: this.federation.idempotencyStrategy
3814
3836
  });
3815
3837
  return routeResult === "alreadyProcessed" || routeResult === "enqueued" || routeResult === "unsupportedActivity" || routeResult === "success";
3816
3838
  }
@@ -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-AMdJU291.js";
7
+ import "./actor-C0gLJq8I.js";
8
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-1oxZY_0z.js";
9
+ import "./lookup-BGCuyJRy.js";
10
+ import "./key-DFefr8X2.js";
11
+ import "./http-DVQEn98K.js";
12
+ import "./proof-CKXppjee.js";
13
+ import "./types-CEn4wB51.js";
14
+ import "./authdocloader-6F9IP-VO.js";
15
+ import "./vocab-CkWH9P5l.js";
16
+
17
+ export { FederationImpl };
@@ -0,0 +1,17 @@
1
+
2
+ const { Temporal } = require("@js-temporal/polyfill");
3
+ const { URLPattern } = require("urlpattern-polyfill");
4
+
5
+ require('./transformers-CoBS-oFG.cjs');
6
+ require('./docloader-BdF5STdg.cjs');
7
+ require('./actor-CsRJa7wV.cjs');
8
+ const require_middleware = require('./middleware-D0XMPoN8.cjs');
9
+ require('./lookup-B2Bsau2g.cjs');
10
+ require('./key-D-RgWfcf.cjs');
11
+ require('./http-D_BI5KHC.cjs');
12
+ require('./proof-AhyVJcNZ.cjs');
13
+ require('./types-DI0yutHB.cjs');
14
+ require('./authdocloader-BkuVo8LL.cjs');
15
+ require('./vocab-NZXL5Pr-.cjs');
16
+
17
+ exports.FederationImpl = require_middleware.FederationImpl;
@@ -1,8 +1,8 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  import { DocumentLoader } from "./docloader-CxWcuWqQ.js";
4
- import { CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1 } from "./vocab-SOE1ifCr.js";
5
- import { KeyCache } from "./http-DqSNLFNY.js";
4
+ import { CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1 } from "./vocab-BI0Ak5lL.js";
5
+ import { KeyCache } from "./http-D6Uj2x2y.js";
6
6
  import { TracerProvider } from "@opentelemetry/api";
7
7
 
8
8
  //#region src/sig/ld.d.ts
@@ -1,7 +1,7 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  import { DocumentLoader, DocumentLoaderFactoryOptions } from "./docloader-CxWcuWqQ.js";
4
- import { HttpMessageSignaturesSpecDeterminer } from "./http-DqSNLFNY.js";
4
+ import { HttpMessageSignaturesSpecDeterminer } from "./http-D6Uj2x2y.js";
5
5
  import { TracerProvider } from "@opentelemetry/api";
6
6
 
7
7
  //#region src/runtime/authdocloader.d.ts
@@ -1,5 +1,5 @@
1
1
  import { DocumentLoader, DocumentLoaderFactoryOptions } from "./docloader-D-MrRyHl.cjs";
2
- import { HttpMessageSignaturesSpecDeterminer } from "./http-BS6766zs.cjs";
2
+ import { HttpMessageSignaturesSpecDeterminer } from "./http-D-e6AFwR.cjs";
3
3
  import { TracerProvider } from "@opentelemetry/api";
4
4
 
5
5
  //#region src/runtime/authdocloader.d.ts