@fedify/fedify 0.6.0-dev.110 → 0.6.0-dev.112
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of @fedify/fedify might be problematic. Click here for more details.
- package/CHANGES.md +8 -6
- package/README.md +2 -2
- package/esm/federation/middleware.js +19 -5
- package/package.json +1 -1
- package/types/federation/callback.d.ts +9 -0
- package/types/federation/callback.d.ts.map +1 -1
- package/types/federation/middleware.d.ts +13 -2
- package/types/federation/middleware.d.ts.map +1 -1
package/CHANGES.md
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
---
|
2
|
-
prev:
|
3
|
-
text: Contribute
|
4
|
-
link: ./contribute.md
|
5
|
-
next: false
|
6
|
-
---
|
7
1
|
<!-- deno-fmt-ignore-file -->
|
8
2
|
|
9
3
|
Fedify changelog
|
@@ -37,6 +31,14 @@ To be released.
|
|
37
31
|
- Added `federation()` function.
|
38
32
|
- Added `ContextDataFactory` type.
|
39
33
|
|
34
|
+
- `Context.sendActivity()` method now throws `TypeError` instead of silently
|
35
|
+
failing when the given `Activity` object lacks the actor property.
|
36
|
+
|
37
|
+
- Added outbox error handler to `Federation`.
|
38
|
+
|
39
|
+
- Added `onOutboxError` option to `new Federation()` constructor.
|
40
|
+
- Added `OutboxErrorHandler` type.
|
41
|
+
|
40
42
|
[Hono]: https://hono.dev/
|
41
43
|
[#25]: https://github.com/dahlia/fedify/issues/25
|
42
44
|
[#27]: https://github.com/dahlia/fedify/issues/27
|
package/README.md
CHANGED
@@ -51,7 +51,7 @@ join our [Matrix chat space][Matrix] or [GitHub Discussions].
|
|
51
51
|
[Mastodon], [Lemmy], [Pixelfed], [PeerTube], and so on.
|
52
52
|
|
53
53
|
[JSR]: https://jsr.io/@fedify/fedify
|
54
|
-
[JSR badge]: https://jsr.io/badges/@fedify/fedify?_v=0.5.
|
54
|
+
[JSR badge]: https://jsr.io/badges/@fedify/fedify?_v=0.5.1
|
55
55
|
[npm]: https://www.npmjs.com/package/@fedify/fedify
|
56
56
|
[npm badge]: https://img.shields.io/npm/v/@fedify/fedify?logo=npm
|
57
57
|
[GitHub Actions]: https://github.com/dahlia/fedify/actions/workflows/build.yaml
|
@@ -79,7 +79,7 @@ Installation
|
|
79
79
|
|
80
80
|
Fedify is available on [JSR] for [Deno] and on [npm] for [Node.js] and [Bun].
|
81
81
|
Although Fedify can be used in Node.js and Bun, it's primarily designed for
|
82
|
-
Deno. We recommend using Deno for the best experience, but you can use Node.js
|
82
|
+
Deno. We recommend using Deno for the best experience, but you can use Node.js
|
83
83
|
or Bun if you prefer.
|
84
84
|
|
85
85
|
> [!TIP]
|
@@ -30,12 +30,13 @@ export class Federation {
|
|
30
30
|
#documentLoader;
|
31
31
|
#authenticatedDocumentLoaderFactory;
|
32
32
|
#treatHttps;
|
33
|
+
#onOutboxError;
|
33
34
|
#backoffSchedule;
|
34
35
|
/**
|
35
36
|
* Create a new {@link Federation} instance.
|
36
37
|
* @param parameters Parameters for initializing the instance.
|
37
38
|
*/
|
38
|
-
constructor({ kv, kvPrefixes, queue, documentLoader, authenticatedDocumentLoaderFactory, treatHttps, backoffSchedule, }) {
|
39
|
+
constructor({ kv, kvPrefixes, queue, documentLoader, authenticatedDocumentLoaderFactory, treatHttps, onOutboxError, backoffSchedule, }) {
|
39
40
|
this.#kv = kv;
|
40
41
|
this.#kvPrefixes = {
|
41
42
|
...({
|
@@ -57,6 +58,7 @@ export class Federation {
|
|
57
58
|
this.#authenticatedDocumentLoaderFactory =
|
58
59
|
authenticatedDocumentLoaderFactory ??
|
59
60
|
getAuthenticatedDocumentLoader;
|
61
|
+
this.#onOutboxError = onOutboxError;
|
60
62
|
this.#treatHttps = treatHttps ?? false;
|
61
63
|
this.#backoffSchedule = backoffSchedule ?? [
|
62
64
|
3000,
|
@@ -68,18 +70,26 @@ export class Federation {
|
|
68
70
|
queue?.listen(this.#listenQueue.bind(this));
|
69
71
|
}
|
70
72
|
async #listenQueue(message) {
|
73
|
+
let activity = null;
|
71
74
|
try {
|
75
|
+
activity = await Activity.fromJsonLd(message.activity, {
|
76
|
+
documentLoader: this.#documentLoader,
|
77
|
+
});
|
72
78
|
await sendActivity({
|
73
79
|
keyId: new URL(message.keyId),
|
74
80
|
privateKey: await importJwk(message.privateKey, "private"),
|
75
|
-
activity
|
76
|
-
documentLoader: this.#documentLoader,
|
77
|
-
}),
|
81
|
+
activity,
|
78
82
|
inbox: new URL(message.inbox),
|
79
83
|
documentLoader: this.#documentLoader,
|
80
84
|
});
|
81
85
|
}
|
82
|
-
catch (
|
86
|
+
catch (e) {
|
87
|
+
try {
|
88
|
+
this.#onOutboxError?.(e, activity);
|
89
|
+
}
|
90
|
+
catch (_) {
|
91
|
+
// Ignore errors in the error handler.
|
92
|
+
}
|
83
93
|
if (message.trial < this.#backoffSchedule.length) {
|
84
94
|
this.#queue?.enqueue({
|
85
95
|
...message,
|
@@ -473,8 +483,12 @@ export class Federation {
|
|
473
483
|
* @param recipients The recipients of the activity.
|
474
484
|
* @param activity The activity to send.
|
475
485
|
* @param options Options for sending the activity.
|
486
|
+
* @throws {TypeError} If the activity to send does not have an actor.
|
476
487
|
*/
|
477
488
|
async sendActivity({ keyId, privateKey }, recipients, activity, { preferSharedInbox, immediate } = {}) {
|
489
|
+
if (activity.actorId == null) {
|
490
|
+
throw new TypeError("The activity to send must have at least one actor property.");
|
491
|
+
}
|
478
492
|
if (activity.id == null) {
|
479
493
|
activity = activity.clone({
|
480
494
|
id: new URL(`urn:uuid:${dntShim.crypto.randomUUID()}`),
|
package/package.json
CHANGED
@@ -53,4 +53,13 @@ export type InboxListener<TContextData, TActivity extends Activity> = (context:
|
|
53
53
|
* @typeParam TContextData The context data to pass to the {@link Context}.
|
54
54
|
*/
|
55
55
|
export type InboxErrorHandler<TContextData> = (context: RequestContext<TContextData>, error: Error) => void | Promise<void>;
|
56
|
+
/**
|
57
|
+
* A callback that handles errors during outbox processing.
|
58
|
+
*
|
59
|
+
* @param error The error that occurred.
|
60
|
+
* @param activity The activity that caused the error. If it is `null`, the
|
61
|
+
* error occurred during deserializing the activity.
|
62
|
+
* @since 0.6.0
|
63
|
+
*/
|
64
|
+
export type OutboxErrorHandler = (error: Error, activity: Activity | null) => void | Promise<void>;
|
56
65
|
//# sourceMappingURL=callback.d.ts.map
|
@@ -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,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,YAAY,IAAI,CAC7C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,KAClC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,YAAY,IAAI,CAC1C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,gBAAgB,GAAG,IAAI,KACzB,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,CAAC,YAAY,IAAI,CACjD,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,KAAK,EAAE,YAAY,IAAI,CACtD,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,IAAI,KAClB,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAEhE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,YAAY,IAAI,CAC5C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,KACX,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,CAAC,YAAY,IAAI,CAC3C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,KACX,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,MAAM,aAAa,CAAC,YAAY,EAAE,SAAS,SAAS,QAAQ,IAAI,CACpE,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,QAAQ,EAAE,SAAS,KAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,YAAY,IAAI,CAC5C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,KAAK,EAAE,KAAK,KACT,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
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,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,YAAY,IAAI,CAC7C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,KAClC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,YAAY,IAAI,CAC1C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,gBAAgB,GAAG,IAAI,KACzB,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,CAAC,YAAY,IAAI,CACjD,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,KAAK,EAAE,YAAY,IAAI,CACtD,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,IAAI,KAClB,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAEhE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,YAAY,IAAI,CAC5C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,KACX,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,CAAC,YAAY,IAAI,CAC3C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,KACX,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,MAAM,aAAa,CAAC,YAAY,EAAE,SAAS,SAAS,QAAQ,IAAI,CACpE,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,QAAQ,EAAE,SAAS,KAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,YAAY,IAAI,CAC5C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,KAAK,EAAE,KAAK,KACT,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,GAAG,IAAI,KACtB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
@@ -5,7 +5,7 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
5
5
|
import { type AuthenticatedDocumentLoaderFactory, type DocumentLoader } from "../runtime/docloader.js";
|
6
6
|
import type { Actor } from "../vocab/actor.js";
|
7
7
|
import { Activity } from "../vocab/mod.js";
|
8
|
-
import type { ActorDispatcher, ActorKeyPairDispatcher, CollectionCounter, CollectionCursor, CollectionDispatcher, InboxErrorHandler, InboxListener, NodeInfoDispatcher } from "./callback.js";
|
8
|
+
import type { ActorDispatcher, ActorKeyPairDispatcher, CollectionCounter, CollectionCursor, CollectionDispatcher, InboxErrorHandler, InboxListener, NodeInfoDispatcher, OutboxErrorHandler } from "./callback.js";
|
9
9
|
import type { Context, RequestContext, SendActivityOptions } from "./context.js";
|
10
10
|
import type { KvKey, KvStore } from "./kv.js";
|
11
11
|
import type { MessageQueue } from "./mq.js";
|
@@ -47,6 +47,16 @@ export interface FederationParameters {
|
|
47
47
|
* Turned off by default.
|
48
48
|
*/
|
49
49
|
treatHttps?: boolean;
|
50
|
+
/**
|
51
|
+
* A callback that handles errors during outbox processing. Note that this
|
52
|
+
* callback can be called multiple times for the same error, because failed
|
53
|
+
* deliveries are retried.
|
54
|
+
*
|
55
|
+
* If any errors are thrown in this callback, they are ignored.
|
56
|
+
*
|
57
|
+
* @since 0.6.0
|
58
|
+
*/
|
59
|
+
onOutboxError?: OutboxErrorHandler;
|
50
60
|
backoffSchedule?: Temporal.Duration[];
|
51
61
|
}
|
52
62
|
/**
|
@@ -77,7 +87,7 @@ export declare class Federation<TContextData> {
|
|
77
87
|
* Create a new {@link Federation} instance.
|
78
88
|
* @param parameters Parameters for initializing the instance.
|
79
89
|
*/
|
80
|
-
constructor({ kv, kvPrefixes, queue, documentLoader, authenticatedDocumentLoaderFactory, treatHttps, backoffSchedule, }: FederationParameters);
|
90
|
+
constructor({ kv, kvPrefixes, queue, documentLoader, authenticatedDocumentLoaderFactory, treatHttps, onOutboxError, backoffSchedule, }: FederationParameters);
|
81
91
|
/**
|
82
92
|
* Create a new context.
|
83
93
|
* @param baseUrl The base URL of the server. The `pathname` remains root,
|
@@ -216,6 +226,7 @@ export declare class Federation<TContextData> {
|
|
216
226
|
* @param recipients The recipients of the activity.
|
217
227
|
* @param activity The activity to send.
|
218
228
|
* @param options Options for sending the activity.
|
229
|
+
* @throws {TypeError} If the activity to send does not have an actor.
|
219
230
|
*/
|
220
231
|
sendActivity({ keyId, privateKey }: {
|
221
232
|
keyId: URL;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/federation/middleware.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EACL,KAAK,kCAAkC,EACvC,KAAK,cAAc,EAIpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAoB,MAAM,iBAAiB,CAAC;AAE7D,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAK5C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,EAAE,EAAE,OAAO,CAAC;IAEZ;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE3C;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IAErB;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;OAMG;IACH,kCAAkC,CAAC,EAAE,kCAAkC,CAAC;IAExE;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/federation/middleware.ts"],"names":[],"mappings":"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"}
|