nostr-fetch
Version:
A utility library that allows JS/TS apps to effortlessly fetch past events from Nostr relays
74 lines • 2.48 kB
TypeScript
import type { Filter } from "@nostr-fetch/kernel/nostr";
/**
* Structure of Nostr event filter except `limit`, `since` and `until`.
*/
export type FetchFilter = Omit<Filter, "limit" | "since" | "until">;
export type FetchFilterKeyName = keyof Omit<FetchFilter, "search">;
export type FetchFilterKeyElem<K extends FetchFilterKeyName> = Exclude<FetchFilter[K], undefined>[number];
/**
* Pair of timestamps which specifies time range of events to fetch.
*/
export type FetchTimeRangeFilter = Pick<Filter, "since" | "until">;
/**
* Type of errors that can be thrown from `NostrFetcher` methods.
*/
export declare class NostrFetchError extends Error {
}
/**
* Status of relays during a fetch.
*
* Legend:
*
* - `fetching`: the fetcher is actively fetching events from the relay
* - `completed`: the fetcher have fetched enough events from the relay
* - `aborted`: Fetching from the relay is aborted
* - `failed`: An error occurred during fetching from the relay
* - `connection-failed`: An error occurred during connecting to the relay
*/
export type RelayStatus = "fetching" | "completed" | "aborted" | "failed" | "connection-failed";
/**
* Per-relay fetch statistics.
*/
export type RelayFetchStats = {
/** Status of relays during a fetch. */
status: RelayStatus;
/** Number of events fetched from the relay. */
numFetchedEvents: number;
/**
* "Frontier" of the event fetching.
* In other words, `created_at` of the oldest events fetched from the relay.
*/
frontier: number;
};
/**
* Various statistics of the event fetching.
*/
export type FetchStats = {
/** Elapsed time in millisecond */
elapsedTimeMs: number;
/** Overall progress of the event fetching. */
progress: {
max: number;
current: number;
};
/** Events and subscriptions counts. */
counts: {
/** Number of events fetched from relays so far. */
fetchedEvents: number;
/** Number of events buffered in the internal buffer. */
bufferedEvents: number;
/** Number of subscriptions opened so far. */
openedSubs: number;
/** Number of subscriptions that is running. */
runningSubs: number;
};
/** Per-relay fetch statistics. */
relays: {
[relayUrl: string]: RelayFetchStats;
};
};
/**
* Type of functions for listening fetch statistics.
*/
export type FetchStatsListener = (stats: FetchStats) => void;
//# sourceMappingURL=types.d.ts.map