Skip to main content
This release is a pre-release — the latest non-prerelease version of @fedify/fedify is 1.0.2. Jump to this version

@fedify/fedify@1.1.0-dev.423+a30ce6dc
Built and signed on GitHub Actions

An ActivityPub/fediverse server framework

This package works with Node.js, Deno, Bun
This package works with Node.js
This package works with Deno
This package works with Bun
JSR Score
100%
Published
3 weeks ago (1.1.0-dev.423+a30ce6dc)
class Service
extends Object

Represents a service of any kind.

Constructors

new
Service(
values: { id?: URL | null; attachments?: ()[]; attribution?: ; attributions?: ()[]; audience?:
Object
| URL
| null
; audiences?: (Object | URL)[]; content?: ; contents?: ((string | LanguageString))[]; contexts?: ()[]; name?: ; names?: ((string | LanguageString))[]; endTime?: Temporal.Instant | null; generators?: ()[]; icon?:
Image
| URL
| null
; icons?: (Image | URL)[]; image?:
Image
| URL
| null
; images?: (Image | URL)[]; replyTarget?:
Object
| Link
| URL
| null
; replyTargets?: ()[]; location?:
Object
| Link
| URL
| null
; locations?: ()[]; preview?:
Link
| Object
| URL
| null
; previews?: ()[]; published?: Temporal.Instant | null; replies?:
Collection
| URL
| null
; startTime?: Temporal.Instant | null; summary?: ; summaries?: ((string | LanguageString))[]; tags?: ()[]; updated?: Temporal.Instant | null; url?:
URL
| Link
| null
; urls?: ((URL | Link))[]; to?:
Object
| URL
| null
; tos?: (Object | URL)[]; bto?:
Object
| URL
| null
; btos?: (Object | URL)[]; cc?:
Object
| URL
| null
; ccs?: (Object | URL)[]; bcc?:
Object
| URL
| null
; bccs?: (Object | URL)[]; mediaType?: string | null; duration?: Temporal.Duration | null; sensitive?: boolean | null; source?: Source | null; proof?: ; proofs?: (DataIntegrityProof | URL)[]; preferredUsername?: ; preferredUsernames?: ((string | LanguageString))[]; publicKey?: ; publicKeys?: (CryptographicKey | URL)[]; assertionMethod?:
Multikey
| URL
| null
; assertionMethods?: (Multikey | URL)[]; manuallyApprovesFollowers?: boolean | null; inbox?: ; outbox?: ; following?:
Collection
| URL
| null
; followers?:
Collection
| URL
| null
; liked?:
Collection
| URL
| null
; featured?:
Collection
| URL
| null
; featuredTags?:
Collection
| URL
| null
; streams?: (Collection | URL)[]; endpoints?: Endpoints | null; discoverable?: boolean | null; suspended?: boolean | null; memorial?: boolean | null; indexable?: boolean | null; alias?: ; aliases?: ()[]; cat?: boolean | null; }
,
unnamed 1?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; },
)

Constructs a new instance of Service with the given values.

Properties

readonly
aliasId: URL | null

Similar to Service.getAlias, but returns its @id URL instead of the object itself.

readonly
aliasIds: URL[]

Similar to Service.getAliases, but returns their @ids instead of the objects themselves.

readonly
assertionMethodId: URL | null

Similar to Service.getAssertionMethod, but returns its @id URL instead of the object itself.

Similar to Service.getAssertionMethods, but returns their @ids instead of the objects themselves.

readonly
cat: boolean | null

Used on actors to indicate that they in some way identify as a cat, expressed as a boolean value. If this property is set to true, displaying the actor or their notes will have some special effects attached in some clients.

readonly
discoverable: boolean | null

Allows users to opt-in or opt-out of discoverability features like the profile directory. This flag may also be used as an indicator of the user's preferences toward being included in external discovery services, such as search engines or other indexing tools.

readonly
endpoints: Endpoints | null

A JSON object which maps additional (typically server/domain-wide) endpoints which may be useful either for this actor or someone referencing this actor. This mapping may be nested inside the actor document as the value or may be a link to a JSON-LD document with these properties.

readonly
featuredId: URL | null

Similar to Service.getFeatured, but returns its @id URL instead of the object itself.

readonly
featuredTagsId: URL | null

Similar to Service.getFeaturedTags, but returns its @id URL instead of the object itself.

readonly
followersId: URL | null

Similar to Service.getFollowers, but returns its @id URL instead of the object itself.

readonly
followingId: URL | null

Similar to Service.getFollowing, but returns its @id URL instead of the object itself.

readonly
inboxId: URL | null

Similar to Service.getInbox, but returns its @id URL instead of the object itself.

readonly
indexable: boolean | null

Whether the actor allows to be indexed.

readonly
likedId: URL | null

Similar to Service.getLiked, but returns its @id URL instead of the object itself.

When true, conveys that for this actor, follow requests are not usually automatically approved, but instead are examined by a person who may accept or reject the request, at some time in the future. Setting of false conveys no information and may be ignored. This information is typically used to affect display of accounts, such as showing an account as private or locked.

readonly
memorial: boolean | null

Whether the actor is in-memorial state.

readonly
outboxId: URL | null

Similar to Service.getOutbox, but returns its @id URL instead of the object itself.

A short username which may be used to refer to the actor, with no uniqueness guarantees.

A short username which may be used to refer to the actor, with no uniqueness guarantees.

readonly
publicKeyId: URL | null

Similar to Service.getPublicKey, but returns its @id URL instead of the object itself.

readonly
publicKeyIds: URL[]

Similar to Service.getPublicKeys, but returns their @ids instead of the objects themselves.

readonly
streamIds: URL[]

Similar to Service.getStreams, but returns their @ids instead of the objects themselves.

readonly
suspended: boolean | null

Reports whether a user was locally suspended, for better handling of these accounts.

Methods

[Symbol.for("nodejs.util.inspect.custom")](
_depth: number,
options: unknown,
inspect: (
value: unknown,
options: unknown,
) => string
,
): string
protected
_getCustomInspectProxy(): Record<string, unknown>
clone(
values?: { id?: URL | null; attachments?: ()[]; attribution?: ; attributions?: ()[]; audience?:
Object
| URL
| null
; audiences?: (Object | URL)[]; content?: ; contents?: ((string | LanguageString))[]; contexts?: ()[]; name?: ; names?: ((string | LanguageString))[]; endTime?: Temporal.Instant | null; generators?: ()[]; icon?:
Image
| URL
| null
; icons?: (Image | URL)[]; image?:
Image
| URL
| null
; images?: (Image | URL)[]; replyTarget?:
Object
| Link
| URL
| null
; replyTargets?: ()[]; location?:
Object
| Link
| URL
| null
; locations?: ()[]; preview?:
Link
| Object
| URL
| null
; previews?: ()[]; published?: Temporal.Instant | null; replies?:
Collection
| URL
| null
; startTime?: Temporal.Instant | null; summary?: ; summaries?: ((string | LanguageString))[]; tags?: ()[]; updated?: Temporal.Instant | null; url?:
URL
| Link
| null
; urls?: ((URL | Link))[]; to?:
Object
| URL
| null
; tos?: (Object | URL)[]; bto?:
Object
| URL
| null
; btos?: (Object | URL)[]; cc?:
Object
| URL
| null
; ccs?: (Object | URL)[]; bcc?:
Object
| URL
| null
; bccs?: (Object | URL)[]; mediaType?: string | null; duration?: Temporal.Duration | null; sensitive?: boolean | null; source?: Source | null; proof?: ; proofs?: (DataIntegrityProof | URL)[]; preferredUsername?: ; preferredUsernames?: ((string | LanguageString))[]; publicKey?: ; publicKeys?: (CryptographicKey | URL)[]; assertionMethod?:
Multikey
| URL
| null
; assertionMethods?: (Multikey | URL)[]; manuallyApprovesFollowers?: boolean | null; inbox?: ; outbox?: ; following?:
Collection
| URL
| null
; followers?:
Collection
| URL
| null
; liked?:
Collection
| URL
| null
; featured?:
Collection
| URL
| null
; featuredTags?:
Collection
| URL
| null
; streams?: (Collection | URL)[]; endpoints?: Endpoints | null; discoverable?: boolean | null; suspended?: boolean | null; memorial?: boolean | null; indexable?: boolean | null; alias?: ; aliases?: ()[]; cat?: boolean | null; }
,
options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; },
): Service

Clones this instance, optionally updating it with the given values.

getAlias(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): Promise<>

The aliases (alsoKnownAs) property is used to specify alternative names or aliases for an entity. It can be used to provide additional identifiers or labels for an entity, which can be useful in scenarios where an entity may have multiple names or aliases.

getAliases(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): AsyncIterable<>

The aliases (alsoKnownAs) property is used to specify alternative names or aliases for an entity. It can be used to provide additional identifiers or labels for an entity, which can be useful in scenarios where an entity may have multiple names or aliases.

getAssertionMethod(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): Promise<Multikey | null>

Represents this actor's public keys. It serves as equivalent to the publicKeys property, but is used for FEP-521a compliance.

getAssertionMethods(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): AsyncIterable<Multikey>

Represents this actor's public keys. It serves as equivalent to the publicKeys property, but is used for FEP-521a compliance.

getFeatured(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): Promise<Collection | null>

What is known in Mastodon as "pinned statuses", or statuses that are always featured at the top of people's profiles, is implemented using an extra property featured on the actor object that points to a Collection of objects.

getFeaturedTags(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): Promise<Collection | null>

What is known in Mastodon as "featured hashtags", hashtags that are featured at people's profiles, is implemented using an extra property featuredTags on the actor object that points to a Collection of Hashtag objects specifically.

getFollowers(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): Promise<Collection | null>

This is a list of everyone who has sent a Follow activity for the actor, added as a side effect. This is where one would find a list of all the actors that are following the actor. The followers collection MUST be either an OrderedCollection or a Collection and MAY be filtered on privileges of an authenticated user or as appropriate when no authentication is given.

getFollowing(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): Promise<Collection | null>

This is a list of everybody that the actor has followed, added as a side effect. The following collection MUST be either an OrderedCollection or a Collection and MAY be filtered on privileges of an authenticated user or as appropriate when no authentication is given.

getInbox(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): Promise<OrderedCollection | null>

The inbox stream contains all activities received by the actor. The server SHOULD filter content according to the requester's permission. In general, the owner of an inbox is likely to be able to access all of their inbox contents. Depending on access control, some other content may be public, whereas other content may require authentication for non-owner users, if they can access the inbox at all.

The server MUST perform de-duplication of activities returned by the inbox. Duplication can occur if an activity is addressed both to an actor's followers, and a specific actor who also follows the recipient actor, and the server has failed to de-duplicate the recipients list. Such deduplication MUST be performed by comparing the id of the activities and dropping any activities already seen.

getLiked(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): Promise<Collection | null>

This is a list of every object from all of the actor's Like activities, added as a side effect. The liked collection MUST be either an OrderedCollection or a Collection and MAY be filtered on privileges of an authenticated user or as appropriate when no authentication is given.

getOutbox(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): Promise<OrderedCollection | null>

The outbox stream contains activities the user has published, subject to the ability of the requestor to retrieve the activity (that is, the contents of the outbox are filtered by the permissions of the person reading it). If a user submits a request without Authorization the server should respond with all of the Public posts. This could potentially be all relevant objects published by the user, though the number of available items is left to the discretion of those implementing and deploying the server.

getPublicKey(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): Promise<CryptographicKey | null>

A public part of the key pair owned by this actor.

getPublicKeys(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): AsyncIterable<CryptographicKey>

A public part of the key pair owned by this actor.

getStreams(options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; suppressError?: boolean; }): AsyncIterable<Collection>

A list of supplementary Collections which may be of interest.

toJsonLd(options?: { format?: "compact" | "expand"; contextLoader?: DocumentLoader; context?:
string
| Record<string, string>
| (string | Record<string, string>)[]
; }
): Promise<unknown>

Converts this object to a JSON-LD structure.

Static Properties

readonly
typeId: URL

The type URI of Service: https://www.w3.org/ns/activitystreams#Service.

Static Methods

fromJsonLd(
json: unknown,
options?: { documentLoader?: DocumentLoader; contextLoader?: DocumentLoader; },
): Promise<Service>

Converts a JSON-LD structure to an object of this type.

Add Package

deno add jsr:@fedify/fedify

Import symbol

import { Service } from "@fedify/fedify";

---- OR ----

Import directly with a jsr specifier

import { Service } from "jsr:@fedify/fedify";

Add Package

npx jsr add @fedify/fedify

Import symbol

import { Service } from "@fedify/fedify";

Add Package

yarn dlx jsr add @fedify/fedify

Import symbol

import { Service } from "@fedify/fedify";

Add Package

pnpm dlx jsr add @fedify/fedify

Import symbol

import { Service } from "@fedify/fedify";

Add Package

bunx jsr add @fedify/fedify

Import symbol

import { Service } from "@fedify/fedify";