@fedify/fedify 0.9.0-dev.177 → 0.9.0-dev.181

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 (271) hide show
  1. package/CHANGES.md +13 -0
  2. package/esm/deps/jsr.io/@std/encoding/{0.224.2 → 0.224.3}/base64.js +14 -7
  3. package/esm/deps/jsr.io/@std/encoding/{0.224.2 → 0.224.3}/hex.js +24 -7
  4. package/esm/deps/jsr.io/@std/semver/0.224.1/can_parse.js +30 -0
  5. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/compare.js +17 -0
  6. package/esm/deps/jsr.io/@std/semver/0.224.1/difference.js +37 -0
  7. package/esm/deps/jsr.io/@std/semver/0.224.1/equals.js +27 -0
  8. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/format.js +14 -1
  9. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/format_range.js +9 -1
  10. package/esm/deps/jsr.io/@std/semver/0.224.1/greater_or_equal.js +25 -0
  11. package/esm/deps/jsr.io/@std/semver/0.224.1/greater_than.js +27 -0
  12. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/greater_than_range.js +19 -1
  13. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/increment.js +18 -2
  14. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/is_range.js +10 -0
  15. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/is_semver.js +16 -0
  16. package/esm/deps/jsr.io/@std/semver/0.224.1/less_or_equal.js +25 -0
  17. package/esm/deps/jsr.io/@std/semver/0.224.1/less_than.js +25 -0
  18. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/less_than_range.js +21 -3
  19. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/max_satisfying.js +12 -0
  20. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/min_satisfying.js +12 -0
  21. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/mod.js +3 -2
  22. package/esm/deps/jsr.io/@std/semver/0.224.1/not_equals.js +24 -0
  23. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/parse.js +16 -0
  24. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/parse_range.js +18 -0
  25. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/range_intersects.js +16 -1
  26. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/range_max.js +16 -5
  27. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/range_min.js +16 -5
  28. package/esm/deps/jsr.io/@std/semver/0.224.1/satisfies.js +26 -0
  29. package/esm/deps/jsr.io/@std/semver/0.224.1/test_range.js +28 -0
  30. package/esm/deps/jsr.io/@std/semver/0.224.1/try_parse.js +30 -0
  31. package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/try_parse_range.js +16 -1
  32. package/esm/federation/collection.js +1 -1
  33. package/esm/federation/handler.js +1 -1
  34. package/esm/federation/middleware.js +7 -3
  35. package/esm/httpsig/mod.js +60 -283
  36. package/esm/nodeinfo/types.js +1 -1
  37. package/esm/runtime/docloader.js +3 -3
  38. package/esm/runtime/key.js +1 -1
  39. package/esm/sig/http.js +229 -0
  40. package/esm/{httpsig → sig}/key.js +0 -3
  41. package/esm/sig/mod.js +8 -0
  42. package/esm/sig/owner.js +94 -0
  43. package/esm/vocab/tombstone.yaml +20 -0
  44. package/esm/vocab/vocab.js +165 -0
  45. package/package.json +7 -1
  46. package/types/deps/jsr.io/@std/assert/0.225.3/assert.d.ts.map +1 -0
  47. package/types/deps/jsr.io/@std/assert/0.225.3/assertion_error.d.ts.map +1 -0
  48. package/types/deps/jsr.io/@std/encoding/{0.224.2/_util.d.ts → 0.224.3/_validate_binary_like.d.ts} +1 -1
  49. package/types/deps/jsr.io/@std/encoding/0.224.3/_validate_binary_like.d.ts.map +1 -0
  50. package/types/deps/jsr.io/@std/encoding/{0.224.2 → 0.224.3}/base64.d.ts +9 -4
  51. package/types/deps/jsr.io/@std/encoding/0.224.3/base64.d.ts.map +1 -0
  52. package/types/deps/jsr.io/@std/encoding/0.224.3/hex.d.ts +37 -0
  53. package/types/deps/jsr.io/@std/encoding/0.224.3/hex.d.ts.map +1 -0
  54. package/types/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/common.d.ts.map +1 -1
  55. package/types/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/encoding.d.ts.map +1 -1
  56. package/types/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/language.d.ts.map +1 -1
  57. package/types/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/media_type.d.ts.map +1 -1
  58. package/types/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/negotiation.d.ts +27 -6
  59. package/types/deps/jsr.io/@std/http/0.224.2/negotiation.d.ts.map +1 -0
  60. package/types/deps/jsr.io/@std/semver/0.224.1/_constants.d.ts.map +1 -0
  61. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/_shared.d.ts.map +1 -1
  62. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/_test_comparator_set.d.ts.map +1 -1
  63. package/types/deps/jsr.io/@std/semver/0.224.1/can_parse.d.ts +17 -0
  64. package/types/deps/jsr.io/@std/semver/0.224.1/can_parse.d.ts.map +1 -0
  65. package/types/deps/jsr.io/@std/semver/0.224.1/compare.d.ts +28 -0
  66. package/types/deps/jsr.io/@std/semver/0.224.1/compare.d.ts.map +1 -0
  67. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/constants.d.ts.map +1 -1
  68. package/types/deps/jsr.io/@std/semver/0.224.1/difference.d.ts +27 -0
  69. package/types/deps/jsr.io/@std/semver/0.224.1/difference.d.ts.map +1 -0
  70. package/types/deps/jsr.io/@std/semver/0.224.1/equals.d.ts +24 -0
  71. package/types/deps/jsr.io/@std/semver/0.224.1/equals.d.ts.map +1 -0
  72. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/format.d.ts +14 -1
  73. package/types/deps/jsr.io/@std/semver/0.224.1/format.d.ts.map +1 -0
  74. package/types/deps/jsr.io/@std/semver/0.224.1/format_range.d.ts +17 -0
  75. package/types/deps/jsr.io/@std/semver/0.224.1/format_range.d.ts.map +1 -0
  76. package/types/deps/jsr.io/@std/semver/0.224.1/greater_or_equal.d.ts +24 -0
  77. package/types/deps/jsr.io/@std/semver/0.224.1/greater_or_equal.d.ts.map +1 -0
  78. package/types/deps/jsr.io/@std/semver/0.224.1/greater_than.d.ts +24 -0
  79. package/types/deps/jsr.io/@std/semver/0.224.1/greater_than.d.ts.map +1 -0
  80. package/types/deps/jsr.io/@std/semver/0.224.1/greater_than_range.d.ts +22 -0
  81. package/types/deps/jsr.io/@std/semver/0.224.1/greater_than_range.d.ts.map +1 -0
  82. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/increment.d.ts +18 -2
  83. package/types/deps/jsr.io/@std/semver/0.224.1/increment.d.ts.map +1 -0
  84. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/is_range.d.ts +10 -0
  85. package/types/deps/jsr.io/@std/semver/0.224.1/is_range.d.ts.map +1 -0
  86. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/is_semver.d.ts +16 -0
  87. package/types/deps/jsr.io/@std/semver/0.224.1/is_semver.d.ts.map +1 -0
  88. package/types/deps/jsr.io/@std/semver/0.224.1/less_or_equal.d.ts +24 -0
  89. package/types/deps/jsr.io/@std/semver/0.224.1/less_or_equal.d.ts.map +1 -0
  90. package/types/deps/jsr.io/@std/semver/0.224.1/less_than.d.ts +24 -0
  91. package/types/deps/jsr.io/@std/semver/0.224.1/less_than.d.ts.map +1 -0
  92. package/types/deps/jsr.io/@std/semver/0.224.1/less_than_range.d.ts +22 -0
  93. package/types/deps/jsr.io/@std/semver/0.224.1/less_than_range.d.ts.map +1 -0
  94. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/max_satisfying.d.ts +12 -0
  95. package/types/deps/jsr.io/@std/semver/0.224.1/max_satisfying.d.ts.map +1 -0
  96. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/min_satisfying.d.ts +12 -0
  97. package/types/deps/jsr.io/@std/semver/0.224.1/min_satisfying.d.ts.map +1 -0
  98. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/mod.d.ts +3 -2
  99. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/mod.d.ts.map +1 -1
  100. package/types/deps/jsr.io/@std/semver/0.224.1/not_equals.d.ts +23 -0
  101. package/types/deps/jsr.io/@std/semver/0.224.1/not_equals.d.ts.map +1 -0
  102. package/types/deps/jsr.io/@std/semver/0.224.1/parse.d.ts +25 -0
  103. package/types/deps/jsr.io/@std/semver/0.224.1/parse.d.ts.map +1 -0
  104. package/types/deps/jsr.io/@std/semver/0.224.1/parse_range.d.ts +26 -0
  105. package/types/deps/jsr.io/@std/semver/0.224.1/parse_range.d.ts.map +1 -0
  106. package/types/deps/jsr.io/@std/semver/0.224.1/range_intersects.d.ts +24 -0
  107. package/types/deps/jsr.io/@std/semver/0.224.1/range_intersects.d.ts.map +1 -0
  108. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/range_max.d.ts +16 -5
  109. package/types/deps/jsr.io/@std/semver/0.224.1/range_max.d.ts.map +1 -0
  110. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/range_min.d.ts +16 -5
  111. package/types/deps/jsr.io/@std/semver/0.224.1/range_min.d.ts.map +1 -0
  112. package/types/deps/jsr.io/@std/semver/0.224.1/satisfies.d.ts +24 -0
  113. package/types/deps/jsr.io/@std/semver/0.224.1/satisfies.d.ts.map +1 -0
  114. package/types/deps/jsr.io/@std/semver/0.224.1/test_range.d.ts +27 -0
  115. package/types/deps/jsr.io/@std/semver/0.224.1/test_range.d.ts.map +1 -0
  116. package/types/deps/jsr.io/@std/semver/0.224.1/try_parse.d.ts +21 -0
  117. package/types/deps/jsr.io/@std/semver/0.224.1/try_parse.d.ts.map +1 -0
  118. package/types/deps/jsr.io/@std/semver/0.224.1/try_parse_range.d.ts +23 -0
  119. package/types/deps/jsr.io/@std/semver/0.224.1/try_parse_range.d.ts.map +1 -0
  120. package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/types.d.ts +7 -2
  121. package/types/deps/jsr.io/@std/semver/0.224.1/types.d.ts.map +1 -0
  122. package/types/deps/jsr.io/@std/text/{0.224.0 → 0.224.1}/_util.d.ts.map +1 -1
  123. package/types/deps/jsr.io/@std/text/{0.224.0 → 0.224.1}/case.d.ts.map +1 -1
  124. package/types/deps/jsr.io/@std/text/0.224.1/closest_string.d.ts.map +1 -0
  125. package/types/deps/jsr.io/@std/text/0.224.1/compare_similarity.d.ts.map +1 -0
  126. package/types/deps/jsr.io/@std/text/{0.224.0 → 0.224.1}/levenshtein_distance.d.ts.map +1 -1
  127. package/types/deps/jsr.io/@std/text/0.224.1/mod.d.ts.map +1 -0
  128. package/types/deps/jsr.io/@std/text/0.224.1/word_similarity_sort.d.ts.map +1 -0
  129. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_dumper/dumper.d.ts.map +1 -1
  130. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_dumper/dumper_state.d.ts.map +1 -1
  131. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_error.d.ts.map +1 -1
  132. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_loader/loader.d.ts.map +1 -1
  133. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_loader/loader_state.d.ts.map +1 -1
  134. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_mark.d.ts.map +1 -1
  135. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_state.d.ts.map +1 -1
  136. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/binary.d.ts.map +1 -1
  137. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/bool.d.ts.map +1 -1
  138. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/float.d.ts.map +1 -1
  139. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/function.d.ts.map +1 -1
  140. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/int.d.ts.map +1 -1
  141. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/map.d.ts.map +1 -1
  142. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/merge.d.ts.map +1 -1
  143. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/mod.d.ts.map +1 -1
  144. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/nil.d.ts.map +1 -1
  145. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/omap.d.ts.map +1 -1
  146. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/pairs.d.ts.map +1 -1
  147. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/regexp.d.ts.map +1 -1
  148. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/seq.d.ts.map +1 -1
  149. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/set.d.ts.map +1 -1
  150. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/str.d.ts.map +1 -1
  151. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/timestamp.d.ts.map +1 -1
  152. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/_type/undefined.d.ts.map +1 -1
  153. package/types/deps/jsr.io/@std/yaml/0.224.1/_utils.d.ts.map +1 -0
  154. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/mod.d.ts.map +1 -1
  155. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/parse.d.ts.map +1 -1
  156. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/schema/core.d.ts.map +1 -1
  157. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/schema/default.d.ts.map +1 -1
  158. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/schema/extended.d.ts.map +1 -1
  159. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/schema/failsafe.d.ts.map +1 -1
  160. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/schema/json.d.ts.map +1 -1
  161. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/schema/mod.d.ts.map +1 -1
  162. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/schema.d.ts.map +1 -1
  163. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/stringify.d.ts.map +1 -1
  164. package/types/deps/jsr.io/@std/yaml/{0.224.0 → 0.224.1}/type.d.ts.map +1 -1
  165. package/types/federation/middleware.d.ts.map +1 -1
  166. package/types/httpsig/mod.d.ts +45 -48
  167. package/types/httpsig/mod.d.ts.map +1 -1
  168. package/types/nodeinfo/types.d.ts +1 -1
  169. package/types/sig/http.d.ts +54 -0
  170. package/types/sig/http.d.ts.map +1 -0
  171. package/types/sig/http.test.d.ts.map +1 -0
  172. package/types/{httpsig → sig}/key.d.ts +0 -3
  173. package/types/sig/key.d.ts.map +1 -0
  174. package/types/sig/key.test.d.ts.map +1 -0
  175. package/types/sig/mod.d.ts +9 -0
  176. package/types/sig/mod.d.ts.map +1 -0
  177. package/types/sig/owner.d.ts +50 -0
  178. package/types/sig/owner.d.ts.map +1 -0
  179. package/types/sig/owner.test.d.ts.map +1 -0
  180. package/types/vocab/vocab.d.ts +143 -0
  181. package/types/vocab/vocab.d.ts.map +1 -1
  182. package/esm/deps/jsr.io/@std/semver/0.224.0/can_parse.js +0 -15
  183. package/esm/deps/jsr.io/@std/semver/0.224.0/difference.js +0 -16
  184. package/esm/deps/jsr.io/@std/semver/0.224.0/equals.js +0 -11
  185. package/esm/deps/jsr.io/@std/semver/0.224.0/greater_or_equal.js +0 -9
  186. package/esm/deps/jsr.io/@std/semver/0.224.0/greater_than.js +0 -11
  187. package/esm/deps/jsr.io/@std/semver/0.224.0/less_or_equal.js +0 -9
  188. package/esm/deps/jsr.io/@std/semver/0.224.0/less_than.js +0 -9
  189. package/esm/deps/jsr.io/@std/semver/0.224.0/not_equals.js +0 -9
  190. package/esm/deps/jsr.io/@std/semver/0.224.0/satisfies.js +0 -11
  191. package/esm/deps/jsr.io/@std/semver/0.224.0/test_range.js +0 -13
  192. package/esm/deps/jsr.io/@std/semver/0.224.0/try_parse.js +0 -17
  193. package/types/deps/jsr.io/@std/encoding/0.224.2/_util.d.ts.map +0 -1
  194. package/types/deps/jsr.io/@std/encoding/0.224.2/base64.d.ts.map +0 -1
  195. package/types/deps/jsr.io/@std/encoding/0.224.2/hex.d.ts +0 -24
  196. package/types/deps/jsr.io/@std/encoding/0.224.2/hex.d.ts.map +0 -1
  197. package/types/deps/jsr.io/@std/http/0.224.1/negotiation.d.ts.map +0 -1
  198. package/types/deps/jsr.io/@std/semver/0.224.0/_constants.d.ts.map +0 -1
  199. package/types/deps/jsr.io/@std/semver/0.224.0/can_parse.d.ts +0 -2
  200. package/types/deps/jsr.io/@std/semver/0.224.0/can_parse.d.ts.map +0 -1
  201. package/types/deps/jsr.io/@std/semver/0.224.0/compare.d.ts +0 -11
  202. package/types/deps/jsr.io/@std/semver/0.224.0/compare.d.ts.map +0 -1
  203. package/types/deps/jsr.io/@std/semver/0.224.0/difference.d.ts +0 -6
  204. package/types/deps/jsr.io/@std/semver/0.224.0/difference.d.ts.map +0 -1
  205. package/types/deps/jsr.io/@std/semver/0.224.0/equals.d.ts +0 -8
  206. package/types/deps/jsr.io/@std/semver/0.224.0/equals.d.ts.map +0 -1
  207. package/types/deps/jsr.io/@std/semver/0.224.0/format.d.ts.map +0 -1
  208. package/types/deps/jsr.io/@std/semver/0.224.0/format_range.d.ts +0 -9
  209. package/types/deps/jsr.io/@std/semver/0.224.0/format_range.d.ts.map +0 -1
  210. package/types/deps/jsr.io/@std/semver/0.224.0/greater_or_equal.d.ts +0 -8
  211. package/types/deps/jsr.io/@std/semver/0.224.0/greater_or_equal.d.ts.map +0 -1
  212. package/types/deps/jsr.io/@std/semver/0.224.0/greater_than.d.ts +0 -8
  213. package/types/deps/jsr.io/@std/semver/0.224.0/greater_than.d.ts.map +0 -1
  214. package/types/deps/jsr.io/@std/semver/0.224.0/greater_than_range.d.ts +0 -4
  215. package/types/deps/jsr.io/@std/semver/0.224.0/greater_than_range.d.ts.map +0 -1
  216. package/types/deps/jsr.io/@std/semver/0.224.0/increment.d.ts.map +0 -1
  217. package/types/deps/jsr.io/@std/semver/0.224.0/is_range.d.ts.map +0 -1
  218. package/types/deps/jsr.io/@std/semver/0.224.0/is_semver.d.ts.map +0 -1
  219. package/types/deps/jsr.io/@std/semver/0.224.0/less_or_equal.d.ts +0 -8
  220. package/types/deps/jsr.io/@std/semver/0.224.0/less_or_equal.d.ts.map +0 -1
  221. package/types/deps/jsr.io/@std/semver/0.224.0/less_than.d.ts +0 -8
  222. package/types/deps/jsr.io/@std/semver/0.224.0/less_than.d.ts.map +0 -1
  223. package/types/deps/jsr.io/@std/semver/0.224.0/less_than_range.d.ts +0 -4
  224. package/types/deps/jsr.io/@std/semver/0.224.0/less_than_range.d.ts.map +0 -1
  225. package/types/deps/jsr.io/@std/semver/0.224.0/max_satisfying.d.ts.map +0 -1
  226. package/types/deps/jsr.io/@std/semver/0.224.0/min_satisfying.d.ts.map +0 -1
  227. package/types/deps/jsr.io/@std/semver/0.224.0/not_equals.d.ts +0 -8
  228. package/types/deps/jsr.io/@std/semver/0.224.0/not_equals.d.ts.map +0 -1
  229. package/types/deps/jsr.io/@std/semver/0.224.0/parse.d.ts +0 -9
  230. package/types/deps/jsr.io/@std/semver/0.224.0/parse.d.ts.map +0 -1
  231. package/types/deps/jsr.io/@std/semver/0.224.0/parse_range.d.ts +0 -8
  232. package/types/deps/jsr.io/@std/semver/0.224.0/parse_range.d.ts.map +0 -1
  233. package/types/deps/jsr.io/@std/semver/0.224.0/range_intersects.d.ts +0 -9
  234. package/types/deps/jsr.io/@std/semver/0.224.0/range_intersects.d.ts.map +0 -1
  235. package/types/deps/jsr.io/@std/semver/0.224.0/range_max.d.ts.map +0 -1
  236. package/types/deps/jsr.io/@std/semver/0.224.0/range_min.d.ts.map +0 -1
  237. package/types/deps/jsr.io/@std/semver/0.224.0/satisfies.d.ts +0 -9
  238. package/types/deps/jsr.io/@std/semver/0.224.0/satisfies.d.ts.map +0 -1
  239. package/types/deps/jsr.io/@std/semver/0.224.0/test_range.d.ts +0 -12
  240. package/types/deps/jsr.io/@std/semver/0.224.0/test_range.d.ts.map +0 -1
  241. package/types/deps/jsr.io/@std/semver/0.224.0/try_parse.d.ts +0 -8
  242. package/types/deps/jsr.io/@std/semver/0.224.0/try_parse.d.ts.map +0 -1
  243. package/types/deps/jsr.io/@std/semver/0.224.0/try_parse_range.d.ts +0 -8
  244. package/types/deps/jsr.io/@std/semver/0.224.0/try_parse_range.d.ts.map +0 -1
  245. package/types/deps/jsr.io/@std/semver/0.224.0/types.d.ts.map +0 -1
  246. package/types/deps/jsr.io/@std/text/0.224.0/closest_string.d.ts.map +0 -1
  247. package/types/deps/jsr.io/@std/text/0.224.0/compare_similarity.d.ts.map +0 -1
  248. package/types/deps/jsr.io/@std/text/0.224.0/mod.d.ts.map +0 -1
  249. package/types/deps/jsr.io/@std/text/0.224.0/word_similarity_sort.d.ts.map +0 -1
  250. package/types/deps/jsr.io/@std/yaml/0.224.0/_utils.d.ts.map +0 -1
  251. package/types/httpsig/key.d.ts.map +0 -1
  252. package/types/httpsig/key.test.d.ts.map +0 -1
  253. /package/esm/deps/jsr.io/@std/encoding/{0.224.2/_util.js → 0.224.3/_validate_binary_like.js} +0 -0
  254. /package/esm/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/common.js +0 -0
  255. /package/esm/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/encoding.js +0 -0
  256. /package/esm/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/language.js +0 -0
  257. /package/esm/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/media_type.js +0 -0
  258. /package/esm/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/negotiation.js +0 -0
  259. /package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/_constants.js +0 -0
  260. /package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/_shared.js +0 -0
  261. /package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/_test_comparator_set.js +0 -0
  262. /package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/constants.js +0 -0
  263. /package/esm/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/types.js +0 -0
  264. /package/types/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/common.d.ts +0 -0
  265. /package/types/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/encoding.d.ts +0 -0
  266. /package/types/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/language.d.ts +0 -0
  267. /package/types/deps/jsr.io/@std/http/{0.224.1 → 0.224.2}/_negotiation/media_type.d.ts +0 -0
  268. /package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/_constants.d.ts +0 -0
  269. /package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/_shared.d.ts +0 -0
  270. /package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/_test_comparator_set.d.ts +0 -0
  271. /package/types/deps/jsr.io/@std/semver/{0.224.0 → 0.224.1}/constants.d.ts +0 -0
@@ -325,6 +325,24 @@ function parseOperatorRanges(string) {
325
325
  }
326
326
  /**
327
327
  * Parses a range string into a Range object or throws a TypeError.
328
+ *
329
+ * @example Usage
330
+ * ```ts
331
+ * import { parseRange } from "@std/semver/parse-range";
332
+ * import { assertEquals } from "@std/assert/assert-equals";
333
+ *
334
+ * const range = parseRange(">=1.0.0 <2.0.0 || >=3.0.0");
335
+ * assertEquals(range, [
336
+ * [
337
+ * { operator: ">=", major: 1, minor: 0, patch: 0, prerelease: [], build: [] },
338
+ * { operator: "<", major: 2, minor: 0, patch: 0, prerelease: [], build: [] },
339
+ * ],
340
+ * [
341
+ * { operator: ">=", major: 3, minor: 0, patch: 0, prerelease: [], build: [] },
342
+ * ]
343
+ * ]);
344
+ * ```
345
+ *
328
346
  * @param range The range set string
329
347
  * @returns A valid semantic range
330
348
  */
@@ -57,9 +57,24 @@ function comparatorsSatisfiable(comparators) {
57
57
  }
58
58
  /**
59
59
  * The ranges intersect every range of AND comparators intersects with a least one range of OR ranges.
60
+ *
61
+ * @example Usage
62
+ * ```ts
63
+ * import { parseRange, rangeIntersects } from "@std/semver";
64
+ * import { assert, assertFalse } from "@std/assert";
65
+ *
66
+ * const r0 = parseRange(">=1.0.0 <2.0.0");
67
+ * const r1 = parseRange(">=1.0.0 <1.2.3");
68
+ * const r2 = parseRange(">=1.2.3 <2.0.0");
69
+ *
70
+ * assert(rangeIntersects(r0, r1));
71
+ * assert(rangeIntersects(r0, r2));
72
+ * assertFalse(rangeIntersects(r1, r2));
73
+ * ```
74
+ *
60
75
  * @param r0 range 0
61
76
  * @param r1 range 1
62
- * @returns returns true if any
77
+ * @returns returns true if the given ranges intersect, false otherwise
63
78
  */
64
79
  export function rangeIntersects(r0, r1) {
65
80
  return rangesSatisfiable([r0, r1]) &&
@@ -42,15 +42,26 @@ function comparatorMax(comparator) {
42
42
  }
43
43
  }
44
44
  /**
45
+ * The maximum valid SemVer for a given range or INVALID
46
+ *
47
+ * @example Usage
48
+ * ```ts
49
+ * import { parseRange } from "@std/semver/parse-range";
50
+ * import { rangeMax } from "@std/semver/range-max";
51
+ * import { equals } from "@std/semver/equals";
52
+ * import { assert } from "@std/assert/assert";
53
+ *
54
+ * assert(equals(rangeMax(parseRange(">1.0.0 <=2.0.0")), { major: 2, minor: 0, patch: 0 }));
55
+ * ```
56
+ *
57
+ * @param range The range to calculate the max for
58
+ * @returns A valid SemVer or INVALID
59
+ *
45
60
  * @deprecated This will be removed in 1.0.0. Use {@linkcode greaterThanRange} or
46
- * {@linkcode lessThanRange} for comparing ranges and semvers. The maximum
61
+ * {@linkcode lessThanRange} for comparing ranges and SemVers. The maximum
47
62
  * version of a range is often not well defined, and therefore this API
48
63
  * shouldn't be used. See
49
64
  * {@link https://github.com/denoland/deno_std/issues/4365} for details.
50
- *
51
- * The maximum valid SemVer for a given range or INVALID
52
- * @param range The range to calculate the max for
53
- * @returns A valid SemVer or INVALID
54
65
  */
55
66
  export function rangeMax(range) {
56
67
  let max;
@@ -33,15 +33,26 @@ function comparatorMin(comparator) {
33
33
  }
34
34
  }
35
35
  /**
36
+ * The minimum valid SemVer for a given range or INVALID
37
+ *
38
+ * @example Usage
39
+ * ```ts
40
+ * import { parseRange } from "@std/semver/parse-range";
41
+ * import { rangeMin } from "@std/semver/range-min";
42
+ * import { equals } from "@std/semver/equals";
43
+ * import { assert } from "@std/assert/assert";
44
+ *
45
+ * assert(equals(rangeMin(parseRange(">=1.0.0 <2.0.0")), { major: 1, minor: 0, patch: 0 }));
46
+ * ```
47
+ *
48
+ * @param range The range to calculate the min for
49
+ * @returns A valid SemVer or INVALID
50
+ *
36
51
  * @deprecated This will be removed in 1.0.0. Use {@linkcode greaterThanRange} or
37
- * {@linkcode lessThanRange} for comparing ranges and semvers. The minimum
52
+ * {@linkcode lessThanRange} for comparing ranges and SemVers. The minimum
38
53
  * version of a range is often not well defined, and therefore this API
39
54
  * shouldn't be used. See
40
55
  * {@link https://github.com/denoland/deno_std/issues/4365} for details.
41
- *
42
- * The minimum valid SemVer for a given range or INVALID
43
- * @param range The range to calculate the min for
44
- * @returns A valid SemVer or INVALID
45
56
  */
46
57
  export function rangeMin(range) {
47
58
  let min;
@@ -0,0 +1,26 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ import { testComparatorSet } from "./_test_comparator_set.js";
3
+ /**
4
+ * Test to see if the version satisfies the range.
5
+ *
6
+ * @example Usage
7
+ * ```ts
8
+ * import { parse, parseRange, satisfies } from "@std/semver";
9
+ * import { assert, assertFalse } from "@std/assert";
10
+ *
11
+ * const version = parse("1.2.3");
12
+ * const range0 = parseRange(">=1.0.0 <2.0.0");
13
+ * const range1 = parseRange(">=1.0.0 <1.3.0");
14
+ * const range2 = parseRange(">=1.0.0 <1.2.3");
15
+ *
16
+ * assert(satisfies(version, range0));
17
+ * assert(satisfies(version, range1));
18
+ * assertFalse(satisfies(version, range2));
19
+ * ```
20
+ * @param version The version to test
21
+ * @param range The range to check
22
+ * @returns true if the version is in the range
23
+ */
24
+ export function satisfies(version, range) {
25
+ return range.some((set) => testComparatorSet(version, set));
26
+ }
@@ -0,0 +1,28 @@
1
+ import { satisfies } from "./satisfies.js";
2
+ /**
3
+ * Test to see if the version satisfies the range.
4
+ *
5
+ * @example Usage
6
+ * ```ts
7
+ * import { parse, parseRange, testRange } from "@std/semver";
8
+ * import { assert, assertFalse } from "@std/assert";
9
+ *
10
+ * const version = parse("1.2.3");
11
+ * const range0 = parseRange(">=1.0.0 <2.0.0");
12
+ * const range1 = parseRange(">=1.0.0 <1.3.0");
13
+ * const range2 = parseRange(">=1.0.0 <1.2.3");
14
+ *
15
+ * assert(testRange(version, range0));
16
+ * assert(testRange(version, range1));
17
+ * assertFalse(testRange(version, range2));
18
+ * ```
19
+ * @param version The version to test
20
+ * @param range The range to check
21
+ * @returns true if the version is in the range
22
+ *
23
+ * @deprecated This will be removed in 1.0.0. Use {@linkcode satisfies}
24
+ * instead. See https://github.com/denoland/deno_std/pull/4364.
25
+ */
26
+ export function testRange(version, range) {
27
+ return satisfies(version, range);
28
+ }
@@ -0,0 +1,30 @@
1
+ import { parse } from "./parse.js";
2
+ /**
3
+ * Returns the parsed version, or undefined if it's not valid.
4
+ *
5
+ * @example Usage
6
+ * ```ts
7
+ * import { tryParse } from "@std/semver/try-parse";
8
+ * import { assertEquals } from "@std/assert/assert-equals";
9
+ *
10
+ * assertEquals(tryParse("1.2.3"), { major: 1, minor: 2, patch: 3, prerelease: [], build: [] });
11
+ * assertEquals(tryParse("1.2.3-alpha"), { major: 1, minor: 2, patch: 3, prerelease: ["alpha"], build: [] });
12
+ * assertEquals(tryParse("1.2.3+build"), { major: 1, minor: 2, patch: 3, prerelease: [], build: ["build"] });
13
+ * assertEquals(tryParse("1.2.3-alpha.1+build.1"), { major: 1, minor: 2, patch: 3, prerelease: ["alpha", 1], build: ["build", "1"] });
14
+ * assertEquals(tryParse(" invalid "), undefined);
15
+ * ```
16
+ *
17
+ * @param version The version string to parse
18
+ * @returns A valid SemVer or `undefined`
19
+ */
20
+ export function tryParse(version) {
21
+ if (version === undefined) {
22
+ return undefined;
23
+ }
24
+ try {
25
+ return parse(version);
26
+ }
27
+ catch {
28
+ return undefined;
29
+ }
30
+ }
@@ -2,7 +2,22 @@
2
2
  // This module is browser compatible.
3
3
  import { parseRange } from "./parse_range.js";
4
4
  /**
5
- * A tries to parse a valid Range string or returns undefined
5
+ * Parses the given range string and returns a Range object. If the range string
6
+ * is invalid, `undefined` is returned.
7
+ *
8
+ * @example Usage
9
+ * ```ts
10
+ * import { tryParseRange } from "@std/semver";
11
+ * import { assertEquals } from "@std/assert";
12
+ *
13
+ * assertEquals(tryParseRange(">=1.2.3 <1.2.4"), [
14
+ * [
15
+ * { operator: ">=", major: 1, minor: 2, patch: 3, prerelease: [], build: [] },
16
+ * { operator: "<", major: 1, minor: 2, patch: 4, prerelease: [], build: [] },
17
+ * ],
18
+ * ]);
19
+ * ```
20
+ *
6
21
  * @param range The range string
7
22
  * @returns A Range object if valid otherwise `undefined`
8
23
  */
@@ -1,5 +1,5 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
- import { encodeHex } from "../deps/jsr.io/@std/encoding/0.224.2/hex.js";
2
+ import { encodeHex } from "../deps/jsr.io/@std/encoding/0.224.3/hex.js";
3
3
  /**
4
4
  * Calculates the [partial follower collection digest][1].
5
5
  *
@@ -1,6 +1,6 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
2
  import { getLogger } from "@logtape/logtape";
3
- import { accepts } from "../deps/jsr.io/@std/http/0.224.1/negotiation.js";
3
+ import { accepts } from "../deps/jsr.io/@std/http/0.224.2/negotiation.js";
4
4
  import { doesActorOwnKey, verify } from "../httpsig/mod.js";
5
5
  import { Activity, Link, Object, OrderedCollection, OrderedCollectionPage, } from "../vocab/vocab.js";
6
6
  export function acceptsJsonLd(request) {
@@ -1,7 +1,8 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
2
  import { getLogger } from "@logtape/logtape";
3
- import { exportJwk, importJwk, validateCryptoKey } from "../httpsig/key.js";
4
- import { getKeyOwner, verify } from "../httpsig/mod.js";
3
+ import { verifyRequest } from "../sig/http.js";
4
+ import { exportJwk, importJwk, validateCryptoKey } from "../sig/key.js";
5
+ import { getKeyOwner } from "../sig/owner.js";
5
6
  import { handleNodeInfo, handleNodeInfoJrd } from "../nodeinfo/handler.js";
6
7
  import { fetchDocumentLoader, getAuthenticatedDocumentLoader, kvCache, } from "../runtime/docloader.js";
7
8
  import { Activity, CryptographicKey } from "../vocab/mod.js";
@@ -381,7 +382,10 @@ export class Federation {
381
382
  async getSignedKey() {
382
383
  if (signedKey !== undefined)
383
384
  return signedKey;
384
- return signedKey = await verify(request, { ...context, timeWindow });
385
+ return signedKey = await verifyRequest(request, {
386
+ ...context,
387
+ timeWindow,
388
+ });
385
389
  },
386
390
  async getSignedKeyOwner() {
387
391
  if (signedKeyOwner !== undefined)
@@ -1,18 +1,7 @@
1
- /**
2
- * The implementation of the [HTTP
3
- * Signatures](https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-12).
4
- *
5
- * @module
6
- */
7
- import * as dntShim from "../_dnt.shims.js";
8
1
  import { getLogger } from "@logtape/logtape";
9
- import { equals } from "../deps/jsr.io/@std/bytes/0.224.0/mod.js";
10
- import { decodeBase64, encodeBase64 } from "../deps/jsr.io/@std/encoding/0.224.2/base64.js";
11
- import { fetchDocumentLoader, } from "../runtime/docloader.js";
12
- import { isActor } from "../vocab/actor.js";
13
- import { CryptographicKey, Object as ASObject, } from "../vocab/vocab.js";
14
- import { validateCryptoKey } from "./key.js";
15
- export { exportJwk, generateCryptoKeyPair, importJwk } from "./key.js";
2
+ import { signRequest, verifyRequest, } from "../sig/http.js";
3
+ import { exportJwk as newExportJwk, generateCryptoKeyPair as newGenerateCryptoKeyPair, importJwk as newImportJwk, } from "../sig/key.js";
4
+ import { doesActorOwnKey as newDoesActorOwnKey, getKeyOwner as newGetKeyOwner, } from "../sig/owner.js";
16
5
  /**
17
6
  * Signs a request using the given private key.
18
7
  * @param request The request to sign.
@@ -21,45 +10,12 @@ export { exportJwk, generateCryptoKeyPair, importJwk } from "./key.js";
21
10
  * verifier.
22
11
  * @returns The signed request.
23
12
  * @throws {TypeError} If the private key is invalid or unsupported.
13
+ * @deprecated
24
14
  */
25
- export async function sign(request, privateKey, keyId) {
26
- validateCryptoKey(privateKey, "private");
27
- const url = new URL(request.url);
28
- const body = request.method !== "GET" && request.method !== "HEAD"
29
- ? await request.arrayBuffer()
30
- : null;
31
- const headers = new Headers(request.headers);
32
- if (!headers.has("Host")) {
33
- headers.set("Host", url.host);
34
- }
35
- if (!headers.has("Digest") && body != null) {
36
- const digest = await dntShim.crypto.subtle.digest("SHA-256", body);
37
- headers.set("Digest", `sha-256=${encodeBase64(digest)}`);
38
- }
39
- if (!headers.has("Date")) {
40
- headers.set("Date", new Date().toUTCString());
41
- }
42
- const serialized = [
43
- ["(request-target)", `${request.method.toLowerCase()} ${url.pathname}`],
44
- ...headers,
45
- ];
46
- const headerNames = serialized.map(([name]) => name);
47
- const message = serialized
48
- .map(([name, value]) => `${name}: ${value.trim()}`).join("\n");
49
- // TODO: support other than RSASSA-PKCS1-v1_5:
50
- const signature = await dntShim.crypto.subtle.sign("RSASSA-PKCS1-v1_5", privateKey, new TextEncoder().encode(message));
51
- const sigHeader = `keyId="${keyId.href}",headers="${headerNames.join(" ")}",signature="${encodeBase64(signature)}"`;
52
- headers.set("Signature", sigHeader);
53
- return new Request(request, {
54
- headers,
55
- body,
56
- });
15
+ export function sign(request, privateKey, keyId) {
16
+ getLogger(["fedify", "httpsig", "sign"]).warn("The sign() function is deprecated. Use signRequest() instead.");
17
+ return signRequest(request, privateKey, keyId);
57
18
  }
58
- const supportedHashAlgorithms = {
59
- "sha": "SHA-1",
60
- "sha-256": "SHA-256",
61
- "sha-512": "SHA-512",
62
- };
63
19
  /**
64
20
  * Verifies the signature of a request.
65
21
  *
@@ -72,167 +28,11 @@ const supportedHashAlgorithms = {
72
28
  * @param options Options for verifying the request.
73
29
  * @returns The public key of the verified signature, or `null` if the signature
74
30
  * could not be verified.
31
+ * @deprecated
75
32
  */
76
- export async function verify(request, { documentLoader, contextLoader, timeWindow, currentTime } = {}) {
77
- const logger = getLogger(["fedify", "httpsig", "verify"]);
78
- request = request.clone();
79
- const dateHeader = request.headers.get("Date");
80
- if (dateHeader == null) {
81
- logger.debug("Failed to verify; no Date header found.", { headers: Object.fromEntries(request.headers.entries()) });
82
- return null;
83
- }
84
- const sigHeader = request.headers.get("Signature");
85
- if (sigHeader == null) {
86
- logger.debug("Failed to verify; no Signature header found.", { headers: Object.fromEntries(request.headers.entries()) });
87
- return null;
88
- }
89
- const digestHeader = request.headers.get("Digest");
90
- if (request.method !== "GET" && request.method !== "HEAD" &&
91
- digestHeader == null) {
92
- logger.debug("Failed to verify; no Digest header found.", { headers: Object.fromEntries(request.headers.entries()) });
93
- return null;
94
- }
95
- let body = null;
96
- if (digestHeader != null) {
97
- body = await request.arrayBuffer();
98
- const digests = digestHeader.split(",").map((pair) => pair.includes("=") ? pair.split("=", 2) : [pair, ""]);
99
- let matched = false;
100
- for (let [algo, digestBase64] of digests) {
101
- algo = algo.trim().toLowerCase();
102
- if (!(algo in supportedHashAlgorithms))
103
- continue;
104
- const digest = decodeBase64(digestBase64);
105
- const expectedDigest = await dntShim.crypto.subtle.digest(supportedHashAlgorithms[algo], body);
106
- if (!equals(digest, new Uint8Array(expectedDigest))) {
107
- logger.debug("Failed to verify; digest mismatch ({algorithm}): " +
108
- "{digest} != {expectedDigest}.", {
109
- algorithm: algo,
110
- digest: digestBase64,
111
- expectedDigest: encodeBase64(expectedDigest),
112
- });
113
- return null;
114
- }
115
- matched = true;
116
- }
117
- if (!matched) {
118
- logger.debug("Failed to verify; no supported digest algorithm found. " +
119
- "Supported: {supportedAlgorithms}; found: {algorithms}.", {
120
- supportedAlgorithms: Object.keys(supportedHashAlgorithms),
121
- algorithms: digests.map(([algo]) => algo),
122
- });
123
- return null;
124
- }
125
- }
126
- const date = dntShim.Temporal.Instant.from(new Date(dateHeader).toISOString());
127
- const now = currentTime ?? dntShim.Temporal.Now.instant();
128
- const tw = timeWindow ?? { minutes: 1 };
129
- if (dntShim.Temporal.Instant.compare(date, now.add(tw)) > 0) {
130
- logger.debug("Failed to verify; Date is too far in the future.", { date: date.toString(), now: now.toString() });
131
- return null;
132
- }
133
- else if (dntShim.Temporal.Instant.compare(date, now.subtract(tw)) < 0) {
134
- logger.debug("Failed to verify; Date is too far in the past.", { date: date.toString(), now: now.toString() });
135
- return null;
136
- }
137
- const sigValues = Object.fromEntries(sigHeader.split(",").map((pair) => pair.match(/^\s*([A-Za-z]+)="([^"]*)"\s*$/)).filter((m) => m != null).map((m) => m.slice(1, 3)));
138
- if (!("keyId" in sigValues)) {
139
- logger.debug("Failed to verify; no keyId field found in the Signature header.", { signature: sigHeader });
140
- return null;
141
- }
142
- else if (!("headers" in sigValues)) {
143
- logger.debug("Failed to verify; no headers field found in the Signature header.", { signature: sigHeader });
144
- return null;
145
- }
146
- else if (!("signature" in sigValues)) {
147
- logger.debug("Failed to verify; no signature field found in the Signature header.", { signature: sigHeader });
148
- return null;
149
- }
150
- const { keyId, headers, signature } = sigValues;
151
- logger.debug("Fetching key {keyId} to verify signature...", { keyId });
152
- let document;
153
- try {
154
- const remoteDocument = await (documentLoader ?? fetchDocumentLoader)(keyId);
155
- document = remoteDocument.document;
156
- }
157
- catch (_) {
158
- logger.debug("Failed to fetch key {keyId}.", { keyId });
159
- return null;
160
- }
161
- let object;
162
- try {
163
- object = await ASObject.fromJsonLd(document, {
164
- documentLoader,
165
- contextLoader,
166
- });
167
- }
168
- catch (e) {
169
- if (!(e instanceof TypeError))
170
- throw e;
171
- try {
172
- object = await CryptographicKey.fromJsonLd(document, {
173
- documentLoader,
174
- contextLoader,
175
- });
176
- }
177
- catch (e) {
178
- if (e instanceof TypeError) {
179
- logger.debug("Failed to verify; key {keyId} returned an invalid object.", { keyId });
180
- return null;
181
- }
182
- throw e;
183
- }
184
- }
185
- let key = null;
186
- if (object instanceof CryptographicKey)
187
- key = object;
188
- else if (isActor(object)) {
189
- for await (const k of object.getPublicKeys({ documentLoader, contextLoader })) {
190
- if (k.id?.href === keyId) {
191
- key = k;
192
- break;
193
- }
194
- }
195
- if (key == null) {
196
- logger.debug("Failed to verify; object {keyId} returned an {actorType}, " +
197
- "but has no key matching {keyId}.", { keyId, actorType: object.constructor.name });
198
- return null;
199
- }
200
- }
201
- else {
202
- logger.debug("Failed to verify; key {keyId} returned an invalid object.", { keyId });
203
- return null;
204
- }
205
- if (key.publicKey == null) {
206
- logger.debug("Failed to verify; key {keyId} has no publicKeyPem field.", { keyId });
207
- return null;
208
- }
209
- const headerNames = headers.split(/\s+/g);
210
- if (!headerNames.includes("(request-target)") || !headerNames.includes("date")) {
211
- logger.debug("Failed to verify; required headers missing in the Signature header: " +
212
- "{headers}.", { headers });
213
- return null;
214
- }
215
- if (body != null && !headerNames.includes("digest")) {
216
- logger.debug("Failed to verify; required headers missing in the Signature header: " +
217
- "{headers}.", { headers });
218
- return null;
219
- }
220
- const message = headerNames.map((name) => `${name}: ` +
221
- (name == "(request-target)"
222
- ? `${request.method.toLowerCase()} ${new URL(request.url).pathname}`
223
- : name == "host"
224
- ? request.headers.get("host") ?? new URL(request.url).host
225
- : request.headers.get(name))).join("\n");
226
- const sig = decodeBase64(signature);
227
- // TODO: support other than RSASSA-PKCS1-v1_5:
228
- const verified = await dntShim.crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, sig, new TextEncoder().encode(message));
229
- if (!verified) {
230
- logger.debug("Failed to verify; signature {signature} is invalid. " +
231
- "Check if the key is correct or if the signed message is correct. " +
232
- "The message to sign is:\n{message}", { signature, message });
233
- return null;
234
- }
235
- return key;
33
+ export function verify(request, options = {}) {
34
+ getLogger(["fedify", "httpsig", "verify"]).warn("The verify() function is deprecated. Use verifyRequest() instead.");
35
+ return verifyRequest(request, options);
236
36
  }
237
37
  /**
238
38
  * Checks if the actor of the given activity owns the specified key.
@@ -240,19 +40,12 @@ export async function verify(request, { documentLoader, contextLoader, timeWindo
240
40
  * @param key The public key to check.
241
41
  * @param options Options for checking the key ownership.
242
42
  * @returns Whether the actor is the owner of the key.
43
+ * @deprecated
243
44
  */
244
- export async function doesActorOwnKey(activity, key, options) {
245
- if (key.ownerId != null) {
246
- return key.ownerId.href === activity.actorId?.href;
247
- }
248
- const actor = await activity.getActor(options);
249
- if (actor == null || !isActor(actor))
250
- return false;
251
- for (const publicKeyId of actor.publicKeyIds) {
252
- if (key.id != null && publicKeyId.href === key.id.href)
253
- return true;
254
- }
255
- return false;
45
+ export function doesActorOwnKey(activity, key, options) {
46
+ getLogger(["fedify", "httpsig"]).warn("The doesActorOwnKey() function from @fedify/fedify/httpsig is deprecated. " +
47
+ "Use doesActorOwnKey() from @fedify/fedify/sig instead.");
48
+ return newDoesActorOwnKey(activity, key, options);
256
49
  }
257
50
  /**
258
51
  * Gets the actor that owns the specified key. Returns `null` if the key has no
@@ -263,65 +56,49 @@ export async function doesActorOwnKey(activity, key, options) {
263
56
  * @returns The actor that owns the key, or `null` if the key has no known
264
57
  * owner.
265
58
  * @since 0.7.0
59
+ * @deprecated
60
+ */
61
+ export function getKeyOwner(keyId, options) {
62
+ getLogger(["fedify", "httpsig"]).warn("The getKeyOwner() function from @fedify/fedify/httpsig is deprecated. " +
63
+ "Use getKeyOwner() from @fedify/fedify/sig instead.");
64
+ return newGetKeyOwner(keyId, options);
65
+ }
66
+ /**
67
+ * Generates a key pair which is appropriate for Fedify.
68
+ * @returns The generated key pair.
69
+ * @since 0.3.0
70
+ * @deprecated
71
+ */
72
+ export function generateCryptoKeyPair() {
73
+ getLogger(["fedify", "httpsig", "key"]).warn("The generateCryptoKeyPair() from @fedify/fedify/httpsig is deprecated. " +
74
+ "Please use generateKeyPair() from @fedify/fedify/sig instead.");
75
+ return newGenerateCryptoKeyPair();
76
+ }
77
+ /**
78
+ * Exports a key in JWK format.
79
+ * @param key The key to export. Either public or private key.
80
+ * @returns The exported key in JWK format. The key is suitable for
81
+ * serialization and storage.
82
+ * @throws {TypeError} If the key is invalid or unsupported.
83
+ * @since 0.3.0
84
+ * @deprecated
85
+ */
86
+ export function exportJwk(key) {
87
+ getLogger(["fedify", "httpsig", "key"]).warn("The exportJwk() function from @fedify/fedify/httpsig is deprecated. " +
88
+ "Please use exportJwk() from @fedify/fedify/sig instead.");
89
+ return newExportJwk(key);
90
+ }
91
+ /**
92
+ * Imports a key from JWK format.
93
+ * @param jwk The key in JWK format.
94
+ * @param type Which type of key to import, either `"public"`" or `"private"`".
95
+ * @returns The imported key.
96
+ * @throws {TypeError} If the key is invalid or unsupported.
97
+ * @since 0.3.0
98
+ * @deprecated
266
99
  */
267
- export async function getKeyOwner(keyId, options) {
268
- const documentLoader = options.documentLoader ?? fetchDocumentLoader;
269
- const contextLoader = options.contextLoader ?? fetchDocumentLoader;
270
- let object;
271
- if (keyId instanceof CryptographicKey) {
272
- object = keyId;
273
- if (object.id == null)
274
- return null;
275
- keyId = object.id;
276
- }
277
- else {
278
- let keyDoc;
279
- try {
280
- const { document } = await documentLoader(keyId.href);
281
- keyDoc = document;
282
- }
283
- catch (_) {
284
- return null;
285
- }
286
- try {
287
- object = await ASObject.fromJsonLd(keyDoc, {
288
- documentLoader,
289
- contextLoader,
290
- });
291
- }
292
- catch (e) {
293
- if (!(e instanceof TypeError))
294
- throw e;
295
- try {
296
- object = await CryptographicKey.fromJsonLd(keyDoc, {
297
- documentLoader,
298
- contextLoader,
299
- });
300
- }
301
- catch (e) {
302
- if (e instanceof TypeError)
303
- return null;
304
- throw e;
305
- }
306
- }
307
- }
308
- let owner = null;
309
- if (object instanceof CryptographicKey) {
310
- if (object.ownerId == null)
311
- return null;
312
- owner = await object.getOwner({ documentLoader, contextLoader });
313
- }
314
- else if (isActor(object)) {
315
- owner = object;
316
- }
317
- else {
318
- return null;
319
- }
320
- if (owner == null)
321
- return null;
322
- for (const kid of owner.publicKeyIds) {
323
- if (kid.href === keyId.href)
324
- return owner;
325
- }
326
- return null;
100
+ export function importJwk(jwk, type) {
101
+ getLogger(["fedify", "httpsig", "key"]).warn("The importJwk() function from @fedify/fedify/httpsig is deprecated. " +
102
+ "Please use importJwk() from @fedify/fedify/sig instead.");
103
+ return newImportJwk(jwk, type);
327
104
  }
@@ -1,4 +1,4 @@
1
- import { format } from "../deps/jsr.io/@std/semver/0.224.0/mod.js";
1
+ import { format } from "../deps/jsr.io/@std/semver/0.224.1/mod.js";
2
2
  /**
3
3
  * Converts a {@link NodeInfo} object to a JSON value.
4
4
  * @param nodeInfo The {@link NodeInfo} object to convert.
@@ -1,7 +1,7 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
2
  import { getLogger } from "@logtape/logtape";
3
- import { validateCryptoKey } from "../httpsig/key.js";
4
- import { sign } from "../httpsig/mod.js";
3
+ import { signRequest } from "../sig/http.js";
4
+ import { validateCryptoKey } from "../sig/key.js";
5
5
  const logger = getLogger(["fedify", "runtime", "docloader"]);
6
6
  /**
7
7
  * Error thrown when fetching a JSON-LD document failed.
@@ -94,7 +94,7 @@ export function getAuthenticatedDocumentLoader(identity) {
94
94
  validateCryptoKey(identity.privateKey);
95
95
  async function load(url) {
96
96
  let request = createRequest(url);
97
- request = await sign(request, identity.privateKey, identity.keyId);
97
+ request = await signRequest(request, identity.privateKey, identity.keyId);
98
98
  logRequest(request);
99
99
  const response = await fetch(request, {
100
100
  // Since Bun has a bug that ignores the `Request.redirect` option,