SYMBOL INDEX (2439 symbols across 507 files) FILE: functions/_middleware.ts type Env (line 1) | type Env = {} constant HOST (line 3) | const HOST = "snort.social"; FILE: packages/app/src/Cache/CommunityLeadersStore.tsx class CommunityLeadersStore (line 3) | class CommunityLeadersStore extends ExternalStore> { method setLeaders (line 6) | setLeaders(arr: Array) { method takeSnapshot (line 11) | takeSnapshot(): string[] { FILE: packages/app/src/Cache/GiftWrapCache.ts type UnwrappedGift (line 8) | interface UnwrappedGift { function getCachedDecryptedContent (line 18) | function getCachedDecryptedContent(id: string): string | undefined { function setCachedDecryptedContent (line 22) | function setCachedDecryptedContent(id: string, content: string) { constant NIP44_MIN_PAYLOAD_LEN (line 26) | const NIP44_MIN_PAYLOAD_LEN = 132 function isValidNip44Content (line 28) | function isValidNip44Content(content: string): boolean { class GiftWrapCache (line 32) | class GiftWrapCache extends RefreshFeedCache { method constructor (line 36) | constructor() { method setRelay (line 40) | setRelay(relay: CacheRelay) { method key (line 44) | key(of: UnwrappedGift): string { method buildSub (line 48) | buildSub(): void {} method takeSnapshot (line 50) | takeSnapshot(): Array { method preload (line 54) | override async preload(): Promise { method onEvent (line 58) | override async onEvent(evs: Readonly>, _: stri... method loadPersistedAndDecrypt (line 124) | async loadPersistedAndDecrypt(pub: EventPublisher): Promise { method clear (line 140) | override async clear(): Promise { method search (line 153) | search(): Promise[]> { FILE: packages/app/src/Cache/ProfileWorkerCache.ts class ProfileCacheRelayWorker (line 4) | class ProfileCacheRelayWorker extends WorkerBaseCache { method constructor (line 5) | constructor(relay: CacheRelay) { method name (line 9) | name(): string { method maxSize (line 13) | maxSize(): number { method mapper (line 17) | mapper(ev: NostrEvent): CachedMetadata | undefined { method preload (line 21) | override async preload(follows?: Array) { FILE: packages/app/src/Cache/RefreshFeedCache.ts type TWithCreated (line 6) | type TWithCreated = (T | Readonly) & { created_at: number } method newest (line 15) | protected newest(filter?: (e: TWithCreated) => boolean) { method preload (line 25) | override async preload(): Promise { FILE: packages/app/src/Cache/RelaysWorkerCache.ts class RelaysWorkerCache (line 5) | class RelaysWorkerCache extends WorkerBaseCache { method constructor (line 6) | constructor(relay: CacheRelay) { method name (line 10) | name(): string { method maxSize (line 14) | maxSize(): number { method mapper (line 18) | mapper(ev: NostrEvent): UsersRelays | undefined { method preload (line 30) | override async preload(follows?: Array) { FILE: packages/app/src/Cache/UserFollowsWorker.ts class UserFollowsWorker (line 5) | class UserFollowsWorker extends WorkerBaseCache { method constructor (line 6) | constructor(relay: CacheRelay) { method name (line 10) | name(): string { method maxSize (line 14) | maxSize(): number { method mapper (line 18) | mapper(ev: NostrEvent): UsersFollows | undefined { method preload (line 29) | override async preload(follows?: Array) { FILE: packages/app/src/Cache/index.ts function tryUseCacheRelay (line 30) | async function tryUseCacheRelay(url: string) { function tryUseLocalRelay (line 41) | async function tryUseLocalRelay() { function initRelayWorker (line 49) | async function initRelayWorker() { function preload (line 87) | async function preload(follows?: Array) { FILE: packages/app/src/Cache/worker-cached.ts method constructor (line 21) | constructor( method clear (line 29) | async clear() { method key (line 34) | key(of: T): string { method preload (line 45) | async preload() { method preloadTable (line 52) | protected async preloadTable(id: string, f: ReqFilter) { method search (line 66) | async search(q: string) { method keysOnTable (line 78) | keysOnTable(): string[] { method getFromCache (line 82) | getFromCache(key?: string | undefined) { method discover (line 88) | discover(ev: NostrEvent) { method get (line 92) | async get(key?: string | undefined): Promise { method bulkGet (line 101) | async bulkGet(keys: string[]) { method setInternal (line 128) | private setInternal(obj: T) { method set (line 139) | async set(obj: T) { method bulkSet (line 146) | async bulkSet(obj: T[] | readonly T[]) { method update (line 154) | async update(obj: T): Promise<"new" | "refresh" | "updated" | "no_change... method subscribe (line 176) | subscribe(key: string, cb: () => void): () => void { method #notifyKeyListeners (line 194) | #notifyKeyListeners(key: string) { method buffer (line 203) | async buffer(keys: string[]): Promise { method snapshot (line 209) | snapshot(): T[] { FILE: packages/app/src/Components/AskSnort/AskSnortInput.tsx function AskSnortInput (line 9) | function AskSnortInput() { FILE: packages/app/src/Components/Button/AsyncButton.tsx type AsyncButtonProps (line 7) | interface AsyncButtonProps extends React.ButtonHTMLAttributes & { function AsyncIcon (line 11) | function AsyncIcon(props: AsyncIconProps) { FILE: packages/app/src/Components/Button/BackButton.tsx type BackButtonProps (line 6) | interface BackButtonProps { function BackButton (line 11) | function BackButton({ text, onClick }: BackButtonProps) { FILE: packages/app/src/Components/Button/CloseButton.tsx function CloseButton (line 5) | function CloseButton({ onClick, className }: { onClick?: () => void; cla... FILE: packages/app/src/Components/Button/IconButton.tsx type IconButtonProps (line 6) | interface IconButtonProps { FILE: packages/app/src/Components/Button/LogoutButton.tsx function LogoutButton (line 9) | function LogoutButton() { FILE: packages/app/src/Components/Button/NavLink.tsx function NavLink (line 3) | function NavLink(props: NavLinkProps) { FILE: packages/app/src/Components/Collapsed.tsx type CollapsedProps (line 6) | interface CollapsedProps { type CollapsedIconProps (line 23) | interface CollapsedIconProps { type CollapsedSectionProps (line 28) | interface CollapsedSectionProps { FILE: packages/app/src/Components/CommunityLeaders/Award.tsx function AwardIcon (line 1) | function AwardIcon({ size }: { size?: number }) { FILE: packages/app/src/Components/CommunityLeaders/LeaderBadge.tsx function LeaderBadge (line 9) | function LeaderBadge() { FILE: packages/app/src/Components/Copy/Copy.tsx type CopyProps (line 6) | interface CopyProps { function Copy (line 13) | function Copy({ text, maxSize = 32, className, showText, mask }: CopyPro... FILE: packages/app/src/Components/DvmSelector.tsx type DvmSelectorProps (line 10) | interface DvmSelectorProps { function DvmSelector (line 17) | function DvmSelector({ kind, onClose, onSelect, currentProvider }: DvmSe... FILE: packages/app/src/Components/Embed/BlossomBlob.tsx type BlossomLink (line 13) | interface BlossomLink { function parseBlossomLink (line 21) | function parseBlossomLink(link: string) { function BlossomBlob (line 44) | function BlossomBlob({ creator, link }: { creator: string; link: string ... FILE: packages/app/src/Components/Embed/CashuNuts.tsx function CashuNuts (line 13) | function CashuNuts({ token }: { token: string }) { FILE: packages/app/src/Components/Embed/GenericPlayer.tsx function GenericPlayer (line 6) | function GenericPlayer({ url, poster }: { url: string; poster: string }) { FILE: packages/app/src/Components/Embed/HyperText.tsx type HypeTextProps (line 23) | interface HypeTextProps { function HyperText (line 29) | function HyperText({ link, showLinkPreview, children }: HypeTextProps) { FILE: packages/app/src/Components/Embed/Invoice.tsx type InvoiceProps (line 12) | interface InvoiceProps { function Invoice (line 16) | function Invoice(props: InvoiceProps) { FILE: packages/app/src/Components/Embed/LinkPreview.tsx function fetchUrlPreviewInfo (line 11) | async function fetchUrlPreviewInfo(url: string) { function previewElement (line 58) | function previewElement() { FILE: packages/app/src/Components/Embed/MagnetLink.tsx type MagnetLinkProps (line 6) | interface MagnetLinkProps { FILE: packages/app/src/Components/Embed/MediaElement.tsx type MediaElementProps (line 11) | interface MediaElementProps { type AudioElementProps (line 21) | interface AudioElementProps { type VideoElementProps (line 25) | interface VideoElementProps { type ImageElementProps (line 30) | type ImageElementProps = ProxyImgProps & { function MediaElement (line 118) | function MediaElement(props: MediaElementProps) { FILE: packages/app/src/Components/Embed/Mention.tsx function Mention (line 10) | function Mention({ FILE: packages/app/src/Components/Embed/NostrLink.tsx function NostrLink (line 9) | function NostrLink({ link, depth, className }: { link: string; depth?: n... FILE: packages/app/src/Components/Embed/PubkeyList.tsx function PubkeyList (line 16) | function PubkeyList({ ev, className }: { ev: NostrEvent; className?: str... FILE: packages/app/src/Components/Embed/TidalEmbed.tsx function oembedLookup (line 8) | async function oembedLookup(link: string) { FILE: packages/app/src/Components/Embed/UrlStatusCheck.tsx type UrlStatusCheckProps (line 5) | interface UrlStatusCheckProps { function UrlStatusCheck (line 9) | function UrlStatusCheck({ url }: UrlStatusCheckProps) { FILE: packages/app/src/Components/Embed/YoutubeEmbed.tsx function YoutubeEmbed (line 3) | function YoutubeEmbed({ link }: { link: string }) { FILE: packages/app/src/Components/Embed/ZapstrEmbed.tsx function ZapstrEmbed (line 10) | function ZapstrEmbed({ ev }: { ev: NostrEvent }) { FILE: packages/app/src/Components/ErrorBoundary.tsx type ErrorBoundaryState (line 5) | interface ErrorBoundaryState { type ErrorBoundaryProps (line 10) | interface ErrorBoundaryProps { class ErrorBoundary (line 14) | class ErrorBoundary extends React.Component v... FILE: packages/app/src/Components/Event/Create/util.ts function sendEventToRelays (line 4) | async function sendEventToRelays( FILE: packages/app/src/Components/Event/DVMJobFeedback.tsx type DVMJobFeedbackProps (line 6) | interface DVMJobFeedbackProps { function DVMJobFeedback (line 10) | function DVMJobFeedback({ ev }: DVMJobFeedbackProps) { FILE: packages/app/src/Components/Event/EventComponent.tsx type NotePropsOptions (line 16) | interface NotePropsOptions { type NoteProps (line 43) | interface NoteProps { function EventComponent (line 61) | function EventComponent(props: NoteProps) { FILE: packages/app/src/Components/Event/FileUpload.tsx function FileUploadProgress (line 4) | function FileUploadProgress({ progress }: { progress: Array & { function RevealMedia (line 16) | function RevealMedia(props: RevealMediaProps) { FILE: packages/app/src/Components/Event/Thread/Subthread.tsx type SubthreadProps (line 6) | interface SubthreadProps { FILE: packages/app/src/Components/Event/Thread/Thread.tsx type ThreadProps (line 16) | interface ThreadProps { function ThreadElement (line 21) | function ThreadElement(props: ThreadProps) { function ThreadInner (line 35) | function ThreadInner({ thread, ...props }: ThreadProps & { thread: Threa... function ThreadDebug (line 149) | function ThreadDebug() { FILE: packages/app/src/Components/Event/Thread/ThreadRoute.tsx function ThreadRoute (line 8) | function ThreadRoute({ id }: { id?: string | NostrLink }) { FILE: packages/app/src/Components/Event/Thread/util.ts function getReplies (line 4) | function getReplies( FILE: packages/app/src/Components/Event/ZapGoal.tsx function ZapGoal (line 13) | function ZapGoal({ ev }: { ev: NostrEvent }) { FILE: packages/app/src/Components/Event/ZapsSummary.tsx type ZapsSummaryProps (line 8) | interface ZapsSummaryProps { FILE: packages/app/src/Components/Feed/ImageGridItem.tsx type ImageGridItemProps (line 10) | interface ImageGridItemProps { FILE: packages/app/src/Components/Feed/LoadMore.tsx function LoadMore (line 7) | function LoadMore({ FILE: packages/app/src/Components/Feed/RootTabItems.tsx function rootTabItems (line 7) | function rootTabItems(base: string, pubKey: string | undefined, tags: Ar... FILE: packages/app/src/Components/Feed/RootTabs.tsx function RootTabs (line 13) | function RootTabs({ base = "/" }: { base: string }) { FILE: packages/app/src/Components/Feed/Timeline.tsx type TimelineProps (line 11) | interface TimelineProps { function onShowLatest (line 65) | function onShowLatest(scrollToTop = false) { FILE: packages/app/src/Components/Feed/TimelineChunk.tsx type TimelineChunkProps (line 8) | interface TimelineChunkProps { function TimelineChunk (line 20) | function TimelineChunk(props: TimelineChunkProps) { FILE: packages/app/src/Components/Feed/TimelineFollows.tsx type TimelineFollowsProps (line 13) | interface TimelineFollowsProps { FILE: packages/app/src/Components/Feed/TimelineFragment.tsx type TimelineFragment (line 6) | interface TimelineFragment { type TimelineFragProps (line 12) | interface TimelineFragProps { function TimelineFragment (line 24) | function TimelineFragment(props: TimelineFragProps) { FILE: packages/app/src/Components/Feed/TimelineRenderer.tsx type TimelineRendererProps (line 13) | interface TimelineRendererProps { function TimelineRenderer (line 27) | function TimelineRenderer(props: TimelineRendererProps) { FILE: packages/app/src/Components/Feed/UsersFeed.tsx function UsersFeed (line 9) | function UsersFeed({ keyword, sortPopular = true }: { keyword: string; s... FILE: packages/app/src/Components/Icons/Alby.tsx function AlbyIcon (line 1) | function AlbyIcon(props: { size?: number }) { FILE: packages/app/src/Components/Icons/Cashu.tsx function CashuIcon (line 1) | function CashuIcon(props: { size?: number }) { FILE: packages/app/src/Components/Icons/ECash.tsx function ECashIcon (line 1) | function ECashIcon(props: { width?: number; height?: number }) { FILE: packages/app/src/Components/Icons/Icon.tsx type IconProps (line 5) | type IconProps = { FILE: packages/app/src/Components/Icons/NWC.tsx function NWCIcon (line 1) | function NWCIcon(props: { width?: number; height?: number }) { FILE: packages/app/src/Components/Icons/Nostrich.tsx function NostrIcon (line 1) | function NostrIcon(props: { width?: number; height?: number }) { FILE: packages/app/src/Components/Icons/Toggle.tsx function ToggleSwitch (line 3) | function ToggleSwitch(props: Omit) { FILE: packages/app/src/Components/IntlProvider/IntlProvider.tsx function IntlProvider (line 84) | function IntlProvider({ children }: { children: ReactNode }) { FILE: packages/app/src/Components/IntlProvider/langStore.tsx class LangStore (line 3) | class LangStore extends ExternalStore { method setLang (line 4) | setLang(s: string) { method takeSnapshot (line 9) | takeSnapshot() { FILE: packages/app/src/Components/IntlProvider/useLocale.tsx function useLocale (line 7) | function useLocale() { FILE: packages/app/src/Components/Invite.tsx function close (line 26) | function close() { FILE: packages/app/src/Components/LiveStream/LiveEvent.tsx function LiveEvent (line 14) | function LiveEvent({ ev }: { ev: TaggedNostrEvent }) { function LiveStreamEvent (line 32) | function LiveStreamEvent({ ev }: { ev: TaggedNostrEvent }) { FILE: packages/app/src/Components/LiveStream/LiveStreams.tsx function LiveStreams (line 16) | function LiveStreams() { function LiveStreamEvent (line 38) | function LiveStreamEvent({ ev, className }: { ev: NostrEvent; className?... function AudioRoom (line 83) | function AudioRoom({ ev, className }: { ev: NostrEvent; className?: stri... FILE: packages/app/src/Components/LiveStream/VU.tsx function VuBar (line 3) | function VuBar({ FILE: packages/app/src/Components/LiveStream/livekit.tsx type RoomTab (line 38) | enum RoomTab { function LiveKitRoom (line 43) | function LiveKitRoom({ ev, canJoin }: { ev: TaggedNostrEvent; canJoin?: ... function RoomHeader (line 126) | function RoomHeader({ ev }: { ev: TaggedNostrEvent }) { function RoomBody (line 145) | function RoomBody({ ev, tab, onSelectTab }: { ev: TaggedNostrEvent; tab:... function MyControls (line 196) | function MyControls() { function RoomChat (line 237) | function RoomChat({ ev }: { ev: TaggedNostrEvent }) { function ChatMessage (line 260) | function ChatMessage({ ev }: { ev: TaggedNostrEvent }) { function WriteChatMessage (line 269) | function WriteChatMessage({ ev }: { ev: TaggedNostrEvent }) { function LiveKitUser (line 301) | function LiveKitUser({ p }: { p: RemoteParticipant | LocalParticipant }) { FILE: packages/app/src/Components/LiveStream/nests-participants.tsx function NestsParticipants (line 8) | function NestsParticipants({ ev }: { ev: TaggedNostrEvent }) { FILE: packages/app/src/Components/Modal/Modal.tsx type ModalProps (line 5) | interface ModalProps { function Modal (line 42) | function Modal(props: ModalProps) { FILE: packages/app/src/Components/Nip5Service.tsx type Nip05ServiceProps (line 28) | type Nip05ServiceProps = { function Nip5Service (line 40) | function Nip5Service(props: Nip05ServiceProps) { FILE: packages/app/src/Components/Offline.tsx function Offline (line 8) | function Offline({ onRetry, className }: { onRetry?: () => void | Promis... FILE: packages/app/src/Components/PageSpinner.tsx function PageSpinner (line 3) | function PageSpinner() { FILE: packages/app/src/Components/PinPrompt/PinPrompt.tsx function PinPrompt (line 15) | function PinPrompt({ function LoginUnlock (line 98) | function LoginUnlock() { FILE: packages/app/src/Components/Progress/Progress.tsx function Progress (line 4) | function Progress({ value, status }: { value: number; status?: ReactNode... FILE: packages/app/src/Components/ProxyImg.tsx type ProxyImgProps (line 8) | type ProxyImgProps = HTMLProps & { FILE: packages/app/src/Components/QrCode.tsx type QrCodeProps (line 4) | interface QrCodeProps { function QrCode (line 13) | function QrCode(props: QrCodeProps) { FILE: packages/app/src/Components/ReBroadcaster.tsx function ReBroadcaster (line 10) | function ReBroadcaster({ onClose, ev }: { onClose: () => void; ev: Tagge... FILE: packages/app/src/Components/Relay/Relay.tsx type RelayProps (line 12) | interface RelayProps { function Relay (line 16) | function Relay(props: RelayProps) { FILE: packages/app/src/Components/Relay/name.tsx function RelayName (line 6) | function RelayName({ url }: { url: string }) { FILE: packages/app/src/Components/Relay/paid.tsx function RelayPaymentLabel (line 5) | function RelayPaymentLabel({ info }: { info: RelayInfoDocument }) { FILE: packages/app/src/Components/Relay/permissions.tsx function RelayPermissions (line 6) | function RelayPermissions({ conn }: { conn: ConnectionType }) { FILE: packages/app/src/Components/Relay/software.tsx function RelaySoftware (line 3) | function RelaySoftware({ software }: { software: string }) { FILE: packages/app/src/Components/Relay/status-label.tsx function RelayStatusLabel (line 5) | function RelayStatusLabel({ conn }: { conn: ConnectionType }) { FILE: packages/app/src/Components/Relay/uptime-label.tsx function UptimeLabel (line 4) | function UptimeLabel({ avgPing }: { avgPing: number }) { FILE: packages/app/src/Components/Relay/uptime.tsx function RelayUptime (line 11) | function RelayUptime({ url }: { url: string }) { FILE: packages/app/src/Components/Review.tsx function ReviewSummary (line 5) | function ReviewSummary({ link }: { link: NostrLink }) { FILE: packages/app/src/Components/RightWidgets/articles.tsx function LatestArticlesWidget (line 14) | function LatestArticlesWidget() { FILE: packages/app/src/Components/RightWidgets/base.tsx type BaseWidgetProps (line 5) | interface BaseWidgetProps { function BaseWidget (line 12) | function BaseWidget({ children, title, icon, iconClassName, contextMenu ... FILE: packages/app/src/Components/RightWidgets/index.tsx type RightColumnWidget (line 1) | enum RightColumnWidget { FILE: packages/app/src/Components/RightWidgets/invite-friends.tsx function InviteFriendsWidget (line 13) | function InviteFriendsWidget() { FILE: packages/app/src/Components/RightWidgets/mini-stream.tsx function MiniStreamWidget (line 13) | function MiniStreamWidget() { FILE: packages/app/src/Components/ScrollToTop.tsx function ScrollToTop (line 4) | function ScrollToTop() { FILE: packages/app/src/Components/SearchBox/SearchBox.tsx constant MAX_RESULTS (line 12) | const MAX_RESULTS = 3 function SearchBox (line 14) | function SearchBox() { FILE: packages/app/src/Components/Spotlight/SpotlightMedia.tsx type SpotlightMediaProps (line 7) | interface SpotlightMediaProps { function SpotlightMedia (line 18) | function SpotlightMedia(props: SpotlightMediaProps) { FILE: packages/app/src/Components/Spotlight/SpotlightThreadModal.tsx type SpotlightThreadModalProps (line 9) | interface SpotlightThreadModalProps { function SpotlightThreadModal (line 19) | function SpotlightThreadModal(props: SpotlightThreadModalProps) { type SpotlightFromEventProps (line 54) | interface SpotlightFromEventProps { function SpotlightFromEvent (line 61) | function SpotlightFromEvent({ event, onClose, onNext, onPrev }: Spotligh... FILE: packages/app/src/Components/Spotlight/context.tsx type SpotlightContextState (line 5) | interface SpotlightContextState { function SpotlightContextWrapper (line 13) | function SpotlightContextWrapper({ children }: { children: ReactNode }) { FILE: packages/app/src/Components/SuggestedProfiles.tsx function SuggestedProfiles (line 21) | function SuggestedProfiles() { FILE: packages/app/src/Components/TabSelectors/TabSelectors.tsx type Tab (line 6) | interface Tab { type TabsProps (line 12) | interface TabsProps { type TabElementProps (line 19) | interface TabElementProps extends Omit { FILE: packages/app/src/Components/Tasks/BackupKey.tsx class BackupKeyTask (line 9) | class BackupKeyTask extends BaseUITask { method check (line 13) | check(_: CachedMetadata, session: LoginSession): boolean { method render (line 17) | render() { FILE: packages/app/src/Components/Tasks/DonateTask.tsx class DonateTask (line 6) | class DonateTask extends BaseUITask { method check (line 9) | check(): boolean { method render (line 13) | render() { FILE: packages/app/src/Components/Tasks/FollowMorePeople.tsx class FollowMorePeopleTask (line 8) | class FollowMorePeopleTask extends BaseUITask { method check (line 11) | check(_meta: CachedMetadata, session: LoginSession): boolean { method render (line 15) | render() { FILE: packages/app/src/Components/Tasks/Nip5Task.tsx class Nip5Task (line 7) | class Nip5Task extends BaseUITask { method check (line 10) | check(user: CachedMetadata): boolean { method render (line 14) | render() { FILE: packages/app/src/Components/Tasks/NoticeZapPool.tsx class NoticeZapPoolDefault (line 7) | class NoticeZapPoolDefault extends BaseUITask { method check (line 10) | check(): boolean { method render (line 14) | render() { FILE: packages/app/src/Components/Tasks/PendingChangesTask.tsx class PendingChangesTask (line 9) | class PendingChangesTask extends BaseUITask { method check (line 12) | check(_meta: CachedMetadata, session: LoginSession): boolean { method render (line 16) | render() { function PendingChangesContent (line 21) | function PendingChangesContent() { FILE: packages/app/src/Components/Tasks/RenewSubscription.tsx class RenewSubTask (line 9) | class RenewSubTask extends BaseUITask { method check (line 12) | check(_user: CachedMetadata, session: LoginSession): boolean { method render (line 17) | render() { FILE: packages/app/src/Components/Tasks/TaskList.tsx class TaskStore (line 18) | class TaskStore extends ExternalStore> { method constructor (line 21) | constructor() { method takeSnapshot (line 44) | takeSnapshot(): UITask[] { function TaskList (line 51) | function TaskList() { FILE: packages/app/src/Components/Tasks/index.ts type UITask (line 6) | interface UITask { type UITaskState (line 18) | interface UITaskState { method constructor (line 33) | constructor() { method mute (line 37) | mute(): void { method load (line 42) | load(cb: () => void) { method #save (line 50) | #save() { FILE: packages/app/src/Components/Text/Text.tsx type TextProps (line 23) | interface TextProps { function Text (line 38) | function Text({ function findGallery (line 226) | function findGallery(elements: Array): [number, number] ... function buildGallery (line 254) | function buildGallery( FILE: packages/app/src/Components/Text/const.ts constant ROW_HEIGHT (line 50) | const ROW_HEIGHT = 200 constant GRID_GAP (line 51) | const GRID_GAP = 2 FILE: packages/app/src/Components/Textarea/Textarea.tsx type EmojiItemProps (line 17) | interface EmojiItemProps { type TextareaProps (line 40) | interface TextareaProps { type TriggerData (line 53) | type TriggerData = EmojiItemProps | FuzzySearchResult FILE: packages/app/src/Components/Toaster/Toaster.tsx type ToastNotification (line 8) | interface ToastNotification { class ToasterSlots (line 15) | class ToasterSlots extends ExternalStore> { method push (line 18) | push(n: ToastNotification) { method takeSnapshot (line 25) | takeSnapshot(): ToastNotification[] { method remove (line 29) | remove(id?: string) { function Toaster (line 37) | function Toaster() { FILE: packages/app/src/Components/Trending/ShortNote.tsx function TrendingNote (line 8) | function TrendingNote({ event }: { event: TaggedNostrEvent }) { FILE: packages/app/src/Components/Trending/TrendingHashtags.tsx function TrendingHashtags (line 13) | function TrendingHashtags({ FILE: packages/app/src/Components/Trending/TrendingPosts.tsx function TrendingNotes (line 14) | function TrendingNotes({ count = Infinity, small = false }: { count?: nu... FILE: packages/app/src/Components/Trending/TrendingUsers.tsx function TrendingUsers (line 11) | function TrendingUsers({ FILE: packages/app/src/Components/Upload/file-picker.tsx function MediaServerFileList (line 13) | function MediaServerFileList({ function ServerFile (line 96) | function ServerFile({ file, checked, onClick }: { file: BlobDescriptor; ... FILE: packages/app/src/Components/User/AnimalName.ts function capitalize (line 1823) | function capitalize(s: string) { FILE: packages/app/src/Components/User/Avatar.tsx type AvatarProps (line 8) | interface AvatarProps { FILE: packages/app/src/Components/User/AvatarEditor.tsx type AvatarEditorProps (line 9) | interface AvatarEditorProps { function AvatarEditor (line 16) | function AvatarEditor({ picture, onPictureChange, privKey, className }: ... FILE: packages/app/src/Components/User/AvatarGroup.tsx function AvatarGroup (line 3) | function AvatarGroup({ ids, ...props }: { ids: string[] } & Omit) { FILE: packages/app/src/Components/User/UserWebsiteLink.tsx function UserWebsiteLink (line 5) | function UserWebsiteLink({ user }: { user?: CachedMetadata | UserMetadat... FILE: packages/app/src/Components/User/Username.tsx function Username (line 7) | function Username({ pubkey, onLinkVisit }: { pubkey: string; onLinkVisit... FILE: packages/app/src/Components/WarningNotice/WarningNotice.tsx function WarningNotice (line 3) | function WarningNotice({ children, onClick }: { children: React.ReactNod... FILE: packages/app/src/Components/ZapModal/SuccessAction.tsx function SuccessAction (line 6) | function SuccessAction({ success }: { success: LNURLSuccessAction }) { FILE: packages/app/src/Components/ZapModal/ZapModal.tsx type SendSatsProps (line 16) | interface SendSatsProps { function ZapModal (line 26) | function ZapModal(props: SendSatsProps) { FILE: packages/app/src/Components/ZapModal/ZapModalInput.tsx type SendSatsInputSelection (line 15) | interface SendSatsInputSelection { function ZapModalInput (line 21) | function ZapModalInput(props: { FILE: packages/app/src/Components/ZapModal/ZapModalInvoice.tsx function ZapModalInvoice (line 9) | function ZapModalInvoice(props: { FILE: packages/app/src/Components/ZapModal/ZapModalTitle.tsx function ZapModalTitle (line 8) | function ZapModalTitle({ FILE: packages/app/src/Components/ZapModal/ZapType.tsx type ZapType (line 1) | enum ZapType { FILE: packages/app/src/Components/ZapModal/ZapTypeSelector.tsx function ZapTypeSelector (line 8) | function ZapTypeSelector({ zapType, setZapType }: { zapType: ZapType; se... FILE: packages/app/src/Components/flyout.tsx function Flyout (line 7) | function Flyout({ FILE: packages/app/src/Components/json.tsx function JsonBlock (line 1) | function JsonBlock({ obj }: { obj: object }) { FILE: packages/app/src/Components/kind-name.tsx function KindName (line 8) | function KindName({ kind }: { kind: number }) { FILE: packages/app/src/Components/nip.tsx function NipDescription (line 3) | function NipDescription({ nip }: { nip: number }) { FILE: packages/app/src/Components/zap-amount.tsx function ZapAmount (line 5) | function ZapAmount({ n }: { n: number }) { FILE: packages/app/src/Db/FuzzySearch.ts type FuzzySearchResult (line 4) | type FuzzySearchResult = { FILE: packages/app/src/External/NostrBand.ts type TrendingProfile (line 4) | interface TrendingProfile { type TrendingProfilesResponse (line 11) | interface TrendingProfilesResponse { type TrendingHashtagsResponse (line 15) | interface TrendingHashtagsResponse { class NostrBandApi (line 19) | class NostrBandApi extends JsonApi { method trendingProfiles (line 23) | async trendingProfiles() { method trendingHashtags (line 35) | async trendingHashtags(lang?: string) { FILE: packages/app/src/External/NostrServices.ts type LinkPreviewData (line 3) | interface LinkPreviewData { class NostrServices (line 13) | class NostrServices extends JsonApi { method constructor (line 15) | constructor(url?: string) { method linkPreview (line 20) | linkPreview(url: string) { FILE: packages/app/src/External/SnortApi.ts type RevenueToday (line 7) | interface RevenueToday { type RevenueSplit (line 12) | interface RevenueSplit { type InvoiceResponse (line 17) | interface InvoiceResponse { type Subscription (line 21) | interface Subscription { type SubscriptionErrorCode (line 30) | enum SubscriptionErrorCode { class SubscriptionError (line 36) | class SubscriptionError extends Error { method constructor (line 39) | constructor(msg: string, code: SubscriptionErrorCode) { type PushNotifications (line 45) | interface PushNotifications { type TranslationRequest (line 52) | interface TranslationRequest { type TranslationResponse (line 57) | interface TranslationResponse { type RelayDistance (line 64) | interface RelayDistance { type RefCodeResponse (line 74) | interface RefCodeResponse { class SnortApi (line 84) | class SnortApi extends JsonApi { method constructor (line 88) | constructor(url?: string, signer?: EventSigner | EventPublisher) { method revenueSplits (line 94) | revenueSplits() { method revenueToday (line 98) | revenueToday() { method createSubscription (line 102) | createSubscription(type: number, refCode?: string) { method renewSubscription (line 109) | renewSubscription(id: string, months = 1) { method listSubscriptions (line 116) | listSubscriptions() { method onChainDonation (line 123) | onChainDonation() { method getPushNotificationInfo (line 127) | getPushNotificationInfo() { method registerPushNotifications (line 131) | registerPushNotifications(sub: PushNotifications) { method translate (line 138) | translate(tx: TranslationRequest) { method closeRelays (line 142) | closeRelays(lat: number, lon: number, count = 5) { method getRefCode (line 146) | getRefCode() { method getRefCodeInfo (line 153) | getRefCodeInfo(code: string) { method applyForLeader (line 157) | applyForLeader() { FILE: packages/app/src/External/base.ts method getJsonAuthd (line 6) | protected async getJsonAuthd( method getJson (line 25) | protected async getJson( FILE: packages/app/src/Feed/ArticlesFeed.ts function useArticles (line 8) | function useArticles(limit = 10) { function useCachedArticles (line 22) | function useCachedArticles(limit = 10) { FILE: packages/app/src/Feed/BadgesFeed.ts type BadgeAwards (line 7) | type BadgeAwards = { function useProfileBadges (line 12) | function useProfileBadges(pubkey: string) { FILE: packages/app/src/Feed/FollowersFeed.ts function useFollowersFeed (line 7) | function useFollowersFeed(pubkey?: string) { FILE: packages/app/src/Feed/FollowsFeed.ts function useFollowsFeed (line 5) | function useFollowsFeed(pubkey?: string) { function getFollowing (line 20) | function getFollowing(notes: readonly TaggedNostrEvent[], pubkey?: strin... FILE: packages/app/src/Feed/HashtagsFeed.ts function useHashtagsFeed (line 9) | function useHashtagsFeed() { FILE: packages/app/src/Feed/LoginFeed.ts function useLoginFeed (line 18) | function useLoginFeed() { FILE: packages/app/src/Feed/RelayState.ts function useRelayState (line 4) | function useRelayState(addr: string) { FILE: packages/app/src/Feed/RelaysFeed.tsx function useRelaysFeed (line 5) | function useRelaysFeed(pubkey?: string) { FILE: packages/app/src/Feed/StatusFeed.ts function useStatusFeed (line 8) | function useStatusFeed(id?: string, leaveOpen = false) { FILE: packages/app/src/Feed/TimelineFeed.ts type TimelineFeedOptions (line 11) | interface TimelineFeedOptions { type TimelineSubject (line 17) | interface TimelineSubject { type TimelineFeed (line 26) | type TimelineFeed = ReturnType function useTimelineFeed (line 28) | function useTimelineFeed(subject: TimelineSubject, options: TimelineFeed... FILE: packages/app/src/Feed/WorkerRelayView.ts function useNotificationsView (line 7) | function useNotificationsView() { FILE: packages/app/src/Feed/ZapsFeed.ts function useZapsFeed (line 5) | function useZapsFeed(link?: NostrLink) { FILE: packages/app/src/Hooks/useAiAgent.ts class CustomModelProvider (line 24) | class CustomModelProvider implements ModelProvider { method constructor (line 28) | constructor(apiUrl: string, apiKey: string | undefined, modelName: str... method getModel (line 37) | async getModel(modelName?: string) { method listModels (line 41) | async listModels(): Promise> { constant AI_CONFIG (line 52) | const AI_CONFIG = { type ModelInfo (line 58) | interface ModelInfo { type AiStreamEvent (line 63) | type AiStreamEvent = type ChatHistoryItem (line 71) | interface ChatHistoryItem { type AgentInstance (line 76) | interface AgentInstance { function useAiAgent (line 83) | function useAiAgent() { FILE: packages/app/src/Hooks/useAppHandler.ts type AppHandler (line 14) | interface AppHandler { function useAppHandler (line 20) | function useAppHandler(kind: EventKind | undefined): Array { FILE: packages/app/src/Hooks/useBlindSpot.ts function useBlindSpot (line 7) | function useBlindSpot(count = 10) { FILE: packages/app/src/Hooks/useBlossomServers.ts function useBlossomServers (line 6) | function useBlossomServers(authors?: Array | Array) { FILE: packages/app/src/Hooks/useCloseRelays.ts type RelayDistance (line 10) | interface RelayDistance { function useCloseRelays (line 16) | function useCloseRelays() { FILE: packages/app/src/Hooks/useCommunityLeaders.tsx function useCommunityLeaders (line 9) | function useCommunityLeaders() { function useCommunityLeader (line 26) | function useCommunityLeader(pubkey?: string) { FILE: packages/app/src/Hooks/useContentDiscovery.ts function useContentDiscovery (line 6) | function useContentDiscovery(serviceProvider: string, relays?: Array(initialValue: T, key: string) { FILE: packages/app/src/Hooks/useHorizontalScroll.tsx function useHorizontalScroll (line 3) | function useHorizontalScroll() { FILE: packages/app/src/Hooks/useHovering.ts type HoveringProps (line 3) | interface HoveringProps { function useHovering (line 8) | function useHovering(props?: HoveringProps) { FILE: packages/app/src/Hooks/useImgProxy.ts function useImgProxy (line 5) | function useImgProxy() { FILE: packages/app/src/Hooks/useKeyboardShortcut.ts function useKeyboardShortcut (line 3) | function useKeyboardShortcut(key: string, callback: (event: KeyboardEven... FILE: packages/app/src/Hooks/useLists.tsx function useLinkList (line 12) | function useLinkList(id: string, kinds: Array, pubkey: string... function useLinkListEvents (line 30) | function useLinkListEvents(id: string, kinds: Array, pubkey: ... function usePinList (line 35) | function usePinList(pubkey: string | undefined) { function useBookmarkList (line 39) | function useBookmarkList(pubkey: string | undefined) { function useInterestsList (line 43) | function useInterestsList(pubkey: string | undefined) { FILE: packages/app/src/Hooks/useLiveStreams.ts function useLiveStreams (line 9) | function useLiveStreams() { FILE: packages/app/src/Hooks/useLoading.tsx function useLoading (line 3) | function useLoading(fn: ((e: React.MouseEvent) => Promise | T) | u... FILE: packages/app/src/Hooks/useLogin.tsx function useLogin (line 5) | function useLogin(selector?: (v: LoginSession) => T) { FILE: packages/app/src/Hooks/useLoginHandler.tsx function useLoginHandler (line 8) | function useLoginHandler() { FILE: packages/app/src/Hooks/useLoginRelays.tsx function useLoginRelays (line 7) | function useLoginRelays() { function updateRelayConnections (line 18) | async function updateRelayConnections(system: SystemInterface, relays: R... FILE: packages/app/src/Hooks/useMediaServerList.ts function useMediaServerList (line 15) | function useMediaServerList() { FILE: packages/app/src/Hooks/useModeration.tsx class MutedWordTag (line 15) | class MutedWordTag implements ToNostrEventTag { method constructor (line 16) | constructor(readonly word: string) {} method equals (line 17) | equals(other: ToNostrEventTag): boolean { method toEventTag (line 21) | toEventTag(): string[] | undefined { function useModeration (line 26) | function useModeration() { FILE: packages/app/src/Hooks/usePageDimensions.tsx function usePageDimensions (line 3) | function usePageDimensions() { FILE: packages/app/src/Hooks/usePreferences.ts function usePreferences (line 5) | function usePreferences(selector?: (v: UserPreferen... function useAllPreferences (line 17) | function useAllPreferences() { FILE: packages/app/src/Hooks/useProfileLink.ts function useProfileLink (line 7) | function useProfileLink(pubkey?: string, user?: UserMetadata | CachedMet... FILE: packages/app/src/Hooks/useProfileSearch.tsx function useProfileSearch (line 5) | function useProfileSearch() { function userSearch (line 10) | function userSearch(wot: WoT, search: string | undefined) { FILE: packages/app/src/Hooks/useRates.tsx function useRates (line 9) | function useRates(symbol: string, leaveOpen = true) { function useRateHistory (line 37) | function useRateHistory(symbol: string, size: number, leaveOpen = false) { FILE: packages/app/src/Hooks/useRelays.tsx function useRelays (line 3) | function useRelays() { FILE: packages/app/src/Hooks/useTextTransformCache.tsx function transformTextCached (line 8) | function transformTextCached(id: string, content: string, tags: Array> { method addMessage (line 30) | addMessage(msg: ChatMessage) { method addStreamChunk (line 35) | addStreamChunk(msgId: string, event: AiStreamEvent) { method updateMessage (line 63) | updateMessage(msgId: string, fnUpdate: (old: ChatMessage) => void) { method takeSnapshot (line 71) | takeSnapshot(p?: any): ChatMessage[] { function AgentPage (line 76) | function AgentPage() { FILE: packages/app/src/Pages/CacheDebug.tsx function DebugPage (line 7) | function DebugPage() { FILE: packages/app/src/Pages/ComponentDebug.tsx constant SAMPLE_HEX_PUBKEY (line 114) | const SAMPLE_HEX_PUBKEY = bech32ToHex(KieranPubKey) constant SAMPLE_PUBKEY_2 (line 116) | const SAMPLE_PUBKEY_2 = "4523be58d395b1b196a9b8c82b038b6895cb02b683d0c25... constant SAMPLE_PUBKEY_3 (line 117) | const SAMPLE_PUBKEY_3 = "7fa56f5d6962ab1e3cd424e758c3002b8665f7b0d8dcee9... constant SAMPLE_INVOICE (line 119) | const SAMPLE_INVOICE = constant SAMPLE_YOUTUBE_URL (line 121) | const SAMPLE_YOUTUBE_URL = "https://www.youtube.com/watch?v=dQw4w9WgXcQ" constant SAMPLE_SPOTIFY_URL (line 122) | const SAMPLE_SPOTIFY_URL = "https://open.spotify.com/track/4cOdK2wGLETKB... constant SAMPLE_APPLE_MUSIC_URL (line 123) | const SAMPLE_APPLE_MUSIC_URL = "https://music.apple.com/us/album/example" constant SAMPLE_TIDAL_URL (line 124) | const SAMPLE_TIDAL_URL = "https://tidal.com/browse/track/111398735" constant SAMPLE_SOUNDCLOUD_URL (line 125) | const SAMPLE_SOUNDCLOUD_URL = "https://soundcloud.com/djgrooveteck/sidep... constant SAMPLE_WAVLAKE_URL (line 126) | const SAMPLE_WAVLAKE_URL = "https://wavlake.com/track/1079f9b0-e60a-4eba... constant SAMPLE_MIXCLOUD_URL (line 127) | const SAMPLE_MIXCLOUD_URL = "https://www.mixcloud.com/johndigweed/transi... constant SAMPLE_NOSTR_NESTS_URL (line 128) | const SAMPLE_NOSTR_NESTS_URL = "https://nostrnests.com/example" constant SAMPLE_CASHU_TOKEN (line 129) | const SAMPLE_CASHU_TOKEN = constant SAMPLE_POLL_EVENT (line 133) | const SAMPLE_POLL_EVENT = { constant SAMPLE_LONG_FORM_EVENT (line 148) | const SAMPLE_LONG_FORM_EVENT = { constant SAMPLE_ZAP_GOAL_EVENT (line 165) | const SAMPLE_ZAP_GOAL_EVENT = { constant SAMPLE_TEXT_NOTE (line 177) | const SAMPLE_TEXT_NOTE = { constant SAMPLE_GALLERY_1_NOTE (line 190) | const SAMPLE_GALLERY_1_NOTE = { constant SAMPLE_GALLERY_2_NOTE (line 202) | const SAMPLE_GALLERY_2_NOTE = { constant SAMPLE_GALLERY_3_NOTE (line 214) | const SAMPLE_GALLERY_3_NOTE = { constant SAMPLE_GALLERY_4_NOTE (line 227) | const SAMPLE_GALLERY_4_NOTE = { constant SAMPLE_GALLERY_5_NOTE (line 240) | const SAMPLE_GALLERY_5_NOTE = { constant SAMPLE_GALLERY_6_NOTE (line 253) | const SAMPLE_GALLERY_6_NOTE = { constant SAMPLE_REPOST (line 266) | const SAMPLE_REPOST = { constant SAMPLE_REPLY (line 281) | const SAMPLE_REPLY = { constant SAMPLE_LIVE_STREAM_EVENT (line 295) | const SAMPLE_LIVE_STREAM_EVENT = { function ComponentDebugPage (line 340) | function ComponentDebugPage() { FILE: packages/app/src/Pages/Deck/Articles.tsx function Articles (line 7) | function Articles({ noteProps }: { noteProps?: Omit }) { FILE: packages/app/src/Pages/Deck/Columns.tsx function NotesCol (line 13) | function NotesCol() { function ArticlesCol (line 32) | function ArticlesCol() { function MediaCol (line 46) | function MediaCol({ setThread }: { setThread: (e: NostrLink) => void }) { function NotificationsCol (line 73) | function NotificationsCol({ setThread }: { setThread: (e: NostrLink) => ... FILE: packages/app/src/Pages/Deck/DeckLayout.tsx type Cols (line 22) | type Cols = "notes" | "articles" | "media" | "streams" | "notifications" type DeckState (line 24) | interface DeckState { type DeckScope (line 29) | interface DeckScope { function SnortDeckLayout (line 37) | function SnortDeckLayout() { FILE: packages/app/src/Pages/Discover.tsx type DiscoverTab (line 10) | type DiscoverTab = Tab & { function Discover (line 13) | function Discover() { FILE: packages/app/src/Pages/Donate/DonatePage.tsx function getOnChainAddress (line 24) | async function getOnChainAddress() { function loadData (line 29) | async function loadData() { function actions (line 40) | function actions(pk: string) { FILE: packages/app/src/Pages/Donate/ZapPoolDonateSection.tsx function ZapPoolDonateSection (line 10) | function ZapPoolDonateSection() { FILE: packages/app/src/Pages/FixedPage.tsx function FixedPage (line 3) | function FixedPage({ children, className }: { children?: ReactNode, clas... FILE: packages/app/src/Pages/FreeNostrAddressPage.tsx function FreeNostrAddressPage (line 4) | function FreeNostrAddressPage() { FILE: packages/app/src/Pages/HashTagsPage.tsx function HashTagHeader (line 42) | function HashTagHeader({ tag, events, className }: { tag: string; events... FILE: packages/app/src/Pages/HelpPage.tsx function HelpPage (line 7) | function HelpPage() { FILE: packages/app/src/Pages/Layout/Footer.tsx type MenuItem (line 13) | type MenuItem = { constant MENU_ITEMS (line 22) | const MENU_ITEMS: MenuItem[] = [ FILE: packages/app/src/Pages/Layout/HasNotificationsMarker.tsx function HasNotificationsMarker (line 6) | function HasNotificationsMarker() { FILE: packages/app/src/Pages/Layout/Header.tsx function Header (line 21) | function Header() { function NoteTitle (line 123) | function NoteTitle({ link }: { link: NostrLink }) { FILE: packages/app/src/Pages/Layout/LogoHeader.tsx function ordinal_suffix_of (line 12) | function ordinal_suffix_of(i: number) { function LogoHeader (line 41) | function LogoHeader({ showText = false }: { showText: boolean }) { FILE: packages/app/src/Pages/Layout/NavSidebar.tsx constant MENU_ITEMS (line 18) | const MENU_ITEMS = [ function NavSidebar (line 66) | function NavSidebar({ narrow = false }: { narrow?: boolean }) { FILE: packages/app/src/Pages/Layout/ProfileMenu.tsx function ProfileMenu (line 14) | function ProfileMenu({ className }: { className?: string }) { FILE: packages/app/src/Pages/Layout/RightColumn.tsx function RightColumn (line 23) | function RightColumn() { FILE: packages/app/src/Pages/Layout/index.tsx function Index (line 26) | function Index() { function StalkerModal (line 100) | function StalkerModal({ id }: { id: string }) { FILE: packages/app/src/Pages/ListFeedPage.tsx function ListFeedPage (line 13) | function ListFeedPage() { FILE: packages/app/src/Pages/Messages/ChatParticipant.tsx function ChatParticipantProfile (line 8) | function ChatParticipantProfile({ participant }: { participant: ChatPart... FILE: packages/app/src/Pages/Messages/DM.tsx type DMProps (line 13) | interface DMProps { function DM (line 18) | function DM(props: DMProps) { FILE: packages/app/src/Pages/Messages/DmWindow.tsx function DmWindow (line 12) | function DmWindow({ id }: { id: string }) { function DmChatSelected (line 54) | function DmChatSelected({ chat }: { chat: Chat }) { FILE: packages/app/src/Pages/Messages/MessagesPage.tsx function MessagesPage (line 22) | function MessagesPage() { FILE: packages/app/src/Pages/Messages/NewChatWindow.tsx function NewChatWindow (line 14) | function NewChatWindow() { FILE: packages/app/src/Pages/Messages/WriteMessage.tsx function WriteMessage (line 8) | function WriteMessage({ chat }: { chat: Chat }) { FILE: packages/app/src/Pages/NostrAddressPage.tsx function NostrAddressPage (line 8) | function NostrAddressPage() { FILE: packages/app/src/Pages/NostrLinkHandler.tsx function NostrLinkHandler (line 11) | function NostrLinkHandler() { FILE: packages/app/src/Pages/Notifications/NotificationGroup.tsx function NotificationGroup (line 20) | function NotificationGroup({ FILE: packages/app/src/Pages/Notifications/Notifications.tsx type NotificationSummaryFilter (line 16) | enum NotificationSummaryFilter { function FilterIcon (line 35) | function FilterIcon({ function NotificationsPage (line 59) | function NotificationsPage({ onClick }: { onClick?: (link: NostrLink) =>... FILE: packages/app/src/Pages/Notifications/getNotificationContext.tsx function getNotificationContext (line 3) | function getNotificationContext(ev: TaggedNostrEvent) { FILE: packages/app/src/Pages/Notifications/notificationContext.tsx function NotificationContext (line 10) | function NotificationContext({ link }: { link: NostrLink }) { FILE: packages/app/src/Pages/Profile/ProfilePage.tsx type ProfilePageProps (line 30) | interface ProfilePageProps { function ProfilePage (line 35) | function ProfilePage({ id: propId, state }: ProfilePageProps) { FILE: packages/app/src/Pages/Profile/ProfileTabComponents.tsx function ZapsProfileTab (line 20) | function ZapsProfileTab({ id }: { id: string }) { function FollowersTab (line 75) | function FollowersTab({ id }: { id: string }) { function FollowsTab (line 90) | function FollowsTab({ id }: { id: string }) { function RelaysTab (line 105) | function RelaysTab({ id }: { id: string }) { function BookMarksTab (line 125) | function BookMarksTab({ id }: { id: string }) { function ReactionsTab (line 130) | function ReactionsTab({ id }: { id: string }) { function ProfileNotesTab (line 146) | function ProfileNotesTab({ id, relays, isMe }: { id: string; relays?: Ar... FILE: packages/app/src/Pages/Profile/ProfileTabType.tsx type ProfileTabType (line 1) | enum ProfileTabType { FILE: packages/app/src/Pages/Root/BlindSpots.tsx function BlindSpots (line 4) | function BlindSpots() { FILE: packages/app/src/Pages/Root/FollowSets.tsx function FollowSetsPage (line 17) | function FollowSetsPage() { FILE: packages/app/src/Pages/Root/Media.tsx function MediaPosts (line 6) | function MediaPosts() { FILE: packages/app/src/Pages/Root/RelayFeedPage.tsx function RelayFeedPage (line 7) | function RelayFeedPage() { FILE: packages/app/src/Pages/Root/RootRoutes.tsx function RootPage (line 9) | function RootPage() { FILE: packages/app/src/Pages/Root/RootTabRoutes.tsx type RootTabRoutePath (line 3) | type RootTabRoutePath = type RootTabRoute (line 20) | type RootTabRoute = RouteObject method lazy (line 25) | async lazy() { method lazy (line 32) | async lazy() { method lazy (line 39) | async lazy() { method lazy (line 46) | async lazy() { method lazy (line 53) | async lazy() { method lazy (line 60) | async lazy() { method lazy (line 67) | async lazy() { method lazy (line 74) | async lazy() { method lazy (line 81) | async lazy() { method lazy (line 93) | async lazy() { method lazy (line 100) | async lazy() { method lazy (line 107) | async lazy() { method lazy (line 114) | async lazy() { method lazy (line 121) | async lazy() { method lazy (line 128) | async lazy() { method lazy (line 135) | async lazy() { FILE: packages/app/src/Pages/SearchPage.tsx constant NOTES (line 11) | const NOTES = 0 constant PROFILES (line 12) | const PROFILES = 1 FILE: packages/app/src/Pages/TopicsPage.tsx function TopicsPage (line 9) | function TopicsPage() { FILE: packages/app/src/Pages/ZapPool/ZapPool.tsx function ZapPoolPage (line 6) | function ZapPoolPage() { FILE: packages/app/src/Pages/ZapPool/ZapPoolPageInner.tsx function ZapPoolPageInner (line 22) | function ZapPoolPageInner() { FILE: packages/app/src/Pages/ZapPool/ZapPoolTarget.tsx function ZapPoolTargetInner (line 8) | function ZapPoolTargetInner({ target }: { target: ZapPoolRecipient }) { function ZapPoolTarget (line 44) | function ZapPoolTarget({ target }: { target: ZapPoolRecipient }) { FILE: packages/app/src/Pages/onboarding/discover.tsx function Discover (line 9) | function Discover() { FILE: packages/app/src/Pages/onboarding/index.tsx type NewUserState (line 16) | interface NewUserState { function OnboardingLayout (line 23) | function OnboardingLayout() { FILE: packages/app/src/Pages/onboarding/moderation.tsx function Moderation (line 11) | function Moderation() { FILE: packages/app/src/Pages/onboarding/profile.tsx function Profile (line 14) | function Profile() { FILE: packages/app/src/Pages/onboarding/routes.ts method lazy (line 3) | async lazy() { method lazy (line 10) | async lazy() { method lazy (line 17) | async lazy() { method lazy (line 24) | async lazy() { method lazy (line 31) | async lazy() { method lazy (line 38) | async lazy() { method lazy (line 45) | async lazy() { FILE: packages/app/src/Pages/onboarding/sign-in.tsx constant NIP46_PERMS (line 17) | const NIP46_PERMS = function SignIn (line 20) | function SignIn() { FILE: packages/app/src/Pages/onboarding/sign-up.tsx function SignUp (line 12) | function SignUp() { FILE: packages/app/src/Pages/onboarding/topics.tsx function Topics (line 12) | function Topics() { FILE: packages/app/src/Pages/settings/Accounts.tsx function AccountsPage (line 8) | function AccountsPage() { FILE: packages/app/src/Pages/settings/Cache.tsx function CacheSettings (line 14) | function CacheSettings() { function CacheDetails (line 30) | function CacheDetails({ cache, name }: { cache: CachedTable; name:... function RelayCacheStats (line 65) | function RelayCacheStats() { FILE: packages/app/src/Pages/settings/Keys.tsx function ExportKeys (line 12) | function ExportKeys() { FILE: packages/app/src/Pages/settings/Menu/Menu.tsx type SettingsMenuItems (line 10) | type SettingsMenuItems = Array<{ FILE: packages/app/src/Pages/settings/Menu/SettingsMenuComponent.tsx function SettingsMenuComponent (line 7) | function SettingsMenuComponent({ menu }: { menu: SettingsMenuItems }) { FILE: packages/app/src/Pages/settings/Moderation.tsx function ModerationSettingsPage (line 8) | function ModerationSettingsPage() { FILE: packages/app/src/Pages/settings/Notifications.tsx type StatusIndicatorProps (line 11) | interface StatusIndicatorProps { FILE: packages/app/src/Pages/settings/Preferences.tsx function row (line 20) | function row(title: ReactNode, description: ReactNode | undefined, contr... FILE: packages/app/src/Pages/settings/Profile.tsx type ProfileSettingsProps (line 18) | interface ProfileSettingsProps { function ProfileSettings (line 23) | function ProfileSettings(props: ProfileSettingsProps) { FILE: packages/app/src/Pages/settings/Referrals.tsx function ReferralsPage (line 12) | function ReferralsPage() { FILE: packages/app/src/Pages/settings/Relays.tsx function addNewRelay (line 21) | async function addNewRelay() { function addRelay (line 37) | function addRelay() { function myRelays (line 61) | function myRelays() { FILE: packages/app/src/Pages/settings/Routes.tsx method lazy (line 19) | async lazy() { method lazy (line 26) | async lazy() { method lazy (line 33) | async lazy() { method lazy (line 40) | async lazy() { method lazy (line 47) | async lazy() { method lazy (line 54) | async lazy() { method lazy (line 61) | async lazy() { method lazy (line 68) | async lazy() { method lazy (line 75) | async lazy() { method lazy (line 82) | async lazy() { method lazy (line 89) | async lazy() { method lazy (line 96) | async lazy() { method lazy (line 103) | async lazy() { FILE: packages/app/src/Pages/settings/handle/LNAddress.tsx function LNForwardAddress (line 10) | function LNForwardAddress({ handle }: { handle: ManageHandle }) { FILE: packages/app/src/Pages/settings/handle/ListHandles.tsx function ListHandles (line 11) | function ListHandles() { FILE: packages/app/src/Pages/settings/handle/Manage.tsx function ManageHandleIndex (line 9) | function ManageHandleIndex() { FILE: packages/app/src/Pages/settings/handle/TransferHandle.tsx function TransferHandle (line 11) | function TransferHandle({ handle }: { handle: ManageHandle }) { FILE: packages/app/src/Pages/settings/handle/routes.tsx function ManageHandlePage (line 4) | function ManageHandlePage() { method lazy (line 24) | async lazy() { method lazy (line 31) | async lazy() { FILE: packages/app/src/Pages/settings/media-settings.tsx function MediaSettingsPage (line 14) | function MediaSettingsPage() { FILE: packages/app/src/Pages/settings/relays/discover.tsx function DiscoverRelays (line 17) | function DiscoverRelays() { FILE: packages/app/src/Pages/settings/saveRelays.tsx function saveRelays (line 5) | async function saveRelays( FILE: packages/app/src/Pages/settings/tools/follows-relay-health.tsx function FollowsRelayHealth (line 12) | function FollowsRelayHealth({ FILE: packages/app/src/Pages/settings/tools/index.tsx function ToolsPage (line 7) | function ToolsPage() { FILE: packages/app/src/Pages/settings/tools/prune-follows.tsx type PruneStage (line 14) | enum PruneStage { function PruneFollowList (line 19) | function PruneFollowList() { FILE: packages/app/src/Pages/settings/tools/routes.tsx method lazy (line 53) | async lazy() { method lazy (line 60) | async lazy() { method lazy (line 67) | async lazy() { FILE: packages/app/src/Pages/settings/tools/sync-account.tsx function SyncAccountTool (line 12) | function SyncAccountTool() { FILE: packages/app/src/Pages/settings/wallet/Alby.tsx function AlbyOAuth (line 10) | function AlbyOAuth() { FILE: packages/app/src/Pages/settings/wallet/LNDHub.tsx function tryConnect (line 17) | async function tryConnect(config: string) { FILE: packages/app/src/Pages/settings/wallet/NWC.tsx function tryConnect (line 17) | async function tryConnect(config: string) { FILE: packages/app/src/Pages/settings/wallet/routes.tsx method lazy (line 6) | async lazy() { method lazy (line 13) | async lazy() { method lazy (line 20) | async lazy() { method lazy (line 27) | async lazy() { FILE: packages/app/src/Pages/settings/wallet/utils.ts function getAlbyOAuth (line 6) | function getAlbyOAuth() { type OAuthToken (line 70) | interface OAuthToken { FILE: packages/app/src/Pages/subscribe/ManageSubscription.tsx function ManageSubscriptionPage (line 13) | function ManageSubscriptionPage() { FILE: packages/app/src/Pages/subscribe/RenewSub.tsx function RenewSub (line 13) | function RenewSub({ sub: s }: { sub?: Subscription }) { FILE: packages/app/src/Pages/subscribe/SubscriptionCard.tsx function SubscriptionCard (line 12) | function SubscriptionCard({ sub }: { sub: Subscription }) { FILE: packages/app/src/Pages/subscribe/index.tsx function SubscribePage (line 18) | function SubscribePage() { FILE: packages/app/src/Pages/subscribe/utils.tsx function mapPlanName (line 6) | function mapPlanName(id: number) { function mapFeatureName (line 15) | function mapFeatureName(k: LockedFeatures) { function mapSubscriptionErrorCode (line 58) | function mapSubscriptionErrorCode(c: SubscriptionError) { FILE: packages/app/src/Pages/wallet/index.tsx function WalletPage (line 18) | function WalletPage(props: { showHistory: boolean }) { FILE: packages/app/src/Pages/wallet/price-chart.tsx type TimeRange (line 7) | type TimeRange = "1D" | "1W" | "1M" | "3M" | "1Y" | "ALL" type ChartData (line 9) | interface ChartData { function CustomTooltip (line 15) | function CustomTooltip({ active, payload }: TooltipProps) { constant TIME_RANGES (line 41) | const TIME_RANGES: Record { method constructor (line 35) | constructor() { method #reset (line 51) | #reset(d: NoteCreatorDataSnapshot) { method takeSnapshot (line 83) | takeSnapshot(): NoteCreatorDataSnapshot { function useNoteCreator (line 95) | function useNoteCreator( FILE: packages/app/src/Utils/Login/Functions.ts function logout (line 30) | function logout(id: string) { function markNotificationsRead (line 37) | function markNotificationsRead(state: LoginSession) { function clearEntropy (line 42) | function clearEntropy(state: LoginSession) { function generateNewLoginKeys (line 50) | async function generateNewLoginKeys() { function generateNewLogin (line 59) | async function generateNewLogin( function updateSession (line 100) | function updateSession(id: string, fn: (state: LoginSession) => void) { function setAppData (line 108) | function setAppData(state: LoginSession, data: SnortAppData) { function updateAppData (line 113) | function updateAppData(id: string, fn: (data: SnortAppData) => SnortAppD... function setPreference (line 121) | function setPreference(obj: Partial) { function saveAppData (line 134) | async function saveAppData(id: string) { function addSubscription (line 141) | function addSubscription(state: LoginSession, ...subs: SubscriptionEvent... function sessionNeedsPin (line 149) | function sessionNeedsPin(l: LoginSession) { function createPublisher (line 153) | function createPublisher(l: LoginSession) { FILE: packages/app/src/Utils/Login/LoginSession.ts type Newest (line 9) | interface Newest { type LoginSessionType (line 14) | enum LoginSessionType { type SnortAppData (line 23) | interface SnortAppData { type LoginSession (line 27) | interface LoginSession { FILE: packages/app/src/Utils/Login/MultiAccountStore.ts class MultiAccountStore (line 59) | class MultiAccountStore extends ExternalStore { method constructor (line 65) | constructor() { method enableStandardLists (line 122) | private static enableStandardLists(state: UserState) { method getSessions (line 128) | getSessions() { method get (line 135) | get(id: string) { method allSubscriptions (line 142) | allSubscriptions() { method switchAccount (line 146) | switchAccount(id: string) { method getPublisher (line 153) | getPublisher(id: string) { method setPublisher (line 157) | setPublisher(id: string, pub: EventPublisher) { method loginWithPubkey (line 162) | loginWithPubkey( method decideInitRelays (line 211) | decideInitRelays(relays: Record | undefined): R... method loginWithPrivateKey (line 219) | loginWithPrivateKey(key: KeyStorage, entropy?: string, relays?: Record... method updateSession (line 265) | updateSession(s: LoginSession) { method removeSession (line 272) | removeSession(id: string) { method takeSnapshot (line 281) | takeSnapshot(): LoginSession { method #migrate (line 288) | #migrate() { method #save (line 358) | #save() { FILE: packages/app/src/Utils/Login/Nip7OsSigner.ts class Nip7OsSigner (line 6) | class Nip7OsSigner implements EventSigner { method constructor (line 9) | constructor() { method supports (line 17) | get supports(): string[] { method init (line 21) | init(): Promise { method getPubKey (line 25) | getPubKey(): string | Promise { method nip4Encrypt (line 29) | nip4Encrypt(content: string, key: string): Promise { method nip4Decrypt (line 33) | nip4Decrypt(content: string, otherKey: string): Promise { method nip44Encrypt (line 37) | nip44Encrypt(_content: string, _key: string): Promise { method nip44Decrypt (line 41) | nip44Decrypt(_content: string, _otherKey: string): Promise { method sign (line 45) | sign(ev: NostrEvent): Promise { FILE: packages/app/src/Utils/Login/Preferences.ts type UserPreferences (line 5) | interface UserPreferences { FILE: packages/app/src/Utils/Login/index.ts type Nip7os (line 5) | interface Nip7os { type Window (line 14) | interface Window { FILE: packages/app/src/Utils/Nip05/ServiceProvider.ts type ServiceErrorCode (line 3) | type ServiceErrorCode = type ServiceError (line 19) | interface ServiceError { type ServiceConfig (line 24) | interface ServiceConfig { type DomainConfig (line 28) | type DomainConfig = { type HandleAvailability (line 36) | type HandleAvailability = { type HandleQuote (line 43) | type HandleQuote = { type HandleData (line 48) | type HandleData = { type HandleRegisterResponse (line 52) | type HandleRegisterResponse = { type CheckRegisterResponse (line 59) | type CheckRegisterResponse = { class ServiceProvider (line 65) | class ServiceProvider { method constructor (line 68) | constructor(url: URL | string) { method GetConfig (line 72) | async GetConfig(): Promise { method CheckAvailable (line 76) | async CheckAvailable(handle: string, domain: string): Promise( FILE: packages/app/src/Utils/Nip05/SnortServiceProvider.ts type ManageHandle (line 5) | interface ManageHandle { type ForwardType (line 15) | enum ForwardType { type PatchHandle (line 21) | interface PatchHandle { class SnortServiceProvider (line 26) | class SnortServiceProvider extends ServiceProvider { method constructor (line 29) | constructor(publisher: EventPublisher, url: string | URL) { method list (line 34) | async list() { method transfer (line 38) | async transfer(id: string, to: string) { method patch (line 42) | async patch(id: string, obj: PatchHandle) { method registerForSubscription (line 46) | async registerForSubscription(handle: string, domain: string, id: stri... method getJsonAuthd (line 55) | async getJsonAuthd( FILE: packages/app/src/Utils/Notifications.ts type NotificationRequest (line 11) | interface NotificationRequest { function makeNotification (line 18) | async function makeNotification(ev: TaggedNostrEvent): Promise) { function getCurrentSubscription (line 58) | function getCurrentSubscription(s: Array) { function mostRecentSubscription (line 62) | function mostRecentSubscription(s: Array) { FILE: packages/app/src/Utils/Thread/ThreadContextWrapper.tsx function ThreadContextWrapper (line 20) | function ThreadContextWrapper({ link, children }: { link: NostrLink; chi... function useFilteredThread (line 91) | function useFilteredThread(notes: Array) { FILE: packages/app/src/Utils/Thread/index.ts function replyChainKey (line 12) | function replyChainKey(ev: TaggedNostrEvent) { type ThreadContextState (line 23) | interface ThreadContextState { FILE: packages/app/src/Utils/Upload/blossom.ts type BlobDescriptor (line 6) | interface BlobDescriptor { class Blossom (line 15) | class Blossom { method constructor (line 16) | constructor( method upload (line 23) | async upload(file: File) { method media (line 42) | async media(file: File) { method mirror (line 57) | async mirror(url: string) { method list (line 83) | async list(pk: string) { method delete (line 95) | async delete(id: string) { method #fixTags (line 105) | #fixTags(r: BlobDescriptor) { method #req (line 116) | async #req( FILE: packages/app/src/Utils/Upload/index.ts type UploadResult (line 11) | interface UploadResult { type Uploader (line 48) | interface Uploader { type UploadProgress (line 53) | interface UploadProgress { type UploadStage (line 60) | type UploadStage = "starting" | "hashing" | "uploading" | "done" | undef... function useFileUpload (line 62) | function useFileUpload(privKey?: string) { class MultiServerBlossom (line 77) | class MultiServerBlossom { method constructor (line 78) | constructor( method upload (line 84) | async upload(file: File | Blob) { FILE: packages/app/src/Utils/ZapPoolController.ts type ZapPoolRecipientType (line 11) | enum ZapPoolRecipientType { type ZapPoolRecipient (line 18) | interface ZapPoolRecipient { class ZapPool (line 25) | class ZapPool extends ExternalStore> { method constructor (line 31) | constructor() { method payout (line 37) | async payout(wallet: LNWallet) { method calcAllocation (line 92) | calcAllocation(n: number) { method allocate (line 100) | allocate(n: number) { method getOrDefault (line 111) | getOrDefault(rcpt: ZapPoolRecipient): ZapPoolRecipient { method set (line 120) | set(rcpt: ZapPoolRecipient) { method #key (line 132) | #key(rcpt: ZapPoolRecipient) { method #save (line 136) | #save() { method #load (line 141) | #load() { method #autoPayout (line 166) | async #autoPayout() { method takeSnapshot (line 185) | takeSnapshot(): ZapPoolRecipient[] { FILE: packages/app/src/Utils/emoji-search.ts function searchEmoji (line 3) | async function searchEmoji(key: string) { FILE: packages/app/src/Utils/getEventMedia.ts function getEventMedia (line 5) | function getEventMedia(event: TaggedNostrEvent) { FILE: packages/app/src/Utils/index.ts function openFile (line 13) | async function openFile(): Promise { function parseId (line 49) | function parseId(id: string) { function eventLink (line 66) | function eventLink(hex: string, relays?: Array | string) { function getLinkReactions (line 73) | function getLinkReactions( function getAllLinkReactions (line 81) | function getAllLinkReactions( function deepClone (line 89) | function deepClone(obj: T) { function debounce (line 100) | function debounce(timeout: number, fn: () => void) { function dedupeByPubkey (line 105) | function dedupeByPubkey(events: TaggedNostrEvent[]) { function dedupeById (line 122) | function dedupeById(events: Array) { function getLatestByPubkey (line 144) | function getLatestByPubkey(events: TaggedNostrEvent[]): Map(v: Array) { function appendDedupe (line 174) | function appendDedupe(a?: Array, b?: Array) { function unwrap (line 178) | function unwrap(v: T | undefined | null): T { function randomSample (line 192) | function randomSample(coll: T[], size: number): T[] { function getNewest (line 208) | function getNewest(rawNotes: readonly TaggedNostrEvent[]) { function getNewestProfile (line 216) | function getNewestProfile(rawNotes: CachedMetadata[]) { function getNewestEventTagsByKey (line 224) | function getNewestEventTagsByKey(evs: TaggedNostrEvent[], tag: string) { function tagFilterOfTextRepost (line 235) | function tagFilterOfTextRepost(note: TaggedNostrEvent, id?: string): (ta... function groupByPubkey (line 239) | function groupByPubkey(acc: Record, user: Cached... function orderAscending (line 249) | function orderAscending(arr: Array) { type Magnet (line 253) | interface Magnet { function magnetURIDecode (line 269) | function magnetURIDecode(uri: string): Magnet | undefined { function chunks (line 360) | function chunks(arr: T[], length: number) { function findTag (line 372) | function findTag(e: NostrEvent, tag: string) { function getRelayName (line 379) | function getRelayName(url: string) { function getUrlHostname (line 388) | function getUrlHostname(url?: string) { function sanitizeRelayUrl (line 396) | function sanitizeRelayUrl(url?: string) { function kvToObject (line 405) | function kvToObject(o: string, sep?: string) { function defaultAvatar (line 417) | function defaultAvatar(input?: string) { function isFormElement (line 423) | function isFormElement(target: HTMLElement): boolean { function getDisplayName (line 458) | function getDisplayName(user: UserMetadata | undefined, pubkey: string):... function getDisplayNameOrPlaceHolder (line 462) | function getDisplayNameOrPlaceHolder(user: UserMetadata | undefined, pub... function getCountry (line 474) | function getCountry() { function calculateDistance (line 489) | function calculateDistance(lat1: number, lon1: number, lat2: number, lon... function toRadians (line 501) | function toRadians(degrees: number): number { function trackEvent (line 505) | function trackEvent( function storeRefCode (line 531) | function storeRefCode() { function getCurrentRefCode (line 538) | function getCurrentRefCode() { function getRefCode (line 548) | function getRefCode() { function deleteRefCode (line 553) | function deleteRefCode() { FILE: packages/app/src/Utils/nip6.ts function generateBip39Entropy (line 11) | function generateBip39Entropy(mnemonic?: string) { function seedToMnemonic (line 23) | function seedToMnemonic(hex: string) { function seedToPrivateKey (line 31) | function seedToPrivateKey(seed: Uint8Array) { function entropyToPrivateKey (line 42) | async function entropyToPrivateKey(entropy: Uint8Array) { FILE: packages/app/src/Utils/stream.ts function getHost (line 3) | function getHost(ev?: TaggedNostrEvent) { type StreamState (line 7) | type StreamState = "live" | "ended" | "planned" type StreamInfo (line 9) | interface StreamInfo { function extractStreamInfo (line 30) | function extractStreamInfo(ev?: TaggedNostrEvent) { function sortStreamTags (line 65) | function sortStreamTags(tags: Array>) { FILE: packages/app/src/Utils/wasm.ts class WasmPowWorker (line 73) | class WasmPowWorker implements PowMiner { method minePow (line 74) | minePow(ev: NostrEvent, target: number): Promise { FILE: packages/app/src/Wallet/index.ts type WalletConfig (line 5) | interface WalletConfig { type WalletStoreSnapshot (line 17) | interface WalletStoreSnapshot { class WalletStore (line 23) | class WalletStore extends ExternalStore { method constructor (line 27) | constructor() { method list (line 35) | list() { method get (line 39) | get() { method add (line 71) | add(cfg: WalletConfig) { method remove (line 76) | remove(id: string) { method switch (line 88) | switch(id: string) { method save (line 93) | save() { method load (line 99) | load(snapshot = true) { method free (line 109) | free() { method takeSnapshot (line 113) | takeSnapshot(): WalletStoreSnapshot { method #activateWallet (line 121) | async #activateWallet(cfg: WalletConfig) { method #onWalletChange (line 129) | #onWalletChange(cfg: WalletConfig, data?: string) { function useWallet (line 147) | function useWallet() { function setupWebLNWalletConfig (line 163) | function setupWebLNWalletConfig(store: WalletStore) { FILE: packages/app/src/benchmarks.ts method minePow (line 126) | minePow(ev, target) { method minePow (line 131) | minePow(ev, target) { FILE: packages/app/src/chat/index.ts type ChatType (line 23) | enum ChatType { type ChatMessage (line 29) | interface ChatMessage { type ChatParticipant (line 39) | interface ChatParticipant { type Chat (line 45) | interface Chat { type ChatSystem (line 58) | interface ChatSystem { function chatTo (line 64) | function chatTo(e: NostrEvent) { function inChatWith (line 74) | function inChatWith(e: NostrEvent, myPk: string) { function selfChat (line 82) | function selfChat(e: NostrEvent, myPk: string) { function lastReadInChat (line 86) | function lastReadInChat(id: string) { function setLastReadIn (line 91) | function setLastReadIn(id: string, time?: number) { function createChatLink (line 100) | function createChatLink(type: ChatType, ...params: Array) { function createEmptyChatObject (line 127) | function createEmptyChatObject(id: string) { function useChatSystem (line 134) | function useChatSystem>... function useChatSystems (line 183) | function useChatSystems() { function useChat (line 188) | function useChat(id: string) { FILE: packages/app/src/chat/nip17.ts function computeChatId (line 11) | function computeChatId(u: UnwrappedGift, pk: string): string | undefined { class Nip17ChatSystem (line 31) | class Nip17ChatSystem extends ExternalStore> implements Chat... method constructor (line 35) | constructor(cache: GiftWrapCache) { method subscription (line 41) | subscription(session: LoginSession) { method processEvents (line 52) | async processEvents(pub: EventPublisher, evs: Array) { method listChats (line 60) | listChats(pk: string): Chat[] { method createChatObj (line 81) | static createChatObj(id: string, messages: Array, cache... method takeSnapshot (line 159) | takeSnapshot(p: string): Chat[] { method #nip24Events (line 163) | #nip24Events() { FILE: packages/app/src/index.tsx function initSite (line 26) | async function initSite() { method lazy (line 71) | async lazy() { method lazy (line 78) | async lazy() { method lazy (line 85) | async lazy() { method lazy (line 92) | async lazy() { method lazy (line 99) | async lazy() { method lazy (line 106) | async lazy() { method lazy (line 113) | async lazy() { method lazy (line 120) | async lazy() { method lazy (line 127) | async lazy() { method lazy (line 134) | async lazy() { method lazy (line 141) | async lazy() { method lazy (line 148) | async lazy() { method lazy (line 155) | async lazy() { method lazy (line 167) | async lazy() { method lazy (line 174) | async lazy() { method lazy (line 186) | async lazy() { method lazy (line 196) | async lazy() { method lazy (line 203) | async lazy() { method lazy (line 213) | async lazy() { method lazy (line 221) | async lazy() { method lazy (line 244) | async lazy() { FILE: packages/app/src/service-worker.ts type PushType (line 134) | enum PushType { type PushNotification (line 142) | interface PushNotification { type CompactMention (line 147) | interface CompactMention { type CompactReaction (line 155) | interface CompactReaction { type CompactProfile (line 164) | interface CompactProfile { function replaceMentions (line 244) | function replaceMentions(content: string, profiles: Array { method query (line 20) | async query(_req: ReqCommand): Promise { method delete (line 23) | async delete(_req: ReqCommand): Promise { type TestEntry (line 32) | type TestEntry = CachedBase & { name: string } class TestWorkerCache (line 34) | class TestWorkerCache extends WorkerBaseCache { method constructor (line 35) | constructor() { method name (line 39) | name() { method maxSize (line 42) | maxSize() { method mapper (line 46) | mapper(ev: NostrEvent): TestEntry | undefined { function entry (line 51) | function entry(pubkey: string, created: number, loaded: number, name = "... FILE: packages/app/vite.config.ts method transformIndexHtml (line 21) | transformIndexHtml(html: string) { FILE: packages/bot/src/index.ts type BotEvents (line 18) | interface BotEvents { type BotMessage (line 23) | interface BotMessage { type CommandHandler (line 46) | type CommandHandler = (msg: BotMessage) => void class SnortBot (line 48) | class SnortBot extends EventEmitter { method constructor (line 53) | constructor( method simple (line 64) | static simple(name: string) { method activeStreams (line 70) | get activeStreams() { method link (line 80) | link(a: NostrLink) { method relay (line 88) | relay(r: string) { method profile (line 96) | profile(p: UserMetadata) { method command (line 104) | command(cmd: string, h: CommandHandler) { method run (line 116) | run() { method notify (line 154) | async notify(msg: string) { method #handleEvent (line 163) | #handleEvent(e: TaggedNostrEvent) { method #checkActiveStreams (line 191) | #checkActiveStreams(e: TaggedNostrEvent) { method #sendReplyTo (line 210) | async #sendReplyTo(link: NostrLink, msg: string) { FILE: packages/shared/src/SortedMap/SortedMap.test.ts function runTestsForMap (line 4) | function runTestsForMap(MapConstructor: any, mapName: string) { FILE: packages/shared/src/SortedMap/SortedMap.ts type Comparator (line 1) | type Comparator = (a: [K, V], b: [K, V]) => number class SortedMap (line 3) | class SortedMap> { method constructor (line 8) | constructor(initialEntries?: Iterable, compare?: stri... method binarySearch (line 25) | private binarySearch(key: K, value: V): number { method set (line 42) | set(key: K, value: V) { method get (line 57) | get(key: K): V | undefined { method last (line 61) | last(): [K, V] | undefined { method first (line 69) | first(): [K, V] | undefined { method reverse (line 83) | *reverse(): Iterator<[K, V]> { method keys (line 90) | *keys(): IterableIterator { method values (line 96) | *values(): IterableIterator { method entries (line 102) | *entries(): IterableIterator<[K, V]> { method range (line 108) | *range(options: { gte?: K; lte?: K; direction?: "asc" | "desc" } = {})... method has (line 127) | has(key: K): boolean { method delete (line 131) | delete(key: K): boolean { method clear (line 142) | clear(): void { method size (line 147) | get size(): number { method [Symbol.iterator] (line 77) | *[Symbol.iterator](): Iterator<[K, V]> { FILE: packages/shared/src/cache-store.ts type CacheStore (line 5) | interface CacheStore { FILE: packages/shared/src/custom.d.ts type ParsedInvoice (line 4) | interface ParsedInvoice { type Section (line 9) | interface Section { FILE: packages/shared/src/external-store.ts type ExternalStoreEvents (line 3) | interface ExternalStoreEvents { method hook (line 14) | hook(cb: () => void) { method snapshot (line 19) | snapshot(p?: any) { method notifyChange (line 27) | protected notifyChange(sn?: TSnapshot) { FILE: packages/shared/src/feed-cache.ts type HookFn (line 6) | type HookFn = () => void type KeyedHookFilter (line 8) | interface KeyedHookFilter { type CacheEvents (line 13) | interface CacheEvents { type CachedTable (line 18) | type CachedTable = { method constructor (line 70) | constructor(name: string, store?: CacheStore) { method preload (line 89) | async preload() { method hook (line 97) | hook(fn: HookFn, key: string | undefined) { method subscribe (line 112) | subscribe(key: string, cb: () => void): () => void { method #notifyKeyListeners (line 130) | #notifyKeyListeners(key: string) { method keysOnTable (line 139) | keysOnTable() { method getFromCache (line 143) | getFromCache(key?: string) { method get (line 155) | async get(key?: string) { method bulkGet (line 167) | async bulkGet(keys: Array) { method set (line 180) | async set(obj: TCached) { method bulkSet (line 195) | async bulkSet(obj: Array | Readonly>) { method update (line 214) | async update): Promise> { method clear (line 273) | async clear() { method snapshot (line 279) | snapshot() { FILE: packages/shared/src/imgproxy.ts type ImgProxySettings (line 11) | interface ImgProxySettings { function proxyImg (line 17) | function proxyImg(url: string, settings?: ImgProxySettings, resize?: num... FILE: packages/shared/src/index.ts type NostrPrefix (line 16) | enum NostrPrefix { function isPrefixTlvIdHex (line 31) | function isPrefixTlvIdHex(prefix: NostrPrefix) { FILE: packages/shared/src/invoices.ts type InvoiceDetails (line 4) | interface InvoiceDetails { function decodeInvoice (line 15) | function decodeInvoice(pr: string): InvoiceDetails | undefined { FILE: packages/shared/src/lnurl.ts type LNURLErrorCode (line 6) | enum LNURLErrorCode { class LNURLError (line 11) | class LNURLError extends Error { method constructor (line 14) | constructor(code: LNURLErrorCode, msg: string) { class LNURL (line 20) | class LNURL { method constructor (line 28) | constructor(lnurl: string) { method url (line 53) | get url() { method lnurl (line 60) | get lnurl() { method name (line 70) | get name() { method isLNAddress (line 82) | get isLNAddress() { method getLNAddress (line 89) | getLNAddress() { method load (line 95) | async load() { method getInvoice (line 111) | async getInvoice(amount: number, comment?: string, zap?: object) { method canZap (line 155) | get canZap() { method zapperPubkey (line 162) | get zapperPubkey() { method maxCommentLength (line 169) | get maxCommentLength() { method min (line 176) | get min() { method max (line 183) | get max() { method #validateService (line 187) | #validateService() { type LNURLService (line 197) | interface LNURLService { type LNURLStatus (line 207) | interface LNURLStatus { type LNURLInvoice (line 212) | interface LNURLInvoice extends LNURLStatus { type LNURLSuccessAction (line 217) | interface LNURLSuccessAction { FILE: packages/shared/src/tlv.ts type TLVEntryType (line 5) | enum TLVEntryType { type TLVEntry (line 12) | interface TLVEntry { function encodeTLV (line 21) | function encodeTLV(prefix: string, id: Uint8Array, relays?: string[], ki... function encodeTLVEntries (line 35) | function encodeTLVEntries(prefix: string, ...entries: Array) { function decodeTLV (line 66) | function decodeTLV(str: string) { function decodeTLVEntry (line 86) | function decodeTLVEntry(type: TLVEntryType, prefix: string, data: Uint8A... FILE: packages/shared/src/utils.ts function unwrap (line 7) | function unwrap(v: T | undefined | null): T { function sanitizeRelayUrl (line 14) | function sanitizeRelayUrl(url: string) { function unixNow (line 22) | function unixNow() { function unixNowMs (line 26) | function unixNowMs() { function jitter (line 30) | function jitter(n: number) { function deepClone (line 34) | function deepClone(obj: T) { function deepEqual (line 42) | function deepEqual(x: any, y: any): boolean { function countMembers (line 52) | function countMembers(a: any) { function equalProp (line 62) | function equalProp( function distance (line 85) | function distance(a: any, b: any): number { function dedupe (line 114) | function dedupe(v: Array) { function appendDedupe (line 118) | function appendDedupe(a?: Array, b?: Array) { function dedupeBy (line 122) | function dedupeBy(v: Array, mapper: (x: T) => string): Array { function hmacSha256 (line 141) | function hmacSha256(key: Uint8Array, ...messages: Uint8Array[]) { function getPublicKey (line 145) | function getPublicKey(privKey: string | Uint8Array) { function bech32ToHex (line 150) | function bech32ToHex(str: string) { function hexToBech32 (line 159) | function hexToBech32(hrp: string, id?: string) { function bech32ToText (line 178) | function bech32ToText(str: string) { type NostrJson (line 184) | interface NostrJson { function fetchNip05PubkeyWithThrow (line 190) | async function fetchNip05PubkeyWithThrow(name: string, domain: string, t... function fetchNip05Pubkey (line 202) | async function fetchNip05Pubkey(name: string, domain: string, timeout?: ... function fetchNostrAddress (line 211) | async function fetchNostrAddress(name: string, domain: string, timeout?:... function fetchNostrAddressWithThrow (line 223) | async function fetchNostrAddressWithThrow(name: string, domain: string, ... function removeUndefined (line 243) | function removeUndefined(v: Array) { type Reaction (line 250) | enum Reaction { function normalizeReaction (line 258) | function normalizeReaction(content: string) { class OfflineError (line 269) | class OfflineError extends Error {} function throwIfOffline (line 271) | function throwIfOffline() { function isOffline (line 277) | function isOffline() { function isHex (line 292) | function isHex(s?: string) { FILE: packages/shared/src/work-queue.ts type WorkQueueItem (line 1) | interface WorkQueueItem { function processWorkQueue (line 7) | async function processWorkQueue(queue?: Array, queueDelay... FILE: packages/system-react/example/example.tsx function Note (line 11) | function Note({ ev }: { ev: TaggedNostrEvent }) { function UserPosts (line 22) | function UserPosts(props: { pubkey: string }) { function MyApp (line 40) | function MyApp() { FILE: packages/system-react/src/TraceTimeline/TraceStatsView.tsx function TraceStatsView (line 7) | function TraceStatsView() { FILE: packages/system-react/src/TraceTimeline/TraceTimelineDetailPopup.tsx type TraceTimelineDetailPopupProps (line 4) | interface TraceTimelineDetailPopupProps { function TraceTimelineDetailPopup (line 9) | function TraceTimelineDetailPopup({ selectedEntry, onClose }: TraceTimel... FILE: packages/system-react/src/TraceTimeline/TraceTimelineOverlay.tsx type TraceTimelineOverlayProps (line 5) | interface TraceTimelineOverlayProps { function TraceTimelineOverlay (line 10) | function TraceTimelineOverlay({ isOpen, onClose }: TraceTimelineOverlayP... FILE: packages/system-react/src/TraceTimeline/TraceTimelineView.tsx function TraceTimelineView (line 8) | function TraceTimelineView() { FILE: packages/system-react/src/useCached.ts type CachedObj (line 4) | interface CachedObj { function formatKey (line 10) | function formatKey(key: string): string { function loadData (line 14) | function loadData(key: string | undefined): CachedObj | undefined { function storeObj (line 29) | async function storeObj(key: string | undefined, loader: () => Promis... function useCached (line 54) | function useCached(key: string | undefined, loader: () => Promise,... FILE: packages/system-react/src/useEventFeed.ts function useEventFeed (line 5) | function useEventFeed(link: NostrLink) { function useEventsFeed (line 15) | function useEventsFeed(id: string, links: Array) { FILE: packages/system-react/src/useEventReactions.tsx function useEventReactions (line 11) | function useEventReactions(link: NostrLink, related: ReadonlyArray { function useRequestBuilderAdvanced (line 38) | function useRequestBuilderAdvanced(rb: RequestBuilder) { FILE: packages/system-react/src/useSystemState.tsx function useSystemState (line 9) | function useSystemState(system: ExternalStore) { FILE: packages/system-react/src/useUserProfile.ts function useUserProfile (line 15) | function useUserProfile(pubKey?: string, ref?: RefObject... FILE: packages/system-react/src/useUserSearch.tsx function useUserSearch (line 6) | function useUserSearch() { FILE: packages/system-svelte/src/request-builder.ts function useRequestBuilder (line 4) | function useRequestBuilder(rb: RequestBuilder) { FILE: packages/system-wasm/benches/basic.rs function random_pubkey (line 9) | fn random_pubkey(rng: &mut ThreadRng) -> String { function real_event (line 16) | fn real_event() -> Event { function criterion_benchmark (line 34) | fn criterion_benchmark(c: &mut Criterion) { FILE: packages/system-wasm/pkg/system_wasm.d.ts type InitInput (line 36) | type InitInput = RequestInfo | URL | Response | BufferSource | WebAssemb... type InitOutput (line 38) | interface InitOutput { type SyncInitInput (line 63) | type SyncInitInput = BufferSource | WebAssembly.Module; FILE: packages/system-wasm/pkg/system_wasm.js function compress (line 7) | function compress(val) { function diff_filters (line 20) | function diff_filters(prev, next) { function expand_filter (line 32) | function expand_filter(val) { function flat_merge (line 44) | function flat_merge(val) { function get_diff (line 57) | function get_diff(prev, next) { function pow (line 70) | function pow(val, target) { function schnorr_verify (line 89) | function schnorr_verify(hash, sig, pub_key) { function schnorr_verify_batch (line 101) | function schnorr_verify_batch(events) { function schnorr_verify_event (line 120) | function schnorr_verify_event(event) { function __wbg_get_imports (line 128) | function __wbg_get_imports() { function addToExternrefTable0 (line 352) | function addToExternrefTable0(obj) { function debugString (line 358) | function debugString(val) { function getArrayU8FromWasm0 (line 423) | function getArrayU8FromWasm0(ptr, len) { function getDataViewMemory0 (line 429) | function getDataViewMemory0() { function getStringFromWasm0 (line 436) | function getStringFromWasm0(ptr, len) { function getUint8ArrayMemory0 (line 442) | function getUint8ArrayMemory0() { function handleError (line 449) | function handleError(f, args) { function isLikeNone (line 458) | function isLikeNone(x) { function passStringToWasm0 (line 462) | function passStringToWasm0(arg, malloc, realloc) { function takeFromExternrefTable0 (line 499) | function takeFromExternrefTable0(idx) { constant MAX_SAFARI_DECODE_BYTES (line 507) | const MAX_SAFARI_DECODE_BYTES = 2146435072; function decodeText (line 509) | function decodeText(ptr, len) { constant WASM_VECTOR_LEN (line 532) | let WASM_VECTOR_LEN = 0; function __wbg_finalize_init (line 535) | function __wbg_finalize_init(instance, module) { function __wbg_load (line 544) | async function __wbg_load(module, imports) { function initSync (line 579) | function initSync(module) { function __wbg_init (line 599) | async function __wbg_init(module_or_path) { FILE: packages/system-wasm/pkg/system_wasm_bg.js function __wbg_set_wasm (line 2) | function __wbg_set_wasm(val) { function getObject (line 10) | function getObject(idx) { function dropObject (line 16) | function dropObject(idx) { function takeObject (line 22) | function takeObject(idx) { constant WASM_VECTOR_LEN (line 28) | let WASM_VECTOR_LEN = 0 function getUint8Memory0 (line 32) | function getUint8Memory0() { function passStringToWasm0 (line 55) | function passStringToWasm0(arg, malloc, realloc) { function isLikeNone (line 94) | function isLikeNone(x) { function getInt32Memory0 (line 100) | function getInt32Memory0() { function addHeapObject (line 107) | function addHeapObject(obj) { function getStringFromWasm0 (line 122) | function getStringFromWasm0(ptr, len) { function getFloat64Memory0 (line 129) | function getFloat64Memory0() { function getBigInt64Memory0 (line 138) | function getBigInt64Memory0() { function debugString (line 145) | function debugString(val) { function diff_filters (line 214) | function diff_filters(prev, next) { function expand_filter (line 234) | function expand_filter(val) { function get_diff (line 255) | function get_diff(prev, next) { function flat_merge (line 275) | function flat_merge(val) { function compress (line 295) | function compress(val) { function pow (line 316) | function pow(val, target) { function argon2 (line 337) | function argon2(password, salt) { function handleError (line 353) | function handleError(f, args) { function __wbindgen_object_drop_ref (line 361) | function __wbindgen_object_drop_ref(arg0) { function __wbindgen_string_get (line 365) | function __wbindgen_string_get(arg0, arg1) { function __wbindgen_is_object (line 374) | function __wbindgen_is_object(arg0) { function __wbindgen_is_undefined (line 380) | function __wbindgen_is_undefined(arg0) { function __wbindgen_in (line 385) | function __wbindgen_in(arg0, arg1) { function __wbindgen_is_bigint (line 390) | function __wbindgen_is_bigint(arg0) { function __wbindgen_bigint_from_u64 (line 395) | function __wbindgen_bigint_from_u64(arg0) { function __wbindgen_jsval_eq (line 400) | function __wbindgen_jsval_eq(arg0, arg1) { function __wbindgen_error_new (line 405) | function __wbindgen_error_new(arg0, arg1) { function __wbindgen_object_clone_ref (line 410) | function __wbindgen_object_clone_ref(arg0) { function __wbindgen_jsval_loose_eq (line 415) | function __wbindgen_jsval_loose_eq(arg0, arg1) { function __wbindgen_boolean_get (line 420) | function __wbindgen_boolean_get(arg0) { function __wbindgen_number_get (line 426) | function __wbindgen_number_get(arg0, arg1) { function __wbindgen_number_new (line 433) | function __wbindgen_number_new(arg0) { function __wbindgen_string_new (line 438) | function __wbindgen_string_new(arg0, arg1) { function __wbg_getwithrefkey_5e6d9547403deab8 (line 443) | function __wbg_getwithrefkey_5e6d9547403deab8(arg0, arg1) { function __wbg_set_841ac57cff3d672b (line 448) | function __wbg_set_841ac57cff3d672b(arg0, arg1, arg2) { function __wbg_get_44be0491f933a435 (line 452) | function __wbg_get_44be0491f933a435(arg0, arg1) { function __wbg_length_fff51ee6522a1a18 (line 457) | function __wbg_length_fff51ee6522a1a18(arg0) { function __wbg_new_898a68150f225f2e (line 462) | function __wbg_new_898a68150f225f2e() { function __wbindgen_is_function (line 467) | function __wbindgen_is_function(arg0) { function __wbg_next_526fc47e980da008 (line 472) | function __wbg_next_526fc47e980da008(arg0) { function __wbg_next_ddb3312ca1c4e32a (line 477) | function __wbg_next_ddb3312ca1c4e32a() { function __wbg_done_5c1f01fb660d73b5 (line 484) | function __wbg_done_5c1f01fb660d73b5(arg0) { function __wbg_value_1695675138684bd5 (line 489) | function __wbg_value_1695675138684bd5(arg0) { function __wbg_iterator_97f0c81209c6c35a (line 494) | function __wbg_iterator_97f0c81209c6c35a() { function __wbg_get_97b561fb56f034b5 (line 499) | function __wbg_get_97b561fb56f034b5() { function __wbg_call_cb65541d95d71282 (line 506) | function __wbg_call_cb65541d95d71282() { function __wbg_new_b51585de1b234aff (line 513) | function __wbg_new_b51585de1b234aff() { function __wbg_set_502d29070ea18557 (line 518) | function __wbg_set_502d29070ea18557(arg0, arg1, arg2) { function __wbg_isArray_4c24b343cb13cfb1 (line 522) | function __wbg_isArray_4c24b343cb13cfb1(arg0) { function __wbg_instanceof_ArrayBuffer_39ac22089b74fddb (line 527) | function __wbg_instanceof_ArrayBuffer_39ac22089b74fddb(arg0) { function __wbg_isSafeInteger_bb8e18dd21c97288 (line 538) | function __wbg_isSafeInteger_bb8e18dd21c97288(arg0) { function __wbg_buffer_085ec1f694018c4f (line 543) | function __wbg_buffer_085ec1f694018c4f(arg0) { function __wbg_new_8125e318e6245eed (line 548) | function __wbg_new_8125e318e6245eed(arg0) { function __wbg_set_5cf90238115182c3 (line 553) | function __wbg_set_5cf90238115182c3(arg0, arg1, arg2) { function __wbg_length_72e2208bbc0efc61 (line 557) | function __wbg_length_72e2208bbc0efc61(arg0) { function __wbg_instanceof_Uint8Array_d8d9cb2b8e8ac1d4 (line 562) | function __wbg_instanceof_Uint8Array_d8d9cb2b8e8ac1d4(arg0) { function __wbg_new_abda76e883ba8a5f (line 573) | function __wbg_new_abda76e883ba8a5f() { function __wbg_stack_658279fe44541cf6 (line 578) | function __wbg_stack_658279fe44541cf6(arg0, arg1) { function __wbg_error_f851667af71bcfc6 (line 586) | function __wbg_error_f851667af71bcfc6(arg0, arg1) { function __wbindgen_bigint_get_as_i64 (line 598) | function __wbindgen_bigint_get_as_i64(arg0, arg1) { function __wbindgen_debug_string (line 605) | function __wbindgen_debug_string(arg0, arg1) { function __wbindgen_throw (line 613) | function __wbindgen_throw(arg0, arg1) { function __wbindgen_memory (line 617) | function __wbindgen_memory() { FILE: packages/system-wasm/src/diff.rs function diff_filter (line 10) | pub fn diff_filter(prev: &[FlatReqFilter], next: &[FlatReqFilter]) -> Ve... function simple_diff_same (line 23) | fn simple_diff_same() { function simple_diff_add (line 38) | fn simple_diff_add() { function simple_diff_replace (line 65) | fn simple_diff_replace() { FILE: packages/system-wasm/src/filter.rs type ReqFilter (line 10) | pub struct ReqFilter { method from (line 147) | fn from(value: Vec<&FlatReqFilter>) -> Self { method from (line 174) | fn from(value: Vec<&ReqFilter>) -> Self { method fmt (line 49) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type FlatReqFilter (line 58) | pub struct FlatReqFilter { method fmt (line 97) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Distance (line 102) | pub trait Distance { method distance (line 104) | fn distance(&self, other: &Self) -> u32; method distance (line 112) | fn distance(&self, b: &Self) -> u32 { method distance (line 377) | fn distance(&self, b: &Self) -> u32 { type CanMerge (line 107) | pub trait CanMerge { method can_merge (line 108) | fn can_merge(&self, other: &Self) -> bool; method can_merge (line 133) | fn can_merge(&self, other: &Self) -> bool { method can_merge (line 399) | fn can_merge(&self, other: &Self) -> bool { function expand (line 205) | pub fn expand(f: &ReqFilter) -> Vec { function from (line 371) | fn from(f: &ReqFilter) -> Vec { function prop_dist (line 413) | fn prop_dist(a: &Option, b: &Option) -> u32 { function prop_dist_vec (line 423) | fn prop_dist_vec(a: &Option>, b: &Option(val: &Option, arr: &mut Op... function array_prop_append_vec (line 457) | fn array_prop_append_vec( function test_expand_filter (line 481) | fn test_expand_filter() { FILE: packages/system-wasm/src/lib.rs type Event (line 15) | pub struct Event { function diff_filters (line 28) | pub fn diff_filters(prev: JsValue, next: JsValue) -> Result Result { function get_diff (line 45) | pub fn get_diff(prev: JsValue, next: JsValue) -> Result { function flat_merge (line 58) | pub fn flat_merge(val: JsValue) -> Result { function compress (line 66) | pub fn compress(val: JsValue) -> Result { function pow (line 74) | pub fn pow(val: JsValue, target: JsValue) -> Result { function schnorr_verify (line 88) | pub fn schnorr_verify(hash: JsValue, sig: JsValue, pub_key: JsValue) -> ... function log_error (line 106) | fn log_error(msg: &str, err: &str) { function schnorr_verify_event (line 116) | pub fn schnorr_verify_event(event: JsValue) -> Result { function schnorr_verify_batch (line 129) | pub fn schnorr_verify_batch(events: JsValue) -> Result, JsValu... function flat_merge_expanded (line 148) | fn flat_merge_expanded() { FILE: packages/system-wasm/src/merge.rs function merge (line 3) | pub fn merge<'a, T, Z>(all: Vec<&'a T>) -> Vec function merge_once (line 19) | fn merge_once<'a, T, Z>(all: Vec<&'a T>) -> Vec function distance (line 59) | fn distance() { function merge_set (line 89) | fn merge_set() { function can_merge_filters (line 113) | fn can_merge_filters() { function flat_merge (line 137) | fn flat_merge() { FILE: packages/system-wasm/src/pow.rs function pow (line 3) | pub fn pow(ev: &mut Event, target: u8) { function count_leading_zeros (line 34) | fn count_leading_zeros(hex_str: &str) -> u8 { function hex_nibble (line 52) | fn hex_nibble(c: u8) -> u8 { function make_id (line 62) | pub fn make_id(ev: &Event) -> String { function make_id (line 74) | fn make_id() { function make_id_with_special_chars_in_content (line 95) | fn make_id_with_special_chars_in_content() { function make_id_with_escaped_backslash_in_content (line 110) | fn make_id_with_escaped_backslash_in_content() { function count_zeros (line 125) | fn count_zeros() { FILE: packages/system-wasm/src/verify.rs type VerifyError (line 13) | pub enum VerifyError { function from (line 31) | fn from(e: VerifyError) -> Self { function decode_hex_fixed (line 38) | fn decode_hex_fixed(s: &str, field: &'static str) -> Res... function verify_event (line 62) | pub fn verify_event(event: &Event, trust_id: bool) -> Result Vec { function verify_batch_with_errors (line 104) | pub fn verify_batch_with_errors(events: &[Event]) -> Vec { function make_valid_event (line 128) | fn make_valid_event() -> Event { function verify_valid_event (line 147) | fn verify_valid_event() { function verify_valid_event_trust_id (line 153) | fn verify_valid_event_trust_id() { function verify_bad_sig (line 160) | fn verify_bad_sig() { function verify_bad_pubkey_length (line 173) | fn verify_bad_pubkey_length() { function verify_missing_sig (line 186) | fn verify_missing_sig() { function batch_verify_mixed (line 196) | fn batch_verify_mixed() { function batch_verify_empty (line 206) | fn batch_verify_empty() { function batch_verify_events_with_special_content (line 211) | fn batch_verify_events_with_special_content() { function batch_verify_user_event (line 239) | fn batch_verify_user_event() { FILE: packages/system/src/background-loader.ts type ProfilePriority (line 18) | type ProfilePriority = keyof typeof FlushIntervals class DebouncedFlush (line 25) | class DebouncedFlush { method constructor (line 30) | constructor(delayMs: number, fn: () => void) { method schedule (line 35) | schedule() { method cancel (line 43) | cancel() { method constructor (line 81) | constructor(system: SystemInterface, cache: CachedTable) { method destroy (line 95) | destroy() { method TrackKeys (line 127) | TrackKeys(pk: string | Array, priority: ProfilePriority = "norma... method UntrackKeys (line 140) | UntrackKeys(pk: string | Array) { method fetch (line 151) | async fetch(key: string, timeoutMs = 30_000) { method #wantSetFor (line 182) | #wantSetFor(priority: ProfilePriority): Set { method #allWanted (line 194) | get #allWanted(): Array { method #dispatch (line 202) | async #dispatch(triggeredBy: ProfilePriority) { method #loadChunk (line 265) | async #loadChunk(keys: Array, chunkIndex: number): Promise, chunkIndex: number): RequestBuilder { function chunk (line 296) | function chunk(arr: Array, size: number): Array> { FILE: packages/system/src/cache-relay.ts type CacheRelay (line 7) | interface CacheRelay { FILE: packages/system/src/cache/index.ts type CachedBase (line 4) | interface CachedBase { type CachedMetadata (line 21) | type CachedMetadata = CachedBase & UserMetadata type UsersRelays (line 23) | type UsersRelays = { type UsersFollows (line 27) | type UsersFollows = { function mapEventToProfile (line 31) | function mapEventToProfile(ev: NostrEvent) { FILE: packages/system/src/cache/user-follows-lists.ts class UserFollowsCache (line 4) | class UserFollowsCache extends FeedCache { method constructor (line 5) | constructor(store?: CacheStore) { method key (line 9) | key(of: UsersFollows): string { method preload (line 13) | override async preload(follows?: Array): Promise { method newest (line 20) | newest(): number { method takeSnapshot (line 26) | takeSnapshot(): Array { method search (line 30) | async search() { FILE: packages/system/src/cache/user-metadata.ts class UserProfileCache (line 4) | class UserProfileCache extends FeedCache { method constructor (line 5) | constructor(store?: CacheStore) { method key (line 9) | key(of: CachedMetadata): string { method preload (line 13) | override async preload(follows?: Array): Promise { method search (line 21) | async search(q: string): Promise> { method takeSnapshot (line 35) | takeSnapshot(): CachedMetadata[] { FILE: packages/system/src/cache/user-relays.ts class UserRelaysCache (line 4) | class UserRelaysCache extends FeedCache { method constructor (line 5) | constructor(store?: CacheStore) { method key (line 9) | key(of: UsersRelays): string { method preload (line 13) | override async preload(follows?: Array): Promise { method newest (line 20) | newest(): number { method takeSnapshot (line 26) | takeSnapshot(): Array { method search (line 30) | async search() { FILE: packages/system/src/connection-cache-relay.ts class ConnectionCacheRelay (line 9) | class ConnectionCacheRelay implements CacheRelay { method constructor (line 12) | constructor(readonly connection: Connection) {} method event (line 14) | async event(ev: NostrEvent): Promise { method query (line 25) | query(req: ReqCommand): Promise> { method delete (line 50) | delete(req: ReqCommand): Promise { FILE: packages/system/src/connection-pool.ts type ConnectionTypeEvents (line 11) | interface ConnectionTypeEvents { type ConnectionSubscription (line 24) | type ConnectionSubscription = Record type ConnectionType (line 29) | type ConnectionType = { type ConnectionPoolEvents (line 74) | interface ConnectionPoolEvents { type ConnectionPool (line 87) | type ConnectionPool = { type ConnectionBuilder (line 99) | type ConnectionBuilder = ( class DefaultConnectionPool (line 108) | class DefaultConnectionPool method constructor (line 130) | constructor(system: SystemInterface, builder?: ConnectionBuilder) { method getConnection (line 145) | getConnection(id: string) { method connect (line 155) | async connect(address: string, options: RelaySettings, ephemeral: bool... method disconnect (line 253) | disconnect(address: string) { method broadcast (line 266) | async broadcast(ev: NostrEvent, cb?: (rsp: OkResponse) => void) { method broadcastTo (line 290) | async broadcastTo(address: string, ev: NostrEvent): Promise { method [Symbol.iterator] (line 309) | *[Symbol.iterator]() { FILE: packages/system/src/connection-stats.ts class ConnectionStats (line 4) | class ConnectionStats { FILE: packages/system/src/connection.ts type RelaySettings (line 15) | interface RelaySettings { class Connection (line 20) | class Connection extends EventEmitter implements C... method constructor (line 48) | constructor(addr: string, options: RelaySettings, ephemeral: boolean =... method ephemeral (line 59) | get ephemeral() { method ephemeral (line 63) | set ephemeral(v: boolean) { method isOpen (line 68) | get isOpen() { method isConnecting (line 72) | get isConnecting() { method isDown (line 76) | get isDown() { method ActiveRequests (line 80) | get ActiveRequests() { method connect (line 84) | async connect(awaitOpen = false) { method close (line 131) | close() { method #onOpen (line 136) | #onOpen(wasReconnect: boolean) { method #onClose (line 148) | #onClose(e: WebSocket.CloseEvent) { method #reconnectTimer (line 174) | #reconnectTimer(e: WebSocket.CloseEvent) { method #onMessage (line 191) | #onMessage(e: WebSocket.MessageEvent) { method #onError (line 260) | #onError(e: WebSocket.ErrorEvent) { method sendEvent (line 279) | sendEvent(e: NostrEvent) { method publish (line 291) | async publish(e: NostrEvent, timeout = 5000) { method supportsNip (line 340) | supportsNip(n: number) { method request (line 349) | request(cmd: ReqCommand, cbSent?: () => void): void { method closeRequest (line 363) | closeRequest(id: string) { method activeSubscriptions (line 372) | get activeSubscriptions() { method maxSubscriptions (line 376) | get maxSubscriptions() { method #sendRequestCommand (line 380) | #sendRequestCommand(cmd: ReqCommand) { method #reset (line 389) | #reset() { method sendRaw (line 411) | sendRaw(obj: object) { method #send (line 415) | #send(obj: object) { method #sendPendingRaw (line 426) | #sendPendingRaw() { method #sendOnWire (line 435) | #sendOnWire(obj: unknown) { method #onAuthAsync (line 445) | async #onAuthAsync(challenge: string): Promise { method #setupEphemeral (line 490) | #setupEphemeral() { FILE: packages/system/src/encryption/index.ts type MessageEncryptorVersion (line 1) | enum MessageEncryptorVersion { type MessageEncryptor (line 6) | interface MessageEncryptor { FILE: packages/system/src/encryption/nip44.ts method utf8Decode (line 18) | utf8Decode(bytes: Uint8Array) { method getConversationKey (line 22) | getConversationKey(privkeyA: string, pubkeyB: string): Uint8Array { method getMessageKeys (line 27) | getMessageKeys(conversationKey: Uint8Array, nonce: Uint8Array) { method calcPaddedLen (line 36) | calcPaddedLen(len: number): number { method writeU16BE (line 44) | writeU16BE(num: number) { method pad (line 52) | pad(plaintext: string): Uint8Array { method unpad (line 60) | unpad(padded: Uint8Array): string { method hmacAad (line 73) | hmacAad(key: Uint8Array, message: Uint8Array, aad: Uint8Array) { method decodePayload (line 85) | decodePayload(payload: string) { function encrypt_v2 (line 111) | function encrypt_v2(plaintext: string, conversationKey: Uint8Array, nonc... function decrypt_v2 (line 119) | function decrypt_v2(ciphertext: Uint8Array, nonce: Uint8Array, mac: Uint... function decrypt_v1 (line 127) | function decrypt_v1(ciphertext: Uint8Array, nonce: Uint8Array, conversat... FILE: packages/system/src/encryption/pin-encrypted.ts class InvalidPinError (line 10) | class InvalidPinError extends Error { method constructor (line 11) | constructor() { method fromPayload (line 35) | static fromPayload(o: object) { class PinEncrypted (line 54) | class PinEncrypted extends KeyStorage { method constructor (line 59) | constructor(enc: PinEncryptedPayload) { method value (line 64) | get value() { method shouldUnlock (line 69) | override shouldUnlock(): boolean { method unlock (line 73) | override async unlock(pin: string) { method toPayload (line 113) | toPayload() { method create (line 117) | static async create(content: string, pin: string) { class NotEncrypted (line 147) | class NotEncrypted extends KeyStorage { method constructor (line 150) | constructor(key: string) { method value (line 155) | get value() { method shouldUnlock (line 159) | override shouldUnlock(): boolean { method unlock (line 163) | override unlock(code: string): Promise { method toPayload (line 167) | override toPayload(): Object { type PinEncryptedPayload (line 174) | interface PinEncryptedPayload { FILE: packages/system/src/event-builder.ts class EventBuilder (line 7) | class EventBuilder { method pubkey (line 22) | get pubkey() { method fromLink (line 29) | fromLink(link: NostrLink) { method jitter (line 41) | jitter(n: number) { method kind (line 46) | kind(k: EventKind) { method content (line 51) | content(c: string) { method createdAt (line 56) | createdAt(n: number) { method pubKey (line 61) | pubKey(k: string) { method tag (line 66) | tag(t: Array): EventBuilder { method pow (line 73) | pow(target: number, miner?: PowMiner) { method processContent (line 87) | processContent() { method build (line 99) | build() { method buildAndSign (line 120) | async buildAndSign(pk: string | EventSigner) { method #mine (line 130) | async #mine(ev: NostrEvent) { method #validate (line 138) | #validate() { method #replaceMention (line 147) | #replaceMention(match: string) { method #addHashtag (line 160) | #addHashtag(match: string) { FILE: packages/system/src/event-ext.ts type Thread (line 12) | interface Thread { type EventType (line 20) | enum EventType { constant MAX_VERIFIED_CACHE (line 38) | const MAX_VERIFIED_CACHE = 50_000 method getRootPubKey (line 53) | static getRootPubKey(e: NostrEvent): string { method sign (line 70) | static sign(e: NostrEvent, key: string) { method verify (line 87) | static verify(e: NostrEvent) { method isVerified (line 114) | static isVerified(e: NostrEvent) { method markVerified (line 123) | static markVerified(e: NostrEvent) { method createId (line 130) | static createId(e: NostrEvent | NotSignedNostrEvent) { method minePow (line 138) | static minePow(e: NostrEvent, target: number) { method forPubKey (line 145) | static forPubKey(pk: string, kind: EventKind) { method extractThread (line 157) | static extractThread(ev: NostrEvent): Thread | undefined { method fixupEvent (line 177) | static fixupEvent(e: NostrEvent) { method getType (line 187) | static getType(kind: number) { method isReplaceable (line 200) | static isReplaceable(kind: number) { method isAddressable (line 205) | static isAddressable(kind: number) { method isWellFormed (line 217) | static isWellFormed(ev: NostrEvent) { method isValid (line 232) | static isValid(ev: NostrEvent) { method keyOf (line 245) | static keyOf(e: NostrEvent) { FILE: packages/system/src/event-kind.ts type EventKind (line 1) | enum EventKind { FILE: packages/system/src/event-publisher.ts type EventBuilderHook (line 27) | type EventBuilderHook = (ev: EventBuilder) => EventBuilder class EventPublisher (line 29) | class EventPublisher { method constructor (line 35) | constructor(signer: EventSigner, pubKey: string) { method signer (line 40) | get signer() { method nip7 (line 47) | static async nip7() { method privateKey (line 60) | static privateKey(privateKey: string | Uint8Array) { method supports (line 65) | supports(t: SignerSupports) { method pubKey (line 69) | get pubKey() { method pow (line 76) | pow(target: number, miner?: PowMiner) { method #eb (line 83) | #eb(k: EventKind) { method #sign (line 88) | async #sign(eb: EventBuilder) { method nip4Encrypt (line 92) | async nip4Encrypt(content: string, otherKey: string) { method nip4Decrypt (line 96) | async nip4Decrypt(content: string, otherKey: string) { method nip42Auth (line 100) | async nip42Auth(challenge: string, relay: string) { method muted (line 112) | async muted(pub: Array, priv: Array) { method pinned (line 128) | async pinned(notes: Array) { method bookmarks (line 140) | async bookmarks(notes: Array) { method metadata (line 148) | async metadata(obj: UserMetadata) { method note (line 157) | async note(msg: string, fnExtra?: EventBuilderHook) { method zap (line 172) | async zap( method reply (line 199) | async reply(replyTo: TaggedNostrEvent, msg: string, fnExtra?: EventBui... method react (line 214) | async react(evRef: NostrEvent, content = "+") { method relayList (line 223) | async relayList(relays: Array | Record, relays?: Record) { method linkToTag (line 105) | static linkToTag(link: NostrLink, withScope?: LinkScope) { method scopeToMarker (line 141) | static scopeToMarker(scope?: LinkScope) { FILE: packages/system/src/impl/nip11.ts type RelayInfoDocument (line 3) | interface RelayInfoDocument { class Nip11 (line 31) | class Nip11 { method loadRelayDocument (line 32) | static async loadRelayDocument(url: string) { FILE: packages/system/src/impl/nip18.ts class Nip18 (line 7) | class Nip18 { method linkToTag (line 8) | static linkToTag(link: NostrLink) { FILE: packages/system/src/impl/nip22.ts class Nip22 (line 5) | class Nip22 { method rootScopeOf (line 10) | static rootScopeOf(other: NostrEvent) { method replyTo (line 17) | static replyTo(other: NostrEvent, eb: EventBuilder) { method parseThread (line 43) | static parseThread(ev: NostrEvent): Thread | undefined { method fromLinks (line 51) | static fromLinks(links: Array, ev: NostrEvent) { method linkToTag (line 110) | static linkToTag(link: NostrLink) { FILE: packages/system/src/impl/nip25.ts class Nip25 (line 8) | class Nip25 { method reactToEvent (line 12) | static reactToEvent(ev: TaggedNostrEvent | NostrEvent) { FILE: packages/system/src/impl/nip4.ts class Nip4WebCryptoEncryptor (line 6) | class Nip4WebCryptoEncryptor implements MessageEncryptor { method constructor (line 8) | constructor( method getSharedSecret (line 13) | getSharedSecret(privateKey: string, publicKey: string) { method encryptData (line 19) | async encryptData(content: string) { method decryptData (line 36) | async decryptData(payload: string) { method #importKey (line 52) | async #importKey(sharedSecet: Uint8Array) { FILE: packages/system/src/impl/nip44.ts class Nip44Encryptor (line 4) | class Nip44Encryptor implements MessageEncryptor { method constructor (line 5) | constructor( method encryptData (line 10) | encryptData(plaintext: string) { method decryptData (line 15) | decryptData(payload: string): string { FILE: packages/system/src/impl/nip46.ts constant NIP46_KIND (line 13) | const NIP46_KIND = 24_133 constant PERMS (line 15) | const PERMS = type Nip46Request (line 18) | interface Nip46Request { type Nip46Response (line 24) | interface Nip46Response { type QueueObj (line 30) | interface QueueObj { type Nip46Events (line 36) | interface Nip46Events { class Nip46Signer (line 41) | class Nip46Signer extends EventEmitter implements EventSign... method constructor (line 58) | constructor(config: string, insideSigner?: EventSigner) { method supports (line 81) | get supports(): string[] { method relays (line 85) | get relays() { method privateKey (line 89) | get privateKey(): string | undefined { method isBunker (line 96) | get isBunker() { method init (line 105) | async init(autoConnect = true) { method close (line 157) | async close() { method describe (line 167) | async describe() { method getPubKey (line 172) | async getPubKey() { method nip4Encrypt (line 179) | async nip4Encrypt(content: string, otherKey: string) { method nip4Decrypt (line 184) | async nip4Decrypt(content: string, otherKey: string) { method nip44Encrypt (line 189) | nip44Encrypt(_content: string, _key: string): Promise { method nip44Decrypt (line 193) | nip44Decrypt(_content: string, _otherKey: string): Promise { method sign (line 197) | async sign(ev: NostrEvent) { method createAccount (line 218) | async createAccount(name: string, domain: string, email?: string) { method #disconnect (line 226) | async #disconnect() { method #connect (line 230) | async #connect(pk: string) { method #onReply (line 235) | async #onReply(e: NostrEvent) { method #rpc (line 300) | async #rpc(method: string, params: Array) { method #sendCommand (line 331) | async #sendCommand(payload: Nip46Request | Nip46Response, target: stri... FILE: packages/system/src/impl/nip55.ts class Nip55Signer (line 7) | class Nip55Signer implements EventSigner { method init (line 11) | init(): Promise { method getPubKey (line 16) | async getPubKey() { method nip4Encrypt (line 24) | async nip4Encrypt(content: string, key: string) { method nip4Decrypt (line 28) | async nip4Decrypt(content: string, otherKey: string) { method nip44Encrypt (line 32) | async nip44Encrypt(content: string, key: string) { method nip44Decrypt (line 36) | async nip44Decrypt(content: string, otherKey: string) { method sign (line 40) | async sign(ev: NostrEvent | NotSignedNostrEvent) { method supports (line 45) | get supports(): string[] { method #call (line 49) | #call( FILE: packages/system/src/impl/nip57.ts function getInvoice (line 16) | function getInvoice(zap: NostrEvent): InvoiceDetails | undefined { function parseZap (line 24) | function parseZap(zapReceipt: NostrEvent): ParsedZap { type ParsedZap (line 95) | interface ParsedZap { FILE: packages/system/src/impl/nip7.ts type NostrEncryptor (line 8) | interface NostrEncryptor { type Window (line 12) | interface Window { class Nip7Signer (line 22) | class Nip7Signer implements EventSigner { method supports (line 23) | get supports(): string[] { method init (line 31) | init(): Promise { method getPubKey (line 35) | async getPubKey(): Promise { method nip4Encrypt (line 42) | async nip4Encrypt(content: string, key: string): Promise { method nip4Decrypt (line 51) | async nip4Decrypt(content: string, otherKey: string): Promise { method nip44Encrypt (line 60) | async nip44Encrypt(content: string, key: string): Promise { method nip44Decrypt (line 71) | async nip44Decrypt(content: string, otherKey: string): Promise { method sign (line 82) | async sign(ev: NostrEvent): Promise { FILE: packages/system/src/impl/nip90.ts type DVMJobState (line 12) | enum DVMJobState { type DVMJobEvents (line 52) | interface DVMJobEvents { type DVMJobInput (line 77) | interface DVMJobInput { class DVMJobRequest (line 102) | class DVMJobRequest extends EventEmitter { method constructor (line 165) | constructor(kind: number, response?: number) { method id (line 175) | get id() { method state (line 179) | get state() { method state (line 183) | private set state(v: DVMJobState) { method addInput (line 191) | addInput(input: DVMJobInput) { method setParam (line 202) | setParam(k: string, v: string) { method removeParam (line 211) | removeParam(k: string) { method setEncrypted (line 219) | setEncrypted(encrypted: boolean) { method setServiceProvider (line 227) | setServiceProvider(p: string) { method setOutput (line 238) | setOutput(mime: string) { method setBid (line 246) | setBid(amount: number) { method addRelay (line 254) | addRelay(relay: string) { method removeRelay (line 267) | removeRelay(relay: string) { method buildEvent (line 278) | async buildEvent(signer: EventSigner): Promise { method #handleReplyEvents (line 329) | #handleReplyEvents(evs: Array) { method request (line 376) | async request(signer: EventSigner, system: SystemInterface, relays?: A... method abort (line 414) | abort(system: SystemInterface) { FILE: packages/system/src/impl/nip92.ts class Nip92 (line 6) | class Nip92 { method parse (line 10) | static parse(tag: Array) { method parseAll (line 17) | static parseAll(tags: Array>) { function readNip94TagsFromIMeta (line 26) | function readNip94TagsFromIMeta(tag: Array) { function nip94TagsToIMeta (line 34) | function nip94TagsToIMeta(meta: Nip94Tags) { FILE: packages/system/src/impl/nip94.ts class Nip94 (line 6) | class Nip94 { method parse (line 7) | static parse(tags: Array>) { type Nip94Tags (line 12) | interface Nip94Tags { function readNip94Tags (line 33) | function readNip94Tags(tags: Array>) { function addExtensionToNip94Url (line 112) | function addExtensionToNip94Url(meta: Nip94Tags) { FILE: packages/system/src/negentropy/accumulator.ts class Accumulator (line 4) | class Accumulator { method constructor (line 7) | constructor() { method setToZero (line 11) | setToZero() { method add (line 15) | add(otherBuf: Uint8Array) { method negate (line 38) | negate() { method getFingerprint (line 51) | getFingerprint(n: number) { FILE: packages/system/src/negentropy/negentropy-flow.ts type NegentropyFlowEvents (line 9) | interface NegentropyFlowEvents { class NegentropyFlow (line 24) | class NegentropyFlow extends EventEmitter { method constructor (line 33) | constructor(id: string, conn: ConnectionType, set: Array) { method #cleanup (line 96) | #cleanup(error = false) { FILE: packages/system/src/negentropy/negentropy.ts class Negentropy (line 15) | class Negentropy { method constructor (line 22) | constructor(storage: NegentropyStorageVector, frameSizeLimit = 0) { method #bound (line 32) | #bound(timestamp: number, id?: Uint8Array) { method initiate (line 36) | initiate() { method setInitiator (line 48) | setInitiator() { method reconcile (line 52) | reconcile(query: WrappedBuffer | Uint8Array): [Uint8Array | undefined,... method splitRange (line 182) | async splitRange(lower: number, upper: number, upperBound: VectorStora... method #renderOutput (line 228) | #renderOutput(o: WrappedBuffer) { method exceededFrameSizeLimit (line 232) | exceededFrameSizeLimit(n: number) { method decodeTimestampIn (line 237) | decodeTimestampIn(encoded: Uint8Array | WrappedBuffer) { method decodeBound (line 249) | decodeBound(encoded: Uint8Array | WrappedBuffer) { method encodeTimestampOut (line 260) | encodeTimestampOut(timestamp: number) { method encodeBound (line 272) | encodeBound(key: VectorStorageItem) { method getMinimalBound (line 282) | getMinimalBound(prev: VectorStorageItem, curr: VectorStorageItem) { FILE: packages/system/src/negentropy/utils.ts constant PROTOCOL_VERSION (line 4) | const PROTOCOL_VERSION = 0x61 // Version 1 constant FINGERPRINT_SIZE (line 5) | const FINGERPRINT_SIZE = 16 type Mode (line 7) | enum Mode { function decodeVarInt (line 16) | function decodeVarInt(buf: Uint8Array | WrappedBuffer) { function encodeVarInt (line 35) | function encodeVarInt(n: number) { function getByte (line 50) | function getByte(buf: WrappedBuffer) { function getBytes (line 54) | function getBytes(buf: WrappedBuffer | Uint8Array, n: number) { function compareUint8Array (line 65) | function compareUint8Array(a: Uint8Array, b: Uint8Array) { function itemCompare (line 77) | function itemCompare(a: VectorStorageItem, b: VectorStorageItem) { FILE: packages/system/src/negentropy/vector-storage.ts type VectorStorageItem (line 5) | interface VectorStorageItem { class NegentropyStorageVector (line 12) | class NegentropyStorageVector { method constructor (line 16) | constructor(other?: Array) { method idSize (line 23) | get idSize() { method insert (line 27) | insert(timestamp: number, id: string) { method seal (line 34) | seal() { method unseal (line 47) | unseal() { method size (line 51) | size() { method getItem (line 56) | getItem(i: number) { method iterate (line 62) | iterate(begin: number, end: number, cb: (item: VectorStorageItem, inde... method findLowerBound (line 71) | findLowerBound(begin: number, end: number, bound: VectorStorageItem) { method fingerprint (line 78) | fingerprint(begin: number, end: number) { method #checkSealed (line 89) | #checkSealed() { method #checkBounds (line 93) | #checkBounds(begin: number, end: number) { method #binarySearch (line 97) | #binarySearch(arr: Array, first: number, last: numb... FILE: packages/system/src/negentropy/wrapped-buffer.ts class WrappedBuffer (line 1) | class WrappedBuffer { method constructor (line 5) | constructor(buffer?: Uint8Array) { method unwrap (line 10) | unwrap() { method capacity (line 14) | get capacity() { method length (line 18) | get length() { method set (line 22) | set(val: ArrayLike, offset?: number) { method append (line 27) | append(val: ArrayLike) { method clear (line 35) | clear() { method resize (line 40) | resize(newSize: number) { method shift (line 49) | shift() { method shiftN (line 56) | shiftN(n = 1) { FILE: packages/system/src/nips.ts type Nips (line 1) | enum Nips { FILE: packages/system/src/nostr-link.ts type ToNostrEventTag (line 24) | interface ToNostrEventTag { class NostrHashtagLink (line 32) | class NostrHashtagLink implements ToNostrEventTag { method constructor (line 33) | constructor(readonly tag: string) {} method equals (line 35) | equals(other: ToNostrEventTag): boolean { method toEventTag (line 40) | toEventTag() { class UnknownTag (line 48) | class UnknownTag implements ToNostrEventTag { method constructor (line 49) | constructor(readonly value: Array) {} method equals (line 51) | equals(other: ToNostrEventTag): boolean { method toEventTag (line 56) | toEventTag(): string[] | undefined { type LinkScope (line 64) | enum LinkScope { class NostrLink (line 86) | class NostrLink implements ToNostrEventTag { method constructor (line 96) | constructor( method encode (line 141) | encode(type?: NostrPrefix): string { method tagKey (line 163) | get tagKey() { method toEventTag (line 173) | toEventTag() { method matchesEvent (line 177) | matchesEvent(ev: NostrEvent) { method isReplyToThis (line 200) | isReplyToThis(ev: NostrEvent) { method referencesThis (line 212) | referencesThis(ev: NostrEvent) { method equals (line 234) | equals(other: NostrLink) { method fromTag (line 238) | static fromTag(tag: Array, author?: string, kind?: number) { method tryFromTag (line 274) | static tryFromTag(tag: Array, author?: string, kind?: number) { method fromTags (line 282) | static fromTags(tags: ReadonlyArray>) { method fromAllTags (line 297) | static fromAllTags(tags: ReadonlyArray>): Array>): Array { method fromEvent (line 319) | static fromEvent(ev: TaggedNostrEvent | NostrEvent) { method profile (line 337) | static profile(pk: string, relays?: Array) { method publicKey (line 341) | static publicKey(pk: string, relays?: Array) { function tryParseNostrLink (line 346) | function tryParseNostrLink(link: string, prefixHint?: NostrPrefix): Nost... function isNostrLink (line 354) | function isNostrLink(link: string) { function trimNostrLink (line 360) | function trimNostrLink(link: string) { function parseNostrLink (line 368) | function parseNostrLink(link: string, prefixHint?: NostrPrefix): NostrLi... FILE: packages/system/src/nostr-system.ts class NostrSystem (line 28) | class NostrSystem extends SystemBase implements SystemInterface { method constructor (line 38) | constructor(props: Partial) { method Init (line 109) | async Init(follows?: Array) { method PreloadSocialGraph (line 119) | async PreloadSocialGraph(follows?: Array, root?: string) { method ConnectToRelay (line 153) | async ConnectToRelay(address: string, options: RelaySettings) { method ConnectEphemeralRelay (line 157) | ConnectEphemeralRelay(address: string) { method DisconnectRelay (line 161) | DisconnectRelay(address: string) { method GetQuery (line 165) | GetQuery(id: string): QueryLike | undefined { method Fetch (line 169) | Fetch(req: RequestBuilder, cb?: (evs: Array) => void) { method Query (line 173) | Query(req: RequestBuilder): QueryLike { method HandleEvent (line 177) | HandleEvent(subId: string, ev: TaggedNostrEvent) { method BroadcastEvent (line 182) | async BroadcastEvent(ev: NostrEvent, cb?: (rsp: OkResponse) => void): ... method WriteOnceToRelay (line 187) | async WriteOnceToRelay(address: string, ev: NostrEvent): Promise] type ReqFilter (line 30) | interface ReqFilter { type UserMetadata (line 52) | type UserMetadata = { type FullRelaySettings (line 64) | interface FullRelaySettings { type NotSignedNostrEvent (line 69) | type NotSignedNostrEvent = Omit type OkResponse (line 71) | interface OkResponse { FILE: packages/system/src/note-collection.ts type NoteStoreSnapshotData (line 7) | type NoteStoreSnapshotData = Array type NoteStoreHook (line 8) | type NoteStoreHook = () => void type NoteStoreHookRelease (line 9) | type NoteStoreHookRelease = () => void type OnEventCallback (line 10) | type OnEventCallback = (e: Readonly>) => void type OnEventCallbackRelease (line 11) | type OnEventCallbackRelease = () => void type OnEoseCallback (line 12) | type OnEoseCallback = (c: string) => void type OnEoseCallbackRelease (line 13) | type OnEoseCallbackRelease = () => void type NosteStoreEvents (line 15) | interface NosteStoreEvents { method snapshot (line 43) | get snapshot() { method onChange (line 54) | protected onChange(changes: Array): void { method flushEmit (line 65) | flushEmit() { method onClear (line 79) | protected onClear() { class KeyedReplaceableNoteStore (line 93) | class KeyedReplaceableNoteStore extends HookedNoteStore { method constructor (line 97) | constructor(fn: (ev: TaggedNostrEvent) => string) { method add (line 102) | add(ev: TaggedNostrEvent | Array) { method clear (line 122) | clear() { method takeSnapshot (line 127) | takeSnapshot() { class NoteCollection (line 135) | class NoteCollection extends KeyedReplaceableNoteStore { method constructor (line 136) | constructor() { FILE: packages/system/src/outbox/index.ts type AuthorsRelaysCache (line 5) | interface AuthorsRelaysCache { type PickedRelays (line 12) | interface PickedRelays { type EventFetcher (line 17) | type EventFetcher = { FILE: packages/system/src/outbox/outbox-model.ts class OutboxModel (line 19) | class OutboxModel extends BaseRequestRouter { method constructor (line 24) | constructor(relays: AuthorsRelaysCache, fetcher: EventFetcher) { method fromSystem (line 30) | static fromSystem(system: SystemInterface) { method pickTopRelays (line 41) | pickTopRelays(authors: Array, pickN: number, type: "write" | "... method forRequest (line 102) | forRequest(filter: ReqFilter, pickN?: number): Array { method forFlatRequest (line 143) | forFlatRequest(input: Array, pickN?: number): Array) { FILE: packages/system/src/outbox/relay-loader.ts class RelayMetadataLoader (line 6) | class RelayMetadataLoader extends BackgroundLoader { method name (line 7) | override name(): string { method onEvent (line 11) | override onEvent(e: Readonly): UsersRelays | undefin... method getExpireCutoff (line 26) | override getExpireCutoff(): number { method buildSub (line 30) | protected override buildSub(missing: string[]): RequestBuilder { FILE: packages/system/src/pow-util.ts type NostrPowEvent (line 4) | interface NostrPowEvent { function minePow (line 14) | function minePow(e: NostrPowEvent, target: number) { function createId (line 30) | function createId(e: NostrPowEvent) { function countLeadingZeros (line 35) | function countLeadingZeros(hex: string) { FILE: packages/system/src/pow-worker.ts type PowWorkerMessage (line 5) | interface PowWorkerMessage { FILE: packages/system/src/pow.ts type PowMiner (line 4) | interface PowMiner { type PowQueue (line 8) | interface PowQueue { class PowWorker (line 14) | class PowWorker implements PowMiner { method constructor (line 18) | constructor(workerPath: string) { method minePow (line 37) | minePow(ev: NostrEvent, target: number) { FILE: packages/system/src/profile-cache.ts class ProfileLoaderService (line 9) | class ProfileLoaderService extends BackgroundLoader { method name (line 10) | override name(): string { method onEvent (line 14) | override onEvent(e: Readonly): CachedMetadata | unde... method getExpireCutoff (line 18) | override getExpireCutoff(): number { method buildSub (line 22) | override buildSub(missing: string[]): RequestBuilder { FILE: packages/system/src/query-manager.ts type QueryManagerEvents (line 23) | interface QueryManagerEvents { type PendingTrace (line 29) | interface PendingTrace { class QueryManager (line 39) | class QueryManager extends EventEmitter { method constructor (line 67) | constructor(system: SystemInterface) { method destroy (line 81) | destroy() { method #setupConnectionListeners (line 93) | #setupConnectionListeners() { method get (line 123) | get(id: string) { method query (line 130) | query(req: RequestBuilder): Query { method handleEvent (line 162) | handleEvent(sub: string, ev: TaggedNostrEvent) { method fetch (line 169) | async fetch(req: RequestBuilder, cb?: (evs: Array) =... method #send (line 207) | async #send(q: Query, filters: Array) { method #canSendQuery (line 279) | #canSendQuery(c: ConnectionType, q: BuiltRawReqFilter, query: Query) { method createTrace (line 309) | createTrace(query: Query, connection: ConnectionType, filters: BuiltRa... method sendTrace (line 351) | sendTrace(query: Query, trace: QueryTrace, connection: ConnectionType,... method #handleSync (line 396) | #handleSync( method #fallbackSync (line 428) | #fallbackSync( method #syncSince (line 454) | #syncSince( method #syncRangeSync (line 474) | #syncRangeSync( method #retryPendingTraces (line 511) | #retryPendingTraces(connection: ConnectionType) { method #sendToRelays (line 525) | async #sendToRelays(q: Query, qSend: BuiltRawReqFilter) { method #cleanup (line 575) | #cleanup() { method [Symbol.iterator] (line 201) | *[Symbol.iterator]() { FILE: packages/system/src/query-optimizer/index.ts type FlatReqFilter (line 9) | interface FlatReqFilter { type Optimizer (line 27) | interface Optimizer { FILE: packages/system/src/query-optimizer/request-expander.ts function expandFilter (line 8) | function expandFilter(f: ReqFilter): Array { function resultSetId (line 49) | function resultSetId(f: ReqFilter) { FILE: packages/system/src/query-optimizer/request-merger.ts function canMergeFilters (line 5) | function canMergeFilters(a: FlatReqFilter | ReqFilter, b: FlatReqFilter ... function mergeSimilar (line 12) | function mergeSimilar(filters: Array): Array { function simpleMerge (line 38) | function simpleMerge(filters: Array) { function filterIncludes (line 67) | function filterIncludes(bigger: ReqFilter, smaller: ReqFilter) { function flatMerge (line 94) | function flatMerge(all: Array): Array { FILE: packages/system/src/query-optimizer/request-splitter.ts function diffFilters (line 4) | function diffFilters(prev: Array, next: Array { method constructor (line 46) | constructor( method #setState (line 58) | #setState(state: QueryTraceState) { method currentState (line 74) | get currentState() { method queued (line 78) | queued() { method sent (line 82) | sent() { method sentSync (line 86) | sentSync() { method syncFallback (line 90) | syncFallback() { method eose (line 94) | eose() { method remoteClosed (line 98) | remoteClosed() { method close (line 102) | close() { method drop (line 106) | drop() { method timeout (line 110) | timeout() { method finished (line 117) | get finished() { type QueryEvents (line 128) | interface QueryEvents { class Query (line 145) | class Query extends EventEmitter { method constructor (line 213) | constructor(req: RequestBuilder) { method addRequest (line 233) | addRequest(req: RequestBuilder) { method isOpen (line 249) | isOpen() { method canRemove (line 253) | canRemove() { method filters (line 260) | get filters() { method feed (line 264) | get feed() { method snapshot (line 268) | get snapshot() { method traces (line 272) | get traces() { method leaveOpen (line 276) | get leaveOpen() { method flush (line 283) | flush() { method addTrace (line 291) | addTrace(trace: QueryTrace) { method removeTrace (line 317) | removeTrace(traceId: string) { method addEvent (line 324) | addEvent(sub: string, e: TaggedNostrEvent) { method cancel (line 346) | cancel() { method uncancel (line 350) | uncancel() { method cleanup (line 354) | cleanup() { method closeQuery (line 362) | closeQuery() { method progress (line 374) | get progress() { method start (line 386) | start() { method #emitFilters (line 398) | async #emitFilters() { FILE: packages/system/src/relays.ts function parseRelayTag (line 5) | function parseRelayTag(tag: Array) { function parseRelayTags (line 19) | function parseRelayTags(tag: Array>) { function parseRelaysFromKind (line 23) | function parseRelaysFromKind(ev: NostrEvent) { function settingsToRelayTag (line 59) | function settingsToRelayTag(rx: FullRelaySettings) { FILE: packages/system/src/request-builder.ts type BuiltRawReqFilter (line 12) | interface BuiltRawReqFilter { type RequestBuilderOptions (line 19) | interface RequestBuilderOptions { class RequestBuilder (line 69) | class RequestBuilder { method constructor (line 75) | constructor(id: string) { method numFilters (line 81) | get numFilters() { method filterBuilders (line 85) | get filterBuilders() { method options (line 89) | get options() { method clear (line 93) | clear() { method add (line 101) | add(other: RequestBuilder) { method withFilter (line 105) | withFilter() { method withBareFilter (line 111) | withBareFilter(f: ReqFilter) { method withOptions (line 117) | withOptions(opt: RequestBuilderOptions) { method withRelays (line 128) | withRelays(relays: Array) { method buildRaw (line 135) | buildRaw(): Array { class RequestFilterBuilder (line 143) | class RequestFilterBuilder { method constructor (line 146) | constructor(f?: ReqFilter) { method filter (line 150) | get filter() { method relay (line 159) | relay(u: string | Array) { method ids (line 169) | ids(ids: Array) { method authors (line 174) | authors(authors?: Array) { method kinds (line 183) | kinds(kinds?: Array) { method since (line 189) | since(since?: number) { method until (line 195) | until(until?: number) { method limit (line 201) | limit(limit?: number) { method tag (line 207) | tag(key: "e" | "p" | "d" | "t" | "r" | "a" | "g" | string, value?: Arr... method tags (line 216) | tags(tags: Array) { method search (line 226) | search(keyword?: string) { method link (line 235) | link(link: NostrLink | ToNostrEventTag) { method replyToLink (line 264) | replyToLink(links: Array) { method build (line 280) | build(model?: RequestRouter, options?: RequestBuilderOptions): Array) { FILE: packages/system/src/request-trim.ts function trimFilters (line 6) | function trimFilters(filters: Array) { FILE: packages/system/src/signer.ts type SignerSupports (line 9) | type SignerSupports = "nip04" | "nip44" | string type EventSigner (line 11) | interface EventSigner { function decryptSigner (line 25) | async function decryptSigner(content: string, signer: EventSigner, other... class PrivateKeySigner (line 31) | class PrivateKeySigner implements EventSigner { method constructor (line 35) | constructor(privateKey: string | Uint8Array) { method random (line 47) | static random() { method supports (line 52) | get supports(): string[] { method privateKey (line 56) | get privateKey() { method init (line 60) | init(): Promise { method getPubKey (line 64) | getPubKey(): string { method nip4Encrypt (line 68) | async nip4Encrypt(content: string, otherKey: string) { method nip4Decrypt (line 73) | async nip4Decrypt(content: string, otherKey: string) { method nip44Encrypt (line 78) | async nip44Encrypt(content: string, otherKey: string) { method nip44Decrypt (line 83) | async nip44Decrypt(content: string, otherKey: string) { method sign (line 88) | sign(ev: NostrEvent): Promise { FILE: packages/system/src/sync/diff-sync.ts type TagDiff (line 14) | interface TagDiff { type DiffSyncTagsEvents (line 19) | interface DiffSyncTagsEvents { class DiffSyncTags (line 26) | class DiffSyncTags extends EventEmitter { method constructor (line 33) | constructor( method value (line 44) | get value() { method tags (line 51) | get tags() { method encryptedTags (line 58) | get encryptedTags() { method add (line 74) | add(tag: Array | Array>, encrypted = false) { method remove (line 85) | remove(tag: Array | Array>, encrypted = false) { method update (line 96) | update(tag: Array | Array>, encrypted = false) { method replace (line 107) | replace(tag: Array>, encrypted = false) { method sync (line 115) | async sync(signer: EventSigner | undefined, system: SystemInterface) { method persist (line 124) | async persist(signer: EventSigner, system: SystemInterface, content?: ... method #afterSync (line 145) | async #afterSync(signer: EventSigner | undefined) { method #nextEvent (line 153) | #nextEvent(content?: string): NotSignedNostrEvent { method #applyChanges (line 179) | #applyChanges(tags: Array>, changes: Array) { FILE: packages/system/src/sync/json-in-event-sync.ts type JsonEventSyncEvents (line 13) | interface JsonEventSyncEvents { class JsonEventSync (line 17) | class JsonEventSync extends EventEmitter { method constructor (line 22) | constructor( method json (line 32) | get json(): T { method hasPendingChanges (line 39) | get hasPendingChanges(): boolean { method setJson (line 54) | setJson(val: T) { method sync (line 59) | async sync(signer: EventSigner | undefined, system: SystemInterface) { method persist (line 78) | async persist(signer: EventSigner, system: SystemInterface) { method updateJson (line 107) | async updateJson(val: T, signer: EventSigner, system: SystemInterface) { FILE: packages/system/src/sync/range-sync.ts type RangeSyncEvents (line 10) | interface RangeSyncEvents { class RangeSync (line 18) | class RangeSync extends EventEmitter { method constructor (line 24) | private constructor() { method forSystem (line 28) | static forSystem(system: SystemInterface) { method forFetcher (line 34) | static forFetcher(fn: SystemInterface["Fetch"]) { method setWindowSize (line 43) | setWindowSize(n: number) { method setStartPoint (line 54) | setStartPoint(n: number) { method sync (line 64) | async sync(filter: ReqFilter) { FILE: packages/system/src/sync/safe-sync.ts class SafeSync (line 24) | class SafeSync { method constructor (line 29) | constructor(readonly link: NostrLink) {} method value (line 34) | get value() { method didSync (line 38) | get didSync() { method sync (line 45) | async sync(system: SystemInterface) { method setBase (line 57) | setBase(ev: NostrEvent) { method update (line 68) | async update( method #signEvent (line 88) | async #signEvent(next: NotSignedNostrEvent, signer: EventSigner) { method #sync (line 95) | async #sync(system: SystemInterface) { method #checkForUpdate (line 112) | #checkForUpdate(ev: NostrEvent, mustExist: boolean) { FILE: packages/system/src/system-base.ts method config (line 14) | get config() { method constructor (line 18) | constructor(props: Partial) { method profileCache (line 39) | get profileCache(): CachedTable { method optimizer (line 46) | get optimizer(): Optimizer { method userFollowsCache (line 50) | get userFollowsCache(): CachedTable { method cacheRelay (line 54) | get cacheRelay(): CacheRelay | undefined { method checkSigs (line 61) | get checkSigs(): boolean { method checkSigs (line 65) | set checkSigs(v: boolean) { FILE: packages/system/src/system.ts type QueryLike (line 17) | type QueryLike = { type NostrSystemEvents (line 42) | interface NostrSystemEvents { type SystemConfig (line 50) | interface SystemConfig { type SystemInterface (line 113) | interface SystemInterface { type SystemSnapshot (line 222) | interface SystemSnapshot { FILE: packages/system/src/text.ts type FragmentType (line 17) | enum FragmentType { type ParsedFragment (line 72) | interface ParsedFragment { type Fragment (line 92) | type Fragment = string | ParsedFragment function mapFragments (line 102) | function mapFragments( function splitAndParseRegex (line 131) | function splitAndParseRegex( function extractLinks (line 184) | function extractLinks(fragments: Fragment[]) { function extractMentions (line 237) | function extractMentions(fragments: Fragment[]) { function extractCashuTokens (line 241) | function extractCashuTokens(fragments: Fragment[]) { function extractInvoices (line 250) | function extractInvoices(fragments: Fragment[]) { function extractHashtags (line 254) | function extractHashtags(fragments: Fragment[]) { function extractTagRefs (line 262) | function extractTagRefs(fragments: Fragment[], tags: Array... function extractCustomEmoji (line 286) | function extractCustomEmoji(fragments: Fragment[], tags: Array>) { function transformText (line 341) | function transformText(body: string, tags: Array>) { FILE: packages/system/src/trace-timeline.ts type TimelineEntry (line 4) | interface TimelineEntry { type TraceTimelineSnapshot (line 10) | interface TraceTimelineSnapshot { class TraceTimeline (line 18) | class TraceTimeline extends ExternalStore { method constructor (line 26) | constructor() { method setEnabled (line 33) | setEnabled(enabled: boolean) { method enabled (line 42) | get enabled() { method takeSnapshot (line 46) | takeSnapshot(): TraceTimelineSnapshot { method addTrace (line 56) | addTrace(event: QueryTraceEvent, queryName?: string) { method getEntries (line 100) | getEntries(): ReadonlyArray { method getEntriesInRange (line 107) | getEntriesInRange(startTime: number, endTime: number): Array { method getEntriesForQuery (line 121) | getEntriesForQuery(queryId: string): Array { method clear (line 128) | clear() { method exportGoogleTrace (line 139) | exportGoogleTrace() { FILE: packages/system/src/user-state.ts type UserStateOptions (line 18) | interface UserStateOptions { type UserStateObject (line 27) | interface UserStateObject { type UserStateChangeType (line 34) | enum UserStateChangeType { type UserStateEvents (line 43) | interface UserStateEvents { class UserState (line 50) | class UserState extends EventEmitter { method constructor (line 66) | constructor( method didInit (line 103) | get didInit() { method destroy (line 107) | destroy() { method init (line 116) | async init(signer: EventSigner | undefined, system: SystemInterface) { method #performInit (line 128) | async #performInit(signer: EventSigner | undefined, system: SystemInte... method signer (line 165) | get signer() { method version (line 169) | get version() { method pendingChanges (line 176) | get pendingChanges() { method profile (line 235) | get profile() { method relays (line 242) | get relays() { method follows (line 255) | get follows() { method appdata (line 267) | get appdata() { method muted (line 274) | get muted() { method follow (line 285) | follow(link: NostrLink) { method unfollow (line 302) | unfollow(link: NostrLink) { method replaceFollows (line 319) | replaceFollows(links: Array) { method saveContacts (line 334) | async saveContacts() { method saveAll (line 344) | async saveAll() { method addRelay (line 377) | addRelay(addr: string, settings: RelaySettings) { method #addRelay (line 382) | #addRelay(addr: string, settings: RelaySettings) { method removeRelay (line 397) | removeRelay(addr: string) { method updateRelay (line 411) | updateRelay(addr: string, settings: RelaySettings) { method saveRelays (line 429) | async saveRelays() { method setAppData (line 438) | setAppData(data: TAppData) { method saveAppData (line 448) | async saveAppData() { method addToList (line 462) | addToList(kind: EventKind, links: ToNostrEventTag | Array { method serialize (line 525) | serialize(): UserStateObject { method checkIsStandardList (line 534) | checkIsStandardList(kind: EventKind) { method #ensureInit (line 548) | #ensureInit() { method #relaysObject (line 554) | #relaysObject() { FILE: packages/system/src/utils.ts function findTag (line 5) | function findTag(e: NostrEvent, tag: string) { function findWholeTag (line 12) | function findWholeTag(e: NostrEvent, tag: string) { function reqFilterEq (line 19) | function reqFilterEq(a: FlatReqFilter | ReqFilter, b: FlatReqFilter | Re... function flatFilterEq (line 36) | function flatFilterEq(a: FlatReqFilter, b: FlatReqFilter): boolean { function splitByUrl (line 57) | function splitByUrl(str: string) { function extensionToMime (line 79) | function extensionToMime(e: string) { FILE: packages/system/tests/background-loader.test.ts function sleep (line 21) | function sleep(ms: number) { function pubkey (line 26) | function pubkey(seed: number): string { function pubkeys (line 31) | function pubkeys(count: number, offset = 0): string[] { type TestEntry (line 39) | type TestEntry = { pubkey: string; loaded: number; created: number } class MemoryCache (line 41) | class MemoryCache extends EventEmitter> implement... method key (line 45) | key(of: TestEntry) { method getFromCache (line 49) | getFromCache(k?: string) { method get (line 53) | async get(k?: string) { method bulkGet (line 57) | async bulkGet(keys: string[]) { method set (line 61) | async set(obj: TestEntry) { method bulkSet (line 67) | async bulkSet(objs: TestEntry[] | Readonly) { method update (line 76) | async update(m: TestEntry) { method buffer (line 83) | async buffer(keys: string[]) { method preload (line 88) | async preload() {} method keysOnTable (line 89) | keysOnTable() { method clear (line 92) | async clear() { method snapshot (line 95) | snapshot() { method search (line 98) | async search() { method subscribe (line 102) | subscribe(key: string, cb: () => void): () => void { method #notifyKey (line 118) | #notifyKey(key: string) { method seed (line 126) | seed(pk: string, loadedMs: number, createdSecs = 1) { class TestLoader (line 136) | class TestLoader extends BackgroundLoader { method constructor (line 143) | constructor(system: SystemInterface, cache: CachedTable) { method name (line 147) | override name() { method onEvent (line 150) | override onEvent(e: Readonly): TestEntry | undefined { method getExpireCutoff (line 153) | override getExpireCutoff() { method buildSub (line 157) | override buildSub(missing: string[]): RequestBuilder { type FetchCallback (line 171) | type FetchCallback = (evs: TaggedNostrEvent[]) => Promise function makeMockSystem (line 173) | function makeMockSystem(onFetch: (req: RequestBuilder, authors: string[]... class SpyLoader (line 285) | class SpyLoader extends TestLoader { method buildSub (line 286) | override buildSub(missing: string[]) { class ChunkSpyLoader (line 337) | class ChunkSpyLoader extends BackgroundLoader { method name (line 338) | override name() { method onEvent (line 341) | override onEvent() { method getExpireCutoff (line 344) | override getExpireCutoff() { method buildSub (line 347) | override buildSub(missing: string[]): RequestBuilder { method name (line 379) | override name() { method onEvent (line 382) | override onEvent() { method getExpireCutoff (line 385) | override getExpireCutoff() { method buildSub (line 388) | override buildSub(missing: string[]): RequestBuilder { class ChunkSpyLoader (line 378) | class ChunkSpyLoader extends BackgroundLoader { method name (line 338) | override name() { method onEvent (line 341) | override onEvent() { method getExpireCutoff (line 344) | override getExpireCutoff() { method buildSub (line 347) | override buildSub(missing: string[]): RequestBuilder { method name (line 379) | override name() { method onEvent (line 382) | override onEvent() { method getExpireCutoff (line 385) | override getExpireCutoff() { method buildSub (line 388) | override buildSub(missing: string[]): RequestBuilder { class IdSpyLoader (line 418) | class IdSpyLoader extends BackgroundLoader { method name (line 419) | override name() { method onEvent (line 422) | override onEvent() { method getExpireCutoff (line 425) | override getExpireCutoff() { method buildSub (line 428) | override buildSub(_missing: string[]): RequestBuilder { class InFlightSpyLoader (line 474) | class InFlightSpyLoader extends BackgroundLoader { method name (line 475) | override name() { method onEvent (line 478) | override onEvent() { method getExpireCutoff (line 481) | override getExpireCutoff() { method buildSub (line 484) | override buildSub(missing: string[]): RequestBuilder { class FreshSkipLoader (line 533) | class FreshSkipLoader extends BackgroundLoader { method name (line 534) | override name() { method onEvent (line 537) | override onEvent() { method getExpireCutoff (line 541) | override getExpireCutoff() { method buildSub (line 544) | override buildSub(missing: string[]): RequestBuilder { class ExpiredLoader (line 580) | class ExpiredLoader extends BackgroundLoader { method name (line 581) | override name() { method onEvent (line 584) | override onEvent() { method getExpireCutoff (line 588) | override getExpireCutoff() { method buildSub (line 591) | override buildSub(missing: string[]): RequestBuilder { class BlacklistSpyLoader (line 628) | class BlacklistSpyLoader extends BackgroundLoader { method name (line 629) | override name() { method onEvent (line 632) | override onEvent() { method getExpireCutoff (line 635) | override getExpireCutoff() { method buildSub (line 638) | override buildSub(missing: string[]): RequestBuilder { FILE: packages/system/tests/feed-cache-subscribe.test.ts type TestItem (line 17) | type TestItem = { id: string; value: string; created: number; loaded: nu... class TestFeedCache (line 19) | class TestFeedCache extends FeedCache { method constructor (line 20) | constructor() { method key (line 24) | key(of: TestItem) { method takeSnapshot (line 28) | takeSnapshot() { method search (line 32) | async search() { function item (line 37) | function item(id: string, value = "v1", created = 1, loaded = Date.now()... FILE: packages/system/tests/node.ts function test (line 7) | async function test() { FILE: packages/system/tests/note-collection-comprehensive.test.ts function ev (line 5) | function ev( function sleep (line 16) | function sleep(ms: number) { FILE: packages/system/tests/pin-encrypted.test.ts constant TEST_KEY (line 5) | const TEST_KEY = "000000000000000000000000000000000000000000000000000000... constant TEST_PIN (line 6) | const TEST_PIN = "correct-pin" constant WRONG_PIN (line 7) | const WRONG_PIN = "wrong-pin" FILE: packages/system/tests/query-comprehensive.test.ts function createEv (line 6) | function createEv(id: string, kind = 1, created_at = 100, pubkey = "aa",... function sleep (line 10) | function sleep(ms: number) { FILE: packages/system/tests/query-manager-comprehensive.test.ts function createEv (line 18) | function createEv( function sleep (line 29) | function sleep(ms: number) { function makeRb (line 33) | function makeRb(id: string, groupingDelay = 0) { class MockConnection (line 40) | class MockConnection extends EventEmitter implemen... method constructor (line 51) | constructor(address: string, open = true) { method isOpen (line 57) | get isOpen() { method isDown (line 60) | get isDown() { method activeSubscriptions (line 63) | get activeSubscriptions() { method maxSubscriptions (line 66) | get maxSubscriptions() { method open (line 70) | open() { method markDown (line 76) | markDown() { method connect (line 80) | async connect() {} method close (line 81) | close() {} method publish (line 82) | async publish(ev: NostrEvent): Promise { method request (line 86) | request(req: ReqCommand, cbSent?: () => void) { method closeRequest (line 93) | closeRequest(id: string) { method sendRaw (line 96) | sendRaw(_obj: object) {} class MockPool (line 99) | class MockPool extends EventEmitter implements Con... method add (line 102) | add(c: MockConnection) { method getConnection (line 106) | getConnection(id: string) { method connect (line 110) | async connect(address: string) { method disconnect (line 113) | disconnect(_a: string) {} method broadcast (line 114) | async broadcast(): Promise { method broadcastTo (line 117) | async broadcastTo(_a: string, ev: NostrEvent): Promise { method [Symbol.iterator] (line 121) | *[Symbol.iterator]() { function makeSystem (line 126) | function makeSystem(pool: MockPool, opts?: { cacheRelay?: any }): System... FILE: packages/system/tests/query-manager-race.test.ts class MockConnection (line 38) | class MockConnection extends EventEmitter implemen... method constructor (line 54) | constructor(address: string) { method isOpen (line 60) | get isOpen() { method isDown (line 64) | get isDown() { method activeSubscriptions (line 68) | get activeSubscriptions() { method maxSubscriptions (line 72) | get maxSubscriptions() { method connect (line 76) | async connect() {} method close (line 77) | close() {} method publish (line 78) | async publish(_ev: NostrEvent): Promise { method request (line 82) | request(req: ReqCommand, cbSent?: () => void) { method closeRequest (line 92) | closeRequest(_id: string) {} method sendRaw (line 93) | sendRaw(_obj: object) {} method open (line 96) | open() { class MockPool (line 112) | class MockPool extends EventEmitter implements Con... method add (line 115) | add(conn: MockConnection) { method getConnection (line 119) | getConnection(id: string): ConnectionType | undefined { method connect (line 123) | async connect(address: string, _options: RelaySettings, _ephemeral: bo... method disconnect (line 127) | disconnect(_address: string) {} method broadcast (line 129) | async broadcast(_ev: NostrEvent): Promise { method broadcastTo (line 133) | async broadcastTo(_address: string, _ev: NostrEvent): Promise implemen... method constructor (line 63) | constructor(address: string, open = true) { method isOpen (line 69) | get isOpen() { method isDown (line 72) | get isDown() { method activeSubscriptions (line 75) | get activeSubscriptions() { method maxSubscriptions (line 78) | get maxSubscriptions() { method open (line 82) | open() { method markDown (line 88) | markDown() { method connect (line 92) | async connect() {} method close (line 93) | close() {} method publish (line 94) | async publish(ev: NostrEvent): Promise { method request (line 98) | request(req: ReqCommand, cbSent?: () => void) { method closeRequest (line 105) | closeRequest(_id: string) {} method sendRaw (line 106) | sendRaw(_obj: object) {} class MockPool (line 113) | class MockPool extends EventEmitter implements Con... method add (line 116) | add(c: MockConnection) { method getConnection (line 120) | getConnection(id: string) { method connect (line 124) | async connect(address: string) { method disconnect (line 127) | disconnect(_a: string) {} method broadcast (line 128) | async broadcast(): Promise { method broadcastTo (line 131) | async broadcastTo(_a: string, ev: NostrEvent): Promise { method fireConnected (line 135) | fireConnected(conn: MockConnection) { method [Symbol.iterator] (line 139) | *[Symbol.iterator]() { function makeSystem (line 148) | function makeSystem(pool: MockPool): SystemInterface { FILE: packages/wallet/src/AlbyWallet.ts type OAuthToken (line 17) | interface OAuthToken { class AlbyWallet (line 28) | class AlbyWallet extends EventEmitter implements LNWallet { method constructor (line 30) | constructor(token: OAuthToken) { method isReady (line 35) | isReady() { method canAutoLogin (line 39) | canAutoLogin() { method canGetInvoices (line 43) | canGetInvoices() { method canGetBalance (line 47) | canGetBalance() { method canCreateInvoice (line 51) | canCreateInvoice() { method canPayInvoice (line 55) | canPayInvoice() { method getInfo (line 59) | async getInfo() { method login (line 64) | async login() { method close (line 68) | close() { method getBalance (line 72) | async getBalance() { method createInvoice (line 78) | async createInvoice(req: InvoiceRequest) { method payInvoice (line 87) | async payInvoice(pr: string) { method getInvoices (line 101) | async getInvoices() { method #fetch (line 114) | async #fetch(path: string, method: "GET" | "POST" = "GET", body?: o... method #refreshToken (line 135) | async #refreshToken() { type GetBalanceResponse (line 164) | interface GetBalanceResponse { type CreateInvoiceResponse (line 170) | interface CreateInvoiceResponse { type PayInvoiceResponse (line 176) | interface PayInvoiceResponse { type GetInvoiceResponse (line 186) | interface GetInvoiceResponse { type GetUserResponse (line 200) | interface GetUserResponse { FILE: packages/wallet/src/LNDHub.ts class LNDHubWallet (line 22) | class LNDHubWallet extends EventEmitter implements LNWallet { method constructor (line 29) | constructor(url: string) { method isReady (line 46) | isReady(): boolean { method canAutoLogin (line 50) | canAutoLogin() { method canGetInvoices (line 54) | canGetInvoices() { method canGetBalance (line 58) | canGetBalance() { method canCreateInvoice (line 62) | canCreateInvoice() { method canPayInvoice (line 66) | canPayInvoice() { method close (line 70) | close(): Promise { method getInfo (line 74) | async getInfo() { method login (line 79) | async login() { method getBalance (line 91) | async getBalance(): Promise { method createInvoice (line 98) | async createInvoice(req: InvoiceRequest) { method payInvoice (line 115) | async payInvoice(pr: string) { method getInvoices (line 134) | async getInvoices(): Promise { method getJson (line 154) | private async getJson(method: "GET" | "POST", path: string, body?: ... type AuthResponse (line 175) | interface AuthResponse { type GetBalanceResponse (line 181) | interface GetBalanceResponse { type UserInvoicesResponse (line 187) | interface UserInvoicesResponse { type PayInvoiceResponse (line 199) | interface PayInvoiceResponse { type ErrorResponse (line 206) | interface ErrorResponse { FILE: packages/wallet/src/NostrWalletConnect.ts type WalletConnectConfig (line 18) | interface WalletConnectConfig { type QueueObj (line 24) | interface QueueObj { type WalletConnectResponse (line 29) | interface WalletConnectResponse { type GetInfoResponse (line 46) | interface GetInfoResponse { type ListTransactionsResponse (line 56) | interface ListTransactionsResponse { type MakeInvoiceResponse (line 73) | interface MakeInvoiceResponse { class NostrConnectWallet (line 80) | class NostrConnectWallet extends EventEmitter implements L... method constructor (line 88) | constructor(cfg: string) { method parseConfigUrl (line 94) | static parseConfigUrl(url: string) { method canAutoLogin (line 103) | canAutoLogin(): boolean { method isReady (line 107) | isReady(): boolean { method canGetInvoices (line 111) | canGetInvoices() { method canGetBalance (line 115) | canGetBalance() { method canCreateInvoice (line 119) | canCreateInvoice() { method canPayInvoice (line 123) | canPayInvoice() { method getInfo (line 127) | async getInfo() { method login (line 166) | async login() { method close (line 188) | async close() { method getBalance (line 193) | async getBalance() { method createInvoice (line 203) | async createInvoice(req: InvoiceRequest) { method payInvoice (line 223) | async payInvoice(pr: string) { method getInvoices (line 239) | async getInvoices() { method #onReply (line 266) | async #onReply(sub: string, e: NostrEvent) { method #rpc (line 296) | async #rpc(method: string, params: Record implements LNWallet { method isReady (line 21) | isReady(): boolean { method canCreateInvoice (line 25) | canCreateInvoice() { method canPayInvoice (line 29) | canPayInvoice() { method canGetInvoices (line 33) | canGetInvoices() { method canGetBalance (line 37) | canGetBalance() { method canAutoLogin (line 41) | canAutoLogin(): boolean { method getInfo (line 45) | async getInfo(): Promise { method login (line 61) | async login(): Promise { method close (line 68) | close(): Promise { method getBalance (line 72) | async getBalance(): Promise { method createInvoice (line 81) | async createInvoice(req: InvoiceRequest): Promise { method payInvoice (line 103) | async payInvoice(pr: string): Promise { method getInvoices (line 124) | getInvoices(): Promise { FILE: packages/wallet/src/index.ts type WalletKind (line 10) | enum WalletKind { type WalletErrorCode (line 19) | enum WalletErrorCode { class WalletError (line 29) | class WalletError extends Error { method constructor (line 32) | constructor(c: WalletErrorCode, msg: string) { type WalletInfo (line 43) | interface WalletInfo { type Login (line 57) | interface Login { type InvoiceRequest (line 63) | interface InvoiceRequest { type WalletInvoiceState (line 69) | enum WalletInvoiceState { type WalletInvoice (line 76) | interface WalletInvoice { function prToWalletInvoice (line 88) | function prToWalletInvoice(pr: string) { type Sats (line 103) | type Sats = number type MilliSats (line 104) | type MilliSats = number type WalletEvents (line 106) | interface WalletEvents { type LNWallet (line 110) | type LNWallet = EventEmitter & { function loadWallet (line 134) | async function loadWallet(kind: WalletKind, data: string | undefined) { FILE: packages/wallet/src/zapper.ts type ZapTarget (line 5) | interface ZapTarget { type ZapTargetResult (line 18) | interface ZapTargetResult { type ZapTargetLoaded (line 27) | interface ZapTargetLoaded { class Zapper (line 32) | class Zapper { method constructor (line 36) | constructor( method fromEvent (line 45) | static fromEvent(ev: NostrEvent) { method send (line 89) | async send(wallet: LNWallet | undefined, targets: Array, am... method load (line 152) | async load(targets: Array) { method canZap (line 169) | canZap() { method maxComment (line 176) | maxComment() { method minAmount (line 187) | minAmount() { method maxAmount (line 194) | maxAmount() { method #getService (line 198) | async #getService(t: ZapTarget) { FILE: packages/worker-relay/src/debug.ts function debugLog (line 2) | function debugLog(scope: string, msg: string, ...args: Array) { function setLogging (line 7) | function setLogging(v: boolean) { FILE: packages/worker-relay/src/forYouFeed.ts function getForYouFeed (line 12) | async function getForYouFeed(relay: RelayHandler, pubkey: string): Promi... function getReactionMaps (line 44) | async function getReactionMaps(relay: RelayHandler, myReactedEventIds: S... function getMyReactedEvents (line 62) | async function getMyReactedEvents(relay: RelayHandler, pubkey: string) { function getEventIdsReactedByOthers (line 80) | async function getEventIdsReactedByOthers( function getFeedEvents (line 109) | async function getFeedEvents( FILE: packages/worker-relay/src/interface.ts type InitAargs (line 5) | interface InitAargs { class WorkerRelayInterface (line 12) | class WorkerRelayInterface { method constructor (line 23) | constructor(scriptPath?: string | URL | Worker) { method init (line 46) | async init(args: InitAargs) { method event (line 50) | async event(ev: NostrEvent) { method query (line 54) | async query(req: ReqCommand) { method count (line 58) | async count(req: ReqCommand) { method delete (line 62) | async delete(req: ReqCommand) { method summary (line 66) | async summary() { method close (line 70) | async close(id: string) { method dump (line 74) | async dump() { method wipe (line 78) | async wipe() { method forYouFeed (line 82) | async forYouFeed(pubkey: string) { method setEventMetadata (line 86) | setEventMetadata(id: string, _meta: EventMetadata) { method debug (line 92) | async debug(v: string) { method configureSearchIndex (line 97) | configureSearchIndex(config: Record>) { method #workerRpc (line 101) | async #workerRpc(cmd: WorkerMessageCommand, args?: T) { FILE: packages/worker-relay/src/memory-relay.ts class InMemoryRelay (line 15) | class InMemoryRelay extends EventEmitter implements ... method init (line 19) | init() { method count (line 24) | count(req: ReqFilter): number { method summary (line 34) | summary(): Record { method dump (line 43) | dump(): Promise { method close (line 48) | close(): void { method wipe (line 52) | wipe() { method event (line 57) | event(ev: NostrEvent) { method eventBatch (line 64) | eventBatch(evs: NostrEvent[]) { method sql (line 78) | sql(sql: string, params: (string | number)[]): (string | number)[][] { method req (line 82) | req(id: string, filter: ReqFilter) { method delete (line 96) | delete(filter: ReqFilter) { method setEventMetadata (line 103) | setEventMetadata(_id: string, _meta: EventMetadata) { method batchSetSeenAt (line 107) | batchSetSeenAt(_ids: Array, _seen_at: number) { method configureSearchIndex (line 111) | configureSearchIndex(_kindTagsMapping: Record) { FILE: packages/worker-relay/src/queue.ts type WorkQueueItem (line 1) | interface WorkQueueItem { function processWorkQueue (line 7) | async function processWorkQueue(queue?: Array) { FILE: packages/worker-relay/src/sqlite/fixers.ts function runFixers (line 3) | async function runFixers(relay: SqliteRelay) {} FILE: packages/worker-relay/src/sqlite/migrations.ts function migrate (line 17) | async function migrate(relay: SqliteRelay) { function migrate_v1 (line 38) | function migrate_v1(relay: SqliteRelay) { function migrate_v2 (line 64) | function migrate_v2(relay: SqliteRelay) { function migrate_v3 (line 74) | function migrate_v3(relay: SqliteRelay) { function migrate_v4 (line 90) | async function migrate_v4(relay: SqliteRelay) { function migrate_v5 (line 99) | async function migrate_v5(relay: SqliteRelay) { function migrate_v6 (line 108) | async function migrate_v6(relay: SqliteRelay) { function migrate_v7 (line 117) | async function migrate_v7(relay: SqliteRelay) { FILE: packages/worker-relay/src/sqlite/sqlite-relay.ts constant MAX_SEEN_INSERTS (line 21) | const MAX_SEEN_INSERTS = 50_000 class SqliteRelay (line 23) | class SqliteRelay extends EventEmitter implements Re... method configureSearchIndex (line 36) | configureSearchIndex(kindTagsMapping: Record) { method init (line 47) | async init(path: string) { method #open (line 71) | async #open(path: string) { method wipe (line 83) | async wipe() { method close (line 93) | close() { method event (line 101) | event(ev: NostrEvent) { method sql (line 111) | sql(sql: string, params: Array) { method eventBatch (line 118) | eventBatch(evs: Array) { method setEventMetadata (line 136) | setEventMetadata(id: string, meta: EventMetadata) { method batchSetSeenAt (line 148) | batchSetSeenAt(ids: Array, seen_at: number) { method #deleteById (line 155) | #deleteById(db: Database, ids: Array) { method #insertEvent (line 167) | #insertEvent(db: Database, ev: NostrEvent) { method #updateRelays (line 283) | #updateRelays(db: Database, ev: NostrEvent) { method req (line 303) | req(id: string, req: ReqFilter) { method count (line 327) | count(req: ReqFilter) { method delete (line 343) | delete(req: ReqFilter) { method summary (line 369) | summary() { method dump (line 381) | async dump() { method #buildQuery (line 401) | #buildQuery(req: ReqFilter, count = false, remove = false): [string, A... method #repeatParams (line 464) | #repeatParams(n: number) { method insertIntoSearchIndex (line 472) | insertIntoSearchIndex(db: Database, ev: NostrEvent) { method #markSeen (line 530) | #markSeen(id: string) { FILE: packages/worker-relay/src/types.ts type WorkerMessageCommand (line 3) | type WorkerMessageCommand = type WorkerMessage (line 21) | interface WorkerMessage { type NostrEvent (line 27) | interface NostrEvent { type EventMetadata (line 38) | interface EventMetadata { type ReqCommand (line 42) | type ReqCommand = ["REQ", id: string, ...filters: Array] type ReqFilter (line 44) | interface ReqFilter { type OkResponse (line 55) | interface OkResponse { type RelayHandler (line 63) | interface RelayHandler extends EventEmitter { type RelayHandlerEvents (line 84) | interface RelayHandlerEvents { function unixNowMs (line 88) | function unixNowMs() { function eventMatchesFilter (line 92) | function eventMatchesFilter(ev: NostrEvent, filter: ReqFilter) { FILE: packages/worker-relay/src/worker.ts constant BATCH_WINDOW_MS (line 17) | const BATCH_WINDOW_MS = 50 function flushPendingEvents (line 21) | function flushPendingEvents() { function flushPendingSeenAt (line 34) | function flushPendingSeenAt() { type InitAargs (line 42) | interface InitAargs { function reply (line 47) | async function reply(id: string, obj?: T) { FILE: src-tauri/build.rs function main (line 1) | fn main() { FILE: src-tauri/src/main.rs function main (line 6) | fn main() {