@fedify/fedify 1.5.2 → 1.5.3

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 (62) hide show
  1. package/CHANGES.md +86 -0
  2. package/README.md +3 -2
  3. package/SPONSORS.md +3 -2
  4. package/esm/deno.js +1 -1
  5. package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/equals.js +1 -1
  6. package/esm/federation/handler.js +20 -7
  7. package/esm/runtime/key.js +1 -1
  8. package/esm/sig/http.js +1 -1
  9. package/esm/vocab/lookup.js +1 -1
  10. package/esm/vocab/vocab.js +176 -176
  11. package/package.json +1 -1
  12. package/types/deps/jsr.io/@std/async/{1.0.12 → 1.0.13}/delay.d.ts.map +1 -1
  13. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/_types.d.ts.map +1 -1
  14. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/concat.d.ts +1 -1
  15. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/concat.d.ts.map +1 -1
  16. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/copy.d.ts.map +1 -1
  17. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/ends_with.d.ts.map +1 -1
  18. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/equals.d.ts.map +1 -1
  19. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/includes_needle.d.ts.map +1 -1
  20. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/index_of_needle.d.ts.map +1 -1
  21. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/last_index_of_needle.d.ts.map +1 -1
  22. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/mod.d.ts.map +1 -1
  23. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/repeat.d.ts.map +1 -1
  24. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/starts_with.d.ts.map +1 -1
  25. package/types/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/common.d.ts.map +1 -1
  26. package/types/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/encoding.d.ts.map +1 -1
  27. package/types/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/language.d.ts.map +1 -1
  28. package/types/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/media_type.d.ts.map +1 -1
  29. package/types/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/negotiation.d.ts.map +1 -1
  30. package/types/federation/handler.d.ts.map +1 -1
  31. /package/esm/deps/jsr.io/@std/async/{1.0.12 → 1.0.13}/delay.js +0 -0
  32. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/_types.js +0 -0
  33. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/concat.js +0 -0
  34. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/copy.js +0 -0
  35. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/ends_with.js +0 -0
  36. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/includes_needle.js +0 -0
  37. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/index_of_needle.js +0 -0
  38. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/last_index_of_needle.js +0 -0
  39. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/mod.js +0 -0
  40. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/repeat.js +0 -0
  41. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/starts_with.js +0 -0
  42. /package/esm/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/common.js +0 -0
  43. /package/esm/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/encoding.js +0 -0
  44. /package/esm/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/language.js +0 -0
  45. /package/esm/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/media_type.js +0 -0
  46. /package/esm/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/negotiation.js +0 -0
  47. /package/types/deps/jsr.io/@std/async/{1.0.12 → 1.0.13}/delay.d.ts +0 -0
  48. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/_types.d.ts +0 -0
  49. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/copy.d.ts +0 -0
  50. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/ends_with.d.ts +0 -0
  51. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/equals.d.ts +0 -0
  52. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/includes_needle.d.ts +0 -0
  53. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/index_of_needle.d.ts +0 -0
  54. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/last_index_of_needle.d.ts +0 -0
  55. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/mod.d.ts +0 -0
  56. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/repeat.d.ts +0 -0
  57. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/starts_with.d.ts +0 -0
  58. /package/types/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/common.d.ts +0 -0
  59. /package/types/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/encoding.d.ts +0 -0
  60. /package/types/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/language.d.ts +0 -0
  61. /package/types/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/_negotiation/media_type.d.ts +0 -0
  62. /package/types/deps/jsr.io/@std/http/{1.0.15 → 1.0.16}/negotiation.d.ts +0 -0
package/CHANGES.md CHANGED
@@ -3,6 +3,20 @@
3
3
  Fedify changelog
4
4
  ================
5
5
 
6
+ Version 1.5.3
7
+ -------------
8
+
9
+ Released on May 16, 2025.
10
+
11
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
12
+ caused a `500 Internal Server Error` when the received activity had
13
+ an invalid JSON-LD syntax. Now it logs the error and responds with
14
+ a `400 Bad Request` error instead. [[#232]]
15
+
16
+ - The `exportJwk()` function now populates the `alg` property of a returned
17
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
18
+
19
+
6
20
  Version 1.5.2
7
21
  -------------
8
22
 
@@ -152,6 +166,20 @@ Released on March 28, 2025.
152
166
  [multibase]: https://github.com/multiformats/js-multibase
153
167
 
154
168
 
169
+ Version 1.4.11
170
+ --------------
171
+
172
+ Released on May 16, 2025.
173
+
174
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
175
+ caused a `500 Internal Server Error` when the received activity had
176
+ an invalid JSON-LD syntax. Now it logs the error and responds with
177
+ a `400 Bad Request` error instead. [[#232]]
178
+
179
+ - The `exportJwk()` function now populates the `alg` property of a returned
180
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
181
+
182
+
155
183
  Version 1.4.10
156
184
  --------------
157
185
 
@@ -376,6 +404,20 @@ Released on February 5, 2025.
376
404
  [#195]: https://github.com/fedify-dev/fedify/issues/195
377
405
 
378
406
 
407
+ Version 1.3.18
408
+ --------------
409
+
410
+ Released on May 16, 2025.
411
+
412
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
413
+ caused a `500 Internal Server Error` when the received activity had
414
+ an invalid JSON-LD syntax. Now it logs the error and responds with
415
+ a `400 Bad Request` error instead. [[#232]]
416
+
417
+ - The `exportJwk()` function now populates the `alg` property of a returned
418
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
419
+
420
+
379
421
  Version 1.3.17
380
422
  --------------
381
423
 
@@ -716,6 +758,20 @@ Released on November 30, 2024.
716
758
  [#193]: https://github.com/fedify-dev/fedify/issues/193
717
759
 
718
760
 
761
+ Version 1.2.22
762
+ --------------
763
+
764
+ Released on May 16, 2025.
765
+
766
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
767
+ caused a `500 Internal Server Error` when the received activity had
768
+ an invalid JSON-LD syntax. Now it logs the error and responds with
769
+ a `400 Bad Request` error instead. [[#232]]
770
+
771
+ - The `exportJwk()` function now populates the `alg` property of a returned
772
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
773
+
774
+
719
775
  Version 1.2.21
720
776
  --------------
721
777
 
@@ -1104,6 +1160,20 @@ Released on October 31, 2024.
1104
1160
  [#118]: https://github.com/fedify-dev/fedify/issues/118
1105
1161
 
1106
1162
 
1163
+ Version 1.1.22
1164
+ --------------
1165
+
1166
+ Released on May 16, 2025.
1167
+
1168
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
1169
+ caused a `500 Internal Server Error` when the received activity had
1170
+ an invalid JSON-LD syntax. Now it logs the error and responds with
1171
+ a `400 Bad Request` error instead. [[#232]]
1172
+
1173
+ - The `exportJwk()` function now populates the `alg` property of a returned
1174
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
1175
+
1176
+
1107
1177
  Version 1.1.21
1108
1178
  --------------
1109
1179
 
@@ -1533,6 +1603,22 @@ Released on October 20, 2024.
1533
1603
  [#150]: https://github.com/fedify-dev/fedify/issues/150
1534
1604
 
1535
1605
 
1606
+ Version 1.0.25
1607
+ --------------
1608
+
1609
+ Released on May 16, 2025.
1610
+
1611
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
1612
+ caused a `500 Internal Server Error` when the received activity had
1613
+ an invalid JSON-LD syntax. Now it logs the error and responds with
1614
+ a `400 Bad Request` error instead. [[#232]]
1615
+
1616
+ - The `exportJwk()` function now populates the `alg` property of a returned
1617
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
1618
+
1619
+ [#232]: https://github.com/fedify-dev/fedify/issues/232
1620
+
1621
+
1536
1622
  Version 1.0.24
1537
1623
  --------------
1538
1624
 
package/README.md CHANGED
@@ -101,14 +101,15 @@ financial contributors:[^2]
101
101
  - [Daniel Supernault](https://pixelfed.org/)
102
102
  - [tkgka](https://opencollective.com/tkgka)
103
103
  - [Blaine](https://opencollective.com/blaine)
104
+ - [Erick González Aguilar](https://opencollective.com/erick-gonzalez-aguilar)
104
105
 
105
106
  ### Backers
106
107
 
107
- yamanoku, taye, Encyclia, okin, Andy Piper, box464, Evan Prodromou, Rafael Goulart, malte
108
+ Robin Riley, yamanoku, Encyclia, taye, okin, Andy Piper, box464, Evan Prodromou, Rafael Goulart, malte
108
109
 
109
110
  ### One-time donations
110
111
 
111
- Markus P, Nils Bergmann, Rameez
112
+ Robin Riley, Markus P, Nils Bergmann, Rameez
112
113
 
113
114
  <!-- /DO NOT EDIT -->
114
115
  <!-- cSpell: enable -->
package/SPONSORS.md CHANGED
@@ -21,16 +21,17 @@ Supporters
21
21
  - [Daniel Supernault](https://pixelfed.org/)
22
22
  - [tkgka](https://opencollective.com/tkgka)
23
23
  - [Blaine](https://opencollective.com/blaine)
24
+ - [Erick González Aguilar](https://opencollective.com/erick-gonzalez-aguilar)
24
25
 
25
26
  Backers
26
27
  -------
27
28
 
28
- yamanoku, taye, Encyclia, okin, Andy Piper, box464, Evan Prodromou, Rafael Goulart, malte
29
+ Robin Riley, yamanoku, Encyclia, taye, okin, Andy Piper, box464, Evan Prodromou, Rafael Goulart, malte
29
30
 
30
31
  One-time donations
31
32
  ------------------
32
33
 
33
- Markus P, Nils Bergmann, Rameez
34
+ Robin Riley, Markus P, Nils Bergmann, Rameez
34
35
 
35
36
  <!-- /DO NOT EDIT -->
36
37
  <!-- cSpell: enable -->
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "@fedify/fedify",
3
- "version": "1.5.2",
3
+ "version": "1.5.3",
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,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.15/negotiation.js";
3
+ import { accepts } from "../deps/jsr.io/@std/http/1.0.16/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";
@@ -376,12 +376,25 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
376
376
  });
377
377
  }
378
378
  const keyCache = new KvKeyCache(kv, kvPrefixes.publicKey, ctx);
379
- const ldSigVerified = await verifyJsonLd(json, {
380
- contextLoader: ctx.contextLoader,
381
- documentLoader: ctx.documentLoader,
382
- keyCache,
383
- tracerProvider,
384
- });
379
+ let ldSigVerified;
380
+ try {
381
+ ldSigVerified = await verifyJsonLd(json, {
382
+ contextLoader: ctx.contextLoader,
383
+ documentLoader: ctx.documentLoader,
384
+ keyCache,
385
+ tracerProvider,
386
+ });
387
+ }
388
+ catch (error) {
389
+ if (error instanceof Error && error.name === "jsonld.SyntaxError") {
390
+ logger.error("Failed to parse JSON-LD:\n{error}", { recipient, error });
391
+ return new Response("Invalid JSON-LD.", {
392
+ status: 400,
393
+ headers: { "Content-Type": "text/plain; charset=utf-8" },
394
+ });
395
+ }
396
+ ldSigVerified = false;
397
+ }
385
398
  const jsonWithoutSig = detachSignature(json);
386
399
  let activity = null;
387
400
  if (ldSigVerified) {
@@ -1,5 +1,5 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
- import { concat } from "../deps/jsr.io/@std/bytes/1.0.5/concat.js";
2
+ import { concat } from "../deps/jsr.io/@std/bytes/1.0.6/concat.js";
3
3
  import { decodeBase64, encodeBase64 } from "../deps/jsr.io/@std/encoding/1.0.7/base64.js";
4
4
  import { decodeBase64Url } from "../deps/jsr.io/@std/encoding/1.0.7/base64url.js";
5
5
  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";
@@ -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";