@fedify/fedify 1.0.0-dev.400 → 1.0.0-dev.404
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGES.md +66 -0
- package/esm/federation/handler.js +27 -27
- package/esm/federation/middleware.js +347 -134
- package/esm/webfinger/handler.js +12 -12
- package/package.json +1 -1
- package/types/federation/callback.d.ts +32 -15
- package/types/federation/callback.d.ts.map +1 -1
- package/types/federation/context.d.ts +96 -57
- package/types/federation/context.d.ts.map +1 -1
- package/types/federation/federation.d.ts +33 -34
- package/types/federation/federation.d.ts.map +1 -1
- package/types/federation/handler.d.ts +6 -6
- package/types/federation/handler.d.ts.map +1 -1
- package/types/federation/middleware.d.ts +39 -23
- package/types/federation/middleware.d.ts.map +1 -1
- package/types/federation/queue.d.ts +1 -1
- package/types/federation/queue.d.ts.map +1 -1
- package/types/webfinger/handler.d.ts +1 -1
package/esm/webfinger/handler.js
CHANGED
@@ -4,7 +4,7 @@ import { Link as LinkObject } from "../vocab/mod.js";
|
|
4
4
|
const logger = getLogger(["fedify", "webfinger", "server"]);
|
5
5
|
/**
|
6
6
|
* Handles a WebFinger request. You would not typically call this function
|
7
|
-
* directly, but instead use {@link Federation.
|
7
|
+
* directly, but instead use {@link Federation.fetch} method.
|
8
8
|
* @param request The WebFinger request to handle.
|
9
9
|
* @param parameters The parameters for handling the request.
|
10
10
|
* @returns The response to the request.
|
@@ -30,7 +30,7 @@ export async function handleWebFinger(request, { context, actorDispatcher, actor
|
|
30
30
|
logger.error("Actor dispatcher is not set.");
|
31
31
|
return await onNotFound(request);
|
32
32
|
}
|
33
|
-
let
|
33
|
+
let identifier;
|
34
34
|
const uriParsed = context.parseUri(resourceUrl);
|
35
35
|
if (uriParsed?.type != "actor") {
|
36
36
|
const match = /^acct:([^@]+)@([^@]+)$/.exec(resource);
|
@@ -40,12 +40,12 @@ export async function handleWebFinger(request, { context, actorDispatcher, actor
|
|
40
40
|
const username = match[1];
|
41
41
|
if (actorHandleMapper == null) {
|
42
42
|
logger.error("No actor handle mapper is set; use the WebFinger username {username}" +
|
43
|
-
" as the actor's internal
|
44
|
-
|
43
|
+
" as the actor's internal identifier.", { username });
|
44
|
+
identifier = username;
|
45
45
|
}
|
46
46
|
else {
|
47
|
-
|
48
|
-
if (
|
47
|
+
identifier = await actorHandleMapper(context, username);
|
48
|
+
if (identifier == null) {
|
49
49
|
logger.error("Actor {username} not found.", { username });
|
50
50
|
return await onNotFound(request);
|
51
51
|
}
|
@@ -53,17 +53,17 @@ export async function handleWebFinger(request, { context, actorDispatcher, actor
|
|
53
53
|
resourceUrl = new URL(`acct:${username}@${context.url.host}`);
|
54
54
|
}
|
55
55
|
else {
|
56
|
-
|
56
|
+
identifier = uriParsed.identifier;
|
57
57
|
}
|
58
|
-
const actor = await actorDispatcher(context,
|
58
|
+
const actor = await actorDispatcher(context, identifier);
|
59
59
|
if (actor == null) {
|
60
|
-
logger.error("Actor {
|
60
|
+
logger.error("Actor {identifier} not found.", { identifier });
|
61
61
|
return await onNotFound(request);
|
62
62
|
}
|
63
63
|
const links = [
|
64
64
|
{
|
65
65
|
rel: "self",
|
66
|
-
href: context.getActorUri(
|
66
|
+
href: context.getActorUri(identifier).href,
|
67
67
|
type: "application/activity+json",
|
68
68
|
},
|
69
69
|
];
|
@@ -95,11 +95,11 @@ export async function handleWebFinger(request, { context, actorDispatcher, actor
|
|
95
95
|
}
|
96
96
|
const jrd = {
|
97
97
|
subject: resourceUrl.href,
|
98
|
-
aliases: resourceUrl.href === context.getActorUri(
|
98
|
+
aliases: resourceUrl.href === context.getActorUri(identifier).href
|
99
99
|
? (actor.preferredUsername == null
|
100
100
|
? []
|
101
101
|
: [`acct:${actor.preferredUsername}@${context.url.host}`])
|
102
|
-
: [context.getActorUri(
|
102
|
+
: [context.getActorUri(identifier).href],
|
103
103
|
links,
|
104
104
|
};
|
105
105
|
return new Response(JSON.stringify(jrd), {
|
package/package.json
CHANGED
@@ -17,25 +17,27 @@ export type NodeInfoDispatcher<TContextData> = (context: RequestContext<TContext
|
|
17
17
|
*
|
18
18
|
* @typeParam TContextData The context data to pass to the {@link Context}.
|
19
19
|
* @param context The request context.
|
20
|
-
* @param
|
20
|
+
* @param identifier The actor's internal identifier or username.
|
21
21
|
*/
|
22
|
-
export type ActorDispatcher<TContextData> = (context: RequestContext<TContextData>,
|
22
|
+
export type ActorDispatcher<TContextData> = (context: RequestContext<TContextData>, identifier: string) => Actor | null | Promise<Actor | null>;
|
23
23
|
/**
|
24
24
|
* A callback that dispatches key pairs for an actor.
|
25
25
|
*
|
26
26
|
* @typeParam TContextData The context data to pass to the {@link Context}.
|
27
27
|
* @param context The context.
|
28
|
-
* @param
|
28
|
+
* @param identifier The actor's internal identifier or username.
|
29
29
|
* @returns The key pairs.
|
30
30
|
* @since 0.10.0
|
31
31
|
*/
|
32
|
-
export type ActorKeyPairsDispatcher<TContextData> = (context: Context<TContextData>,
|
32
|
+
export type ActorKeyPairsDispatcher<TContextData> = (context: Context<TContextData>, identifier: string) => dntShim.CryptoKeyPair[] | Promise<dntShim.CryptoKeyPair[]>;
|
33
33
|
/**
|
34
34
|
* A callback that maps a WebFinger username to the corresponding actor's
|
35
|
-
* internal
|
35
|
+
* internal identifier, or `null` if the username is not found.
|
36
36
|
* @typeParam TContextData The context data to pass to the {@link Context}.
|
37
37
|
* @param context The context.
|
38
38
|
* @param username The WebFinger username.
|
39
|
+
* @returns The actor's internal identifier, or `null` if the username is not
|
40
|
+
* found.
|
39
41
|
* @since 0.15.0
|
40
42
|
*/
|
41
43
|
export type ActorHandleMapper<TContextData> = (context: Context<TContextData>, username: string) => string | null | Promise<string | null>;
|
@@ -57,18 +59,23 @@ export type ObjectDispatcher<TContextData, TObject extends Object, TParam extend
|
|
57
59
|
* @typeParam TContextData The context data to pass to the `TContext`.
|
58
60
|
* @typeParam TFilter The type of the filter, if any.
|
59
61
|
* @param context The context.
|
60
|
-
* @param
|
62
|
+
* @param identifier The internal identifier or the username of the collection
|
63
|
+
* owner.
|
61
64
|
* @param cursor The cursor to start the collection from, or `null` to dispatch
|
62
65
|
* the entire collection without pagination.
|
63
66
|
* @param filter The filter to apply to the collection, if any.
|
64
67
|
*/
|
65
|
-
export type CollectionDispatcher<TItem, TContext extends Context<TContextData>, TContextData, TFilter> = (context: TContext,
|
68
|
+
export type CollectionDispatcher<TItem, TContext extends Context<TContextData>, TContextData, TFilter> = (context: TContext, identifier: string, cursor: string | null, filter?: TFilter) => PageItems<TItem> | null | Promise<PageItems<TItem> | null>;
|
66
69
|
/**
|
67
70
|
* A callback that counts the number of items in a collection.
|
68
71
|
*
|
69
72
|
* @typeParam TContextData The context data to pass to the {@link Context}.
|
73
|
+
* @param context The context.
|
74
|
+
* @param identifier The internal identifier or the username of the collection
|
75
|
+
* owner.
|
76
|
+
* @param filter The filter to apply to the collection, if any.
|
70
77
|
*/
|
71
|
-
export type CollectionCounter<TContextData, TFilter> = (context: RequestContext<TContextData>,
|
78
|
+
export type CollectionCounter<TContextData, TFilter> = (context: RequestContext<TContextData>, identifier: string, filter?: TFilter) => number | bigint | null | Promise<number | bigint | null>;
|
72
79
|
/**
|
73
80
|
* A callback that returns a cursor for a collection.
|
74
81
|
*
|
@@ -77,10 +84,11 @@ export type CollectionCounter<TContextData, TFilter> = (context: RequestContext<
|
|
77
84
|
* @typeParam TContextData The context data to pass to the {@link Context}.
|
78
85
|
* @typeParam TFilter The type of the filter, if any.
|
79
86
|
* @param context The context.
|
80
|
-
* @param
|
87
|
+
* @param identifier The internal identifier or the username of the collection
|
88
|
+
* owner.
|
81
89
|
* @param filter The filter to apply to the collection, if any.
|
82
90
|
*/
|
83
|
-
export type CollectionCursor<TContext extends Context<TContextData>, TContextData, TFilter> = (context: TContext,
|
91
|
+
export type CollectionCursor<TContext extends Context<TContextData>, TContextData, TFilter> = (context: TContext, identifier: string, filter?: TFilter) => string | null | Promise<string | null>;
|
84
92
|
/**
|
85
93
|
* A callback that listens for activities in an inbox.
|
86
94
|
*
|
@@ -103,14 +111,23 @@ export type InboxErrorHandler<TContextData> = (context: Context<TContextData>, e
|
|
103
111
|
*
|
104
112
|
* @typeParam TContextData The context data to pass to the {@link Context}.
|
105
113
|
* @param context The context.
|
106
|
-
* @returns The
|
107
|
-
* document loader of the {@link Context} passed
|
108
|
-
* listener. If `null` is returned, the request is
|
114
|
+
* @returns The username or the internal identifier of the actor or the key pair
|
115
|
+
* for the authenticated document loader of the {@link Context} passed
|
116
|
+
* to the shared inbox listener. If `null` is returned, the request is
|
117
|
+
* not authorized.
|
109
118
|
* @since 0.11.0
|
110
119
|
*/
|
111
120
|
export type SharedInboxKeyDispatcher<TContextData> = (context: Context<TContextData>) => SenderKeyPair | {
|
121
|
+
identifier: string;
|
122
|
+
} | {
|
123
|
+
username: string;
|
124
|
+
} | {
|
112
125
|
handle: string;
|
113
126
|
} | null | Promise<SenderKeyPair | {
|
127
|
+
identifier: string;
|
128
|
+
} | {
|
129
|
+
username: string;
|
130
|
+
} | {
|
114
131
|
handle: string;
|
115
132
|
} | null>;
|
116
133
|
/**
|
@@ -127,7 +144,7 @@ export type OutboxErrorHandler = (error: Error, activity: Activity | null) => vo
|
|
127
144
|
*
|
128
145
|
* @typeParam TContextData The context data to pass to the {@link Context}.
|
129
146
|
* @param context The request context.
|
130
|
-
* @param
|
147
|
+
* @param identifier The internal identifier of the actor that is being requested.
|
131
148
|
* @param signedKey The key that was used to sign the request, or `null` if
|
132
149
|
* the request was not signed or the signature was invalid.
|
133
150
|
* @param signedKeyOwner The actor that owns the key that was used to sign the
|
@@ -137,7 +154,7 @@ export type OutboxErrorHandler = (error: Error, activity: Activity | null) => vo
|
|
137
154
|
* @returns `true` if the request is authorized, `false` otherwise.
|
138
155
|
* @since 0.7.0
|
139
156
|
*/
|
140
|
-
export type AuthorizePredicate<TContextData> = (context: RequestContext<TContextData>,
|
157
|
+
export type AuthorizePredicate<TContextData> = (context: RequestContext<TContextData>, identifier: string, signedKey: CryptographicKey | null, signedKeyOwner: Actor | null) => boolean | Promise<boolean>;
|
141
158
|
/**
|
142
159
|
* A callback that determines if a request is authorized or not.
|
143
160
|
*
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../src/federation/callback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,YAAY,IAAI,CAC7C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,KAClC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,CAAC,YAAY,IAAI,CAC1C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,
|
1
|
+
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../src/federation/callback.ts"],"names":[],"mappings":"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"}
|
@@ -49,12 +49,12 @@ export interface Context<TContextData> {
|
|
49
49
|
*/
|
50
50
|
getNodeInfoUri(): URL;
|
51
51
|
/**
|
52
|
-
* Builds the URI of an actor with the given
|
53
|
-
* @param
|
52
|
+
* Builds the URI of an actor with the given identifier.
|
53
|
+
* @param identifier The actor's identifier.
|
54
54
|
* @returns The actor's URI.
|
55
55
|
* @throws {RouterError} If no actor dispatcher is available.
|
56
56
|
*/
|
57
|
-
getActorUri(
|
57
|
+
getActorUri(identifier: string): URL;
|
58
58
|
/**
|
59
59
|
* Builds the URI of an object with the given class and values.
|
60
60
|
* @param cls The class of the object.
|
@@ -68,12 +68,12 @@ export interface Context<TContextData> {
|
|
68
68
|
typeId: URL;
|
69
69
|
}, values: Record<string, string>): URL;
|
70
70
|
/**
|
71
|
-
* Builds the URI of an actor's outbox with the given
|
72
|
-
* @param
|
71
|
+
* Builds the URI of an actor's outbox with the given identifier.
|
72
|
+
* @param identifier The actor's identifier.
|
73
73
|
* @returns The actor's outbox URI.
|
74
74
|
* @throws {RouterError} If no outbox dispatcher is available.
|
75
75
|
*/
|
76
|
-
getOutboxUri(
|
76
|
+
getOutboxUri(identifier: string): URL;
|
77
77
|
/**
|
78
78
|
* Builds the URI of the shared inbox.
|
79
79
|
* @returns The shared inbox URI.
|
@@ -81,51 +81,53 @@ export interface Context<TContextData> {
|
|
81
81
|
*/
|
82
82
|
getInboxUri(): URL;
|
83
83
|
/**
|
84
|
-
* Builds the URI of an actor's inbox with the given
|
85
|
-
* @param
|
84
|
+
* Builds the URI of an actor's inbox with the given identifier.
|
85
|
+
* @param identifier The actor's identifier.
|
86
86
|
* @returns The actor's inbox URI.
|
87
87
|
* @throws {RouterError} If no inbox listener is available.
|
88
88
|
*/
|
89
|
-
getInboxUri(
|
89
|
+
getInboxUri(identifier: string): URL;
|
90
90
|
/**
|
91
|
-
* Builds the URI of an actor's following collection with the given
|
92
|
-
*
|
91
|
+
* Builds the URI of an actor's following collection with the given
|
92
|
+
* identifier.
|
93
|
+
* @param identifier The actor's identifier.
|
93
94
|
* @returns The actor's following collection URI.
|
94
95
|
* @throws {RouterError} If no following collection is available.
|
95
96
|
*/
|
96
|
-
getFollowingUri(
|
97
|
+
getFollowingUri(identifier: string): URL;
|
97
98
|
/**
|
98
|
-
* Builds the URI of an actor's followers collection with the given
|
99
|
-
*
|
99
|
+
* Builds the URI of an actor's followers collection with the given
|
100
|
+
* identifier.
|
101
|
+
* @param identifier The actor's identifier.
|
100
102
|
* @returns The actor's followers collection URI.
|
101
103
|
* @throws {RouterError} If no followers collection is available.
|
102
104
|
*/
|
103
|
-
getFollowersUri(
|
105
|
+
getFollowersUri(identifier: string): URL;
|
104
106
|
/**
|
105
|
-
* Builds the URI of an actor's liked collection with the given
|
106
|
-
* @param
|
107
|
+
* Builds the URI of an actor's liked collection with the given identifier.
|
108
|
+
* @param identifier The actor's identifier.
|
107
109
|
* @returns The actor's liked collection URI.
|
108
110
|
* @throws {RouterError} If no liked collection is available.
|
109
111
|
* @since 0.11.0
|
110
112
|
*/
|
111
|
-
getLikedUri(
|
113
|
+
getLikedUri(identifier: string): URL;
|
112
114
|
/**
|
113
|
-
* Builds the URI of an actor's featured collection with the given
|
114
|
-
* @param
|
115
|
+
* Builds the URI of an actor's featured collection with the given identifier.
|
116
|
+
* @param identifier The actor's identifier.
|
115
117
|
* @returns The actor's featured collection URI.
|
116
118
|
* @throws {RouterError} If no featured collection is available.
|
117
119
|
* @since 0.11.0
|
118
120
|
*/
|
119
|
-
getFeaturedUri(
|
121
|
+
getFeaturedUri(identifier: string): URL;
|
120
122
|
/**
|
121
123
|
* Builds the URI of an actor's featured tags collection with the given
|
122
|
-
*
|
123
|
-
* @param
|
124
|
+
* identifier.
|
125
|
+
* @param identifier The actor's identifier.
|
124
126
|
* @returns The actor's featured tags collection URI.
|
125
127
|
* @throws {RouterError} If no featured tags collection is available.
|
126
128
|
* @since 0.11.0
|
127
129
|
*/
|
128
|
-
getFeaturedTagsUri(
|
130
|
+
getFeaturedTagsUri(identifier: string): URL;
|
129
131
|
/**
|
130
132
|
* Determines the type of the URI and extracts the associated data.
|
131
133
|
* @param uri The URI to parse.
|
@@ -136,23 +138,27 @@ export interface Context<TContextData> {
|
|
136
138
|
parseUri(uri: URL | null): ParseUriResult | null;
|
137
139
|
/**
|
138
140
|
* Gets the key pairs for an actor.
|
139
|
-
* @param
|
141
|
+
* @param identifier The actor's identifier.
|
140
142
|
* @returns An async iterable of the actor's key pairs. It can be empty.
|
141
143
|
* @since 0.10.0
|
142
144
|
*/
|
143
|
-
getActorKeyPairs(
|
145
|
+
getActorKeyPairs(identifier: string): Promise<ActorKeyPair[]>;
|
144
146
|
/**
|
145
147
|
* Gets an authenticated {@link DocumentLoader} for the given identity.
|
146
148
|
* Note that an authenticated document loader intentionally does not cache
|
147
149
|
* the fetched documents.
|
148
150
|
* @param identity The identity to get the document loader for.
|
149
|
-
* The actor's
|
151
|
+
* The actor's identifier or username.
|
150
152
|
* @returns The authenticated document loader.
|
151
153
|
* @throws {Error} If the identity is not valid.
|
152
154
|
* @throws {TypeError} If the key is invalid or unsupported.
|
153
155
|
* @since 0.4.0
|
154
156
|
*/
|
155
157
|
getDocumentLoader(identity: {
|
158
|
+
identifier: string;
|
159
|
+
} | {
|
160
|
+
username: string;
|
161
|
+
} | {
|
156
162
|
handle: string;
|
157
163
|
}): Promise<DocumentLoader>;
|
158
164
|
/**
|
@@ -209,17 +215,22 @@ export interface Context<TContextData> {
|
|
209
215
|
lookupObject(identifier: string | URL, options?: LookupObjectOptions): Promise<Object | null>;
|
210
216
|
/**
|
211
217
|
* Sends an activity to recipients' inboxes.
|
212
|
-
* @param sender The sender's
|
218
|
+
* @param sender The sender's identifier or the sender's username or
|
219
|
+
* the sender's key pair(s).
|
213
220
|
* @param recipients The recipients of the activity.
|
214
221
|
* @param activity The activity to send.
|
215
222
|
* @param options Options for sending the activity.
|
216
223
|
*/
|
217
224
|
sendActivity(sender: SenderKeyPair | SenderKeyPair[] | {
|
218
|
-
|
225
|
+
identifier: string;
|
226
|
+
} | {
|
227
|
+
username: string;
|
228
|
+
} | {
|
229
|
+
identifier: string;
|
219
230
|
}, recipients: Recipient | Recipient[], activity: Activity, options?: SendActivityOptions): Promise<void>;
|
220
231
|
/**
|
221
232
|
* Sends an activity to the outboxes of the sender's followers.
|
222
|
-
* @param sender The sender's
|
233
|
+
* @param sender The sender's identifier or the sender's username.
|
223
234
|
* @param recipients In this case, it must be `"followers"`.
|
224
235
|
* @param activity The activity to send.
|
225
236
|
* @param options Options for sending the activity.
|
@@ -227,6 +238,10 @@ export interface Context<TContextData> {
|
|
227
238
|
* @since 0.14.0
|
228
239
|
*/
|
229
240
|
sendActivity(sender: {
|
241
|
+
identifier: string;
|
242
|
+
} | {
|
243
|
+
username: string;
|
244
|
+
} | {
|
230
245
|
handle: string;
|
231
246
|
}, recipients: "followers", activity: Activity, options?: SendActivityOptions): Promise<void>;
|
232
247
|
}
|
@@ -243,13 +258,13 @@ export interface RequestContext<TContextData> extends Context<TContextData> {
|
|
243
258
|
*/
|
244
259
|
readonly url: URL;
|
245
260
|
/**
|
246
|
-
* Gets an {@link Actor} object for the given
|
247
|
-
* @param
|
261
|
+
* Gets an {@link Actor} object for the given identifier.
|
262
|
+
* @param identifier The actor's identifier.
|
248
263
|
* @returns The actor object, or `null` if the actor is not found.
|
249
264
|
* @throws {Error} If no actor dispatcher is available.
|
250
265
|
* @since 0.7.0
|
251
266
|
*/
|
252
|
-
getActor(
|
267
|
+
getActor(identifier: string): Promise<Actor | null>;
|
253
268
|
/**
|
254
269
|
* Gets an object of the given class with the given values.
|
255
270
|
* @param cls The class to instantiate.
|
@@ -303,12 +318,17 @@ export interface InboxContext<TContextData> extends Context<TContextData> {
|
|
303
318
|
* Integrity Proofs will not be added. Therefore, if the activity is not
|
304
319
|
* signed (i.e., it has neither Linked Data Signatures nor Object Integrity
|
305
320
|
* Proofs), the recipient probably will not trust the activity.
|
306
|
-
* @param forwarder The forwarder's
|
321
|
+
* @param forwarder The forwarder's identifier or the forwarder's username
|
322
|
+
* or the forwarder's key pair(s).
|
307
323
|
* @param recipients The recipients of the activity.
|
308
324
|
* @param options Options for forwarding the activity.
|
309
325
|
* @since 1.0.0
|
310
326
|
*/
|
311
327
|
forwardActivity(forwarder: SenderKeyPair | SenderKeyPair[] | {
|
328
|
+
identifier: string;
|
329
|
+
} | {
|
330
|
+
username: string;
|
331
|
+
} | {
|
312
332
|
handle: string;
|
313
333
|
}, recipients: Recipient | Recipient[], options?: ForwardActivityOptions): Promise<void>;
|
314
334
|
/**
|
@@ -318,12 +338,16 @@ export interface InboxContext<TContextData> extends Context<TContextData> {
|
|
318
338
|
* Integrity Proofs will not be added. Therefore, if the activity is not
|
319
339
|
* signed (i.e., it has neither Linked Data Signatures nor Object Integrity
|
320
340
|
* Proofs), the recipient probably will not trust the activity.
|
321
|
-
* @param forwarder The forwarder's
|
341
|
+
* @param forwarder The forwarder's identifier or the forwarder's username.
|
322
342
|
* @param recipients In this case, it must be `"followers"`.
|
323
343
|
* @param options Options for forwarding the activity.
|
324
344
|
* @since 1.0.0
|
325
345
|
*/
|
326
346
|
forwardActivity(forwarder: {
|
347
|
+
identifier: string;
|
348
|
+
} | {
|
349
|
+
username: string;
|
350
|
+
} | {
|
327
351
|
handle: string;
|
328
352
|
}, recipients: "followers", options?: ForwardActivityOptions): Promise<void>;
|
329
353
|
}
|
@@ -335,72 +359,87 @@ export type ParseUriResult =
|
|
335
359
|
* The case of an actor URI.
|
336
360
|
*/
|
337
361
|
{
|
338
|
-
type: "actor";
|
339
|
-
|
362
|
+
readonly type: "actor";
|
363
|
+
readonly identifier: string;
|
364
|
+
readonly handle: string;
|
340
365
|
}
|
341
366
|
/**
|
342
367
|
* The case of an object URI.
|
343
368
|
*/
|
344
369
|
| {
|
345
|
-
type: "object";
|
346
|
-
class: (new (...args: any[]) => Object) & {
|
370
|
+
readonly type: "object";
|
371
|
+
readonly class: (new (...args: any[]) => Object) & {
|
347
372
|
typeId: URL;
|
348
373
|
};
|
349
|
-
typeId: URL;
|
350
|
-
values: Record<string, string>;
|
374
|
+
readonly typeId: URL;
|
375
|
+
readonly values: Record<string, string>;
|
376
|
+
}
|
377
|
+
/**
|
378
|
+
* The case of an shared inbox URI.
|
379
|
+
*/
|
380
|
+
| {
|
381
|
+
readonly type: "inbox";
|
382
|
+
readonly identifier: undefined;
|
383
|
+
readonly handle: undefined;
|
351
384
|
}
|
352
385
|
/**
|
353
|
-
* The case of an inbox URI.
|
354
|
-
* it is a shared inbox.
|
386
|
+
* The case of an personal inbox URI.
|
355
387
|
*/
|
356
388
|
| {
|
357
|
-
type: "inbox";
|
358
|
-
|
389
|
+
readonly type: "inbox";
|
390
|
+
readonly identifier: string;
|
391
|
+
readonly handle: string;
|
359
392
|
}
|
360
393
|
/**
|
361
394
|
* The case of an outbox collection URI.
|
362
395
|
*/
|
363
396
|
| {
|
364
|
-
type: "outbox";
|
365
|
-
|
397
|
+
readonly type: "outbox";
|
398
|
+
readonly identifier: string;
|
399
|
+
readonly handle: string;
|
366
400
|
}
|
367
401
|
/**
|
368
402
|
* The case of a following collection URI.
|
369
403
|
*/
|
370
404
|
| {
|
371
|
-
type: "following";
|
372
|
-
|
405
|
+
readonly type: "following";
|
406
|
+
readonly identifier: string;
|
407
|
+
readonly handle: string;
|
373
408
|
}
|
374
409
|
/**
|
375
410
|
* The case of a followers collection URI.
|
376
411
|
*/
|
377
412
|
| {
|
378
|
-
type: "followers";
|
379
|
-
|
413
|
+
readonly type: "followers";
|
414
|
+
readonly identifier: string;
|
415
|
+
readonly handle: string;
|
380
416
|
}
|
381
417
|
/**
|
382
418
|
* The case of a liked collection URI.
|
383
419
|
* @since 0.11.0
|
384
420
|
*/
|
385
421
|
| {
|
386
|
-
type: "liked";
|
387
|
-
|
422
|
+
readonly type: "liked";
|
423
|
+
readonly identifier: string;
|
424
|
+
readonly handle: string;
|
388
425
|
}
|
389
426
|
/**
|
390
427
|
* The case of a featured collection URI.
|
391
428
|
* @since 0.11.0
|
392
429
|
*/
|
393
430
|
| {
|
394
|
-
type: "featured";
|
395
|
-
|
431
|
+
readonly type: "featured";
|
432
|
+
readonly identifier: string;
|
433
|
+
readonly handle: string;
|
396
434
|
}
|
397
435
|
/**
|
398
436
|
* The case of a featured tags collection URI.
|
399
437
|
* @since 0.11.0
|
400
438
|
*/
|
401
439
|
| {
|
402
|
-
type: "featuredTags";
|
403
|
-
|
440
|
+
readonly type: "featuredTags";
|
441
|
+
readonly identifier: string;
|
442
|
+
readonly handle: string;
|
404
443
|
};
|
405
444
|
/**
|
406
445
|
* Options for {@link Context.sendActivity} method.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/federation/context.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EACV,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACP,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,YAAY;IACnC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IAEvC;;;;;OAKG;IACH,cAAc,IAAI,GAAG,CAAC;IAEtB;;;;;OAKG;IACH,WAAW,CAAC,
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/federation/context.ts"],"names":[],"mappings":"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"}
|