@fedify/fedify 2.4.0-pr.936.41 → 2.5.0-dev.2271

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 (244) hide show
  1. package/README.md +50 -39
  2. package/dist/{assert-CJ1KXcvv.mjs → assert-D1Eafmd_.mjs} +1 -1
  3. package/dist/{assert_equals-BV7oLMxm.mjs → assert_equals-Z6IcEbWU.mjs} +2 -28
  4. package/dist/assert_exists-cffSpJ7X.mjs +28 -0
  5. package/dist/assert_false-CPdRnc3E.mjs +23 -0
  6. package/dist/assert_greater_or_equal-BlafOF4-.mjs +31 -0
  7. package/dist/{assert_instance_of-Q9KTBnrf.mjs → assert_instance_of-mrXWWNY-.mjs} +1 -1
  8. package/dist/{assert_not_equals-EPJPoxuf.mjs → assert_not_equals-CpPK2t89.mjs} +2 -1
  9. package/dist/assert_rejects-CTptdYck.mjs +39 -0
  10. package/dist/{assert_strict_equals-Ec20AUwa.mjs → assert_strict_equals-CYvBmkpC.mjs} +2 -1
  11. package/dist/{assert_throws-NiFfqbnH.mjs → assert_throws-BYITOvPO.mjs} +2 -1
  12. package/dist/assertion_error-B-cx0fFA.mjs +31 -0
  13. package/dist/audience-CHQ-FlLD.mjs +95 -0
  14. package/dist/{builder-DonuxRl_.mjs → builder-Bda6LK7A.mjs} +169 -14
  15. package/dist/{circuit-breaker-CBGyz5F7.mjs → circuit-breaker-XJ53md4S.mjs} +224 -17
  16. package/dist/circuit-breaker-test-utils-DW6YC_Pe.mjs +14 -0
  17. package/dist/{client-CjF5IYQS.mjs → client-CEnNz8O7.mjs} +144 -8
  18. package/dist/{codec-BBga-FWI.mjs → codec-C6rTrpIp.mjs} +26 -3
  19. package/dist/{collection-BIhlldqK.mjs → collection-CnnP1UAv.mjs} +1 -1
  20. package/dist/compat/mod.cjs +1 -1
  21. package/dist/compat/mod.d.cts +1 -1
  22. package/dist/compat/mod.d.ts +1 -1
  23. package/dist/compat/mod.js +1 -1
  24. package/dist/compat/outgoing-jsonld.test.mjs +71 -3
  25. package/dist/compat/public-audience.test.mjs +14 -5
  26. package/dist/compat/secured-document.test.d.mts +2 -0
  27. package/dist/compat/secured-document.test.mjs +58 -0
  28. package/dist/compat/transformers.test.mjs +5 -5
  29. package/dist/compound-proof-B-9mXxFW.mjs +989 -0
  30. package/dist/{context-Zii1f5xS.d.ts → context-7NyiqIcg.d.ts} +1600 -25
  31. package/dist/{context-BJXxPElm.mjs → context-8Tu9kea0.mjs} +21 -63
  32. package/dist/{context-lxX6I7as.d.cts → context-tsYPJ2Ew.d.cts} +1600 -25
  33. package/dist/{deno-BHzKn9Ig.mjs → deno-oR5aJKpU.mjs} +1 -1
  34. package/dist/dist-DJQM4u7i.mjs +189 -0
  35. package/dist/docloader-DBoYbvYW.mjs +87 -0
  36. package/dist/{esm-yYQfPhIY.mjs → esm-BHXXx4Wx.mjs} +13 -6
  37. package/dist/federation/audience.test.d.mts +2 -0
  38. package/dist/federation/audience.test.mjs +130 -0
  39. package/dist/federation/builder.test.mjs +54 -5
  40. package/dist/federation/circuit-breaker.test.mjs +838 -7
  41. package/dist/federation/collection.test.mjs +3 -3
  42. package/dist/federation/compound-fanout.test.d.mts +2 -0
  43. package/dist/federation/compound-fanout.test.mjs +228 -0
  44. package/dist/federation/handler-compound-proof.test.d.mts +2 -0
  45. package/dist/federation/handler-compound-proof.test.mjs +384 -0
  46. package/dist/federation/handler.test.mjs +385 -15
  47. package/dist/federation/hashlink-media.test.d.mts +2 -0
  48. package/dist/federation/hashlink-media.test.mjs +422 -0
  49. package/dist/federation/idempotency.test.mjs +6 -6
  50. package/dist/federation/inbox-report.test.d.mts +2 -0
  51. package/dist/federation/inbox-report.test.mjs +475 -0
  52. package/dist/federation/inbox.test.mjs +3 -3
  53. package/dist/federation/keycache.test.mjs +215 -14
  54. package/dist/federation/kv.test.mjs +3 -3
  55. package/dist/federation/metrics.test.mjs +5 -5
  56. package/dist/federation/middleware.test.mjs +967 -35
  57. package/dist/federation/mod.cjs +18 -261
  58. package/dist/federation/mod.d.cts +5 -5
  59. package/dist/federation/mod.d.ts +5 -5
  60. package/dist/federation/mod.js +279 -1
  61. package/dist/federation/mq.test.mjs +123 -47
  62. package/dist/federation/negotiation.test.mjs +4 -4
  63. package/dist/federation/outgoing-proof.test.d.mts +2 -0
  64. package/dist/federation/outgoing-proof.test.mjs +931 -0
  65. package/dist/federation/portable-actor.test.d.mts +2 -0
  66. package/dist/federation/portable-actor.test.mjs +496 -0
  67. package/dist/federation/portable-chain.test.d.mts +2 -0
  68. package/dist/federation/portable-chain.test.mjs +370 -0
  69. package/dist/federation/portable-collection.test.d.mts +2 -0
  70. package/dist/federation/portable-collection.test.mjs +832 -0
  71. package/dist/federation/portable-delivery.test.d.mts +2 -0
  72. package/dist/federation/portable-delivery.test.mjs +746 -0
  73. package/dist/federation/portable-gateway-keys.test.d.mts +2 -0
  74. package/dist/federation/portable-gateway-keys.test.mjs +686 -0
  75. package/dist/federation/portable-inbox.test.d.mts +2 -0
  76. package/dist/federation/portable-inbox.test.mjs +1535 -0
  77. package/dist/federation/portable-parse-uri.test.d.mts +2 -0
  78. package/dist/federation/portable-parse-uri.test.mjs +348 -0
  79. package/dist/federation/portable-route-activity.test.d.mts +2 -0
  80. package/dist/federation/portable-route-activity.test.mjs +259 -0
  81. package/dist/federation/portable.test.d.mts +2 -0
  82. package/dist/federation/portable.test.mjs +1072 -0
  83. package/dist/federation/retry.test.mjs +4 -3
  84. package/dist/federation/router.test.mjs +9 -159
  85. package/dist/federation/send.test.mjs +245 -27
  86. package/dist/federation/tasks/codec.test.mjs +4 -4
  87. package/dist/federation/tasks/enqueue.test.mjs +42 -4
  88. package/dist/federation/tasks/tasks.test.mjs +7 -6
  89. package/dist/federation/temporal.test.mjs +4 -4
  90. package/dist/federation/webfinger.test.mjs +275 -12
  91. package/dist/{middleware-FrSMAYEx.cjs → federation-CkZiAcWY.cjs} +8640 -3722
  92. package/dist/http-B5JT115n.cjs +10630 -0
  93. package/dist/http-DydWCB7R.js +6527 -0
  94. package/dist/{http-CPVMUgsW.mjs → http-siciWkmx.mjs} +397 -168
  95. package/dist/key-BspPiXqn.mjs +951 -0
  96. package/dist/key-C1nv7_jD.d.ts +1125 -0
  97. package/dist/key-DYxuyd-s.d.cts +1125 -0
  98. package/dist/key-owner-evidence-APB6NpSk.mjs +108 -0
  99. package/dist/keycache-Da8A8mZa.mjs +200 -0
  100. package/dist/{kv-D6hNiMTK.d.ts → kv-B2mzK5tl.d.cts} +3 -2
  101. package/dist/{kv-gJ8LYbxX.d.cts → kv-B2mzK5tl.d.ts} +3 -2
  102. package/dist/kv-DBRWVx3Q.mjs +104 -0
  103. package/dist/{kv-cache-KyGqJqSp.mjs → kv-cache-BF1hnW65.mjs} +1 -1
  104. package/dist/{kv-cache-5bnX3-Jq.js → kv-cache-CTQr1tbn.js} +54 -16
  105. package/dist/{kv-cache-DQ29C4XL.cjs → kv-cache-DCac1nEU.cjs} +55 -19
  106. package/dist/{ld-Cj9F_5AP.mjs → ld-CzaP-hJl.mjs} +44 -12
  107. package/dist/map-local-context-conflict-DOYEEJ3u.mjs +204 -0
  108. package/dist/map-local-create-note-B0SeXJms.mjs +214 -0
  109. package/dist/{metrics-DMk-nTxI.mjs → metrics-CYg9yxBL.mjs} +3 -2
  110. package/dist/metrics-DVKYY6K1.d.cts +36 -0
  111. package/dist/metrics-DoRtI0qU.d.ts +36 -0
  112. package/dist/{middleware-Y-kpsp6S.js → middleware-CsDDXKuL.js} +5493 -1103
  113. package/dist/{middleware-CvwTUgnP.mjs → middleware-D7_LO-Vs.mjs} +3157 -272
  114. package/dist/{middleware-CEctxBN6.mjs → middleware-DWjrfpcz.mjs} +1 -1
  115. package/dist/{mod-gOlPDuT8.d.cts → mod-BojP2Bw3.d.cts} +1 -1
  116. package/dist/mod-CavhAgLw.d.cts +320 -0
  117. package/dist/mod-CtpF2BU5.d.ts +320 -0
  118. package/dist/{mod-BtEaIEcD.d.cts → mod-DEZXwV6J.d.ts} +10 -4
  119. package/dist/{mod-UMmveiO0.d.ts → mod-Dw-nPxQh.d.cts} +10 -4
  120. package/dist/{mod-DLc2Ot6f.d.ts → mod-Xj5P4s4d.d.ts} +1 -1
  121. package/dist/mod.cjs +40 -39
  122. package/dist/mod.d.cts +10 -11
  123. package/dist/mod.d.ts +10 -11
  124. package/dist/mod.js +9 -9
  125. package/dist/{mq-llHKivST.mjs → mq-Dm1Wmtm-.mjs} +6 -0
  126. package/dist/nodeinfo/client.test.mjs +139 -4
  127. package/dist/nodeinfo/handler.test.mjs +5 -5
  128. package/dist/nodeinfo/mod.cjs +1 -1
  129. package/dist/nodeinfo/mod.d.cts +1 -1
  130. package/dist/nodeinfo/mod.d.ts +1 -1
  131. package/dist/nodeinfo/mod.js +1 -1
  132. package/dist/nodeinfo/types.test.mjs +4 -4
  133. package/dist/otel/exporter.test.mjs +3 -3
  134. package/dist/otel/mod.cjs +0 -1
  135. package/dist/otel/mod.d.cts +1 -1
  136. package/dist/otel/mod.d.ts +1 -1
  137. package/dist/{outgoing-jsonld-URuqsICz.mjs → outgoing-jsonld-4IJqPYos.mjs} +12 -10
  138. package/dist/{owner-DEvZuyOE.d.cts → owner-BF0L9cMt.d.cts} +11 -0
  139. package/dist/{owner-CnngXDNJ.d.ts → owner-BSzr5-I8.d.ts} +11 -0
  140. package/dist/owner-DYgfTFHy.mjs +267 -0
  141. package/dist/portable-collection-BpsVsRov.js +670 -0
  142. package/dist/portable-collection-C74P1vtC.mjs +418 -0
  143. package/dist/portable-collection-DZd2bm7M.cjs +686 -0
  144. package/dist/portable-key-BIMLrAP4.mjs +549 -0
  145. package/dist/portable-key-id-Ca30-hOa.mjs +248 -0
  146. package/dist/proof-Dxy6ByqI.mjs +1299 -0
  147. package/dist/{public-audience-Cr5MsnMq.mjs → public-audience--klBIOk1.mjs} +15 -10
  148. package/dist/router-u5O5KCQr.mjs +156 -0
  149. package/dist/runtime/mod.cjs +1 -1
  150. package/dist/runtime/mod.js +1 -1
  151. package/dist/secured-document-CxzZZ9nL.mjs +35 -0
  152. package/dist/send-C4dDpAxm.mjs +495 -0
  153. package/dist/sig/accept.test.mjs +1 -1
  154. package/dist/sig/compound-proof-discovery.test.d.mts +2 -0
  155. package/dist/sig/compound-proof-discovery.test.mjs +331 -0
  156. package/dist/sig/compound-proof-producer.test.d.mts +2 -0
  157. package/dist/sig/compound-proof-producer.test.mjs +107 -0
  158. package/dist/sig/compound-proof-verification.test.d.mts +2 -0
  159. package/dist/sig/compound-proof-verification.test.mjs +833 -0
  160. package/dist/sig/compound-proof.test.d.mts +2 -0
  161. package/dist/sig/compound-proof.test.mjs +411 -0
  162. package/dist/sig/http.test.mjs +702 -31
  163. package/dist/sig/key-owner-evidence.test.d.mts +2 -0
  164. package/dist/sig/key-owner-evidence.test.mjs +100 -0
  165. package/dist/sig/key.test.mjs +220 -8
  166. package/dist/sig/ld.test.mjs +65 -7
  167. package/dist/sig/mitra-receive-interop.test.d.mts +2 -0
  168. package/dist/sig/mitra-receive-interop.test.mjs +260 -0
  169. package/dist/sig/mitra-send-interop.test.d.mts +2 -0
  170. package/dist/sig/mitra-send-interop.test.mjs +461 -0
  171. package/dist/sig/mod.cjs +18 -16
  172. package/dist/sig/mod.d.cts +4 -4
  173. package/dist/sig/mod.d.ts +4 -4
  174. package/dist/sig/mod.js +3 -3
  175. package/dist/sig/owner.test.mjs +108 -9
  176. package/dist/sig/portable-collection.test.d.mts +2 -0
  177. package/dist/sig/portable-collection.test.mjs +697 -0
  178. package/dist/sig/portable-interop.test.d.mts +2 -0
  179. package/dist/sig/portable-interop.test.mjs +156 -0
  180. package/dist/sig/portable-key-id.test.d.mts +2 -0
  181. package/dist/sig/portable-key-id.test.mjs +67 -0
  182. package/dist/sig/portable-key.test.d.mts +2 -0
  183. package/dist/sig/portable-key.test.mjs +1439 -0
  184. package/dist/sig/proof.test.mjs +1753 -16
  185. package/dist/sig/tootik-request-interop.test.d.mts +2 -0
  186. package/dist/sig/tootik-request-interop.test.mjs +190 -0
  187. package/dist/sig/tootik-send-interop.test.d.mts +2 -0
  188. package/dist/sig/tootik-send-interop.test.mjs +331 -0
  189. package/dist/sig/verification.test.d.mts +2 -0
  190. package/dist/sig/verification.test.mjs +310 -0
  191. package/dist/std__assert-DvMDRPes.mjs +8 -0
  192. package/dist/{testing-CO7ftO8A.mjs → tasks-IG3pHfvZ.mjs} +2 -2
  193. package/dist/{temporal-fsXO5IvD.mjs → temporal-D0KJI4NF.mjs} +3 -3
  194. package/dist/testing/context.test.d.mts +2 -0
  195. package/dist/testing/context.test.mjs +19 -0
  196. package/dist/testing/kv.test.d.mts +2 -0
  197. package/dist/testing/kv.test.mjs +101 -0
  198. package/dist/testing/mod.d.mts +1617 -48
  199. package/dist/testing/mod.mjs +6 -3
  200. package/dist/testing-t8xDeJZ5.mjs +8 -0
  201. package/dist/{transformers-DGwl-hD1.cjs → transformers-BalCrSsr.cjs} +0 -1
  202. package/dist/{types-DC1pNgJA.js → types-_S2_MeLF.js} +144 -8
  203. package/dist/{types-CPym83zc.cjs → types-poIao40f.cjs} +160 -7
  204. package/dist/utils/docloader.test.mjs +530 -8
  205. package/dist/utils/kv-cache.test.mjs +2 -2
  206. package/dist/utils/mod.cjs +1 -1
  207. package/dist/utils/mod.d.cts +1 -1
  208. package/dist/utils/mod.d.ts +1 -1
  209. package/dist/utils/mod.js +1 -1
  210. package/dist/verification-C3954hQh.mjs +5 -0
  211. package/dist/verification-Dpfcw8ml.mjs +105 -0
  212. package/dist/vocab/cjs.test.mjs +1 -1
  213. package/package.json +8 -8
  214. package/dist/assert_rejects-EgstcQy5.mjs +0 -82
  215. package/dist/docloader-e1khNUKy.mjs +0 -49
  216. package/dist/http-CsmQ-BQ4.js +0 -2483
  217. package/dist/http-VyDTd4G3.d.cts +0 -553
  218. package/dist/http-hlIjmewS.cjs +0 -2694
  219. package/dist/http-lf8Hsd91.d.ts +0 -553
  220. package/dist/key-DfPsX8hv.mjs +0 -453
  221. package/dist/keycache-_DHqz5z_.mjs +0 -97
  222. package/dist/metrics-CoUJLQhZ.d.cts +0 -276
  223. package/dist/metrics-Dc4jR-IC.d.ts +0 -276
  224. package/dist/mod-B0hW12_O.d.cts +0 -307
  225. package/dist/mod-COIAjwRS.d.ts +0 -307
  226. package/dist/owner-Br9YYzn_.mjs +0 -120
  227. package/dist/proof-B4ngoaNQ.mjs +0 -316
  228. package/dist/proof-B6E0XUXJ.js +0 -1415
  229. package/dist/proof-NN4xCQGL.cjs +0 -1562
  230. package/dist/send-CxHKUNzv.mjs +0 -239
  231. package/dist/std__assert-B2NnY9bq.mjs +0 -79
  232. package/dist/temporal-polyfill-BCdTHexd.cjs +0 -3565
  233. /package/dist/{accept-8PiolDP7.mjs → accept-CPVqki78.mjs} +0 -0
  234. /package/dist/{activity-listener-BtTSxZWA.mjs → activity-listener-C-BSbKI7.mjs} +0 -0
  235. /package/dist/{client-CAM_bQXx.d.cts → client-D-XP_Ccb.d.cts} +0 -0
  236. /package/dist/{client-CSddvgWN.d.ts → client-D-XP_Ccb.d.ts} +0 -0
  237. /package/dist/{keys-Dbyd7bhl.mjs → keys-DIJNHW-Y.mjs} +0 -0
  238. /package/dist/{kv-CXBAok3k.mjs → kv-DCHkaJ9-.mjs} +0 -0
  239. /package/dist/{negotiation-RuwrPFqi.mjs → negotiation-CCocWT_N.mjs} +0 -0
  240. /package/dist/{retry-DgFqeS5k.mjs → retry-zX5xw5e0.mjs} +0 -0
  241. /package/dist/{chunk-D5IdezsZ.js → rolldown-runtime-BC-Eo5Mj.js} +0 -0
  242. /package/dist/{chunk-Czpeue4M.cjs → rolldown-runtime-Dmm3t92W.cjs} +0 -0
  243. /package/dist/{transformers-DXze6FUB.js → transformers-DAtXl_Kc.js} +0 -0
  244. /package/dist/{types-CrtdVuDP.mjs → types-DE_LV1JB.mjs} +0 -0
@@ -1,276 +0,0 @@
1
- /// <reference lib="esnext.temporal" />
2
- import { DocumentLoader } from "@fedify/vocab-runtime";
3
- import { MeterProvider } from "@opentelemetry/api";
4
-
5
- //#region src/federation/mq.d.ts
6
- /**
7
- * Additional options for enqueuing a message in a queue.
8
- *
9
- * @since 0.5.0
10
- */
11
- interface MessageQueueEnqueueOptions {
12
- /**
13
- * The delay before the message is enqueued. No delay by default.
14
- *
15
- * It must not be negative.
16
- */
17
- readonly delay?: Temporal.Duration;
18
- /**
19
- * An optional key that ensures messages with the same ordering key are
20
- * processed sequentially (one at a time). Messages with different ordering
21
- * keys (or no ordering key) may be processed in parallel.
22
- *
23
- * This is useful for ensuring that related messages are processed in order,
24
- * such as ensuring that a `Delete` activity is processed after a `Create`
25
- * activity for the same object.
26
- *
27
- * @since 2.0.0
28
- */
29
- readonly orderingKey?: string;
30
- /**
31
- * An optional key requesting at-most-once enqueue semantics for messages
32
- * that share it. A backend that declares
33
- * {@link MessageQueue.nativeDeduplication} `true` owns the check: a message
34
- * whose `deduplicationKey` was already seen within the backend's
35
- * deduplication window is dropped instead of enqueued. Backends without
36
- * native deduplication ignore this field; Fedify performs its own
37
- * best-effort deduplication before reaching them on the paths that support
38
- * it.
39
- *
40
- * @since 2.4.0
41
- */
42
- readonly deduplicationKey?: string;
43
- }
44
- /**
45
- * Additional options for listening to a message queue.
46
- *
47
- * @since 1.0.0
48
- */
49
- interface MessageQueueListenOptions {
50
- /**
51
- * The signal to abort listening to the message queue.
52
- */
53
- signal?: AbortSignal;
54
- }
55
- /**
56
- * The number of messages waiting in a message queue.
57
- *
58
- * @since 2.3.0
59
- */
60
- interface MessageQueueDepth {
61
- /**
62
- * The total number of messages still waiting in the backend queue.
63
- *
64
- * This does not include messages that have already been handed to a worker
65
- * for processing.
66
- */
67
- readonly queued: number;
68
- /**
69
- * The number of queued messages eligible for immediate processing.
70
- *
71
- * Queue backends that cannot cheaply distinguish ready and delayed messages
72
- * may omit this field.
73
- */
74
- readonly ready?: number;
75
- /**
76
- * The number of queued messages scheduled for later delivery.
77
- *
78
- * Queue backends that cannot cheaply distinguish ready and delayed messages
79
- * may omit this field.
80
- */
81
- readonly delayed?: number;
82
- }
83
- /**
84
- * An abstract interface for a message queue.
85
- *
86
- * @since 0.5.0
87
- */
88
- interface MessageQueue {
89
- /**
90
- * Whether the message queue backend provides native retry mechanisms.
91
- * When `true`, Fedify will skip its own retry logic and rely on the backend
92
- * to handle retries. When `false` or omitted, Fedify will handle retries
93
- * using its own retry policies.
94
- *
95
- * @default `false`
96
- * @since 1.7.0
97
- */
98
- readonly nativeRetrial?: boolean;
99
- /**
100
- * Whether the message queue backend deduplicates messages that share a
101
- * {@link MessageQueueEnqueueOptions.deduplicationKey} natively. When `true`,
102
- * Fedify forwards the `deduplicationKey` and relies on the backend to drop
103
- * duplicates; when `false` or omitted, Fedify applies its own best-effort
104
- * key–value deduplication on the paths that request it.
105
- *
106
- * @default `false`
107
- * @since 2.4.0
108
- */
109
- readonly nativeDeduplication?: boolean;
110
- /**
111
- * Enqueues a message in the queue.
112
- * @param message The message to enqueue.
113
- * @param options Additional options for enqueuing the message.
114
- */
115
- enqueue(message: any, options?: MessageQueueEnqueueOptions): Promise<void>;
116
- /**
117
- * Enqueues multiple messages in the queue. This operation is optional,
118
- * and may not be supported by all implementations. If not supported,
119
- * Fedify will invoke {@link enqueue} for each message.
120
- *
121
- * @param messages The messages to enqueue.
122
- * @param options Additional options for enqueuing the messages.
123
- */
124
- enqueueMany?: (messages: readonly any[], options?: MessageQueueEnqueueOptions) => Promise<void>;
125
- /**
126
- * Listens for messages in the queue.
127
- * @param handler The handler for messages in the queue.
128
- * @param options Additional options for listening to the message queue.
129
- * @returns A promise that resolves when the listening is done. It never
130
- * rejects, and is resolved when the signal is aborted. If no
131
- * signal is provided, it never resolves.
132
- */
133
- listen(handler: (message: any) => Promise<void> | void, options?: MessageQueueListenOptions): Promise<void>;
134
- /**
135
- * Gets the number of messages waiting in the queue.
136
- *
137
- * This operation is optional, and may not be supported by all
138
- * implementations. The returned counts exclude messages currently being
139
- * handled by a worker.
140
- *
141
- * @since 2.3.0
142
- */
143
- getDepth?(): Promise<MessageQueueDepth>;
144
- }
145
- /**
146
- * Additional options for {@link InProcessMessageQueue}.
147
- * @since 1.0.0
148
- */
149
- interface InProcessMessageQueueOptions {
150
- /**
151
- * The interval to poll for messages in the queue. 5 seconds by default.
152
- * @default `{ seconds: 5 }`
153
- */
154
- pollInterval?: Temporal.Duration | Temporal.DurationLike;
155
- }
156
- /**
157
- * A message queue that processes messages in the same process.
158
- * Do not use this in production as it does neither persist messages nor
159
- * distribute them across multiple processes.
160
- *
161
- * @since 0.5.0
162
- */
163
- declare class InProcessMessageQueue implements MessageQueue {
164
- #private;
165
- /**
166
- * In-process message queue does not provide native retry mechanisms.
167
- * @since 1.7.0
168
- */
169
- readonly nativeRetrial = false;
170
- /**
171
- * In-process message queue does not deduplicate messages natively.
172
- * @since 2.4.0
173
- */
174
- readonly nativeDeduplication = false;
175
- /**
176
- * Constructs a new {@link InProcessMessageQueue} with the given options.
177
- * @param options Additional options for the in-process message queue.
178
- */
179
- constructor(options?: InProcessMessageQueueOptions);
180
- enqueue(message: any, options?: MessageQueueEnqueueOptions): Promise<void>;
181
- enqueueMany(messages: readonly any[], options?: MessageQueueEnqueueOptions): Promise<void>;
182
- listen(handler: (message: any) => Promise<void> | void, options?: MessageQueueListenOptions): Promise<void>;
183
- getDepth(): Promise<MessageQueueDepth>;
184
- }
185
- /**
186
- * A message queue that processes messages in parallel. It takes another
187
- * {@link MessageQueue}, and processes messages in parallel up to a certain
188
- * number of workers.
189
- *
190
- * Actually, it's rather a decorator than a queue itself.
191
- *
192
- * Note that the workers do not run in truly parallel, in the sense that they
193
- * are not running in separate threads or processes. They are running in the
194
- * same process, but are scheduled to run in parallel. Hence, this is useful
195
- * for I/O-bound tasks, but not for CPU-bound tasks, which is okay for Fedify's
196
- * workloads.
197
- *
198
- * When using `ParallelMessageQueue`, the ordering guarantee is preserved
199
- * *only if* the underlying queue implementation delivers messages in a wrapper
200
- * format that includes the `__fedify_ordering_key__` property. Currently,
201
- * only `DenoKvMessageQueue` and `WorkersMessageQueue` use this format.
202
- * For other queue implementations (e.g., `InProcessMessageQueue`,
203
- * `RedisMessageQueue`, `PostgresMessageQueue`, `SqliteMessageQueue`,
204
- * `AmqpMessageQueue`), the ordering key cannot be detected by
205
- * `ParallelMessageQueue`, so ordering guarantees are handled by those
206
- * implementations directly rather than at the `ParallelMessageQueue` level.
207
- *
208
- * Messages with the same ordering key will never be processed concurrently
209
- * by different workers, ensuring sequential processing within each key.
210
- * Messages with different ordering keys (or no ordering key) can still be
211
- * processed in parallel.
212
- *
213
- * @since 1.0.0
214
- */
215
- declare class ParallelMessageQueue implements MessageQueue {
216
- #private;
217
- readonly queue: MessageQueue;
218
- readonly workers: number;
219
- /**
220
- * Inherits the native retry capability from the wrapped queue.
221
- * @since 1.7.0
222
- */
223
- readonly nativeRetrial?: boolean;
224
- /**
225
- * Inherits the native deduplication capability from the wrapped queue.
226
- * @since 2.4.0
227
- */
228
- readonly nativeDeduplication?: boolean;
229
- readonly getDepth?: () => Promise<MessageQueueDepth>;
230
- /**
231
- * Constructs a new {@link ParallelMessageQueue} with the given queue and
232
- * number of workers.
233
- * @param queue The message queue to use under the hood. Note that
234
- * {@link ParallelMessageQueue} cannot be nested.
235
- * @param workers The number of workers to process messages in parallel.
236
- * @throws {TypeError} If the given queue is an instance of
237
- * {@link ParallelMessageQueue}.
238
- */
239
- constructor(queue: MessageQueue, workers: number);
240
- enqueue(message: any, options?: MessageQueueEnqueueOptions): Promise<void>;
241
- enqueueMany(messages: readonly any[], options?: MessageQueueEnqueueOptions): Promise<void>;
242
- listen(handler: (message: any) => Promise<void> | void, options?: MessageQueueListenOptions): Promise<void>;
243
- }
244
- //#endregion
245
- //#region src/federation/metrics.d.ts
246
- /**
247
- * The kind of remote ActivityPub lookup, recorded as
248
- * `activitypub.lookup.kind` on the public-key lookup and remote document
249
- * fetch metric families.
250
- *
251
- * - `public_key`: a public key lookup performed by `fetchKey` /
252
- * `fetchKeyDetailed` (always recorded on `activitypub.key.lookup*`).
253
- * - `actor`: a document fetch whose resolved value is an Actor. The
254
- * bucket exists in the taxonomy for future actor-aware call sites;
255
- * today, actor documents fetched through Fedify's generic document
256
- * loader are still classified as `object` because the kind is decided
257
- * at the loader boundary, before the response is parsed.
258
- * - `object`: a generic ActivityPub object fetch through Fedify's
259
- * document loader. This is the default classification for
260
- * `documentLoader` invocations that do not match a more specific
261
- * bucket.
262
- * - `context`: a JSON-LD `@context` document fetch through Fedify's
263
- * context loader.
264
- * - `other`: a fetch that does not fit any of the above classifications.
265
- * @since 2.3.0
266
- */
267
- type LookupKind = "public_key" | "actor" | "object" | "context" | "other";
268
- /**
269
- * The {@link LookupKind} values that can appear on remote document fetch
270
- * metrics. `public_key` lookups are reported on the
271
- * `activitypub.key.lookup` metric family instead, so it is excluded here.
272
- * @since 2.3.0
273
- */
274
- type DocumentFetchKind = Exclude<LookupKind, "public_key">;
275
- //#endregion
276
- export { MessageQueueDepth as a, ParallelMessageQueue as c, MessageQueue as i, InProcessMessageQueue as n, MessageQueueEnqueueOptions as o, InProcessMessageQueueOptions as r, MessageQueueListenOptions as s, DocumentFetchKind as t };
@@ -1,276 +0,0 @@
1
- /// <reference lib="esnext.temporal" />
2
- import { MeterProvider } from "@opentelemetry/api";
3
- import { DocumentLoader } from "@fedify/vocab-runtime";
4
-
5
- //#region src/federation/mq.d.ts
6
- /**
7
- * Additional options for enqueuing a message in a queue.
8
- *
9
- * @since 0.5.0
10
- */
11
- interface MessageQueueEnqueueOptions {
12
- /**
13
- * The delay before the message is enqueued. No delay by default.
14
- *
15
- * It must not be negative.
16
- */
17
- readonly delay?: Temporal.Duration;
18
- /**
19
- * An optional key that ensures messages with the same ordering key are
20
- * processed sequentially (one at a time). Messages with different ordering
21
- * keys (or no ordering key) may be processed in parallel.
22
- *
23
- * This is useful for ensuring that related messages are processed in order,
24
- * such as ensuring that a `Delete` activity is processed after a `Create`
25
- * activity for the same object.
26
- *
27
- * @since 2.0.0
28
- */
29
- readonly orderingKey?: string;
30
- /**
31
- * An optional key requesting at-most-once enqueue semantics for messages
32
- * that share it. A backend that declares
33
- * {@link MessageQueue.nativeDeduplication} `true` owns the check: a message
34
- * whose `deduplicationKey` was already seen within the backend's
35
- * deduplication window is dropped instead of enqueued. Backends without
36
- * native deduplication ignore this field; Fedify performs its own
37
- * best-effort deduplication before reaching them on the paths that support
38
- * it.
39
- *
40
- * @since 2.4.0
41
- */
42
- readonly deduplicationKey?: string;
43
- }
44
- /**
45
- * Additional options for listening to a message queue.
46
- *
47
- * @since 1.0.0
48
- */
49
- interface MessageQueueListenOptions {
50
- /**
51
- * The signal to abort listening to the message queue.
52
- */
53
- signal?: AbortSignal;
54
- }
55
- /**
56
- * The number of messages waiting in a message queue.
57
- *
58
- * @since 2.3.0
59
- */
60
- interface MessageQueueDepth {
61
- /**
62
- * The total number of messages still waiting in the backend queue.
63
- *
64
- * This does not include messages that have already been handed to a worker
65
- * for processing.
66
- */
67
- readonly queued: number;
68
- /**
69
- * The number of queued messages eligible for immediate processing.
70
- *
71
- * Queue backends that cannot cheaply distinguish ready and delayed messages
72
- * may omit this field.
73
- */
74
- readonly ready?: number;
75
- /**
76
- * The number of queued messages scheduled for later delivery.
77
- *
78
- * Queue backends that cannot cheaply distinguish ready and delayed messages
79
- * may omit this field.
80
- */
81
- readonly delayed?: number;
82
- }
83
- /**
84
- * An abstract interface for a message queue.
85
- *
86
- * @since 0.5.0
87
- */
88
- interface MessageQueue {
89
- /**
90
- * Whether the message queue backend provides native retry mechanisms.
91
- * When `true`, Fedify will skip its own retry logic and rely on the backend
92
- * to handle retries. When `false` or omitted, Fedify will handle retries
93
- * using its own retry policies.
94
- *
95
- * @default `false`
96
- * @since 1.7.0
97
- */
98
- readonly nativeRetrial?: boolean;
99
- /**
100
- * Whether the message queue backend deduplicates messages that share a
101
- * {@link MessageQueueEnqueueOptions.deduplicationKey} natively. When `true`,
102
- * Fedify forwards the `deduplicationKey` and relies on the backend to drop
103
- * duplicates; when `false` or omitted, Fedify applies its own best-effort
104
- * key–value deduplication on the paths that request it.
105
- *
106
- * @default `false`
107
- * @since 2.4.0
108
- */
109
- readonly nativeDeduplication?: boolean;
110
- /**
111
- * Enqueues a message in the queue.
112
- * @param message The message to enqueue.
113
- * @param options Additional options for enqueuing the message.
114
- */
115
- enqueue(message: any, options?: MessageQueueEnqueueOptions): Promise<void>;
116
- /**
117
- * Enqueues multiple messages in the queue. This operation is optional,
118
- * and may not be supported by all implementations. If not supported,
119
- * Fedify will invoke {@link enqueue} for each message.
120
- *
121
- * @param messages The messages to enqueue.
122
- * @param options Additional options for enqueuing the messages.
123
- */
124
- enqueueMany?: (messages: readonly any[], options?: MessageQueueEnqueueOptions) => Promise<void>;
125
- /**
126
- * Listens for messages in the queue.
127
- * @param handler The handler for messages in the queue.
128
- * @param options Additional options for listening to the message queue.
129
- * @returns A promise that resolves when the listening is done. It never
130
- * rejects, and is resolved when the signal is aborted. If no
131
- * signal is provided, it never resolves.
132
- */
133
- listen(handler: (message: any) => Promise<void> | void, options?: MessageQueueListenOptions): Promise<void>;
134
- /**
135
- * Gets the number of messages waiting in the queue.
136
- *
137
- * This operation is optional, and may not be supported by all
138
- * implementations. The returned counts exclude messages currently being
139
- * handled by a worker.
140
- *
141
- * @since 2.3.0
142
- */
143
- getDepth?(): Promise<MessageQueueDepth>;
144
- }
145
- /**
146
- * Additional options for {@link InProcessMessageQueue}.
147
- * @since 1.0.0
148
- */
149
- interface InProcessMessageQueueOptions {
150
- /**
151
- * The interval to poll for messages in the queue. 5 seconds by default.
152
- * @default `{ seconds: 5 }`
153
- */
154
- pollInterval?: Temporal.Duration | Temporal.DurationLike;
155
- }
156
- /**
157
- * A message queue that processes messages in the same process.
158
- * Do not use this in production as it does neither persist messages nor
159
- * distribute them across multiple processes.
160
- *
161
- * @since 0.5.0
162
- */
163
- declare class InProcessMessageQueue implements MessageQueue {
164
- #private;
165
- /**
166
- * In-process message queue does not provide native retry mechanisms.
167
- * @since 1.7.0
168
- */
169
- readonly nativeRetrial = false;
170
- /**
171
- * In-process message queue does not deduplicate messages natively.
172
- * @since 2.4.0
173
- */
174
- readonly nativeDeduplication = false;
175
- /**
176
- * Constructs a new {@link InProcessMessageQueue} with the given options.
177
- * @param options Additional options for the in-process message queue.
178
- */
179
- constructor(options?: InProcessMessageQueueOptions);
180
- enqueue(message: any, options?: MessageQueueEnqueueOptions): Promise<void>;
181
- enqueueMany(messages: readonly any[], options?: MessageQueueEnqueueOptions): Promise<void>;
182
- listen(handler: (message: any) => Promise<void> | void, options?: MessageQueueListenOptions): Promise<void>;
183
- getDepth(): Promise<MessageQueueDepth>;
184
- }
185
- /**
186
- * A message queue that processes messages in parallel. It takes another
187
- * {@link MessageQueue}, and processes messages in parallel up to a certain
188
- * number of workers.
189
- *
190
- * Actually, it's rather a decorator than a queue itself.
191
- *
192
- * Note that the workers do not run in truly parallel, in the sense that they
193
- * are not running in separate threads or processes. They are running in the
194
- * same process, but are scheduled to run in parallel. Hence, this is useful
195
- * for I/O-bound tasks, but not for CPU-bound tasks, which is okay for Fedify's
196
- * workloads.
197
- *
198
- * When using `ParallelMessageQueue`, the ordering guarantee is preserved
199
- * *only if* the underlying queue implementation delivers messages in a wrapper
200
- * format that includes the `__fedify_ordering_key__` property. Currently,
201
- * only `DenoKvMessageQueue` and `WorkersMessageQueue` use this format.
202
- * For other queue implementations (e.g., `InProcessMessageQueue`,
203
- * `RedisMessageQueue`, `PostgresMessageQueue`, `SqliteMessageQueue`,
204
- * `AmqpMessageQueue`), the ordering key cannot be detected by
205
- * `ParallelMessageQueue`, so ordering guarantees are handled by those
206
- * implementations directly rather than at the `ParallelMessageQueue` level.
207
- *
208
- * Messages with the same ordering key will never be processed concurrently
209
- * by different workers, ensuring sequential processing within each key.
210
- * Messages with different ordering keys (or no ordering key) can still be
211
- * processed in parallel.
212
- *
213
- * @since 1.0.0
214
- */
215
- declare class ParallelMessageQueue implements MessageQueue {
216
- #private;
217
- readonly queue: MessageQueue;
218
- readonly workers: number;
219
- /**
220
- * Inherits the native retry capability from the wrapped queue.
221
- * @since 1.7.0
222
- */
223
- readonly nativeRetrial?: boolean;
224
- /**
225
- * Inherits the native deduplication capability from the wrapped queue.
226
- * @since 2.4.0
227
- */
228
- readonly nativeDeduplication?: boolean;
229
- readonly getDepth?: () => Promise<MessageQueueDepth>;
230
- /**
231
- * Constructs a new {@link ParallelMessageQueue} with the given queue and
232
- * number of workers.
233
- * @param queue The message queue to use under the hood. Note that
234
- * {@link ParallelMessageQueue} cannot be nested.
235
- * @param workers The number of workers to process messages in parallel.
236
- * @throws {TypeError} If the given queue is an instance of
237
- * {@link ParallelMessageQueue}.
238
- */
239
- constructor(queue: MessageQueue, workers: number);
240
- enqueue(message: any, options?: MessageQueueEnqueueOptions): Promise<void>;
241
- enqueueMany(messages: readonly any[], options?: MessageQueueEnqueueOptions): Promise<void>;
242
- listen(handler: (message: any) => Promise<void> | void, options?: MessageQueueListenOptions): Promise<void>;
243
- }
244
- //#endregion
245
- //#region src/federation/metrics.d.ts
246
- /**
247
- * The kind of remote ActivityPub lookup, recorded as
248
- * `activitypub.lookup.kind` on the public-key lookup and remote document
249
- * fetch metric families.
250
- *
251
- * - `public_key`: a public key lookup performed by `fetchKey` /
252
- * `fetchKeyDetailed` (always recorded on `activitypub.key.lookup*`).
253
- * - `actor`: a document fetch whose resolved value is an Actor. The
254
- * bucket exists in the taxonomy for future actor-aware call sites;
255
- * today, actor documents fetched through Fedify's generic document
256
- * loader are still classified as `object` because the kind is decided
257
- * at the loader boundary, before the response is parsed.
258
- * - `object`: a generic ActivityPub object fetch through Fedify's
259
- * document loader. This is the default classification for
260
- * `documentLoader` invocations that do not match a more specific
261
- * bucket.
262
- * - `context`: a JSON-LD `@context` document fetch through Fedify's
263
- * context loader.
264
- * - `other`: a fetch that does not fit any of the above classifications.
265
- * @since 2.3.0
266
- */
267
- type LookupKind = "public_key" | "actor" | "object" | "context" | "other";
268
- /**
269
- * The {@link LookupKind} values that can appear on remote document fetch
270
- * metrics. `public_key` lookups are reported on the
271
- * `activitypub.key.lookup` metric family instead, so it is excluded here.
272
- * @since 2.3.0
273
- */
274
- type DocumentFetchKind = Exclude<LookupKind, "public_key">;
275
- //#endregion
276
- export { MessageQueueDepth as a, ParallelMessageQueue as c, MessageQueue as i, InProcessMessageQueue as n, MessageQueueEnqueueOptions as o, InProcessMessageQueueOptions as r, MessageQueueListenOptions as s, DocumentFetchKind as t };