From 56ee718f8246feb287f8fa0e89c3d3d76a1afadc Mon Sep 17 00:00:00 2001 From: Hong Minhee Date: Mon, 23 Dec 2024 20:08:54 +0900 Subject: [PATCH] Docs: One-shot recipients gathering --- docs/bun.lockb | Bin 226441 -> 259293 bytes docs/manual/collections.md | 132 ++++++++++++++++++++++++++++++++++++- docs/manual/send.md | 9 +++ docs/package.json | 36 +++++----- 4 files changed, 156 insertions(+), 21 deletions(-) diff --git a/docs/bun.lockb b/docs/bun.lockb index b3a8fc65b4012a33c10b5984ce27cac224c8db9a..93aea29cd83a97d303574a912381928d50dc69a1 100755 GIT binary patch delta 64225 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 delta 44376 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 J*{7Oq{1>2@#%llo diff --git a/docs/manual/collections.md b/docs/manual/collections.md index 2bae6ba0..974f2f30 100644 --- a/docs/manual/collections.md +++ b/docs/manual/collections.md @@ -826,9 +826,9 @@ interface GetFollowersByUserIdOptions { */ cursor?: string | null; /** - * The number of items per page. + * The number of items per page. If `null`, the entire collection is returned. */ - limit: number; + limit?: number | null; } /** * A hypothetical function that returns the actors that are following an actor. @@ -839,7 +839,7 @@ interface GetFollowersByUserIdOptions { */ async function getFollowersByUserId( userId: string, - options: GetFollowersByUserIdOptions, + options: GetFollowersByUserIdOptions = {}, ): Promise { return { users: [], nextCursor: null, last: true }; } @@ -874,6 +874,132 @@ federation > Every `Actor` object is also a `Recipient` object, so you can use the `Actor` > object as the `Recipient` object. +### One-shot followers collection for gathering recipients + +When you invoke `Context.sendActivity()` method with setting the `recipients` +parameter to `"followers"`, Fedify automatically gathers the recipients from +the followers collection. In this case, the followers collection dispatcher +is not called by remote servers, but it's called in the same process. +Therefore, you don't have much merit to paginate the followers collection, +but instead you would want to gather all the followers at once. + +Under the hood, the `Context.sendActivity()` method tries to gather the +recipients by calling the followers collection dispatcher with the `cursor` +parameter set to `null`. However, if the followers collection dispatcher +returns `null`, the method treats it as a signal that the followers collection +is always paginated, and it gather the recipients by paginating the followers +collection with multiple invocation of the followers collection dispatcher. +If the followers collection dispatcher returns an object that contains +the entire followers collection, the method gathers the recipients at once. + +Therefore, if you use `"followers"` as the `recipients` parameter of +the `Context.sendActivity()` method, you should return the entire followers +collection when the `cursor` parameter is `null`: + +~~~~ typescript{5-17} twoslash +import type { Federation, Recipient } from "@fedify/fedify"; +const federation = null as unknown as Federation; +/** + * A hypothetical type that represents an actor in the database. + */ +interface User { + /** + * The URI of the actor. + */ + uri: string; + /** + * The inbox URI of the actor. + */ + inboxUri: string; +} +/** + * A hypothetical type that represents the result set of the actors that + * are following an actor. + */ +interface ResultSet { + /** + * The actors that are following the actor. + */ + users: User[]; + /** + * The next cursor that represents the position of the next page. + */ + nextCursor: string | null; + /** + * Whether the current page is the last page. + */ + last: boolean; +} +/** + * A hypothetical type that represents the options for + * the `getFollowersByUserId` function. + */ +interface GetFollowersByUserIdOptions { + /** + * The cursor that represents the position of the current page. + */ + cursor?: string | null; + /** + * The number of items per page. If `null`, the entire collection is returned. + */ + limit?: number | null; +} +/** + * A hypothetical function that returns the actors that are following an actor. + * @param userId The actor's identifier. + * @param options The options for the query. + * @returns The actors that are following the actor, the next cursor, and + * whether the current page is the last page. + */ +async function getFollowersByUserId( + userId: string, + options: GetFollowersByUserIdOptions = {}, +): Promise { + return { users: [], nextCursor: null, last: true }; +} +// ---cut-before--- +federation + .setFollowersDispatcher( + "/users/{identifier}/followers", + async (ctx, identifier, cursor) => { + // If a whole collection is requested, returns the entire collection + // instead of paginating it, as we prefer one-shot gathering: + if (cursor == null) { + // Work with the database to find the actors that are following the actor + // (the below `getFollowersByUserId` is a hypothetical function): + const { users } = await getFollowersByUserId(identifier); + return { + items: users.map(actor => ({ + id: new URL(actor.uri), + inboxId: new URL(actor.inboxUri), + })), + }; + } + const { users, nextCursor, last } = await getFollowersByUserId( + identifier, + cursor === "" ? { limit: 10 } : { cursor, limit: 10 } + ); + // Turn the users into `Recipient` objects: + const items: Recipient[] = users.map(actor => ({ + id: new URL(actor.uri), + inboxId: new URL(actor.inboxUri), + })); + return { items, nextCursor: last ? null : nextCursor }; + } + ) + // The first cursor is an empty string: + .setFirstCursor(async (ctx, identifier) => ""); +~~~~ + +> [!CAUTION] +> The common pitfall is that the followers collection dispatcher returns +> the first page of the followers collection when the `cursor` parameter is +> `null`. If the followers collection dispatcher returns only the first page +> when the `cursor` parameter is `null`, the `Context.sendActivity()` method +> will treat it as the entire followers collection, and it will not gather +> the rest of the followers collection. Therefore, it will send the activity +> only to the followers in the first page. Watch out for this pitfall. + ### Filtering by server *This API is available since Fedify 0.8.0.* diff --git a/docs/manual/send.md b/docs/manual/send.md index 89a776ed..4e740343 100644 --- a/docs/manual/send.md +++ b/docs/manual/send.md @@ -388,6 +388,15 @@ the digest of the followers collection in the payload. > the `PUBLIC_COLLECTION`, the activity is visible to everyone regardless of > the recipients parameter. +> [!TIP] +> Does the `Context.sendActivity()` method takes quite a long time to complete +> even if you configured the [`queue`](./federation.md#queue)? It might be +> because the followers collection is large and the method under the hood +> invokes your [followers collection dispatcher](./collections.md#followers) +> multiple times to paginate the collection. To improve the performance, +> you should implement the [one-short followers collection for gathering +> recipients](./collections.md#one-shot-followers-collection-for-gathering-recipients). + [FEP-8fcf]: https://w3id.org/fep/8fcf diff --git a/docs/package.json b/docs/package.json index 85183e60..93986817 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,31 +1,31 @@ { "devDependencies": { - "@braintree/sanitize-url": "^7.1.0", - "@deno/kv": "^0.8.2", - "@fedify/amqp": "0.1.0-dev.8", - "@fedify/fedify": "^1.3.1", + "@braintree/sanitize-url": "^7.1.1", + "@deno/kv": "^0.8.4", + "@fedify/amqp": "0.1.0", + "@fedify/fedify": "^1.3.2", "@fedify/postgres": "0.2.2", - "@fedify/redis": "0.2.0-dev.10", - "@hono/node-server": "^1.12.2", + "@fedify/redis": "0.3.0", + "@hono/node-server": "^1.13.7", "@js-temporal/polyfill": "^0.4.4", "@logtape/logtape": "^0.8.0", - "@opentelemetry/exporter-trace-otlp-proto": "^0.55.0", - "@opentelemetry/sdk-node": "^0.55.0", - "@sentry/node": "^8.40.0", - "@shikijs/vitepress-twoslash": "^1.17.6", - "@teidesu/deno-types": "^1.46.3", - "@types/amqplib": "^0.10.5", - "@types/better-sqlite3": "^7.6.11", - "@types/bun": "^1.1.9", - "amqplib": "^0.10.4", + "@opentelemetry/exporter-trace-otlp-proto": "^0.57.0", + "@opentelemetry/sdk-node": "^0.57.0", + "@sentry/node": "^8.47.0", + "@shikijs/vitepress-twoslash": "^1.24.4", + "@teidesu/deno-types": "^2.1.4", + "@types/amqplib": "^0.10.6", + "@types/better-sqlite3": "^7.6.12", + "@types/bun": "^1.1.14", + "amqplib": "^0.10.5", "dayjs": "^1.11.13", - "hono": "^4.6.1", - "ioredis": "^5.4.1", + "hono": "^4.6.14", + "ioredis": "^5.4.2", "markdown-it-abbr": "^2.0.0", "markdown-it-deflist": "^3.0.0", "markdown-it-footnote": "^4.0.0", "markdown-it-jsr-ref": "0.4.1", - "mermaid": "^10.9.1", + "mermaid": "^11.4.1", "postgres": "^3.4.5", "stringify-entities": "^4.0.4", "vitepress": "^1.5.0",