@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,553 +0,0 @@
1
- /// <reference lib="esnext.temporal" />
2
- import { CryptographicKey, Multikey } from "@fedify/vocab";
3
- import { DocumentLoader } from "@fedify/vocab-runtime";
4
- import { MeterProvider, TracerProvider } from "@opentelemetry/api";
5
-
6
- //#region src/sig/key.d.ts
7
- /**
8
- * Generates a key pair which is appropriate for Fedify.
9
- * @param algorithm The algorithm to use. Currently only RSASSA-PKCS1-v1_5 and
10
- * Ed25519 are supported.
11
- * @returns The generated key pair.
12
- * @throws {TypeError} If the algorithm is unsupported.
13
- */
14
- declare function generateCryptoKeyPair(algorithm?: "RSASSA-PKCS1-v1_5" | "Ed25519"): Promise<CryptoKeyPair>;
15
- /**
16
- * Exports a key in JWK format.
17
- * @param key The key to export. Either public or private key.
18
- * @returns The exported key in JWK format. The key is suitable for
19
- * serialization and storage.
20
- * @throws {TypeError} If the key is invalid or unsupported.
21
- */
22
- declare function exportJwk(key: CryptoKey): Promise<JsonWebKey>;
23
- /**
24
- * Imports a key from JWK format.
25
- * @param jwk The key in JWK format.
26
- * @param type Which type of key to import, either `"public"` or `"private"`.
27
- * @returns The imported key.
28
- * @throws {TypeError} If the key is invalid or unsupported.
29
- */
30
- declare function importJwk(jwk: JsonWebKey, type: "public" | "private"): Promise<CryptoKey>;
31
- /**
32
- * Options for {@link fetchKey}.
33
- * @since 1.3.0
34
- */
35
- interface FetchKeyOptions {
36
- /**
37
- * The document loader for loading remote JSON-LD documents.
38
- */
39
- documentLoader?: DocumentLoader;
40
- /**
41
- * The context loader for loading remote JSON-LD contexts.
42
- */
43
- contextLoader?: DocumentLoader;
44
- /**
45
- * The key cache to use for caching public keys.
46
- * @since 0.12.0
47
- */
48
- keyCache?: KeyCache;
49
- /**
50
- * The OpenTelemetry tracer provider to use for tracing. If omitted,
51
- * the global tracer provider is used.
52
- * @since 1.3.0
53
- */
54
- tracerProvider?: TracerProvider;
55
- /**
56
- * The OpenTelemetry meter provider to use for recording
57
- * `activitypub.key.lookup` and `activitypub.key.lookup.duration`. If
58
- * omitted, the global meter provider is used.
59
- * @since 2.3.0
60
- */
61
- meterProvider?: MeterProvider;
62
- }
63
- /**
64
- * The result of {@link fetchKey}.
65
- * @since 1.3.0
66
- */
67
- interface FetchKeyResult<T extends CryptographicKey | Multikey> {
68
- /**
69
- * The fetched (or cached) key.
70
- */
71
- readonly key: T & {
72
- publicKey: CryptoKey;
73
- } | null;
74
- /**
75
- * Whether the key is fetched from the cache.
76
- */
77
- readonly cached: boolean;
78
- }
79
- /**
80
- * Detailed fetch failure information from {@link fetchKeyDetailed}.
81
- * @since 2.1.0
82
- */
83
- type FetchKeyErrorResult = {
84
- readonly status: number;
85
- readonly response: Response;
86
- } | {
87
- readonly error: Error;
88
- };
89
- /**
90
- * The result of {@link fetchKeyDetailed}.
91
- * @since 2.1.0
92
- */
93
- interface FetchKeyDetailedResult<T extends CryptographicKey | Multikey> extends FetchKeyResult<T> {
94
- /**
95
- * The error that occurred while fetching the key, if fetching failed before
96
- * a document could be parsed.
97
- */
98
- readonly fetchError?: FetchKeyErrorResult;
99
- }
100
- type FetchableKeyClass<T extends CryptographicKey | Multikey> = (new (...args: any[]) => T) & {
101
- fromJsonLd(jsonLd: unknown, options: {
102
- documentLoader?: DocumentLoader;
103
- contextLoader?: DocumentLoader;
104
- tracerProvider?: TracerProvider;
105
- }): Promise<T>;
106
- };
107
- /**
108
- * Fetches a {@link CryptographicKey} or {@link Multikey} from the given URL.
109
- * If the given URL contains an {@link Actor} object, it tries to find
110
- * the corresponding key in the `publicKey` or `assertionMethod` property.
111
- * @template T The type of the key to fetch. Either {@link CryptographicKey}
112
- * or {@link Multikey}.
113
- * @param keyId The URL of the key.
114
- * @param cls The class of the key to fetch. Either {@link CryptographicKey}
115
- * or {@link Multikey}.
116
- * @param options Options for fetching the key. See {@link FetchKeyOptions}.
117
- * @returns The fetched key or `null` if the key is not found.
118
- * @since 1.3.0
119
- */
120
- declare function fetchKey<T extends CryptographicKey | Multikey>(keyId: URL | string, cls: FetchableKeyClass<T>, options?: FetchKeyOptions): Promise<FetchKeyResult<T>>;
121
- /**
122
- * Fetches a {@link CryptographicKey} or {@link Multikey} from the given URL,
123
- * preserving transport-level fetch failures for callers that need to inspect
124
- * why the key could not be loaded.
125
- *
126
- * @template T The type of the key to fetch. Either {@link CryptographicKey}
127
- * or {@link Multikey}.
128
- * @param keyId The URL of the key.
129
- * @param cls The class of the key to fetch. Either {@link CryptographicKey}
130
- * or {@link Multikey}.
131
- * @param options Options for fetching the key.
132
- * @returns The fetched key, or detailed fetch failure information.
133
- * @since 2.1.0
134
- */
135
- declare function fetchKeyDetailed<T extends CryptographicKey | Multikey>(keyId: URL | string, cls: FetchableKeyClass<T>, options?: FetchKeyOptions): Promise<FetchKeyDetailedResult<T>>;
136
- /**
137
- * A cache for storing cryptographic keys.
138
- * @since 0.12.0
139
- */
140
- interface KeyCache {
141
- /**
142
- * Gets a key from the cache.
143
- * @param keyId The key ID.
144
- * @returns The key if found, `null` if the key is not available (e.g.,
145
- * fetching the key was tried but failed), or `undefined`
146
- * if the cache is not available.
147
- */
148
- get(keyId: URL): Promise<CryptographicKey | Multikey | null | undefined>;
149
- /**
150
- * Sets a key to the cache.
151
- *
152
- * Note that this caches unavailable keys (i.e., `null`) as well,
153
- * and it is recommended to make unavailable keys expire after a short period.
154
- * @param keyId The key ID.
155
- * @param key The key to cache. `null` means the key is not available
156
- * (e.g., fetching the key was tried but failed).
157
- */
158
- set(keyId: URL, key: CryptographicKey | Multikey | null): Promise<void>;
159
- }
160
- //#endregion
161
- //#region src/sig/accept.d.ts
162
- /**
163
- * Signature metadata parameters that may appear in an
164
- * `Accept-Signature` member, as defined in
165
- * [RFC 9421 §5.1](https://www.rfc-editor.org/rfc/rfc9421#section-5.1).
166
- *
167
- * @since 2.1.0
168
- */
169
- interface AcceptSignatureParameters {
170
- /**
171
- * If present, the signer is requested to use the indicated key
172
- * material to create the target signature.
173
- */
174
- keyid?: string;
175
- /**
176
- * If present, the signer is requested to use the indicated algorithm
177
- * from the HTTP Signature Algorithms registry.
178
- */
179
- alg?: string;
180
- /**
181
- * If `true`, the signer is requested to generate and include a
182
- * creation timestamp. This parameter has no associated value in the
183
- * wire format.
184
- */
185
- created?: true;
186
- /**
187
- * If `true`, the signer is requested to generate and include an
188
- * expiration timestamp. This parameter has no associated value in
189
- * the wire format.
190
- */
191
- expires?: true;
192
- /**
193
- * If present, the signer is requested to include this value as the
194
- * signature nonce in the target signature.
195
- */
196
- nonce?: string;
197
- /**
198
- * If present, the signer is requested to include this value as the
199
- * signature tag in the target signature.
200
- */
201
- tag?: string;
202
- }
203
- /**
204
- * A single covered component identifier from an `Accept-Signature` inner list,
205
- * as defined in [RFC 9421 §2.1](https://www.rfc-editor.org/rfc/rfc9421#section-2.1)
206
- * and [§5.1](https://www.rfc-editor.org/rfc/rfc9421#section-5.1).
207
- *
208
- * RFC 9421 §5.1 requires that the list of component identifiers includes
209
- * *all applicable component parameters*. Parameters such as `;sf`, `;bs`,
210
- * `;req`, `;tr`, `;name`, and `;key` narrow the meaning of a component
211
- * identifier and MUST be preserved exactly as received so that the signer
212
- * can cover the same components the verifier requested.
213
- *
214
- * Examples:
215
- * - `{ value: "@method", params: {} }`
216
- * - `{ value: "content-type", params: { sf: true } }`
217
- * - `{ value: "@query-param", params: { name: "foo" } }`
218
- *
219
- * @since 2.1.0
220
- */
221
- interface AcceptSignatureComponent {
222
- /**
223
- * The component identifier name (e.g., `"@method"`, `"content-digest"`,
224
- * `"@query-param"`).
225
- */
226
- value: string;
227
- /**
228
- * Component parameters attached to this identifier (e.g., `{ sf: true }`,
229
- * `{ name: "foo" }`). An empty object means no parameters were present.
230
- * Parameters MUST NOT be dropped; doing so would cause the signer to cover
231
- * a different component than the verifier requested.
232
- */
233
- params: Record<string, unknown>;
234
- }
235
- /**
236
- * Represents a single member of the `Accept-Signature` Dictionary
237
- * Structured Field, as defined in
238
- * [RFC 9421 §5.1](https://www.rfc-editor.org/rfc/rfc9421#section-5.1).
239
- *
240
- * @since 2.1.0
241
- */
242
- interface AcceptSignatureMember {
243
- /**
244
- * The label that uniquely identifies the requested message signature
245
- * within the context of the target HTTP message (e.g., `"sig1"`).
246
- */
247
- label: string;
248
- /**
249
- * The exact list of covered component identifiers requested for the target
250
- * signature, including all applicable component parameters, as required by
251
- * [RFC 9421 §5.1](https://www.rfc-editor.org/rfc/rfc9421#section-5.1).
252
- *
253
- * Each element is an {@link AcceptSignatureComponent} that preserves
254
- * both the identifier name and any parameters (e.g., `;sf`, `;name="foo"`).
255
- * The signer MUST cover exactly these components—with their parameters—when
256
- * fulfilling the challenge.
257
- */
258
- components: AcceptSignatureComponent[];
259
- /**
260
- * Optional signature metadata parameters requested by the verifier.
261
- */
262
- parameters: AcceptSignatureParameters;
263
- }
264
- /**
265
- * Parses an `Accept-Signature` header value (RFC 9421 §5.1) into an
266
- * array of {@link AcceptSignatureMember} objects.
267
- *
268
- * The `Accept-Signature` field is a Dictionary Structured Field
269
- * (RFC 8941 §3.2). Each dictionary member describes a single
270
- * requested message signature.
271
- *
272
- * On parse failure (malformed or empty header), returns an empty array.
273
- *
274
- * @param header The raw `Accept-Signature` header value string.
275
- * @returns An array of parsed members. Empty if the header is
276
- * malformed or empty.
277
- * @since 2.1.0
278
- */
279
- declare function parseAcceptSignature(header: string): AcceptSignatureMember[];
280
- /**
281
- * Serializes an array of {@link AcceptSignatureMember} objects into an
282
- * `Accept-Signature` header value string (RFC 9421 §5.1).
283
- *
284
- * The output is a Dictionary Structured Field (RFC 8941 §3.2).
285
- *
286
- * @param members The members to serialize.
287
- * @returns The serialized header value string.
288
- * @since 2.1.0
289
- */
290
- declare function formatAcceptSignature(members: AcceptSignatureMember[]): string;
291
- /**
292
- * Filters out {@link AcceptSignatureMember} entries whose covered
293
- * components include response-only identifiers (`@status`) that are
294
- * not applicable to request-target messages, as required by
295
- * [RFC 9421 §5](https://www.rfc-editor.org/rfc/rfc9421#section-5).
296
- *
297
- * A warning is logged for each discarded entry.
298
- *
299
- * @param members The parsed `Accept-Signature` entries to validate.
300
- * @returns Only entries that are valid for request-target messages.
301
- * @since 2.1.0
302
- */
303
- declare function validateAcceptSignature(members: AcceptSignatureMember[]): AcceptSignatureMember[];
304
- /**
305
- * The result of {@link fulfillAcceptSignature}. This can be used directly
306
- * as the `rfc9421` option of {@link SignRequestOptions}.
307
- * @since 2.1.0
308
- */
309
- interface FulfillAcceptSignatureResult {
310
- /** The label for the signature. */
311
- label: string;
312
- /**
313
- * The merged set of covered component identifiers, including all component
314
- * parameters, ready to be passed to the signer.
315
- */
316
- components: AcceptSignatureComponent[];
317
- /** The nonce requested by the challenge, if any. */
318
- nonce?: string;
319
- /** The tag requested by the challenge, if any. */
320
- tag?: string;
321
- /**
322
- * If `true`, the challenger requested that the signer generate and include
323
- * an expiration timestamp in the signature parameters.
324
- */
325
- expires?: true;
326
- }
327
- /**
328
- * Attempts to translate an {@link AcceptSignatureMember} challenge into
329
- * RFC 9421 signing options that the local signer can fulfill.
330
- *
331
- * Returns `null` if the challenge cannot be fulfilled—for example, if
332
- * the requested `alg` or `keyid` is incompatible with the local key.
333
- *
334
- * Safety constraints:
335
- * - `alg`: only honored if it matches `localAlg`.
336
- * - `keyid`: only honored if it matches `localKeyId`.
337
- * - `components`: passed through exactly as requested, per RFC 9421 §5.2.
338
- * - `nonce`, `tag`, and `expires` are passed through directly.
339
- *
340
- * @param entry The challenge entry from the `Accept-Signature` header.
341
- * @param localKeyId The local key identifier (e.g., the actor key URL).
342
- * @param localAlg The algorithm of the local private key
343
- * (e.g., `"rsa-v1_5-sha256"`).
344
- * @returns Signing options if the challenge can be fulfilled, or `null`.
345
- * @since 2.1.0
346
- */
347
- declare function fulfillAcceptSignature(entry: AcceptSignatureMember, localKeyId: string, localAlg: string): FulfillAcceptSignatureResult | null;
348
- //#endregion
349
- //#region src/sig/http.d.ts
350
- /**
351
- * The standard to use for signing and verifying HTTP signatures.
352
- * @since 1.6.0
353
- */
354
- type HttpMessageSignaturesSpec = "draft-cavage-http-signatures-12" | "rfc9421";
355
- /**
356
- * Options for {@link signRequest}.
357
- * @since 1.3.0
358
- */
359
- interface SignRequestOptions {
360
- /**
361
- * The HTTP message signatures specification to use for signing.
362
- * @default `"draft-cavage-http-signatures-12"`
363
- * @since 1.6.0
364
- */
365
- spec?: HttpMessageSignaturesSpec;
366
- /**
367
- * The current time. If not specified, the current time is used. This is
368
- * useful for testing.
369
- * @since 1.6.0
370
- */
371
- currentTime?: Temporal.Instant;
372
- /**
373
- * The request body as ArrayBuffer. If provided, avoids cloning the request body.
374
- * @since 1.7.7
375
- */
376
- body?: ArrayBuffer | null;
377
- /**
378
- * The OpenTelemetry tracer provider. If omitted, the global tracer provider
379
- * is used.
380
- */
381
- tracerProvider?: TracerProvider;
382
- /**
383
- * Options specific to the RFC 9421 signing path. These options are
384
- * ignored when `spec` is `"draft-cavage-http-signatures-12"`.
385
- * @since 2.1.0
386
- */
387
- rfc9421?: Rfc9421SignRequestOptions;
388
- }
389
- /**
390
- * Options for customizing the RFC 9421 signature label, covered components,
391
- * and metadata parameters. These are typically derived from an
392
- * `Accept-Signature` challenge.
393
- * @since 2.1.0
394
- */
395
- interface Rfc9421SignRequestOptions {
396
- /**
397
- * The label for the signature in `Signature-Input` and `Signature` headers.
398
- * @default `"sig1"`
399
- */
400
- label?: string;
401
- /**
402
- * The covered component identifiers. When omitted, the default set
403
- * `["@method", "@target-uri", "@authority", "host", "date"]`
404
- * (plus `"content-digest"` when a body is present) is used.
405
- */
406
- components?: AcceptSignatureComponent[];
407
- /**
408
- * A nonce value to include in the signature parameters.
409
- */
410
- nonce?: string;
411
- /**
412
- * A tag value to include in the signature parameters.
413
- */
414
- tag?: string;
415
- /**
416
- * If `true`, an expiration timestamp is generated and included in the
417
- * signature parameters. The expiration time defaults to one hour after
418
- * the signature creation time.
419
- */
420
- expires?: true;
421
- }
422
- /**
423
- * Signs a request using the given private key.
424
- * @param request The request to sign.
425
- * @param privateKey The private key to use for signing.
426
- * @param keyId The key ID to use for the signature. It will be used by the
427
- * verifier.
428
- * @returns The signed request.
429
- * @throws {TypeError} If the private key is invalid or unsupported.
430
- */
431
- declare function signRequest(request: Request, privateKey: CryptoKey, keyId: URL, options?: SignRequestOptions): Promise<Request>;
432
- /**
433
- * Options for {@link verifyRequest}.
434
- */
435
- interface VerifyRequestOptions {
436
- /**
437
- * The document loader to use for fetching the public key.
438
- */
439
- documentLoader?: DocumentLoader;
440
- /**
441
- * The context loader to use for JSON-LD context retrieval.
442
- */
443
- contextLoader?: DocumentLoader;
444
- /**
445
- * The time window to allow for the request date. The actual time window is
446
- * twice the value of this option, with the current time as the center.
447
- * Or if it is `false`, no time check is performed.
448
- *
449
- * An hour by default.
450
- */
451
- timeWindow?: Temporal.Duration | Temporal.DurationLike | false;
452
- /**
453
- * The current time. If not specified, the current time is used. This is
454
- * useful for testing.
455
- */
456
- currentTime?: Temporal.Instant;
457
- /**
458
- * The key cache to use for caching public keys.
459
- * @since 0.12.0
460
- */
461
- keyCache?: KeyCache;
462
- /**
463
- * The HTTP message signatures specification to use for verifying.
464
- * @default `"draft-cavage-http-signatures-12"`
465
- * @since 1.6.0
466
- */
467
- spec?: HttpMessageSignaturesSpec;
468
- /**
469
- * The OpenTelemetry tracer provider. If omitted, the global tracer provider
470
- * is used.
471
- * @since 1.3.0
472
- */
473
- tracerProvider?: TracerProvider;
474
- /**
475
- * The OpenTelemetry meter provider. If omitted, the global meter provider
476
- * is used.
477
- * @since 2.3.0
478
- */
479
- meterProvider?: MeterProvider;
480
- }
481
- /**
482
- * The reason why {@link verifyRequestDetailed} could not verify a request.
483
- * @since 2.1.0
484
- */
485
- type VerifyRequestFailureReason = {
486
- readonly type: "keyFetchError";
487
- readonly keyId: URL;
488
- readonly result: FetchKeyErrorResult;
489
- } | {
490
- readonly type: "invalidSignature";
491
- readonly keyId?: URL;
492
- } | {
493
- readonly type: "noSignature";
494
- };
495
- /**
496
- * The detailed result of {@link verifyRequestDetailed}.
497
- * @since 2.1.0
498
- */
499
- type VerifyRequestDetailedResult = {
500
- readonly verified: true;
501
- readonly key: CryptographicKey;
502
- readonly signatureLabel?: string;
503
- } | {
504
- readonly verified: false;
505
- readonly reason: VerifyRequestFailureReason;
506
- };
507
- /**
508
- * Verifies the signature of a request.
509
- *
510
- * Note that this function consumes the request body, so it should not be used
511
- * if the request body is already consumed. Consuming the request body after
512
- * calling this function is okay, since this function clones the request
513
- * under the hood.
514
- *
515
- * @param request The request to verify.
516
- * @param options Options for verifying the request.
517
- * @returns The public key of the verified signature, or `null` if the signature
518
- * could not be verified.
519
- */
520
- declare function verifyRequest(request: Request, options?: VerifyRequestOptions): Promise<CryptographicKey | null>;
521
- /**
522
- * Verifies the signature of a request and returns a structured failure reason
523
- * when verification does not succeed.
524
- *
525
- * @param request The request to verify.
526
- * @param options Options for verifying the request.
527
- * @returns The verified public key, or a structured verification failure.
528
- * @since 2.1.0
529
- */
530
- declare function verifyRequestDetailed(request: Request, options?: VerifyRequestOptions): Promise<VerifyRequestDetailedResult>;
531
- /**
532
- * A spec determiner for HTTP Message Signatures.
533
- * It determines the spec to use for signing requests.
534
- * It is used for double-knocking
535
- * (see <https://swicg.github.io/activitypub-http-signature/#how-to-upgrade-supported-versions>).
536
- * @since 1.6.0
537
- */
538
- interface HttpMessageSignaturesSpecDeterminer {
539
- /**
540
- * Determines the spec to use for signing requests.
541
- * @param origin The origin of the URL to make the request to.
542
- * @returns The spec to use for signing requests.
543
- */
544
- determineSpec(origin: string): HttpMessageSignaturesSpec | Promise<HttpMessageSignaturesSpec>;
545
- /**
546
- * Remembers the successfully used spec for the given origin.
547
- * @param origin The origin of the URL that was requested.
548
- * @param spec The spec to remember.
549
- */
550
- rememberSpec(origin: string, spec: HttpMessageSignaturesSpec): void | Promise<void>;
551
- }
552
- //#endregion
553
- export { exportJwk as C, importJwk as D, generateCryptoKeyPair as E, KeyCache as S, fetchKeyDetailed as T, validateAcceptSignature as _, VerifyRequestDetailedResult as a, FetchKeyOptions as b, signRequest as c, AcceptSignatureMember as d, AcceptSignatureParameters as f, parseAcceptSignature as g, fulfillAcceptSignature as h, SignRequestOptions as i, verifyRequest as l, formatAcceptSignature as m, HttpMessageSignaturesSpecDeterminer as n, VerifyRequestFailureReason as o, FulfillAcceptSignatureResult as p, Rfc9421SignRequestOptions as r, VerifyRequestOptions as s, HttpMessageSignaturesSpec as t, verifyRequestDetailed as u, FetchKeyDetailedResult as v, fetchKey as w, FetchKeyResult as x, FetchKeyErrorResult as y };