@fedify/fedify 1.4.10 → 1.4.12

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 (162) hide show
  1. package/CHANGES.md +127 -0
  2. package/esm/deno.js +1 -1
  3. package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/equals.js +1 -1
  4. package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_constants.js +0 -10
  5. package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/satisfies.js +1 -0
  6. package/esm/federation/handler.js +20 -7
  7. package/esm/nodeinfo/client.js +1 -1
  8. package/esm/nodeinfo/mod.js +1 -1
  9. package/esm/nodeinfo/types.js +1 -1
  10. package/esm/runtime/key.js +1 -1
  11. package/esm/sig/http.js +1 -1
  12. package/esm/sig/key.js +4 -1
  13. package/esm/vocab/announce.yaml +3 -1
  14. package/esm/vocab/create.yaml +3 -1
  15. package/esm/vocab/delete.yaml +3 -1
  16. package/esm/vocab/lookup.js +1 -1
  17. package/esm/vocab/question.yaml +3 -1
  18. package/esm/vocab/update.yaml +3 -1
  19. package/esm/vocab/vocab.js +328 -181
  20. package/package.json +1 -1
  21. package/types/deps/jsr.io/@std/async/{1.0.12 → 1.0.13}/delay.d.ts.map +1 -1
  22. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/_types.d.ts.map +1 -1
  23. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/concat.d.ts +1 -1
  24. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/concat.d.ts.map +1 -1
  25. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/copy.d.ts.map +1 -1
  26. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/ends_with.d.ts.map +1 -1
  27. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/equals.d.ts.map +1 -1
  28. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/includes_needle.d.ts.map +1 -1
  29. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/index_of_needle.d.ts.map +1 -1
  30. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/last_index_of_needle.d.ts.map +1 -1
  31. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/mod.d.ts.map +1 -1
  32. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/repeat.d.ts.map +1 -1
  33. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/starts_with.d.ts.map +1 -1
  34. package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/common.d.ts.map +1 -1
  35. package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/encoding.d.ts.map +1 -1
  36. package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/language.d.ts.map +1 -1
  37. package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/media_type.d.ts.map +1 -1
  38. package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/negotiation.d.ts.map +1 -1
  39. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_constants.d.ts +0 -4
  40. package/types/deps/jsr.io/@std/semver/1.0.5/_constants.d.ts.map +1 -0
  41. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_shared.d.ts.map +1 -1
  42. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_test_comparator_set.d.ts.map +1 -1
  43. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/can_parse.d.ts.map +1 -1
  44. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/compare.d.ts.map +1 -1
  45. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/difference.d.ts.map +1 -1
  46. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/equals.d.ts.map +1 -1
  47. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format.d.ts.map +1 -1
  48. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format_range.d.ts.map +1 -1
  49. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_or_equal.d.ts.map +1 -1
  50. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than.d.ts.map +1 -1
  51. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than_range.d.ts.map +1 -1
  52. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/increment.d.ts.map +1 -1
  53. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_range.d.ts.map +1 -1
  54. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_semver.d.ts.map +1 -1
  55. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_or_equal.d.ts.map +1 -1
  56. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than.d.ts.map +1 -1
  57. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than_range.d.ts.map +1 -1
  58. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/max_satisfying.d.ts.map +1 -1
  59. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/min_satisfying.d.ts.map +1 -1
  60. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/mod.d.ts.map +1 -1
  61. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/not_equals.d.ts.map +1 -1
  62. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse.d.ts.map +1 -1
  63. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse_range.d.ts.map +1 -1
  64. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/range_intersects.d.ts.map +1 -1
  65. package/types/deps/jsr.io/@std/semver/1.0.5/satisfies.d.ts.map +1 -0
  66. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse.d.ts.map +1 -1
  67. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse_range.d.ts.map +1 -1
  68. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/types.d.ts.map +1 -1
  69. package/types/federation/handler.d.ts.map +1 -1
  70. package/types/nodeinfo/mod.d.ts +1 -1
  71. package/types/nodeinfo/types.d.ts +1 -1
  72. package/types/sig/key.d.ts.map +1 -1
  73. package/types/vocab/vocab.d.ts.map +1 -1
  74. package/types/deps/jsr.io/@std/semver/1.0.4/_constants.d.ts.map +0 -1
  75. package/types/deps/jsr.io/@std/semver/1.0.4/satisfies.d.ts.map +0 -1
  76. /package/esm/deps/jsr.io/@std/async/{1.0.12 → 1.0.13}/delay.js +0 -0
  77. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/_types.js +0 -0
  78. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/concat.js +0 -0
  79. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/copy.js +0 -0
  80. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/ends_with.js +0 -0
  81. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/includes_needle.js +0 -0
  82. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/index_of_needle.js +0 -0
  83. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/last_index_of_needle.js +0 -0
  84. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/mod.js +0 -0
  85. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/repeat.js +0 -0
  86. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/starts_with.js +0 -0
  87. /package/esm/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/common.js +0 -0
  88. /package/esm/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/encoding.js +0 -0
  89. /package/esm/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/language.js +0 -0
  90. /package/esm/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/media_type.js +0 -0
  91. /package/esm/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/negotiation.js +0 -0
  92. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_shared.js +0 -0
  93. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_test_comparator_set.js +0 -0
  94. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/can_parse.js +0 -0
  95. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/compare.js +0 -0
  96. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/difference.js +0 -0
  97. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/equals.js +0 -0
  98. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format.js +0 -0
  99. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format_range.js +0 -0
  100. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_or_equal.js +0 -0
  101. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than.js +0 -0
  102. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than_range.js +0 -0
  103. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/increment.js +0 -0
  104. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_range.js +0 -0
  105. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_semver.js +0 -0
  106. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_or_equal.js +0 -0
  107. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than.js +0 -0
  108. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than_range.js +0 -0
  109. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/max_satisfying.js +0 -0
  110. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/min_satisfying.js +0 -0
  111. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/mod.js +0 -0
  112. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/not_equals.js +0 -0
  113. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse.js +0 -0
  114. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse_range.js +0 -0
  115. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/range_intersects.js +0 -0
  116. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse.js +0 -0
  117. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse_range.js +0 -0
  118. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/types.js +0 -0
  119. /package/types/deps/jsr.io/@std/async/{1.0.12 → 1.0.13}/delay.d.ts +0 -0
  120. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/_types.d.ts +0 -0
  121. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/copy.d.ts +0 -0
  122. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/ends_with.d.ts +0 -0
  123. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/equals.d.ts +0 -0
  124. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/includes_needle.d.ts +0 -0
  125. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/index_of_needle.d.ts +0 -0
  126. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/last_index_of_needle.d.ts +0 -0
  127. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/mod.d.ts +0 -0
  128. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/repeat.d.ts +0 -0
  129. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/starts_with.d.ts +0 -0
  130. /package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/common.d.ts +0 -0
  131. /package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/encoding.d.ts +0 -0
  132. /package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/language.d.ts +0 -0
  133. /package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/_negotiation/media_type.d.ts +0 -0
  134. /package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.18}/negotiation.d.ts +0 -0
  135. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_shared.d.ts +0 -0
  136. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_test_comparator_set.d.ts +0 -0
  137. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/can_parse.d.ts +0 -0
  138. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/compare.d.ts +0 -0
  139. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/difference.d.ts +0 -0
  140. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/equals.d.ts +0 -0
  141. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format.d.ts +0 -0
  142. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format_range.d.ts +0 -0
  143. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_or_equal.d.ts +0 -0
  144. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than.d.ts +0 -0
  145. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than_range.d.ts +0 -0
  146. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/increment.d.ts +0 -0
  147. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_range.d.ts +0 -0
  148. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_semver.d.ts +0 -0
  149. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_or_equal.d.ts +0 -0
  150. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than.d.ts +0 -0
  151. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than_range.d.ts +0 -0
  152. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/max_satisfying.d.ts +0 -0
  153. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/min_satisfying.d.ts +0 -0
  154. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/mod.d.ts +0 -0
  155. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/not_equals.d.ts +0 -0
  156. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse.d.ts +0 -0
  157. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse_range.d.ts +0 -0
  158. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/range_intersects.d.ts +0 -0
  159. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/satisfies.d.ts +0 -0
  160. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse.d.ts +0 -0
  161. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse_range.d.ts +0 -0
  162. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/types.d.ts +0 -0
package/CHANGES.md CHANGED
@@ -3,6 +3,31 @@
3
3
  Fedify changelog
4
4
  ================
5
5
 
6
+ Version 1.4.12
7
+ --------------
8
+
9
+ Released on June 30, 2025.
10
+
11
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
12
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
13
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
14
+ "@value":123}`).
15
+
16
+
17
+ Version 1.4.11
18
+ --------------
19
+
20
+ Released on May 16, 2025.
21
+
22
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
23
+ caused a `500 Internal Server Error` when the received activity had
24
+ an invalid JSON-LD syntax. Now it logs the error and responds with
25
+ a `400 Bad Request` error instead. [[#232]]
26
+
27
+ - The `exportJwk()` function now populates the `alg` property of a returned
28
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
29
+
30
+
6
31
  Version 1.4.10
7
32
  --------------
8
33
 
@@ -227,6 +252,31 @@ Released on February 5, 2025.
227
252
  [#195]: https://github.com/fedify-dev/fedify/issues/195
228
253
 
229
254
 
255
+ Version 1.3.19
256
+ --------------
257
+
258
+ Released on June 30, 2025.
259
+
260
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
261
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
262
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
263
+ "@value":123}`).
264
+
265
+
266
+ Version 1.3.18
267
+ --------------
268
+
269
+ Released on May 16, 2025.
270
+
271
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
272
+ caused a `500 Internal Server Error` when the received activity had
273
+ an invalid JSON-LD syntax. Now it logs the error and responds with
274
+ a `400 Bad Request` error instead. [[#232]]
275
+
276
+ - The `exportJwk()` function now populates the `alg` property of a returned
277
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
278
+
279
+
230
280
  Version 1.3.17
231
281
  --------------
232
282
 
@@ -567,6 +617,31 @@ Released on November 30, 2024.
567
617
  [#193]: https://github.com/fedify-dev/fedify/issues/193
568
618
 
569
619
 
620
+ Version 1.2.23
621
+ --------------
622
+
623
+ Released on June 30, 2025.
624
+
625
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
626
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
627
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
628
+ "@value":123}`).
629
+
630
+
631
+ Version 1.2.22
632
+ --------------
633
+
634
+ Released on May 16, 2025.
635
+
636
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
637
+ caused a `500 Internal Server Error` when the received activity had
638
+ an invalid JSON-LD syntax. Now it logs the error and responds with
639
+ a `400 Bad Request` error instead. [[#232]]
640
+
641
+ - The `exportJwk()` function now populates the `alg` property of a returned
642
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
643
+
644
+
570
645
  Version 1.2.21
571
646
  --------------
572
647
 
@@ -955,6 +1030,31 @@ Released on October 31, 2024.
955
1030
  [#118]: https://github.com/fedify-dev/fedify/issues/118
956
1031
 
957
1032
 
1033
+ Version 1.1.23
1034
+ --------------
1035
+
1036
+ Released on June 30, 2025.
1037
+
1038
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
1039
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
1040
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
1041
+ "@value":123}`).
1042
+
1043
+
1044
+ Version 1.1.22
1045
+ --------------
1046
+
1047
+ Released on May 16, 2025.
1048
+
1049
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
1050
+ caused a `500 Internal Server Error` when the received activity had
1051
+ an invalid JSON-LD syntax. Now it logs the error and responds with
1052
+ a `400 Bad Request` error instead. [[#232]]
1053
+
1054
+ - The `exportJwk()` function now populates the `alg` property of a returned
1055
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
1056
+
1057
+
958
1058
  Version 1.1.21
959
1059
  --------------
960
1060
 
@@ -1384,6 +1484,33 @@ Released on October 20, 2024.
1384
1484
  [#150]: https://github.com/fedify-dev/fedify/issues/150
1385
1485
 
1386
1486
 
1487
+ Version 1.0.26
1488
+ --------------
1489
+
1490
+ Released on June 30, 2025.
1491
+
1492
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
1493
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
1494
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
1495
+ "@value":123}`).
1496
+
1497
+
1498
+ Version 1.0.25
1499
+ --------------
1500
+
1501
+ Released on May 16, 2025.
1502
+
1503
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
1504
+ caused a `500 Internal Server Error` when the received activity had
1505
+ an invalid JSON-LD syntax. Now it logs the error and responds with
1506
+ a `400 Bad Request` error instead. [[#232]]
1507
+
1508
+ - The `exportJwk()` function now populates the `alg` property of a returned
1509
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
1510
+
1511
+ [#232]: https://github.com/fedify-dev/fedify/issues/232
1512
+
1513
+
1387
1514
  Version 1.0.24
1388
1515
  --------------
1389
1516
 
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "@fedify/fedify",
3
- "version": "1.4.10",
3
+ "version": "1.4.12",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  ".": "./mod.ts",
@@ -48,7 +48,7 @@ function equals32Bit(a, b) {
48
48
  * Byte length threshold for when to use 32-bit comparisons, based on
49
49
  * benchmarks.
50
50
  *
51
- * @see {@link https://github.com/denoland/deno_std/pull/4635}
51
+ * @see {@link https://github.com/denoland/std/pull/4635}
52
52
  */
53
53
  const THRESHOLD_32_BIT = 160;
54
54
  /**
@@ -1,14 +1,4 @@
1
1
  // Copyright 2018-2025 the Deno authors. MIT license.
2
- /**
3
- * The minimum valid SemVer object. Equivalent to `0.0.0`.
4
- */
5
- export const MIN = {
6
- major: 0,
7
- minor: 0,
8
- patch: 0,
9
- prerelease: [],
10
- build: [],
11
- };
12
2
  /**
13
3
  * ANY is a sentinel value used by some range calculations. It is not a valid
14
4
  * SemVer object and should not be used directly.
@@ -1,4 +1,5 @@
1
1
  // Copyright 2018-2025 the Deno authors. MIT license.
2
+ // This module is browser compatible.
2
3
  import { testComparatorSet } from "./_test_comparator_set.js";
3
4
  /**
4
5
  * Test to see if the SemVer satisfies the range.
@@ -1,6 +1,6 @@
1
1
  import { getLogger } from "@logtape/logtape";
2
2
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
3
- import { accepts } from "../deps/jsr.io/@std/http/1.0.13/negotiation.js";
3
+ import { accepts } from "../deps/jsr.io/@std/http/1.0.18/negotiation.js";
4
4
  import metadata from "../deno.js";
5
5
  import { verifyRequest } from "../sig/http.js";
6
6
  import { detachSignature, verifyJsonLd } from "../sig/ld.js";
@@ -322,12 +322,25 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
322
322
  });
323
323
  }
324
324
  const keyCache = new KvKeyCache(kv, kvPrefixes.publicKey, ctx);
325
- const ldSigVerified = await verifyJsonLd(json, {
326
- contextLoader: ctx.contextLoader,
327
- documentLoader: ctx.documentLoader,
328
- keyCache,
329
- tracerProvider,
330
- });
325
+ let ldSigVerified;
326
+ try {
327
+ ldSigVerified = await verifyJsonLd(json, {
328
+ contextLoader: ctx.contextLoader,
329
+ documentLoader: ctx.documentLoader,
330
+ keyCache,
331
+ tracerProvider,
332
+ });
333
+ }
334
+ catch (error) {
335
+ if (error instanceof Error && error.name === "jsonld.SyntaxError") {
336
+ logger.error("Failed to parse JSON-LD:\n{error}", { recipient, error });
337
+ return new Response("Invalid JSON-LD.", {
338
+ status: 400,
339
+ headers: { "Content-Type": "text/plain; charset=utf-8" },
340
+ });
341
+ }
342
+ ldSigVerified = false;
343
+ }
331
344
  const jsonWithoutSig = detachSignature(json);
332
345
  let activity = null;
333
346
  if (ldSigVerified) {
@@ -1,5 +1,5 @@
1
1
  import { getLogger } from "@logtape/logtape";
2
- import { parse } from "../deps/jsr.io/@std/semver/1.0.4/mod.js";
2
+ import { parse } from "../deps/jsr.io/@std/semver/1.0.5/mod.js";
3
3
  import { getUserAgent, } from "../runtime/docloader.js";
4
4
  const logger = getLogger(["fedify", "nodeinfo", "client"]);
5
5
  export async function getNodeInfo(url, options = {}) {
@@ -5,6 +5,6 @@
5
5
  * @module
6
6
  * @since 0.2.0
7
7
  */
8
- export { format as formatSemVer, parse as parseSemVer, } from "../deps/jsr.io/@std/semver/1.0.4/mod.js";
8
+ export { format as formatSemVer, parse as parseSemVer, } from "../deps/jsr.io/@std/semver/1.0.5/mod.js";
9
9
  export { getNodeInfo, parseNodeInfo, } from "./client.js";
10
10
  export * from "./types.js";
@@ -1,4 +1,4 @@
1
- import { format } from "../deps/jsr.io/@std/semver/1.0.4/mod.js";
1
+ import { format } from "../deps/jsr.io/@std/semver/1.0.5/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,6 +1,6 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
2
  import { createPublicKey } from "node:crypto";
3
- import { concat } from "../deps/jsr.io/@std/bytes/1.0.5/concat.js";
3
+ import { concat } from "../deps/jsr.io/@std/bytes/1.0.6/concat.js";
4
4
  import { decodeBase64, encodeBase64 } from "../deps/jsr.io/@std/encoding/1.0.7/base64.js";
5
5
  import { decodeBase64Url } from "../deps/jsr.io/@std/encoding/1.0.7/base64url.js";
6
6
  import { decodeHex } from "../deps/jsr.io/@std/encoding/1.0.7/hex.js";
package/esm/sig/http.js CHANGED
@@ -2,7 +2,7 @@ import * as dntShim from "../_dnt.shims.js";
2
2
  import { getLogger } from "@logtape/logtape";
3
3
  import { SpanStatusCode, trace, } from "@opentelemetry/api";
4
4
  import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL, } from "@opentelemetry/semantic-conventions";
5
- import { equals } from "../deps/jsr.io/@std/bytes/1.0.5/mod.js";
5
+ import { equals } from "../deps/jsr.io/@std/bytes/1.0.6/mod.js";
6
6
  import { decodeBase64, encodeBase64 } from "../deps/jsr.io/@std/encoding/1.0.7/base64.js";
7
7
  import { encodeHex } from "../deps/jsr.io/@std/encoding/1.0.7/hex.js";
8
8
  import metadata from "../deno.js";
package/esm/sig/key.js CHANGED
@@ -70,7 +70,10 @@ export function generateCryptoKeyPair(algorithm) {
70
70
  */
71
71
  export async function exportJwk(key) {
72
72
  validateCryptoKey(key);
73
- return await dntShim.crypto.subtle.exportKey("jwk", key);
73
+ const jwk = await dntShim.crypto.subtle.exportKey("jwk", key);
74
+ if (jwk.crv === "Ed25519")
75
+ jwk.alg = "Ed25519";
76
+ return jwk;
74
77
  }
75
78
  /**
76
79
  * Imports a key from JWK format.
@@ -16,7 +16,9 @@ defaultContext:
16
16
  misskey: "https://misskey-hub.net/ns#"
17
17
  fedibird: "http://fedibird.com/ns#"
18
18
  sensitive: "as:sensitive"
19
- votersCount: "toot:votersCount"
19
+ votersCount:
20
+ "@id": "toot:votersCount"
21
+ "@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
20
22
  Emoji: "toot:Emoji"
21
23
  Hashtag: "as:Hashtag"
22
24
  quoteUrl: "as:quoteUrl"
@@ -13,7 +13,9 @@ defaultContext:
13
13
  misskey: "https://misskey-hub.net/ns#"
14
14
  fedibird: "http://fedibird.com/ns#"
15
15
  sensitive: "as:sensitive"
16
- votersCount: "toot:votersCount"
16
+ votersCount:
17
+ "@id": "toot:votersCount"
18
+ "@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
17
19
  Emoji: "toot:Emoji"
18
20
  Hashtag: "as:Hashtag"
19
21
  ChatMessage: "http://litepub.social/ns#ChatMessage"
@@ -15,7 +15,9 @@ defaultContext:
15
15
  misskey: "https://misskey-hub.net/ns#"
16
16
  fedibird: "http://fedibird.com/ns#"
17
17
  sensitive: "as:sensitive"
18
- votersCount: "toot:votersCount"
18
+ votersCount:
19
+ "@id": "toot:votersCount"
20
+ "@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
19
21
  Emoji: "toot:Emoji"
20
22
  Hashtag: "as:Hashtag"
21
23
  ChatMessage: "http://litepub.social/ns#ChatMessage"
@@ -1,7 +1,7 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
2
  import { getLogger } from "@logtape/logtape";
3
3
  import { SpanStatusCode, trace } from "@opentelemetry/api";
4
- import { delay } from "../deps/jsr.io/@std/async/1.0.12/delay.js";
4
+ import { delay } from "../deps/jsr.io/@std/async/1.0.13/delay.js";
5
5
  import metadata from "../deno.js";
6
6
  import { getDocumentLoader, } from "../runtime/docloader.js";
7
7
  import { lookupWebFinger } from "../webfinger/lookup.js";
@@ -21,7 +21,9 @@ defaultContext:
21
21
  misskey: "https://misskey-hub.net/ns#"
22
22
  fedibird: "http://fedibird.com/ns#"
23
23
  sensitive: "as:sensitive"
24
- votersCount: "toot:votersCount"
24
+ votersCount:
25
+ "@id": "toot:votersCount"
26
+ "@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
25
27
  Emoji: "toot:Emoji"
26
28
  Hashtag: "as:Hashtag"
27
29
  quoteUrl: "as:quoteUrl"
@@ -37,7 +37,9 @@ defaultContext:
37
37
  suspended: "toot:suspended"
38
38
  memorial: "toot:memorial"
39
39
  indexable: "toot:indexable"
40
- votersCount: "toot:votersCount"
40
+ votersCount:
41
+ "@id": "toot:votersCount"
42
+ "@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
41
43
  Emoji: "toot:Emoji"
42
44
  Hashtag: "as:Hashtag"
43
45
  schema: "http://schema.org#"