@fedify/fedify 2.4.0-dev.1664 → 2.4.0-dev.1668

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 (70) hide show
  1. package/README.md +3 -0
  2. package/dist/{builder-DEtIoOCd.mjs → builder-iXZ5jNVg.mjs} +2 -2
  3. package/dist/compat/mod.d.cts +1 -1
  4. package/dist/compat/mod.d.ts +1 -1
  5. package/dist/compat/transformers.test.mjs +1 -1
  6. package/dist/{context-lxX6I7as.d.cts → context-C05Rgxmu.d.cts} +1 -1
  7. package/dist/{context-Zii1f5xS.d.ts → context-Cjnr0ig1.d.ts} +1 -1
  8. package/dist/{deno-D-7G1Gr_.mjs → deno-DtHcfB0f.mjs} +1 -1
  9. package/dist/{docloader-D9A6EEqU.mjs → docloader-0vAfF6XW.mjs} +2 -2
  10. package/dist/federation/builder.test.mjs +1 -1
  11. package/dist/federation/handler.test.mjs +3 -3
  12. package/dist/federation/idempotency.test.mjs +2 -2
  13. package/dist/federation/metrics.test.mjs +1 -1
  14. package/dist/federation/middleware.test.mjs +7 -7
  15. package/dist/federation/mod.cjs +288 -9
  16. package/dist/federation/mod.d.cts +3 -3
  17. package/dist/federation/mod.d.ts +3 -3
  18. package/dist/federation/mod.js +279 -1
  19. package/dist/federation/mq.test.mjs +20 -1
  20. package/dist/federation/send.test.mjs +3 -3
  21. package/dist/federation/tasks/enqueue.test.mjs +39 -2
  22. package/dist/federation/tasks/tasks.test.mjs +3 -3
  23. package/dist/federation/temporal.test.mjs +1 -1
  24. package/dist/federation/webfinger.test.mjs +1 -1
  25. package/dist/{http-CwUR2p9O.js → http-BbnOMQoy.js} +1 -1
  26. package/dist/{http-D8vNRU1c.cjs → http-BpT5cE6r.cjs} +1 -1
  27. package/dist/{http-C9YqGENE.mjs → http-DUmWq5Pw.mjs} +3 -3
  28. package/dist/{key-k-gXasaq.mjs → key-CM7wDnZG.mjs} +2 -2
  29. package/dist/{kv-cache-wU63ceog.mjs → kv-cache-DEXKemJ9.mjs} +1 -1
  30. package/dist/{kv-cache-D3qGuzMp.js → kv-cache-ZQ22hm44.js} +1 -1
  31. package/dist/{kv-cache-S8ktj9Is.cjs → kv-cache-zmgG1HUp.cjs} +1 -1
  32. package/dist/{ld-CTrXQ_4L.mjs → ld-BttH_-8K.mjs} +3 -3
  33. package/dist/{metrics-CoUJLQhZ.d.cts → metrics-DN13mCAw.d.cts} +19 -1
  34. package/dist/{metrics-C0sK8KVF.mjs → metrics-DT-CnD1g.mjs} +1 -1
  35. package/dist/{metrics-Dc4jR-IC.d.ts → metrics-v_e0n5GQ.d.ts} +19 -1
  36. package/dist/{middleware-B0jtRhcz.mjs → middleware-ChlYS0Af.mjs} +1 -1
  37. package/dist/{middleware-n2M4gN8R.js → middleware-D3IAVMcT.js} +6 -278
  38. package/dist/{middleware-D-tV30CO.mjs → middleware-DrroX3aD.mjs} +14 -15
  39. package/dist/{middleware-B208QNHo.cjs → middleware-DzIUFRO2.cjs} +40 -325
  40. package/dist/{mod-BtEaIEcD.d.cts → mod-BrpVsSfY.d.cts} +1 -1
  41. package/dist/{mod-DLc2Ot6f.d.ts → mod-BsCE5Ihq.d.ts} +1 -1
  42. package/dist/{mod-UMmveiO0.d.ts → mod-CNef4in0.d.ts} +1 -1
  43. package/dist/{mod-gOlPDuT8.d.cts → mod-DdONo-ep.d.cts} +1 -1
  44. package/dist/mod.cjs +6 -6
  45. package/dist/mod.d.cts +4 -4
  46. package/dist/mod.d.ts +4 -4
  47. package/dist/mod.js +5 -5
  48. package/dist/{mq-llHKivST.mjs → mq-Bo7Etgh6.mjs} +6 -0
  49. package/dist/nodeinfo/handler.test.mjs +1 -1
  50. package/dist/{owner-z1xvgrcr.mjs → owner-DZALmhdl.mjs} +2 -2
  51. package/dist/{proof-B-mhO7aE.js → proof-CqA-2nfW.js} +1 -1
  52. package/dist/{proof-CkTnuZWO.mjs → proof-DiQ0uBal.mjs} +3 -3
  53. package/dist/{proof-Bxw6BAup.cjs → proof-a60oVJ_4.cjs} +1 -1
  54. package/dist/{send-5auO80cc.mjs → send-DcwZnQWG.mjs} +3 -3
  55. package/dist/sig/http.test.mjs +2 -2
  56. package/dist/sig/key.test.mjs +1 -1
  57. package/dist/sig/ld.test.mjs +2 -2
  58. package/dist/sig/mod.cjs +2 -2
  59. package/dist/sig/mod.js +2 -2
  60. package/dist/sig/owner.test.mjs +1 -1
  61. package/dist/sig/proof.test.mjs +1 -1
  62. package/dist/{temporal-S74T65ap.mjs → temporal-Bpxpsl2k.mjs} +1 -1
  63. package/dist/testing/mod.d.mts +14 -1
  64. package/dist/utils/docloader.test.mjs +2 -2
  65. package/dist/utils/kv-cache.test.mjs +1 -1
  66. package/dist/utils/mod.cjs +1 -1
  67. package/dist/utils/mod.d.cts +1 -1
  68. package/dist/utils/mod.d.ts +1 -1
  69. package/dist/utils/mod.js +1 -1
  70. package/package.json +7 -7
package/dist/mod.d.ts CHANGED
@@ -2,13 +2,13 @@
2
2
  import { a as InboundService, c as OutboundService, d as Software, f as Usage, i as parseNodeInfo, l as Protocol, n as ParseNodeInfoOptions, o as JsonValue, p as nodeInfoToJson, r as getNodeInfo, s as NodeInfo, t as GetNodeInfoOptions, u as Services } from "./client-CSddvgWN.js";
3
3
  import { C as exportJwk, D as importJwk, E as generateCryptoKeyPair, S as KeyCache, T as fetchKeyDetailed, _ as validateAcceptSignature, a as VerifyRequestDetailedResult, b as FetchKeyOptions, c as signRequest, d as AcceptSignatureMember, f as AcceptSignatureParameters, g as parseAcceptSignature, h as fulfillAcceptSignature, i as SignRequestOptions, l as verifyRequest, m as formatAcceptSignature, n as HttpMessageSignaturesSpecDeterminer, o as VerifyRequestFailureReason, p as FulfillAcceptSignatureResult, r as Rfc9421SignRequestOptions, s as VerifyRequestOptions, t as HttpMessageSignaturesSpec, u as verifyRequestDetailed, v as FetchKeyDetailedResult, w as fetchKey, x as FetchKeyResult, y as FetchKeyErrorResult } from "./http-lf8Hsd91.js";
4
4
  import { i as getKeyOwner, n as GetKeyOwnerOptions, r as doesActorOwnKey, t as DoesActorOwnKeyOptions } from "./owner-CnngXDNJ.js";
5
- import { $ as CircuitBreakerCreateOptions, A as OutboxListenerSetters, At as UnverifiedActivityHandler, B as TaskEnqueueOptions, C as FederationStartQueueOptions, Ct as ObjectAuthorizePredicate, D as InboxListenerSetters, Dt as OutboxListenerErrorHandler, E as InboxChallengePolicy, Et as OutboxListener, F as createFederation, Ft as PageItems, G as RetryPolicy, H as TaskRegistry, I as Message, It as buildCollectionSynchronizationHeader, J as respondWithObject, K as createExponentialBackoffPolicy, L as createFederationBuilder, Lt as digest, M as FederationKvPrefixes, Mt as WebFingerLinksDispatcher, N as FederationOrigin, Nt as SendActivityError, O as MediaUploaderSetters, Ot as OutboxPermanentFailureHandler, P as FederationQueueOptions, Pt as SenderKeyPair, Q as CircuitBreakerBeforeSendDecision, R as TaskDefinition, Rt as ActivityTransformer, S as FederationOptions, St as NodeInfoDispatcher, T as IdempotencyStrategy, Tt as OutboxErrorHandler, U as CreateExponentialBackoffPolicyOptions, V as TaskHandler, W as RetryContext, X as CircuitBreaker, Y as respondWithObjectIfAcceptable, Z as CircuitBreakerActivityDrop, _ as Federatable, _t as CustomCollectionCursor, a as GetSignedKeyOptions, at as NormalizedCircuitBreakerOptions, b as FederationBuilder, bt as InboxListener, c as ParseUriResult, ct as ActorAliasMapper, d as SendActivityOptions, dt as ActorKeyPairsDispatcher, et as CircuitBreakerFailurePolicy, f as SendActivityOptionsForCollection, ft as AuthorizePredicate, g as CustomCollectionCallbackSetters, gt as CustomCollectionCounter, h as ConstructorWithTypeId, ht as CollectionDispatcher, i as GetActorOptions, it as CircuitBreakerStateChange, j as Rfc6570Expression, jt as UnverifiedActivityReason, k as ObjectCallbackSetters, kt as SharedInboxKeyDispatcher, l as RequestContext, lt as ActorDispatcher, m as CollectionCallbackSetters, mt as CollectionCursor, n as Context, nt as CircuitBreakerOptions, o as InboxContext, ot as normalizeCircuitBreakerOptions, p as ActorCallbackSetters, pt as CollectionCounter, q as RespondWithObjectOptions, r as ForwardActivityOptions, rt as CircuitBreakerState, s as OutboxContext, st as parseCircuitBreakerKvState, t as ActorKeyPair, tt as CircuitBreakerKvState, u as RouteActivityOptions, ut as ActorHandleMapper, v as Federation, vt as CustomCollectionDispatcher, w as IdempotencyKeyCallback, wt as ObjectDispatcher, x as FederationFetchOptions, xt as MediaUploaderCallback, y as FederationBenchmarkOptions, yt as InboxErrorHandler, z as TaskDefinitionOptions } from "./context-Zii1f5xS.js";
5
+ import { $ as CircuitBreakerCreateOptions, A as OutboxListenerSetters, At as UnverifiedActivityHandler, B as TaskEnqueueOptions, C as FederationStartQueueOptions, Ct as ObjectAuthorizePredicate, D as InboxListenerSetters, Dt as OutboxListenerErrorHandler, E as InboxChallengePolicy, Et as OutboxListener, F as createFederation, Ft as PageItems, G as RetryPolicy, H as TaskRegistry, I as Message, It as buildCollectionSynchronizationHeader, J as respondWithObject, K as createExponentialBackoffPolicy, L as createFederationBuilder, Lt as digest, M as FederationKvPrefixes, Mt as WebFingerLinksDispatcher, N as FederationOrigin, Nt as SendActivityError, O as MediaUploaderSetters, Ot as OutboxPermanentFailureHandler, P as FederationQueueOptions, Pt as SenderKeyPair, Q as CircuitBreakerBeforeSendDecision, R as TaskDefinition, Rt as ActivityTransformer, S as FederationOptions, St as NodeInfoDispatcher, T as IdempotencyStrategy, Tt as OutboxErrorHandler, U as CreateExponentialBackoffPolicyOptions, V as TaskHandler, W as RetryContext, X as CircuitBreaker, Y as respondWithObjectIfAcceptable, Z as CircuitBreakerActivityDrop, _ as Federatable, _t as CustomCollectionCursor, a as GetSignedKeyOptions, at as NormalizedCircuitBreakerOptions, b as FederationBuilder, bt as InboxListener, c as ParseUriResult, ct as ActorAliasMapper, d as SendActivityOptions, dt as ActorKeyPairsDispatcher, et as CircuitBreakerFailurePolicy, f as SendActivityOptionsForCollection, ft as AuthorizePredicate, g as CustomCollectionCallbackSetters, gt as CustomCollectionCounter, h as ConstructorWithTypeId, ht as CollectionDispatcher, i as GetActorOptions, it as CircuitBreakerStateChange, j as Rfc6570Expression, jt as UnverifiedActivityReason, k as ObjectCallbackSetters, kt as SharedInboxKeyDispatcher, l as RequestContext, lt as ActorDispatcher, m as CollectionCallbackSetters, mt as CollectionCursor, n as Context, nt as CircuitBreakerOptions, o as InboxContext, ot as normalizeCircuitBreakerOptions, p as ActorCallbackSetters, pt as CollectionCounter, q as RespondWithObjectOptions, r as ForwardActivityOptions, rt as CircuitBreakerState, s as OutboxContext, st as parseCircuitBreakerKvState, t as ActorKeyPair, tt as CircuitBreakerKvState, u as RouteActivityOptions, ut as ActorHandleMapper, v as Federation, vt as CustomCollectionDispatcher, w as IdempotencyKeyCallback, wt as ObjectDispatcher, x as FederationFetchOptions, xt as MediaUploaderCallback, y as FederationBenchmarkOptions, yt as InboxErrorHandler, z as TaskDefinitionOptions } from "./context-Cjnr0ig1.js";
6
6
  import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "./kv-D6hNiMTK.js";
7
- import { a as MessageQueueDepth, c as ParallelMessageQueue, i as MessageQueue, n as InProcessMessageQueue, o as MessageQueueEnqueueOptions, r as InProcessMessageQueueOptions, s as MessageQueueListenOptions } from "./metrics-Dc4jR-IC.js";
7
+ import { a as MessageQueueDepth, c as ParallelMessageQueue, i as MessageQueue, n as InProcessMessageQueue, o as MessageQueueEnqueueOptions, r as InProcessMessageQueueOptions, s as MessageQueueListenOptions } from "./metrics-v_e0n5GQ.js";
8
8
  import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./compat/mod.js";
9
- import { a as RouterOptions, i as RouterError, n as handleWebFinger, o as RouterRouteResult, r as Router, t as WebFingerHandlerParameters } from "./mod-DLc2Ot6f.js";
9
+ import { a as RouterOptions, i as RouterError, n as handleWebFinger, o as RouterRouteResult, r as Router, t as WebFingerHandlerParameters } from "./mod-BsCE5Ihq.js";
10
10
  import { _ as hasSignatureLike, a as createProof, b as verifySignature, c as verifyObject, d as SignJsonLdOptions, f as VerifyJsonLdOptions, g as detachSignature, h as createSignature, i as VerifyProofOptions, l as verifyProof, m as attachSignature, n as SignObjectOptions, o as hasProofLike, p as VerifySignatureOptions, r as VerifyObjectOptions, s as signObject, t as CreateProofOptions, u as CreateSignatureOptions, v as signJsonLd, y as verifyJsonLd } from "./mod-COIAjwRS.js";
11
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-UMmveiO0.js";
11
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-CNef4in0.js";
12
12
  export * from "@fedify/vocab-runtime";
13
13
 
14
14
  //#region src/mod.d.ts
package/dist/mod.js CHANGED
@@ -3,12 +3,12 @@ import { URLPattern } from "urlpattern-polyfill";
3
3
  import "./chunk-D5IdezsZ.js";
4
4
  import { n as autoIdAssigner, r as getDefaultActivityTransformers, t as actorDehydrator } from "./transformers-DXze6FUB.js";
5
5
  import "./compat/mod.js";
6
- import { A as formatAcceptSignature, M as parseAcceptSignature, N as validateAcceptSignature, a as verifyRequestDetailed, c as fetchKeyDetailed, i as verifyRequest, j as fulfillAcceptSignature, l as generateCryptoKeyPair, o as exportJwk, r as signRequest, s as fetchKey, u as importJwk } from "./http-CwUR2p9O.js";
7
- import { a as ParallelMessageQueue, c as respondWithObject, d as digest, f as CircuitBreaker, h as createFederationBuilder, i as InProcessMessageQueue, l as respondWithObjectIfAcceptable, m as parseCircuitBreakerKvState, o as createExponentialBackoffPolicy, p as normalizeCircuitBreakerOptions, r as handleWebFinger, s as SendActivityError, t as createFederation, u as buildCollectionSynchronizationHeader } from "./middleware-n2M4gN8R.js";
8
- import { C as verifySignature, S as verifyJsonLd, _ as hasSignatureLike, a as verifyProof, b as signJsonLd, c as getKeyOwner, d as attachSignature, i as verifyObject, m as detachSignature, n as hasProofLike, p as createSignature, r as signObject, s as doesActorOwnKey, t as createProof } from "./proof-B-mhO7aE.js";
6
+ import { A as formatAcceptSignature, M as parseAcceptSignature, N as validateAcceptSignature, a as verifyRequestDetailed, c as fetchKeyDetailed, i as verifyRequest, j as fulfillAcceptSignature, l as generateCryptoKeyPair, o as exportJwk, r as signRequest, s as fetchKey, u as importJwk } from "./http-BbnOMQoy.js";
7
+ import { a as SendActivityError, c as buildCollectionSynchronizationHeader, d as normalizeCircuitBreakerOptions, f as parseCircuitBreakerKvState, i as createExponentialBackoffPolicy, l as digest, o as respondWithObject, p as createFederationBuilder, r as handleWebFinger, s as respondWithObjectIfAcceptable, t as createFederation, u as CircuitBreaker } from "./middleware-D3IAVMcT.js";
8
+ import { C as verifySignature, S as verifyJsonLd, _ as hasSignatureLike, a as verifyProof, b as signJsonLd, c as getKeyOwner, d as attachSignature, i as verifyObject, m as detachSignature, n as hasProofLike, p as createSignature, r as signObject, s as doesActorOwnKey, t as createProof } from "./proof-CqA-2nfW.js";
9
9
  import { n as getNodeInfo, r as parseNodeInfo, t as nodeInfoToJson } from "./types-DC1pNgJA.js";
10
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-D3qGuzMp.js";
11
- import { MemoryKvStore, Router, RouterError } from "./federation/mod.js";
10
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-ZQ22hm44.js";
11
+ import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue, Router, RouterError } from "./federation/mod.js";
12
12
  import "./nodeinfo/mod.js";
13
13
  import "./runtime/mod.js";
14
14
  import "./sig/mod.js";
@@ -172,6 +172,11 @@ var ParallelMessageQueue = class ParallelMessageQueue {
172
172
  * @since 2.4.0
173
173
  */
174
174
  nativeDeduplication;
175
+ /**
176
+ * Inherits the atomic batch capability from the wrapped queue.
177
+ * @since 2.4.0
178
+ */
179
+ atomicEnqueueMany;
175
180
  getDepth;
176
181
  /**
177
182
  * Tracks which ordering keys are currently being processed to ensure
@@ -197,6 +202,7 @@ var ParallelMessageQueue = class ParallelMessageQueue {
197
202
  this.workers = workers;
198
203
  this.nativeRetrial = queue.nativeRetrial;
199
204
  this.nativeDeduplication = queue.nativeDeduplication;
205
+ this.atomicEnqueueMany = queue.enqueueMany == null ? false : queue.atomicEnqueueMany;
200
206
  if (queue.getDepth != null) this.getDepth = () => queue.getDepth();
201
207
  }
202
208
  enqueue(message, options) {
@@ -5,7 +5,7 @@ import { r as createRequestContext } from "../context-BJXxPElm.mjs";
5
5
  import { t as MemoryKvStore } from "../kv-CXBAok3k.mjs";
6
6
  import { t as assertEquals } from "../assert_equals-BV7oLMxm.mjs";
7
7
  import "../std__assert-B2NnY9bq.mjs";
8
- import { _ as handleNodeInfo, o as createFederation, v as handleNodeInfoJrd } from "../middleware-D-tV30CO.mjs";
8
+ import { _ as handleNodeInfo, o as createFederation, v as handleNodeInfoJrd } from "../middleware-DrroX3aD.mjs";
9
9
  import { test } from "@fedify/fixture";
10
10
  //#region src/nodeinfo/handler.test.ts
11
11
  test("handleNodeInfo()", async () => {
@@ -1,8 +1,8 @@
1
1
  import "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-D-7G1Gr_.mjs";
5
- import "./key-k-gXasaq.mjs";
4
+ import { n as version, t as name } from "./deno-DtHcfB0f.mjs";
5
+ import "./key-CM7wDnZG.mjs";
6
6
  import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
7
7
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
8
8
  import { getDocumentLoader } from "@fedify/vocab-runtime";
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { F as version, P as name, _ as measureSignatureKeyFetch, d as validateCryptoKey, f as getDurationMs, p as getFederationMetrics, s as fetchKey } from "./http-CwUR2p9O.js";
3
+ import { F as version, P as name, _ as measureSignatureKeyFetch, d as validateCryptoKey, f as getDurationMs, p as getFederationMetrics, s as fetchKey } from "./http-BbnOMQoy.js";
4
4
  import { getLogger } from "@logtape/logtape";
5
5
  import { Activity, CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1, PUBLIC_COLLECTION, getTypeId, isActor } from "@fedify/vocab";
6
6
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
@@ -1,9 +1,9 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-D-7G1Gr_.mjs";
5
- import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-C0sK8KVF.mjs";
6
- import { n as fetchKey, o as validateCryptoKey } from "./key-k-gXasaq.mjs";
4
+ import { n as version, t as name } from "./deno-DtHcfB0f.mjs";
5
+ import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-DT-CnD1g.mjs";
6
+ import { n as fetchKey, o as validateCryptoKey } from "./key-CM7wDnZG.mjs";
7
7
  import { n as preloadedOnlyDocumentLoader } from "./public-audience-Cr5MsnMq.mjs";
8
8
  import { r as normalizeOutgoingActivityJsonLd } from "./outgoing-jsonld-URuqsICz.mjs";
9
9
  import { getLogger } from "@logtape/logtape";
@@ -1,6 +1,6 @@
1
1
  const { URLPattern } = require("urlpattern-polyfill");
2
2
  const require_chunk = require("./chunk-Czpeue4M.cjs");
3
- const require_http = require("./http-D8vNRU1c.cjs");
3
+ const require_http = require("./http-BpT5cE6r.cjs");
4
4
  const require_temporal_polyfill = require("./temporal-polyfill-BCdTHexd.cjs");
5
5
  let _logtape_logtape = require("@logtape/logtape");
6
6
  let _fedify_vocab = require("@fedify/vocab");
@@ -1,9 +1,9 @@
1
1
  import "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-D-7G1Gr_.mjs";
5
- import { n as getDurationMs, r as getFederationMetrics } from "./metrics-C0sK8KVF.mjs";
6
- import { n as doubleKnock } from "./http-C9YqGENE.mjs";
4
+ import { n as version, t as name } from "./deno-DtHcfB0f.mjs";
5
+ import { n as getDurationMs, r as getFederationMetrics } from "./metrics-DT-CnD1g.mjs";
6
+ import { n as doubleKnock } from "./http-DUmWq5Pw.mjs";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
9
9
  import { FetchError } from "@fedify/vocab-runtime";
@@ -7,8 +7,8 @@ import { r as assertExists, t as assertStringIncludes } from "../std__assert-B2N
7
7
  import { n as assertGreaterOrEqual, r as assertFalse, t as assertRejects } from "../assert_rejects-EgstcQy5.mjs";
8
8
  import { t as assertThrows } from "../assert_throws-NiFfqbnH.mjs";
9
9
  import { t as assert } from "../assert-CJ1KXcvv.mjs";
10
- import { t as exportJwk } from "../key-k-gXasaq.mjs";
11
- import { a as parseRfc9421Signature, c as timingSafeEqual, i as formatRfc9421SignatureParameters, l as verifyRequest, n as doubleKnock, o as parseRfc9421SignatureInput, r as formatRfc9421Signature, s as signRequest, t as createRfc9421SignatureBase, u as verifyRequestDetailed } from "../http-C9YqGENE.mjs";
10
+ import { t as exportJwk } from "../key-CM7wDnZG.mjs";
11
+ import { a as parseRfc9421Signature, c as timingSafeEqual, i as formatRfc9421SignatureParameters, l as verifyRequest, n as doubleKnock, o as parseRfc9421SignatureInput, r as formatRfc9421Signature, s as signRequest, t as createRfc9421SignatureBase, u as verifyRequestDetailed } from "../http-DUmWq5Pw.mjs";
12
12
  import { i as rsaPrivateKey2, l as rsaPublicKey5, o as rsaPublicKey1, s as rsaPublicKey2 } from "../keys-Dbyd7bhl.mjs";
13
13
  import { createTestMeterProvider, createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
14
14
  import { FetchError, exportSpki } from "@fedify/vocab-runtime";
@@ -5,7 +5,7 @@ import { t as assertEquals } from "../assert_equals-BV7oLMxm.mjs";
5
5
  import "../std__assert-B2NnY9bq.mjs";
6
6
  import { t as assertRejects } from "../assert_rejects-EgstcQy5.mjs";
7
7
  import { t as assertThrows } from "../assert_throws-NiFfqbnH.mjs";
8
- import { a as importJwk, i as generateCryptoKeyPair, n as fetchKey, o as validateCryptoKey, r as fetchKeyDetailed, t as exportJwk } from "../key-k-gXasaq.mjs";
8
+ import { a as importJwk, i as generateCryptoKeyPair, n as fetchKey, o as validateCryptoKey, r as fetchKeyDetailed, t as exportJwk } from "../key-CM7wDnZG.mjs";
9
9
  import { c as rsaPublicKey3, i as rsaPrivateKey2, o as rsaPublicKey1, r as ed25519PublicKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-Dbyd7bhl.mjs";
10
10
  import { CryptographicKey, Multikey } from "@fedify/vocab";
11
11
  import { createTestMeterProvider, createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
@@ -5,9 +5,9 @@ import { t as assertEquals } from "../assert_equals-BV7oLMxm.mjs";
5
5
  import { n as assertGreaterOrEqual, r as assertFalse, t as assertRejects } from "../assert_rejects-EgstcQy5.mjs";
6
6
  import { t as assertThrows } from "../assert_throws-NiFfqbnH.mjs";
7
7
  import { t as assert } from "../assert-CJ1KXcvv.mjs";
8
- import { i as generateCryptoKeyPair } from "../key-k-gXasaq.mjs";
8
+ import { i as generateCryptoKeyPair } from "../key-CM7wDnZG.mjs";
9
9
  import { a as rsaPrivateKey3, c as rsaPublicKey3, i as rsaPrivateKey2, n as ed25519PrivateKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-Dbyd7bhl.mjs";
10
- import { a as compactJsonLd, f as isInvalidUrlTypeError, g as verifySignature, h as verifyJsonLd, i as attachSignature, n as UnsafeJsonLdError, o as createSignature, p as signJsonLd, s as detachSignature, u as hasSignatureLike } from "../ld-CTrXQ_4L.mjs";
10
+ import { a as compactJsonLd, f as isInvalidUrlTypeError, g as verifySignature, h as verifyJsonLd, i as attachSignature, n as UnsafeJsonLdError, o as createSignature, p as signJsonLd, s as detachSignature, u as hasSignatureLike } from "../ld-BttH_-8K.mjs";
11
11
  import { CryptographicKey } from "@fedify/vocab";
12
12
  import { createTestMeterProvider, mockDocumentLoader, test } from "@fedify/fixture";
13
13
  import { encodeBase64 } from "byte-encodings/base64";
package/dist/sig/mod.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  const { URLPattern } = require("urlpattern-polyfill");
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const require_http = require("../http-D8vNRU1c.cjs");
4
- const require_proof = require("../proof-Bxw6BAup.cjs");
3
+ const require_http = require("../http-BpT5cE6r.cjs");
4
+ const require_proof = require("../proof-a60oVJ_4.cjs");
5
5
  exports.attachSignature = require_proof.attachSignature;
6
6
  exports.createProof = require_proof.createProof;
7
7
  exports.createSignature = require_proof.createSignature;
package/dist/sig/mod.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { A as formatAcceptSignature, M as parseAcceptSignature, N as validateAcceptSignature, a as verifyRequestDetailed, c as fetchKeyDetailed, i as verifyRequest, j as fulfillAcceptSignature, l as generateCryptoKeyPair, o as exportJwk, r as signRequest, s as fetchKey, u as importJwk } from "../http-CwUR2p9O.js";
4
- import { C as verifySignature, S as verifyJsonLd, _ as hasSignatureLike, a as verifyProof, b as signJsonLd, c as getKeyOwner, d as attachSignature, i as verifyObject, m as detachSignature, n as hasProofLike, p as createSignature, r as signObject, s as doesActorOwnKey, t as createProof } from "../proof-B-mhO7aE.js";
3
+ import { A as formatAcceptSignature, M as parseAcceptSignature, N as validateAcceptSignature, a as verifyRequestDetailed, c as fetchKeyDetailed, i as verifyRequest, j as fulfillAcceptSignature, l as generateCryptoKeyPair, o as exportJwk, r as signRequest, s as fetchKey, u as importJwk } from "../http-BbnOMQoy.js";
4
+ import { C as verifySignature, S as verifyJsonLd, _ as hasSignatureLike, a as verifyProof, b as signJsonLd, c as getKeyOwner, d as attachSignature, i as verifyObject, m as detachSignature, n as hasProofLike, p as createSignature, r as signObject, s as doesActorOwnKey, t as createProof } from "../proof-CqA-2nfW.js";
5
5
  export { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, exportJwk, fetchKey, fetchKeyDetailed, formatAcceptSignature, fulfillAcceptSignature, generateCryptoKeyPair, getKeyOwner, hasProofLike, hasSignatureLike, importJwk, parseAcceptSignature, signJsonLd, signObject, signRequest, validateAcceptSignature, verifyJsonLd, verifyObject, verifyProof, verifyRequest, verifyRequestDetailed, verifySignature };
@@ -6,7 +6,7 @@ import "../std__assert-B2NnY9bq.mjs";
6
6
  import { r as assertFalse } from "../assert_rejects-EgstcQy5.mjs";
7
7
  import { t as assert } from "../assert-CJ1KXcvv.mjs";
8
8
  import { o as rsaPublicKey1, s as rsaPublicKey2 } from "../keys-Dbyd7bhl.mjs";
9
- import { n as getKeyOwner, t as doesActorOwnKey } from "../owner-z1xvgrcr.mjs";
9
+ import { n as getKeyOwner, t as doesActorOwnKey } from "../owner-DZALmhdl.mjs";
10
10
  import { Create, CryptographicKey, lookupObject } from "@fedify/vocab";
11
11
  import { createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
12
12
  //#region src/sig/owner.test.ts
@@ -8,7 +8,7 @@ import { t as assertInstanceOf } from "../assert_instance_of-Q9KTBnrf.mjs";
8
8
  import { t as assert } from "../assert-CJ1KXcvv.mjs";
9
9
  import { i as rsaPrivateKey2, n as ed25519PrivateKey, r as ed25519PublicKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-Dbyd7bhl.mjs";
10
10
  import { r as normalizeOutgoingActivityJsonLd } from "../outgoing-jsonld-URuqsICz.mjs";
11
- import { a as verifyProof, i as verifyObject, n as hasProofLike, r as signObject, t as createProof } from "../proof-CkTnuZWO.mjs";
11
+ import { a as verifyProof, i as verifyObject, n as hasProofLike, r as signObject, t as createProof } from "../proof-DiQ0uBal.mjs";
12
12
  import { Create, DataIntegrityProof, Document, Multikey, Note, PUBLIC_COLLECTION, Place } from "@fedify/vocab";
13
13
  import { createTestMeterProvider, mockDocumentLoader, test } from "@fedify/fixture";
14
14
  import { decodeMultibase, exportDidKey, exportMultibaseKey, importMultibaseKey, parseIri } from "@fedify/vocab-runtime";
@@ -1,7 +1,7 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { c as getNormalizationContextLoader } from "./ld-CTrXQ_4L.mjs";
4
+ import { c as getNormalizationContextLoader } from "./ld-BttH_-8K.mjs";
5
5
  import jsonld from "@fedify/vocab-runtime/jsonld";
6
6
  //#region src/federation/temporal.ts
7
7
  function isPlainObject(value) {
@@ -897,6 +897,17 @@ interface MessageQueue {
897
897
  * @since 2.4.0
898
898
  */
899
899
  readonly nativeDeduplication?: boolean;
900
+ /**
901
+ * Whether {@link enqueueMany} accepts either every message or no messages.
902
+ * Backends that implement `enqueueMany()` by sending messages individually
903
+ * must set this to `false`, so Fedify does not use that method for a batch
904
+ * governed by one `deduplicationKey`. `true` by default when `enqueueMany`
905
+ * is implemented.
906
+ *
907
+ * @default `true`
908
+ * @since 2.4.0
909
+ */
910
+ readonly atomicEnqueueMany?: boolean;
900
911
  /**
901
912
  * Enqueues a message in the queue.
902
913
  * @param message The message to enqueue.
@@ -906,7 +917,9 @@ interface MessageQueue {
906
917
  /**
907
918
  * Enqueues multiple messages in the queue. This operation is optional,
908
919
  * and may not be supported by all implementations. If not supported,
909
- * Fedify will invoke {@link enqueue} for each message.
920
+ * Fedify will invoke {@link enqueue} for each message. An implementation
921
+ * that may accept only part of a batch before rejecting must declare
922
+ * {@link atomicEnqueueMany} `false`.
910
923
  *
911
924
  * @param messages The messages to enqueue.
912
925
  * @param options Additional options for enqueuing the messages.
@@ -5,9 +5,9 @@ import { t as esm_default } from "../esm-yYQfPhIY.mjs";
5
5
  import { t as assertEquals } from "../assert_equals-BV7oLMxm.mjs";
6
6
  import "../std__assert-B2NnY9bq.mjs";
7
7
  import { t as assertRejects } from "../assert_rejects-EgstcQy5.mjs";
8
- import { l as verifyRequest } from "../http-C9YqGENE.mjs";
8
+ import { l as verifyRequest } from "../http-DUmWq5Pw.mjs";
9
9
  import { i as rsaPrivateKey2 } from "../keys-Dbyd7bhl.mjs";
10
- import { t as getAuthenticatedDocumentLoader } from "../docloader-D9A6EEqU.mjs";
10
+ import { t as getAuthenticatedDocumentLoader } from "../docloader-0vAfF6XW.mjs";
11
11
  import { mockDocumentLoader, test } from "@fedify/fixture";
12
12
  import { UrlError } from "@fedify/vocab-runtime";
13
13
  //#region src/utils/docloader.test.ts
@@ -1,7 +1,7 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as kvCache, t as MockKvStore } from "../kv-cache-wU63ceog.mjs";
4
+ import { n as kvCache, t as MockKvStore } from "../kv-cache-DEXKemJ9.mjs";
5
5
  import { deepStrictEqual, throws } from "node:assert";
6
6
  import { createTestMeterProvider, mockDocumentLoader, test } from "@fedify/fixture";
7
7
  import { preloadedContexts } from "@fedify/vocab-runtime";
@@ -1,5 +1,5 @@
1
1
  const { URLPattern } = require("urlpattern-polyfill");
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const require_kv_cache = require("../kv-cache-S8ktj9Is.cjs");
3
+ const require_kv_cache = require("../kv-cache-zmgG1HUp.cjs");
4
4
  exports.getAuthenticatedDocumentLoader = require_kv_cache.getAuthenticatedDocumentLoader;
5
5
  exports.kvCache = require_kv_cache.kvCache;
@@ -1,3 +1,3 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "../mod-BtEaIEcD.cjs";
2
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "../mod-BrpVsSfY.cjs";
3
3
  export { getAuthenticatedDocumentLoader, kvCache };
@@ -1,3 +1,3 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "../mod-UMmveiO0.js";
2
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "../mod-CNef4in0.js";
3
3
  export { getAuthenticatedDocumentLoader, kvCache };
package/dist/utils/mod.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "../kv-cache-D3qGuzMp.js";
3
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "../kv-cache-ZQ22hm44.js";
4
4
  export { getAuthenticatedDocumentLoader, kvCache };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fedify/fedify",
3
- "version": "2.4.0-dev.1664+6dbb4bbe",
3
+ "version": "2.4.0-dev.1668+90797b01",
4
4
  "description": "An ActivityPub server framework",
5
5
  "keywords": [
6
6
  "ActivityPub",
@@ -151,10 +151,10 @@
151
151
  "structured-field-values": "^2.0.4",
152
152
  "temporal-polyfill": "^1.0.1",
153
153
  "urlpattern-polyfill": "^10.1.0",
154
- "@fedify/vocab": "2.4.0-dev.1664+6dbb4bbe",
155
- "@fedify/uri-template": "2.4.0-dev.1664+6dbb4bbe",
156
- "@fedify/vocab-runtime": "2.4.0-dev.1664+6dbb4bbe",
157
- "@fedify/webfinger": "2.4.0-dev.1664+6dbb4bbe"
154
+ "@fedify/uri-template": "2.4.0-dev.1668+90797b01",
155
+ "@fedify/vocab-runtime": "2.4.0-dev.1668+90797b01",
156
+ "@fedify/webfinger": "2.4.0-dev.1668+90797b01",
157
+ "@fedify/vocab": "2.4.0-dev.1668+90797b01"
158
158
  },
159
159
  "devDependencies": {
160
160
  "@std/assert": "npm:@jsr/std__assert@^0.226.0",
@@ -166,8 +166,8 @@
166
166
  "tsx": "^4.21.0",
167
167
  "typescript": "^6.0.0",
168
168
  "wrangler": "^4.17.0",
169
- "@fedify/fixture": "2.0.0",
170
- "@fedify/vocab-tools": "^2.4.0-dev.1664+6dbb4bbe"
169
+ "@fedify/vocab-tools": "^2.4.0-dev.1668+90797b01",
170
+ "@fedify/fixture": "2.0.0"
171
171
  },
172
172
  "scripts": {
173
173
  "build:self": "tsdown",