@fedify/fedify 1.3.18 → 1.3.20
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.
- package/CHANGES.md +59 -0
- package/esm/deno.js +2 -2
- package/esm/federation/handler.js +15 -15
- package/esm/vocab/announce.yaml +3 -1
- package/esm/vocab/create.yaml +3 -1
- package/esm/vocab/delete.yaml +3 -1
- package/esm/vocab/question.yaml +75 -73
- package/esm/vocab/update.yaml +3 -1
- package/esm/vocab/vocab.js +193 -178
- package/package.json +1 -1
- package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/common.d.ts.map +1 -1
- package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/encoding.d.ts.map +1 -1
- package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/language.d.ts.map +1 -1
- package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/media_type.d.ts.map +1 -1
- package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/negotiation.d.ts.map +1 -1
- package/types/vocab/vocab.d.ts.map +1 -1
- /package/esm/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/common.js +0 -0
- /package/esm/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/encoding.js +0 -0
- /package/esm/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/language.js +0 -0
- /package/esm/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/media_type.js +0 -0
- /package/esm/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/negotiation.js +0 -0
- /package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/common.d.ts +0 -0
- /package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/encoding.d.ts +0 -0
- /package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/language.d.ts +0 -0
- /package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/media_type.d.ts +0 -0
- /package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/negotiation.d.ts +0 -0
package/CHANGES.md
CHANGED
|
@@ -3,6 +3,32 @@
|
|
|
3
3
|
Fedify changelog
|
|
4
4
|
================
|
|
5
5
|
|
|
6
|
+
Version 1.3.20
|
|
7
|
+
--------------
|
|
8
|
+
|
|
9
|
+
Released on August 8, 2025.
|
|
10
|
+
|
|
11
|
+
- Fixed a critical authentication bypass vulnerability in the inbox handler
|
|
12
|
+
that allowed unauthenticated attackers to impersonate any ActivityPub actor.
|
|
13
|
+
The vulnerability occurred because activities were processed before
|
|
14
|
+
verifying that the HTTP Signatures key belonged to the claimed actor.
|
|
15
|
+
Now authentication verification is performed before activity processing to
|
|
16
|
+
prevent actor impersonation attacks. [[CVE-2025-54888]]
|
|
17
|
+
|
|
18
|
+
[CVE-2025-54888]: https://github.com/fedify-dev/fedify/security/advisories/GHSA-6jcc-xgcr-q3h4
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
Version 1.3.19
|
|
22
|
+
--------------
|
|
23
|
+
|
|
24
|
+
Released on June 30, 2025.
|
|
25
|
+
|
|
26
|
+
- Fixed JSON-LD serialization of the `Question.voters` property to correctly
|
|
27
|
+
serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
|
|
28
|
+
typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
|
|
29
|
+
"@value":123}`).
|
|
30
|
+
|
|
31
|
+
|
|
6
32
|
Version 1.3.18
|
|
7
33
|
--------------
|
|
8
34
|
|
|
@@ -357,6 +383,17 @@ Released on November 30, 2024.
|
|
|
357
383
|
[#193]: https://github.com/fedify-dev/fedify/issues/193
|
|
358
384
|
|
|
359
385
|
|
|
386
|
+
Version 1.2.23
|
|
387
|
+
--------------
|
|
388
|
+
|
|
389
|
+
Released on June 30, 2025.
|
|
390
|
+
|
|
391
|
+
- Fixed JSON-LD serialization of the `Question.voters` property to correctly
|
|
392
|
+
serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
|
|
393
|
+
typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
|
|
394
|
+
"@value":123}`).
|
|
395
|
+
|
|
396
|
+
|
|
360
397
|
Version 1.2.22
|
|
361
398
|
--------------
|
|
362
399
|
|
|
@@ -759,6 +796,17 @@ Released on October 31, 2024.
|
|
|
759
796
|
[#118]: https://github.com/fedify-dev/fedify/issues/118
|
|
760
797
|
|
|
761
798
|
|
|
799
|
+
Version 1.1.23
|
|
800
|
+
--------------
|
|
801
|
+
|
|
802
|
+
Released on June 30, 2025.
|
|
803
|
+
|
|
804
|
+
- Fixed JSON-LD serialization of the `Question.voters` property to correctly
|
|
805
|
+
serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
|
|
806
|
+
typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
|
|
807
|
+
"@value":123}`).
|
|
808
|
+
|
|
809
|
+
|
|
762
810
|
Version 1.1.22
|
|
763
811
|
--------------
|
|
764
812
|
|
|
@@ -1202,6 +1250,17 @@ Released on October 20, 2024.
|
|
|
1202
1250
|
[#150]: https://github.com/fedify-dev/fedify/issues/150
|
|
1203
1251
|
|
|
1204
1252
|
|
|
1253
|
+
Version 1.0.26
|
|
1254
|
+
--------------
|
|
1255
|
+
|
|
1256
|
+
Released on June 30, 2025.
|
|
1257
|
+
|
|
1258
|
+
- Fixed JSON-LD serialization of the `Question.voters` property to correctly
|
|
1259
|
+
serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
|
|
1260
|
+
typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
|
|
1261
|
+
"@value":123}`).
|
|
1262
|
+
|
|
1263
|
+
|
|
1205
1264
|
Version 1.0.25
|
|
1206
1265
|
--------------
|
|
1207
1266
|
|
package/esm/deno.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
"name": "@fedify/fedify",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.20",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./mod.ts",
|
|
@@ -37,7 +37,7 @@ export default {
|
|
|
37
37
|
"@opentelemetry/semantic-conventions": "npm:@opentelemetry/semantic-conventions@^1.27.0",
|
|
38
38
|
"@phensley/language-tag": "npm:@phensley/language-tag@^1.9.0",
|
|
39
39
|
"@std/assert": "jsr:@std/assert@^0.226.0",
|
|
40
|
-
"@std/async": "jsr:@std/async
|
|
40
|
+
"@std/async": "jsr:@std/async@1.0.13",
|
|
41
41
|
"@std/bytes": "jsr:@std/bytes@^1.0.2",
|
|
42
42
|
"@std/collections": "jsr:@std/collections@^1.0.6",
|
|
43
43
|
"@std/encoding": "jsr:@std/encoding@1.0.7",
|
|
@@ -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.
|
|
3
|
+
import { accepts } from "../deps/jsr.io/@std/http/1.0.20/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";
|
|
@@ -418,20 +418,6 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
|
|
|
418
418
|
span.setAttribute("activitypub.activity.id", activity.id.href);
|
|
419
419
|
}
|
|
420
420
|
span.setAttribute("activitypub.activity.type", getTypeId(activity).href);
|
|
421
|
-
const routeResult = await routeActivity({
|
|
422
|
-
context: ctx,
|
|
423
|
-
json,
|
|
424
|
-
activity,
|
|
425
|
-
recipient,
|
|
426
|
-
inboxListeners,
|
|
427
|
-
inboxContextFactory,
|
|
428
|
-
inboxErrorHandler,
|
|
429
|
-
kv,
|
|
430
|
-
kvPrefixes,
|
|
431
|
-
queue,
|
|
432
|
-
span,
|
|
433
|
-
tracerProvider,
|
|
434
|
-
});
|
|
435
421
|
if (httpSigKey != null && !await doesActorOwnKey(activity, httpSigKey, ctx)) {
|
|
436
422
|
logger.error("The signer ({keyId}) and the actor ({actorId}) do not match.", {
|
|
437
423
|
activity: json,
|
|
@@ -449,6 +435,20 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
|
|
|
449
435
|
headers: { "Content-Type": "text/plain; charset=utf-8" },
|
|
450
436
|
});
|
|
451
437
|
}
|
|
438
|
+
const routeResult = await routeActivity({
|
|
439
|
+
context: ctx,
|
|
440
|
+
json,
|
|
441
|
+
activity,
|
|
442
|
+
recipient,
|
|
443
|
+
inboxListeners,
|
|
444
|
+
inboxContextFactory,
|
|
445
|
+
inboxErrorHandler,
|
|
446
|
+
kv,
|
|
447
|
+
kvPrefixes,
|
|
448
|
+
queue,
|
|
449
|
+
span,
|
|
450
|
+
tracerProvider,
|
|
451
|
+
});
|
|
452
452
|
if (routeResult === "alreadyProcessed") {
|
|
453
453
|
return new Response(`Activity <${activity.id}> has already been processed.`, {
|
|
454
454
|
status: 202,
|
package/esm/vocab/announce.yaml
CHANGED
|
@@ -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:
|
|
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"
|
package/esm/vocab/create.yaml
CHANGED
|
@@ -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:
|
|
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"
|
package/esm/vocab/delete.yaml
CHANGED
|
@@ -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:
|
|
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"
|
package/esm/vocab/question.yaml
CHANGED
|
@@ -14,85 +14,87 @@ description: |
|
|
|
14
14
|
used to express possible answers, but a Question object *must not* have both
|
|
15
15
|
properties.
|
|
16
16
|
defaultContext:
|
|
17
|
-
- "https://w3id.org/identity/v1"
|
|
18
|
-
- "https://www.w3.org/ns/activitystreams"
|
|
19
|
-
- "https://w3id.org/security/data-integrity/v1"
|
|
20
|
-
- toot: "http://joinmastodon.org/ns#"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
17
|
+
- "https://w3id.org/identity/v1"
|
|
18
|
+
- "https://www.w3.org/ns/activitystreams"
|
|
19
|
+
- "https://w3id.org/security/data-integrity/v1"
|
|
20
|
+
- toot: "http://joinmastodon.org/ns#"
|
|
21
|
+
misskey: "https://misskey-hub.net/ns#"
|
|
22
|
+
fedibird: "http://fedibird.com/ns#"
|
|
23
|
+
sensitive: "as:sensitive"
|
|
24
|
+
votersCount:
|
|
25
|
+
"@id": "toot:votersCount"
|
|
26
|
+
"@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
|
|
27
|
+
Emoji: "toot:Emoji"
|
|
28
|
+
Hashtag: "as:Hashtag"
|
|
29
|
+
quoteUrl: "as:quoteUrl"
|
|
30
|
+
_misskey_quote: "misskey:_misskey_quote"
|
|
31
|
+
quoteUri: "fedibird:quoteUri"
|
|
30
32
|
|
|
31
33
|
properties:
|
|
32
|
-
- pluralName: exclusiveOptions
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
34
|
+
- pluralName: exclusiveOptions
|
|
35
|
+
singularName: exclusiveOption
|
|
36
|
+
singularAccessor: false
|
|
37
|
+
compactName: oneOf
|
|
38
|
+
uri: "https://www.w3.org/ns/activitystreams#oneOf"
|
|
39
|
+
description: |
|
|
40
|
+
Identifies an exclusive option for a Question. Use of `exclusiveOptions`
|
|
41
|
+
implies that the Question can have only a single answer. To indicate that
|
|
42
|
+
a Question can have multiple answers, use `inclusiveOptions`.
|
|
43
|
+
range:
|
|
44
|
+
- "https://www.w3.org/ns/activitystreams#Object"
|
|
43
45
|
|
|
44
|
-
- pluralName: inclusiveOptions
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
- pluralName: inclusiveOptions
|
|
47
|
+
singularName: inclusiveOption
|
|
48
|
+
singularAccessor: false
|
|
49
|
+
compactName: anyOf
|
|
50
|
+
uri: "https://www.w3.org/ns/activitystreams#anyOf"
|
|
51
|
+
description: |
|
|
52
|
+
Identifies an inclusive option for a Question. Use of `inclusiveOptions`
|
|
53
|
+
implies that the Question can have multiple answers. To indicate that
|
|
54
|
+
a Question can have only one answer, use `exclusiveOptions`.
|
|
55
|
+
range:
|
|
56
|
+
- "https://www.w3.org/ns/activitystreams#Object"
|
|
55
57
|
|
|
56
|
-
- singularName: closed
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
58
|
+
- singularName: closed
|
|
59
|
+
functional: true
|
|
60
|
+
compactName: closed
|
|
61
|
+
uri: "https://www.w3.org/ns/activitystreams#closed"
|
|
62
|
+
description: |
|
|
63
|
+
Indicates that a question has been closed, and answers are no longer
|
|
64
|
+
accepted.
|
|
65
|
+
range:
|
|
66
|
+
- "http://www.w3.org/2001/XMLSchema#dateTime"
|
|
67
|
+
- "http://www.w3.org/2001/XMLSchema#boolean"
|
|
66
68
|
|
|
67
|
-
- singularName: voters
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
- singularName: voters
|
|
70
|
+
functional: true
|
|
71
|
+
compactName: votersCount
|
|
72
|
+
uri: "http://joinmastodon.org/ns#votersCount"
|
|
73
|
+
description: |
|
|
74
|
+
How many people have voted in the poll. Distinct from how many votes have
|
|
75
|
+
been cast (in the case of multiple-choice polls).
|
|
76
|
+
range:
|
|
77
|
+
- "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
|
|
76
78
|
|
|
77
|
-
- singularName: quoteUrl
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
79
|
+
- singularName: quoteUrl
|
|
80
|
+
functional: true
|
|
81
|
+
compactName: quoteUrl
|
|
82
|
+
uri: "https://www.w3.org/ns/activitystreams#quoteUrl"
|
|
83
|
+
redundantProperties:
|
|
84
|
+
- compactName: _misskey_quote
|
|
85
|
+
uri: "https://misskey-hub.net/ns#_misskey_quote"
|
|
86
|
+
- compactName: quoteUri
|
|
87
|
+
uri: "http://fedibird.com/ns#quoteUri"
|
|
88
|
+
description: |
|
|
89
|
+
The URI of the ActivityStreams object that this object quotes.
|
|
88
90
|
|
|
89
|
-
|
|
91
|
+
This property sets three JSON-LD properties at once under the hood:
|
|
90
92
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
93
|
+
1. https://www.w3.org/ns/activitystreams#quoteUrl
|
|
94
|
+
2. https://misskey-hub.net/ns#_misskey_quote
|
|
95
|
+
3. http://fedibird.com/ns#quoteUri
|
|
94
96
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
When a JSON-LD object is parsed, this property is filled with one of
|
|
98
|
+
the values of those three properties in order.
|
|
99
|
+
range:
|
|
100
|
+
- "fedify:url"
|
package/esm/vocab/update.yaml
CHANGED
|
@@ -37,7 +37,9 @@ defaultContext:
|
|
|
37
37
|
suspended: "toot:suspended"
|
|
38
38
|
memorial: "toot:memorial"
|
|
39
39
|
indexable: "toot:indexable"
|
|
40
|
-
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#"
|