@fedify/fedify 0.12.0-dev.273 → 0.12.0-dev.278
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 +25 -0
- package/FEDERATION.md +6 -0
- package/esm/federation/middleware.js +3 -1
- package/esm/federation/router.js +13 -4
- package/esm/vocab/move.yaml +13 -0
- package/esm/vocab/read.yaml +11 -0
- package/esm/vocab/tentativeaccept.yaml +12 -0
- package/esm/vocab/tentativereject.yaml +12 -0
- package/esm/vocab/travel.yaml +14 -0
- package/esm/vocab/view.yaml +11 -0
- package/esm/vocab/vocab.js +1033 -144
- package/package.json +1 -1
- package/types/federation/middleware.d.ts +7 -0
- package/types/federation/middleware.d.ts.map +1 -1
- package/types/federation/router.d.ts +12 -1
- package/types/federation/router.d.ts.map +1 -1
- package/types/vocab/vocab.d.ts +1095 -110
- package/types/vocab/vocab.d.ts.map +1 -1
package/CHANGES.md
CHANGED
@@ -38,8 +38,31 @@ To be released.
|
|
38
38
|
interface.
|
39
39
|
- Added `Federation.startQueue()` method.
|
40
40
|
|
41
|
+
- Made the router able to be insensitive to trailing slashes in the URL paths.
|
42
|
+
[[#81]]
|
43
|
+
|
44
|
+
- Added `trailingSlashInsensitive` option to `CreateFederationOptions`
|
45
|
+
interface.
|
46
|
+
- Added `RouterOptions` interface.
|
47
|
+
- Added an optional parameter to `new Router()` constructor.
|
48
|
+
|
41
49
|
- Added `ChatMessage` class to Activity Vocabulary API. [[#85]]
|
42
50
|
|
51
|
+
- Added `Move` class to Activity Vocabulary API. [[#65], [#92] by Lee Dogeon]
|
52
|
+
|
53
|
+
- Added `Read` class to Activity Vocabulary API. [[#65], [#92] by Lee Dogeon]
|
54
|
+
|
55
|
+
- Added `Travel` class to Activity Vocabulary API.
|
56
|
+
[[#65], [#92] by Lee Dogeon]
|
57
|
+
|
58
|
+
- Added `View` class to Activity Vocabulary API. [[#65], [#92] by Lee Dogeon]
|
59
|
+
|
60
|
+
- Added `TentativeAccept` class to Activity Vocabulary API.
|
61
|
+
[[#65], [#92] by Lee Dogeon]
|
62
|
+
|
63
|
+
- Added `TentativeReject` class to Activity Vocabulary API.
|
64
|
+
[[#65], [#92] by Lee Dogeon]
|
65
|
+
|
43
66
|
- Improved multitenancy (virtual hosting) support. [[#66]]
|
44
67
|
|
45
68
|
- Added `Context.hostname` property.
|
@@ -71,7 +94,9 @@ To be released.
|
|
71
94
|
[#53]: https://github.com/dahlia/fedify/issues/53
|
72
95
|
[#66]: https://github.com/dahlia/fedify/issues/66
|
73
96
|
[#70]: https://github.com/dahlia/fedify/issues/70
|
97
|
+
[#81]: https://github.com/dahlia/fedify/issues/81
|
74
98
|
[#85]: https://github.com/dahlia/fedify/issues/85
|
99
|
+
[#92]: https://github.com/dahlia/fedify/pull/92
|
75
100
|
|
76
101
|
|
77
102
|
Version 0.11.1
|
package/FEDERATION.md
CHANGED
@@ -61,9 +61,15 @@ lists the activity types that Fedify provides:
|
|
61
61
|
- [`Leave`](https://jsr.io/@fedify/fedify/doc/vocab/~/Leave)
|
62
62
|
- [`Like`](https://jsr.io/@fedify/fedify/doc/vocab/~/Like)
|
63
63
|
- [`Listen`](https://jsr.io/@fedify/fedify/doc/vocab/~/Listen)
|
64
|
+
- [`Move`](https://jsr.io/@fedify/fedify/doc/vocab/~/Move)
|
64
65
|
- [`Offer`](https://jsr.io/@fedify/fedify/doc/vocab/~/Offer)
|
65
66
|
- [`Question`](https://jsr.io/@fedify/fedify/doc/vocab/~/Question)
|
67
|
+
- [`Read`](https://jsr.io/@fedify/fedify/doc/vocab/~/Read)
|
66
68
|
- [`Reject`](https://jsr.io/@fedify/fedify/doc/vocab/~/Reject)
|
67
69
|
- [`Remove`](https://jsr.io/@fedify/fedify/doc/vocab/~/Remove)
|
70
|
+
- [`TentativeAccept`](https://jsr.io/@fedify/fedify/doc/vocab/~/TentativeAccept)
|
71
|
+
- [`TentativeReject`](https://jsr.io/@fedify/fedify/doc/vocab/~/TentativeReject)
|
72
|
+
- [`Travel`](https://jsr.io/@fedify/fedify/doc/vocab/~/Travel)
|
68
73
|
- [`Undo`](https://jsr.io/@fedify/fedify/doc/vocab/~/Undo)
|
69
74
|
- [`Update`](https://jsr.io/@fedify/fedify/doc/vocab/~/Update)
|
75
|
+
- [`View`](https://jsr.io/@fedify/fedify/doc/vocab/~/View)
|
@@ -89,7 +89,9 @@ export class Federation {
|
|
89
89
|
this.#queue = options.queue;
|
90
90
|
this.#queueStarted = false;
|
91
91
|
this.#manuallyStartQueue = options.manuallyStartQueue ?? false;
|
92
|
-
this.#router = new Router(
|
92
|
+
this.#router = new Router({
|
93
|
+
trailingSlashInsensitive: options.trailingSlashInsensitive,
|
94
|
+
});
|
93
95
|
this.#router.add("/.well-known/webfinger", "webfinger");
|
94
96
|
this.#router.add("/.well-known/nodeinfo", "nodeInfoJrd");
|
95
97
|
this.#objectCallbacks = {};
|
package/esm/federation/router.js
CHANGED
@@ -8,12 +8,15 @@ import { parseTemplate } from "url-template";
|
|
8
8
|
export class Router {
|
9
9
|
#router;
|
10
10
|
#templates;
|
11
|
+
#trailingSlashInsensitive;
|
11
12
|
/**
|
12
13
|
* Create a new {@link Router}.
|
14
|
+
* @param options Options for the router.
|
13
15
|
*/
|
14
|
-
constructor() {
|
16
|
+
constructor(options = {}) {
|
15
17
|
this.#router = new InnerRouter();
|
16
18
|
this.#templates = {};
|
19
|
+
this.#trailingSlashInsensitive = options.trailingSlashInsensitive ?? false;
|
17
20
|
}
|
18
21
|
/**
|
19
22
|
* Checks if a path name exists in the router.
|
@@ -44,9 +47,15 @@ export class Router {
|
|
44
47
|
* `null`.
|
45
48
|
*/
|
46
49
|
route(url) {
|
47
|
-
|
48
|
-
if (match == null)
|
49
|
-
|
50
|
+
let match = this.#router.resolveURI(url);
|
51
|
+
if (match == null) {
|
52
|
+
if (!this.#trailingSlashInsensitive)
|
53
|
+
return null;
|
54
|
+
url = url.endsWith("/") ? url.replace(/\/+$/, "") : `${url}/`;
|
55
|
+
match = this.#router.resolveURI(url);
|
56
|
+
if (match == null)
|
57
|
+
return null;
|
58
|
+
}
|
50
59
|
return {
|
51
60
|
name: match.matchValue,
|
52
61
|
values: match.params,
|
@@ -0,0 +1,13 @@
|
|
1
|
+
$schema: ../codegen/schema.yaml
|
2
|
+
name: Move
|
3
|
+
uri: "https://www.w3.org/ns/activitystreams#Move"
|
4
|
+
extends: "https://www.w3.org/ns/activitystreams#Activity"
|
5
|
+
entity: true
|
6
|
+
description: |
|
7
|
+
Indicates that the `actor` has moved `object` from `origin` to `target`.
|
8
|
+
If the `origin` or `target` are not specified,
|
9
|
+
either can be determined by context.
|
10
|
+
defaultContext:
|
11
|
+
- "https://www.w3.org/ns/activitystreams"
|
12
|
+
- "https://w3id.org/security/data-integrity/v1"
|
13
|
+
properties: []
|
@@ -0,0 +1,11 @@
|
|
1
|
+
$schema: ../codegen/schema.yaml
|
2
|
+
name: Read
|
3
|
+
uri: "https://www.w3.org/ns/activitystreams#Read"
|
4
|
+
extends: "https://www.w3.org/ns/activitystreams#Activity"
|
5
|
+
entity: true
|
6
|
+
description: |
|
7
|
+
Indicates that the `actor` has read the `object`.
|
8
|
+
defaultContext:
|
9
|
+
- "https://www.w3.org/ns/activitystreams"
|
10
|
+
- "https://w3id.org/security/data-integrity/v1"
|
11
|
+
properties: []
|
@@ -0,0 +1,12 @@
|
|
1
|
+
$schema: ../codegen/schema.yaml
|
2
|
+
name: TentativeAccept
|
3
|
+
uri: "https://www.w3.org/ns/activitystreams#TentativeAccept"
|
4
|
+
extends: "https://www.w3.org/ns/activitystreams#Accept"
|
5
|
+
entity: true
|
6
|
+
description: |
|
7
|
+
A specialization of {@link Accept} indicating that
|
8
|
+
the acceptance is tentative.
|
9
|
+
defaultContext:
|
10
|
+
- "https://www.w3.org/ns/activitystreams"
|
11
|
+
- "https://w3id.org/security/data-integrity/v1"
|
12
|
+
properties: []
|
@@ -0,0 +1,12 @@
|
|
1
|
+
$schema: ../codegen/schema.yaml
|
2
|
+
name: TentativeReject
|
3
|
+
uri: "https://www.w3.org/ns/activitystreams#TentativeReject"
|
4
|
+
extends: "https://www.w3.org/ns/activitystreams#Reject"
|
5
|
+
entity: true
|
6
|
+
description: |
|
7
|
+
A specialization of {@link Reject} in which
|
8
|
+
the rejection is considered tentative.
|
9
|
+
defaultContext:
|
10
|
+
- "https://www.w3.org/ns/activitystreams"
|
11
|
+
- "https://w3id.org/security/data-integrity/v1"
|
12
|
+
properties: []
|
@@ -0,0 +1,14 @@
|
|
1
|
+
$schema: ../codegen/schema.yaml
|
2
|
+
name: Travel
|
3
|
+
uri: "https://www.w3.org/ns/activitystreams#Travel"
|
4
|
+
extends: "https://www.w3.org/ns/activitystreams#IntransitiveActivity"
|
5
|
+
entity: true
|
6
|
+
description: |
|
7
|
+
Indicates that the `actor` is traveling to `target` from `origin`.
|
8
|
+
`Travel` is an `IntransitiveObject` whose `actor` specifies the direct object.
|
9
|
+
If the `target` or `origin` are not specified,
|
10
|
+
either can be determined by context.
|
11
|
+
defaultContext:
|
12
|
+
- "https://www.w3.org/ns/activitystreams"
|
13
|
+
- "https://w3id.org/security/data-integrity/v1"
|
14
|
+
properties: []
|
@@ -0,0 +1,11 @@
|
|
1
|
+
$schema: ../codegen/schema.yaml
|
2
|
+
name: View
|
3
|
+
uri: "https://www.w3.org/ns/activitystreams#View"
|
4
|
+
extends: "https://www.w3.org/ns/activitystreams#Activity"
|
5
|
+
entity: true
|
6
|
+
description: |
|
7
|
+
Indicates that the `actor` has viewed the object.
|
8
|
+
defaultContext:
|
9
|
+
- "https://www.w3.org/ns/activitystreams"
|
10
|
+
- "https://w3id.org/security/data-integrity/v1"
|
11
|
+
properties: []
|