AppleSauce
    Preparing search index...

    Extended relay interface for primal caching server

    Hierarchy

    • Relay
      • PrimalCache
    Index

    Constructors

    Properties

    _nip11: RelayInformation | null
    attempts$: BehaviorSubject<number>

    How many times the relay has tried to reconnect

    authenticated$: Observable<boolean>

    Boolean authentication state (will be false if auth failed)

    authenticationResponse$: BehaviorSubject<PublishResponse | null>

    The response to the last AUTH message sent to the relay

    authRequiredForPublish$: Observable<boolean>
    authRequiredForRead$: Observable<boolean>
    challenge$: BehaviorSubject<string | null>

    The authentication challenge string from the relay

    close$: Subject<CloseEvent>

    An observable that emits when underlying websocket is closed

    closing$: Subject<void>

    An observable that emits when underlying websocket is closing due to unsubscription

    connected$: BehaviorSubject<boolean>

    Whether the relay is connected

    eoseTimeout: number

    If an EOSE message is not seen in this time, emit one locally (default 10s)

    error$: BehaviorSubject<Error | null>

    The last connection error

    eventTimeout: number

    How long to wait for an OK message from the relay (default 10s)

    information$: Observable<RelayInformation | null>

    An observable that emits the NIP-11 information document for the relay

    keepAlive: number

    How long to keep the connection alive after nothing is subscribed (default 30s)

    limitations$: Observable<Partial<Limitations> | null | undefined>

    An observable that emits the limitations for the relay

    log: Debugger
    message$: Observable<any>

    A passive observable of all messages from the relay

    Subscribing to this will not connect to the relay

    notice$: Observable<string>

    A passive observable of NOTICE messages from the relay

    Subscribing to this will not connect to the relay

    notices$: BehaviorSubject<string[]>

    The notices from the relay

    open$: Subject<Event>

    An observable that emits when underlying websocket is opened

    publishTimeout: number

    How long to wait for a publish to complete (default 30s)

    ready$: BehaviorSubject<boolean>

    Whether the relay is ready for subscriptions or event publishing. setting this to false will cause all .req and .event observables to hang until the relay is ready

    receivedAuthRequiredForEvent: BehaviorSubject<boolean>
    receivedAuthRequiredForReq: BehaviorSubject<boolean>
    reconnectTimer: (
        error: Error | CloseEvent,
        attempts: number,
    ) => Observable<number>

    A method that returns an Observable that emits when the relay should reconnect

    socket: WebSocketSubject<any>
    supported$: Observable<number[] | null>

    An array of supported NIPs from the NIP-11 information document

    url: string
    watchTower: Observable<never>

    An internal observable that is responsible for watching all messages and updating state, subscribing to it will trigger a connection to the relay

    Accessors

    • get authenticated(): boolean

      Returns boolean

    • get authenticationResponse(): PublishResponse | null

      Returns PublishResponse | null

    • get challenge(): string | null

      Returns string | null

    • get connected(): boolean

      Returns boolean

    • get information(): RelayInformation | null

      Returns RelayInformation | null

    • get notices(): string[]

      Returns string[]

    Methods

    • Advanced feed

      Parameters

      • params: {
            feed_type: string;
            limit?: number;
            offset?: number;
            since?: number;
            until?: number;
        }

      Returns Promise<Event[]>

    • Advanced search

      Parameters

      • params: {
            limit?: number;
            offset?: number;
            query: string;
            since?: number;
            sort?: "popular" | "trending" | "latest";
            until?: number;
        }

      Returns Promise<Event[]>

    • send and AUTH message

      Parameters

      • event: Event

      Returns Promise<PublishResponse>

    • Authenticate with the relay using a signer

      Parameters

      • signer: AuthSigner

      Returns Promise<PublishResponse>

    • Broadcast events

      Parameters

      • events: Event[]
      • relays: string[]

      Returns Promise<Event[]>

    • Broadcast reply

      Parameters

      • event: Event

      Returns Promise<Event[]>

    • Make a "cache" request to the caching server

      Type Parameters

      Parameters

      • request:
            | ["explore_legend_counts", { pubkey: string }]
            | [
                "explore",
                {
                    apply_humaness_check?: boolean;
                    created_after?: number;
                    gm_mode?: boolean;
                    group_by_pubkey?: boolean;
                    include_top_zaps?: boolean;
                    limit?: number;
                    offset?: number;
                    pubkeys?: string[];
                    since?: number;
                    timeframe: "popular"
                    | "trending"
                    | "recent";
                    until?: number;
                    user_pubkey?: string;
                },
            ]
            | ["explore_global_trending_24h", { limit?: number }]
            | ["explore_global_mostzapped_4h", { limit?: number }]
            | [
                "scored",
                {
                    apply_humaness_check?: boolean;
                    created_after?: number;
                    gm_mode?: boolean;
                    group_by_pubkey?: boolean;
                    include_top_zaps?: boolean;
                    limit?: number;
                    offset?: number;
                    pubkeys?: string[];
                    since?: number;
                    timeframe: "popular"
                    | "trending"
                    | "recent";
                    until?: number;
                    user_pubkey?: string;
                },
            ]
            | ["scored_users", { limit?: number }]
            | ["scored_users_24h", { limit?: number }]
            | ["get_default_relays", {}]
            | ["get_recommended_users", { limit?: number }]
            | ["get_suggested_users", { limit?: number }]
            | [
                "user_profile_scored_content",
                {
                    created_after?: number;
                    limit?: number;
                    offset?: number;
                    pubkey: string;
                    since?: number;
                    until?: number;
                },
            ]
            | [
                "user_profile_scored_media_thumbnails",
                {
                    created_after?: number;
                    limit?: number;
                    offset?: number;
                    pubkey: string;
                    since?: number;
                    until?: number;
                },
            ]
            | [
                "search",
                {
                    limit?: number;
                    offset?: number;
                    query: string;
                    since?: number;
                    until?: number;
                },
            ]
            | [
                "advanced_search",
                {
                    limit?: number;
                    offset?: number;
                    query: string;
                    since?: number;
                    sort?: "popular"
                    | "trending"
                    | "latest";
                    until?: number;
                },
            ]
            | [
                "advanced_feed",
                {
                    feed_type: string;
                    limit?: number;
                    offset?: number;
                    since?: number;
                    until?: number;
                },
            ]
            | ["relays", {}]
            | [
                "get_notifications",
                {
                    limit?: number;
                    offset?: number;
                    pubkey: string;
                    since?: number;
                    until?: number;
                },
            ]
            | ["set_notifications_seen", { pubkey: string; until: number }]
            | ["get_notifications_seen", { pubkey: string }]
            | ["user_search", { limit?: number; query: string }]
            | [
                "feed_directive",
                {
                    feed_type: string;
                    limit?: number;
                    offset?: number;
                    pubkey: string;
                    since?: number;
                    until?: number;
                },
            ]
            | [
                "feed_directive_2",
                {
                    feed_type: string;
                    limit?: number;
                    offset?: number;
                    pubkey: string;
                    since?: number;
                    until?: number;
                },
            ]
            | ["get_advanced_feeds", {}]
            | ["trending_hashtags", { limit?: number }]
            | ["trending_hashtags_4h", { limit?: number }]
            | ["trending_hashtags_7d", { limit?: number }]
            | ["trending_images", { limit?: number }]
            | ["trending_images_4h", { limit?: number }]
            | ["report_user", { pubkey: string; reason: string }]
            | ["report_note", { event_id: string; reason: string }]
            | ["get_filterlist", {}]
            | ["check_filterlist", { pubkeys: string[] }]
            | ["broadcast_reply", { event: Event }]
            | ["broadcast_events", { events: Event[]; relays: string[] }]
            | ["trusted_users", { extended_response?: boolean; limit?: number }]
            | [
                "note_mentions",
                {
                    event_id?: string;
                    identifier?: string;
                    limit?: number;
                    offset?: number;
                    pubkey?: string;
                    user_pubkey?: string;
                },
            ]
            | ["note_mentions_count", { event_id: string }]
            | ["get_media_metadata", { urls: string[] }]

      Returns Observable<R["event"]>

    • Check filterlist

      Parameters

      • pubkeys: string[]

      Returns Promise<Event[]>

    • Force close the connection

      Returns void

    • Create a COUNT observable that emits a single count response

      Parameters

      Returns Observable<CountResponse>

    • Internal operator for creating the repeat() operator

      Type Parameters

      • T extends unknown = unknown

      Parameters

      • times: number | boolean | RepeatConfig | undefined

      Returns MonoTypeOperatorFunction<T>

    • Internal operator for creating the retry() operator

      Type Parameters

      • T extends unknown = unknown

      Parameters

      • times: number | boolean | RetryConfig | undefined
      • Optionalbase: RetryConfig

      Returns MonoTypeOperatorFunction<T>

    • Internal operator for creating the timeout() operator

      Type Parameters

      • T extends unknown = unknown

      Parameters

      • timeout: number | boolean | undefined
      • defaultTimeout: number

      Returns MonoTypeOperatorFunction<T>

    • Send an EVENT or AUTH message and return an observable of PublishResponse that completes or errors

      Parameters

      • event: Event
      • Optionalverb: "EVENT" | "AUTH"

      Returns Observable<PublishResponse>

    • Explore content with various filters

      Parameters

      • params: {
            apply_humaness_check?: boolean;
            created_after?: number;
            gm_mode?: boolean;
            group_by_pubkey?: boolean;
            include_top_zaps?: boolean;
            limit?: number;
            offset?: number;
            pubkeys?: string[];
            since?: number;
            timeframe: "popular" | "trending" | "recent";
            until?: number;
            user_pubkey?: string;
        }

      Returns Promise<Event[]>

    • Get global most zapped content from last 4 hours

      Parameters

      • limit: number = 20

      Returns Promise<Event[]>

    • Get global trending content from last 24 hours

      Parameters

      • limit: number = 20

      Returns Promise<Event[]>

    • Get legend counts for explore page

      Parameters

      • pubkey: string

      Returns Promise<Event[]>

    • Feed directive

      Parameters

      • params: {
            feed_type: string;
            limit?: number;
            offset?: number;
            pubkey: string;
            since?: number;
            until?: number;
        }

      Returns Promise<Event[]>

    • Feed directive v2

      Parameters

      • params: {
            feed_type: string;
            limit?: number;
            offset?: number;
            pubkey: string;
            since?: number;
            until?: number;
        }

      Returns Promise<Event[]>

    • An async method that returns the NIP-11 information document for the relay

      Returns Promise<RelayInformation | null>

    • An async method that returns the NIP-11 limitations for the relay

      Returns Promise<Partial<Limitations> | null | undefined>

    • Get media metadata

      Parameters

      • urls: string[]

      Returns Promise<Event[]>

    • Get notifications

      Parameters

      • params: {
            limit?: number;
            offset?: number;
            pubkey: string;
            since?: number;
            until?: number;
        }

      Returns Promise<Event[]>

    • Get notifications seen status

      Parameters

      • pubkey: string

      Returns Promise<Event[]>

    • Get recommended users

      Parameters

      • limit: number = 20

      Returns Promise<Event[]>

    • Get suggested users

      Parameters

      • limit: number = 20

      Returns Promise<Event[]>

    • An async method that returns the supported NIPs for the relay

      Returns Promise<number[] | null>

    • Internal operator for handling auth-required errors from REQ/COUNT operations

      Parameters

      • operation: "REQ" | "COUNT"

      Returns MonoTypeOperatorFunction<any>

    • Creates an Observable, that when subscribed to, sends a message, defined by the subMsg function, to the server over the socket to begin a subscription to data over that socket. Once data arrives, the messageFilter argument will be used to select the appropriate data for the resulting Observable. When finalization occurs, either due to unsubscription, completion, or error, a message defined by the unsubMsg argument will be sent to the server over the WebSocketSubject.

      Type Parameters

      • T

      Parameters

      • open: () => any
      • close: () => any
      • filter: (message: any) => boolean

      Returns Observable<T>

    • Negentropy sync event ids with the relay and an event store

      Parameters

      Returns Promise<boolean>

    • Get note mentions

      Parameters

      • params: {
            event_id?: string;
            identifier?: string;
            limit?: number;
            offset?: number;
            pubkey?: string;
            user_pubkey?: string;
        }

      Returns Promise<Event[]>

    • Get note mentions count

      Parameters

      • eventId: string

      Returns Promise<Event[]>

    • Publishes an event to the relay and retries when relay errors or responds with auth-required ( default 3 retries )

      Parameters

      • event: Event
      • Optionalopts: PublishOptions

      Returns Promise<PublishResponse>

    • Report note

      Parameters

      • eventId: string
      • reason: string

      Returns Promise<Event[]>

    • Report user

      Parameters

      • pubkey: string
      • reason: string

      Returns Promise<Event[]>

    • Create a REQ observable that emits events or "EOSE" or errors

      Parameters

      • filters: FilterInput
      • Optionalid: string

      Returns Observable<SubscriptionResponse>

    • Makes a single request that retires on errors and completes on EOSE

      Parameters

      • filters: FilterInput
      • Optionalopts: SubscriptionOptions

      Returns Observable<Event>

    • Returns void

    • Get scored content

      Parameters

      • params: {
            apply_humaness_check?: boolean;
            created_after?: number;
            gm_mode?: boolean;
            group_by_pubkey?: boolean;
            include_top_zaps?: boolean;
            limit?: number;
            offset?: number;
            pubkeys?: string[];
            since?: number;
            timeframe: "popular" | "trending" | "recent";
            until?: number;
            user_pubkey?: string;
        }

      Returns Promise<Event[]>

    • Get scored users

      Parameters

      • limit: number = 20

      Returns Promise<Event[]>

    • Get scored users from last 24 hours

      Parameters

      • limit: number = 20

      Returns Promise<Event[]>

    • Search content

      Parameters

      • params: {
            limit?: number;
            offset?: number;
            query: string;
            since?: number;
            until?: number;
        }

      Returns Promise<Event[]>

    • Send a message to the relay

      Parameters

      • message: any

      Returns void

    • Set notifications as seen

      Parameters

      • pubkey: string
      • until: number

      Returns Promise<Event[]>

    • Set ready = false and start the reconnect timer

      Parameters

      • error: Error | CloseEvent

      Returns void

    • Creates a REQ that retries when relay errors ( default 3 retries )

      Parameters

      • filters: FilterInput
      • Optionalopts: SubscriptionOptions

      Returns Observable<SubscriptionResponse>

    • Makes a cache request and returns a timeline of events

      Type Parameters

      • R extends RequestAndResponse<any, any, any>

      Parameters

      • method: R["req"][0]
      • args: R["req"][1]

      Returns Promise<R["event"][]>

    • Get trending hashtags

      Parameters

      • limit: number = 20

      Returns Promise<Event[]>

    • Get trending hashtags from last 4 hours

      Parameters

      • limit: number = 20

      Returns Promise<Event[]>

    • Get trending hashtags from last 7 days

      Parameters

      • limit: number = 20

      Returns Promise<Event[]>

    • Get trending images

      Parameters

      • limit: number = 20

      Returns Promise<Event[]>

    • Get trending images from last 4 hours

      Parameters

      • limit: number = 20

      Returns Promise<Event[]>

    • Get trusted users

      Parameters

      • limit: number = 500
      • extendedResponse: boolean = true

      Returns Promise<Event[]>

    • Get user profile scored content

      Parameters

      • params: {
            created_after?: number;
            limit?: number;
            offset?: number;
            pubkey: string;
            since?: number;
            until?: number;
        }

      Returns Promise<Event[]>

    • Get user profile scored media thumbnails

      Parameters

      • params: {
            created_after?: number;
            limit?: number;
            offset?: number;
            pubkey: string;
            since?: number;
            until?: number;
        }

      Returns Promise<Event[]>

    • Search for users by query

      Parameters

      • query: string
      • limit: number = 10

      Returns Promise<Event[]>

    • Wait for authentication state, make connection and then wait for authentication if required

      Type Parameters

      • T extends unknown = unknown

      Parameters

      Returns Observable<T>

    • Wait for the relay to be ready to accept connections

      Type Parameters

      • T extends unknown = unknown

      Parameters

      Returns Observable<T>

    • Static method to create a reconnection method for each relay

      Parameters

      • _relay: string

      Returns (_error?: Error | CloseEvent, tries?: number) => Observable<0>

    • Static method to fetch the NIP-11 information document for a relay

      Parameters

      • url: string

      Returns Observable<RelayInformation | null>