SYMBOL INDEX (498 symbols across 199 files) FILE: next.config.js method headers (line 25) | async headers() { FILE: src/components/aside/aside-footer.tsx function AsideFooter (line 5) | function AsideFooter(): JSX.Element { FILE: src/components/aside/aside-trends.tsx type AsideTrendsProps (line 20) | type AsideTrendsProps = { function AsideTrends (line 24) | function AsideTrends({ inTrendsPage }: AsideTrendsProps): JSX.Element { FILE: src/components/aside/aside.tsx type AsideProps (line 9) | type AsideProps = { function Aside (line 13) | function Aside({ children }: AsideProps): JSX.Element | null { FILE: src/components/aside/search-bar.tsx type SearchBarProps (line 13) | type SearchBarProps = { function SearchBar (line 18) | function SearchBar({ FILE: src/components/aside/trends.tsx type AsideTrendsProps (line 19) | type AsideTrendsProps = { function AsideTrends (line 23) | function AsideTrends({ inTrendsPage }: AsideTrendsProps): JSX.Element { FILE: src/components/common/app-head.tsx function AppHead (line 3) | function AppHead(): JSX.Element { FILE: src/components/common/load-more.tsx function LoadMoreSentinel (line 4) | function LoadMoreSentinel({ FILE: src/components/common/placeholder.tsx function Placeholder (line 4) | function Placeholder(): JSX.Element { FILE: src/components/common/seo.tsx type MainLayoutProps (line 5) | type MainLayoutProps = { function SEO (line 11) | function SEO({ FILE: src/components/feed/tweet-feed.tsx type TweetFeedProps (line 16) | interface TweetFeedProps { function TweetFeed (line 21) | function TweetFeed({ feedOrdering, apiEndpoint }: TweetFeedProps) { FILE: src/components/frames/Frame.tsx type FrameProps (line 21) | type FrameProps = { function Frame (line 31) | function Frame({ frame, frameContext, url }: FrameProps) { FILE: src/components/frames/frame-ui.tsx type Props (line 7) | type Props = React.ComponentProps< method Button (line 12) | Button( method MessageTooltip (line 46) | MessageTooltip(props, stylingProps) { method LoadingScreen (line 69) | LoadingScreen(props, stylingProps) { method Image (line 76) | Image(props, stylingProps) { function FrameUI (line 126) | function FrameUI(props: Props) { FILE: src/components/home/main-container.tsx type MainContainerProps (line 4) | type MainContainerProps = { function MainContainer (line 9) | function MainContainer({ FILE: src/components/home/main-header.tsx type HomeHeaderProps (line 10) | type HomeHeaderProps = { function MainHeader (line 24) | function MainHeader({ FILE: src/components/input/image-preview.tsx type ImagePreviewProps (line 14) | type ImagePreviewProps = { type PostImageBorderRadius (line 33) | type PostImageBorderRadius = Record; function ImagePreview (line 42) | function ImagePreview({ FILE: src/components/input/input-accent-radio.tsx type InputAccentRadioProps (line 6) | type InputAccentRadioProps = { type InputAccentData (line 10) | type InputAccentData = Record; function InputAccentRadio (line 25) | function InputAccentRadio({ type }: InputAccentRadioProps): JSX.Element { FILE: src/components/input/input-field.tsx type InputFieldProps (line 5) | type InputFieldProps = { function InputField (line 21) | function InputField({ FILE: src/components/input/input-form.tsx type InputFormProps (line 18) | type InputFormProps = { function InputForm (line 54) | function InputForm({ FILE: src/components/input/input-options.tsx type Options (line 11) | type Options = { type InputOptionsProps (line 18) | type InputOptionsProps = { function InputOptions (line 31) | function InputOptions({ FILE: src/components/input/input-theme-radio.tsx type InputThemeRadioProps (line 6) | type InputThemeRadioProps = { type InputThemeData (line 11) | type InputThemeData = Record< function InputThemeRadio (line 45) | function InputThemeRadio({ FILE: src/components/input/input.tsx type InputProps (line 32) | type InputProps = { function extractAndReplaceMentions (line 49) | function extractAndReplaceMentions( function Input (line 89) | function Input({ FILE: src/components/input/progress-bar.tsx type ProgressBarProps (line 4) | type ProgressBarProps = { function ProgressBar (line 28) | function ProgressBar({ FILE: src/components/input/search-bar.tsx function SearchBar (line 11) | function SearchBar({ FILE: src/components/layout/auth-layout.tsx function AuthLayout (line 8) | function AuthLayout({ FILE: src/components/layout/common-layout.tsx type LayoutProps (line 7) | type LayoutProps = { function ProtectedLayout (line 11) | function ProtectedLayout({ children }: LayoutProps): JSX.Element { function HomeLayout (line 19) | function HomeLayout({ children }: LayoutProps): JSX.Element { function UserLayout (line 31) | function UserLayout({ children }: LayoutProps): JSX.Element { function TrendsLayout (line 44) | function TrendsLayout({ children }: LayoutProps): JSX.Element { function PeopleLayout (line 56) | function PeopleLayout({ children }: LayoutProps): JSX.Element { FILE: src/components/layout/main-layout.tsx function MainLayout (line 18) | function MainLayout({ children }: LayoutProps): JSX.Element { FILE: src/components/layout/user-data-layout.tsx function UserDataLayout (line 12) | function UserDataLayout({ children }: LayoutProps): JSX.Element { FILE: src/components/layout/user-follow-layout.tsx function UserFollowLayout (line 8) | function UserFollowLayout({ children }: LayoutProps): JSX.Element { FILE: src/components/layout/user-home-layout.tsx function UserHomeLayout (line 21) | function UserHomeLayout({ children }: LayoutProps): JSX.Element { FILE: src/components/login/login-footer.tsx function LoginFooter (line 23) | function LoginFooter(): JSX.Element { FILE: src/components/login/login-main.tsx function LoginMain (line 14) | function LoginMain(): JSX.Element { FILE: src/components/login/sign-in-with-warpcast.tsx constant PENDING_REQUEST_KEY (line 11) | const PENDING_REQUEST_KEY = '-opencast-pendingWarpcastRequest'; type WarpcastSignerResponseBase (line 13) | type WarpcastSignerResponseBase = { type WarpcastRequest (line 21) | type WarpcastRequest = FILE: src/components/modal/action-modal.tsx type ActionModalProps (line 7) | type ActionModalProps = { function ActionModal (line 23) | function ActionModal({ FILE: src/components/modal/display-modal.tsx type DisplayModalProps (line 8) | type DisplayModalProps = { function DisplayModal (line 27) | function DisplayModal({ closeModal }: DisplayModalProps): JSX.Element { FILE: src/components/modal/edit-profile-modal.tsx type EditProfileModalProps (line 11) | type EditProfileModalProps = Pick< function EditProfileModal (line 27) | function EditProfileModal({ FILE: src/components/modal/image-modal.tsx type ImageModalProps (line 15) | type ImageModalProps = { type ArrowButton (line 23) | type ArrowButton = ['prev' | 'next', string | null, IconName]; function ImageModal (line 30) | function ImageModal({ FILE: src/components/modal/mobile-sidebar-modal.tsx type MobileNavLink (line 19) | type MobileNavLink = Omit; type Stats (line 23) | type Stats = [string, string, number]; type MobileSidebarModalProps (line 25) | type MobileSidebarModalProps = Pick< function MobileSidebarModal (line 38) | function MobileSidebarModal({ FILE: src/components/modal/modal.tsx type ModalProps (line 7) | type ModalProps = { function Modal (line 36) | function Modal({ FILE: src/components/modal/save-passkey-modal.tsx function SavePasskeyModal (line 7) | function SavePasskeyModal({ FILE: src/components/modal/sign-in-modal-wallet.tsx constant KEY_METADATA_TYPE_1 (line 31) | const KEY_METADATA_TYPE_1 = [ constant PENDING_KEY_REQUEST (line 61) | const PENDING_KEY_REQUEST = '-opencast-pendingSignerRequest'; type KeyRequest (line 63) | type KeyRequest = FILE: src/components/modal/sign-in-modal-warpcast.tsx function WarpcastSignInModal (line 5) | function WarpcastSignInModal({ FILE: src/components/modal/tip-modal.tsx type TipModalProps (line 16) | interface TipModalProps { function TipModal (line 24) | function TipModal({ FILE: src/components/modal/tweet-reply-modal.tsx type TweetReplyModalProps (line 5) | type TweetReplyModalProps = { function TweetReplyModal (line 10) | function TweetReplyModal({ FILE: src/components/modal/tweet-stats-modal.tsx type TweetStatsModalProps (line 5) | type TweetStatsModalProps = { function TweetStatsModal (line 11) | function TweetStatsModal({ FILE: src/components/modal/username-modal.tsx type UsernameModalProps (line 6) | type UsernameModalProps = { function UsernameModal (line 29) | function UsernameModal({ FILE: src/components/search/search-topics.tsx function SearchTopics (line 11) | function SearchTopics({ FILE: src/components/search/user-search-result.tsx function UserSearchResult (line 4) | function UserSearchResult({ FILE: src/components/sidebar/menu-link.tsx type MenuLinkProps (line 5) | type MenuLinkProps = ComponentPropsWithRef<'a'> & { FILE: src/components/sidebar/mobile-sidebar-link.tsx type MobileSidebarLinkProps (line 7) | type MobileSidebarLinkProps = MobileNavLink & { function MobileSidebarLink (line 11) | function MobileSidebarLink({ FILE: src/components/sidebar/mobile-sidebar.tsx function MobileSidebar (line 21) | function MobileSidebar(): JSX.Element { FILE: src/components/sidebar/more-settings.tsx function MoreSettings (line 23) | function MoreSettings(): JSX.Element { FILE: src/components/sidebar/sidebar-link.tsx type SidebarLinkProps (line 8) | type SidebarLinkProps = NavLink & { function SidebarLink (line 12) | function SidebarLink({ FILE: src/components/sidebar/sidebar-profile.tsx function SidebarProfile (line 18) | function SidebarProfile(): JSX.Element { FILE: src/components/sidebar/sidebar.tsx type NavLink (line 15) | type NavLink = { function Sidebar (line 37) | function Sidebar(): JSX.Element { FILE: src/components/sync/sync-view.tsx function SyncView (line 4) | function SyncView({ userId }: { userId?: string }) { FILE: src/components/tweet/number-stats.tsx type NumberStatsProps (line 5) | type NumberStatsProps = { function NumberStats (line 11) | function NumberStats({ FILE: src/components/tweet/stats-empty.tsx type StatsEmptyProps (line 5) | type StatsEmptyProps = { function StatsEmpty (line 12) | function StatsEmpty({ FILE: src/components/tweet/tweet-actions.tsx type TweetActionsProps (line 45) | type TweetActionsProps = Pick & { function TweetActions (line 56) | function TweetActions({ FILE: src/components/tweet/tweet-date.tsx type TweetDateProps (line 7) | type TweetDateProps = Pick & { function TweetDate (line 12) | function TweetDate({ FILE: src/components/tweet/tweet-embed.tsx function TweetEmbeds (line 13) | function TweetEmbeds({ function TweetEmbed (line 108) | function TweetEmbed({ function FramePreview (line 215) | function FramePreview({ FILE: src/components/tweet/tweet-option.tsx type TweetOption (line 8) | type TweetOption = { function TweetOption (line 20) | function TweetOption({ FILE: src/components/tweet/tweet-parent.tsx type TweetParentProps (line 10) | type TweetParentProps = { function TweetParent (line 16) | function TweetParent({ FILE: src/components/tweet/tweet-share.tsx type TweetShareProps (line 15) | type TweetShareProps = { function TweetShare (line 21) | function TweetShare({ FILE: src/components/tweet/tweet-stats.tsx type TweetStatsProps (line 16) | type TweetStatsProps = Pick< function TweetStats (line 29) | function TweetStats({ FILE: src/components/tweet/tweet-status.tsx type TweetStatusProps (line 7) | type TweetStatusProps = { function TweetStatus (line 12) | function TweetStatus({ type, children }: TweetStatusProps): JSX.Element { FILE: src/components/tweet/tweet-text.tsx type TweetTextProps (line 9) | interface TweetTextProps { function splitAndInsert (line 15) | function splitAndInsert( function TweetText (line 45) | function TweetText({ FILE: src/components/tweet/tweet-topic.tsx function TweetTopicLazy (line 7) | function TweetTopicLazy({ topicUrl }: { topicUrl: string }) { function TweetTopicSkeleton (line 24) | function TweetTopicSkeleton() { function TweetTopic (line 33) | function TweetTopic({ topic }: { topic: TopicType }) { function TopicView (line 44) | function TopicView({ topic }: { topic: TopicType }) { FILE: src/components/tweet/tweet-with-parent.tsx type TweetWithParentProps (line 6) | type TweetWithParentProps = { type LoadedParents (line 10) | type LoadedParents = Record<'parentId' | 'childId', string>[]; function TweetWithParent (line 12) | function TweetWithParent({ data }: TweetWithParentProps): JSX.Element { FILE: src/components/tweet/tweet.tsx type TweetProps (line 24) | type TweetProps = Tweet & { function Tweet (line 40) | function Tweet(tweet: TweetProps): JSX.Element { FILE: src/components/ui/button.tsx type ButtonProps (line 6) | type ButtonProps = ComponentPropsWithRef<'button'> & { FILE: src/components/ui/caution-warn.tsx function CautionWarn (line 4) | function CautionWarn(): JSX.Element { FILE: src/components/ui/custom-icon.tsx type IconName (line 3) | type IconName = keyof typeof Icons; type IconProps (line 5) | type IconProps = { type CustomIconProps (line 9) | type CustomIconProps = IconProps & { function CustomIcon (line 24) | function CustomIcon({ function TwitterIcon (line 33) | function TwitterIcon({ className }: IconProps): JSX.Element { function FeatherIcon (line 51) | function FeatherIcon({ className }: IconProps): JSX.Element { function SpinnerIcon (line 65) | function SpinnerIcon({ className }: IconProps): JSX.Element { function GoogleIcon (line 90) | function GoogleIcon({ className }: IconProps): JSX.Element { function AppleIcon (line 121) | function AppleIcon({ className }: IconProps): JSX.Element { function TriangleIcon (line 131) | function TriangleIcon({ className }: IconProps): JSX.Element { function PinIcon (line 141) | function PinIcon({ className }: IconProps): JSX.Element { function PinOffIcon (line 163) | function PinOffIcon({ className }: IconProps): JSX.Element { FILE: src/components/ui/error.tsx type ErrorProps (line 3) | type ErrorProps = { function Error (line 7) | function Error({ message }: ErrorProps): JSX.Element { FILE: src/components/ui/feed-ordering-selector.tsx type FeedOrderingSelectorProps (line 5) | interface FeedOrderingSelectorProps { function FeedOrderingSelector (line 10) | function FeedOrderingSelector({ FILE: src/components/ui/follow-button.tsx type FollowButtonProps (line 14) | type FollowButtonProps = { function FollowButton (line 19) | function FollowButton({ FILE: src/components/ui/hero-icon.tsx type IconName (line 4) | type IconName = keyof typeof SolidIcons | keyof typeof OutlineIcons; type HeroIconProps (line 6) | type HeroIconProps = { function HeroIcon (line 12) | function HeroIcon({ FILE: src/components/ui/loading.tsx type LoadingProps (line 4) | type LoadingProps = { function Loading (line 9) | function Loading({ FILE: src/components/ui/menu-row.tsx type MenuLinkPropsBase (line 6) | type MenuLinkPropsBase = { type MenuLinkPropsLink (line 14) | type MenuLinkPropsLink = MenuLinkPropsBase & { type MenuLinkPropsButton (line 19) | type MenuLinkPropsButton = MenuLinkPropsBase & { type MenuLinkProps (line 24) | type MenuLinkProps = MenuLinkPropsLink | MenuLinkPropsButton; function MenuRowBase (line 26) | function MenuRowBase({ function MenuRow (line 68) | function MenuRow(props: MenuLinkProps) { FILE: src/components/ui/next-image.tsx type NextImageProps (line 7) | type NextImageProps = { function NextImage (line 22) | function NextImage({ FILE: src/components/ui/segmented-nav-link.tsx type SegmentedNavLinkProps (line 5) | type SegmentedNavLinkProps = { function SegmentedNavLink (line 12) | function SegmentedNavLink({ FILE: src/components/ui/tooltip.tsx type ToolTipProps (line 3) | type ToolTipProps = { function ToolTip (line 10) | function ToolTip({ FILE: src/components/user/user-avatar.tsx type UserAvatarProps (line 5) | type UserAvatarProps = { function UserAvatar (line 13) | function UserAvatar({ FILE: src/components/user/user-card.tsx type UserCardProps (line 12) | type UserCardProps = User & { function UserCard (line 17) | function UserCard(user: UserCardProps): JSX.Element { FILE: src/components/user/user-cards.tsx type FollowType (line 11) | type FollowType = 'following' | 'followers'; type CombinedTypes (line 13) | type CombinedTypes = StatsType | FollowType; type UserCardsProps (line 15) | type UserCardsProps = { type NoStatsData (line 23) | type NoStatsData = Record; function UserCards (line 50) | function UserCards({ FILE: src/components/user/user-details.tsx type UserDetailsProps (line 16) | type UserDetailsProps = Pick< type DetailIcon (line 31) | type DetailIcon = [string | null, IconName]; function UserDetails (line 33) | function UserDetails({ FILE: src/components/user/user-edit-profile.tsx type RequiredInputFieldProps (line 22) | type RequiredInputFieldProps = Omit & { type UserImages (line 26) | type UserImages = Record< type TrimmedTexts (line 31) | type TrimmedTexts = Pick< type UserEditProfileProps (line 36) | type UserEditProfileProps = { function UserEditProfile (line 40) | function UserEditProfile({ hide }: UserEditProfileProps): JSX.Element { FILE: src/components/user/user-fid.tsx type UserFollowingProps (line 1) | type UserFollowingProps = { function UserFid (line 5) | function UserFid({ FILE: src/components/user/user-follow-stats.tsx type UserFollowStatsProps (line 9) | type UserFollowStatsProps = Pick; type Stats (line 10) | type Stats = [string, string, number, number]; function UserFollowStats (line 12) | function UserFollowStats({ FILE: src/components/user/user-follow.tsx type UserFollowProps (line 7) | type UserFollowProps = { function UserFollow (line 11) | function UserFollow({ type }: UserFollowProps): JSX.Element { FILE: src/components/user/user-following.tsx type UserFollowingProps (line 3) | type UserFollowingProps = { function UserFollowing (line 7) | function UserFollowing({ FILE: src/components/user/user-header.tsx function UserHeader (line 14) | function UserHeader(): JSX.Element { FILE: src/components/user/user-home-avatar.tsx type UserHomeAvatarProps (line 8) | type UserHomeAvatarProps = { function UserHomeAvatar (line 12) | function UserHomeAvatar({ FILE: src/components/user/user-home-cover.tsx type UserHomeCoverProps (line 8) | type UserHomeCoverProps = { function UserHomeCover (line 12) | function UserHomeCover({ coverData }: UserHomeCoverProps): JSX.Element { FILE: src/components/user/user-known-followers.tsx function UserKnownFollowersLazy (line 7) | function UserKnownFollowersLazy({ function UserKnownFollowers (line 40) | function UserKnownFollowers({ FILE: src/components/user/user-name.tsx type UserNameProps (line 5) | type UserNameProps = { function UserName (line 14) | function UserName({ FILE: src/components/user/user-nav.tsx type UserNavProps (line 6) | type UserNavProps = { function UserNav (line 24) | function UserNav({ follow, userId }: UserNavProps): JSX.Element { FILE: src/components/user/user-share.tsx type UserShareProps (line 12) | type UserShareProps = { function UserShare (line 16) | function UserShare({ username }: UserShareProps): JSX.Element { FILE: src/components/user/user-tooltip.tsx type UserTooltipProps (line 21) | type UserTooltipProps = Pick< type Stats (line 30) | type Stats = [string, string, number]; function UserTooltip (line 32) | function UserTooltip({ FILE: src/components/user/user-username.tsx type UserUsernameProps (line 4) | type UserUsernameProps = { function UserUsername (line 10) | function UserUsername({ FILE: src/components/view/view-parent-tweet.tsx type ViewParentTweetProps (line 7) | type ViewParentTweetProps = { function ViewParentTweet (line 12) | function ViewParentTweet({ FILE: src/components/view/view-tweet-stats.tsx type viewTweetStats (line 13) | type viewTweetStats = Pick & { type StatsType (line 24) | type StatsType = 'retweets' | 'likes'; type Stats (line 26) | type Stats = [string, StatsType | null, number, number]; function ViewTweetStats (line 28) | function ViewTweetStats({ FILE: src/components/view/view-tweet.tsx type ViewTweetProps (line 24) | type ViewTweetProps = Tweet & { function ViewTweet (line 30) | function ViewTweet(tweet: ViewTweetProps): JSX.Element { FILE: src/contracts/id-registry.ts constant ID_REGISTRY_ADDRESS (line 1) | const ID_REGISTRY_ADDRESS = constant ID_REGISTRY_ABI (line 4) | const ID_REGISTRY_ABI = [ constant ID_REGISTRY (line 466) | const ID_REGISTRY = { FILE: src/contracts/key-gateway.ts constant KEY_GATEWAY_ADDRESS (line 1) | const KEY_GATEWAY_ADDRESS = constant KEY_GATEWAY_ABI (line 4) | const KEY_GATEWAY_ABI = [ constant KEY_GATEWAY (line 293) | const KEY_GATEWAY = { FILE: src/contracts/key-registry.ts constant KEY_REGISTRY_ADDRESS (line 1) | const KEY_REGISTRY_ADDRESS = constant KEY_REGISTRY_ABI (line 4) | const KEY_REGISTRY_ABI = [ constant KEY_REGISTRY (line 626) | const KEY_REGISTRY = { FILE: src/contracts/validator.ts constant VALIDATOR_ABI (line 1) | const VALIDATOR_ABI = [ FILE: src/lib/api/auth.ts constant AUTH (line 1) | const AUTH: Readonly = { FILE: src/lib/api/trends.ts type SwrHooksReturn (line 5) | type SwrHooksReturn = { type UseTrendsReturn (line 10) | type UseTrendsReturn = SwrHooksReturn & { type FilteredSuccessResponse (line 14) | type FilteredSuccessResponse = Omit & { type FilteredUseTrendsReturn (line 18) | type FilteredUseTrendsReturn = SwrHooksReturn & { function useTrends (line 34) | function useTrends( FILE: src/lib/chains/resolve-chain-icon.ts function resolveChainIcon (line 3) | async function resolveChainIcon(chainId: number) { function _resolveChainIcon (line 15) | async function _resolveChainIcon(chainId: number) { FILE: src/lib/context/auth-context.tsx type UserWithKey (line 22) | type UserWithKey = UserFull & { keyPair?: KeyPair }; type AuthContext (line 24) | type AuthContext = { type AuthContextProviderProps (line 45) | type AuthContextProviderProps = { function AuthContextProvider (line 49) | function AuthContextProvider({ function useAuth (line 243) | function useAuth(): AuthContext { FILE: src/lib/context/theme-context.tsx type ThemeContext (line 8) | type ThemeContext = { type ThemeContextProviderProps (line 17) | type ThemeContextProviderProps = { function setInitialTheme (line 21) | function setInitialTheme(): Theme { function setInitialAccent (line 30) | function setInitialAccent(): Accent { function ThemeContextProvider (line 38) | function ThemeContextProvider({ function useTheme (line 125) | function useTheme(): ThemeContext { FILE: src/lib/context/user-context.tsx type UserContext (line 5) | type UserContext = { type UserContextProviderProps (line 12) | type UserContextProviderProps = { function UserContextProvider (line 17) | function UserContextProvider({ function useUser (line 24) | function useUser(): UserContext { FILE: src/lib/context/window-context.tsx type WindowSize (line 4) | type WindowSize = { type WindowContext (line 9) | type WindowContext = WindowSize & { type WindowContextProviderProps (line 15) | type WindowContextProviderProps = { function WindowContextProvider (line 18) | function WindowContextProvider({ function useWindow (line 57) | function useWindow(): WindowContext { FILE: src/lib/crypto.ts function generateKeyPair (line 5) | async function generateKeyPair(): Promise { function getKeyPair (line 15) | async function getKeyPair(privateKey: `0x${string}`): Promise { FILE: src/lib/date.ts constant RELATIVE_TIME_FORMATTER (line 1) | const RELATIVE_TIME_FORMATTER = new Intl.RelativeTimeFormat('en-gb', { type Units (line 6) | type Units = Readonly { FILE: src/lib/farcaster/utils.ts function getSigner (line 19) | function getSigner(privateKey: string): NobleEd25519Signer { function getSignerFromStorage (line 24) | async function getSignerFromStorage(): Promise { function createReactionMessage (line 33) | async function createReactionMessage({ function createCastMessage (line 70) | async function createCastMessage({ function createRemoveCastMessage (line 125) | async function createRemoveCastMessage({ function createFollowMessage (line 148) | async function createFollowMessage({ function makeMessage (line 177) | async function makeMessage(messageData: MessageData) { function submitHubMessage (line 202) | async function submitHubMessage(message: Message) { function batchSubmitHubMessages (line 214) | async function batchSubmitHubMessages(messages: Message[]) { FILE: src/lib/fetch.ts function fetchJSON (line 1) | async function fetchJSON( FILE: src/lib/hooks/useConnectedWalletFid.tsx function useFid (line 5) | function useFid() { FILE: src/lib/hooks/useInfiniteScroll.tsx function useInfiniteScroll (line 9) | function useInfiniteScroll( FILE: src/lib/hooks/useInfiniteScrollUsers.tsx function useInfiniteScrollUsers (line 9) | function useInfiniteScrollUsers( FILE: src/lib/hooks/useModal.ts type Modal (line 3) | type Modal = { function useModal (line 9) | function useModal(): Modal { FILE: src/lib/hooks/useRequireAuth.ts function useRequireAuth (line 6) | function useRequireAuth(redirectUrl?: string): User | null { FILE: src/lib/keys.ts constant KEYPAIRS_KEY (line 5) | const KEYPAIRS_KEY = 'keys'; constant ACTIVE_KEYPAIR_KEY (line 6) | const ACTIVE_KEYPAIR_KEY = 'activeKey'; constant PENDING_KEYPAIR_KEY (line 7) | const PENDING_KEYPAIR_KEY = 'pendingKey'; function getKeyPairs (line 9) | async function getKeyPairs() { function addKeyPair (line 23) | function addKeyPair(keyPair: KeyPair) { function removeKeyPair (line 32) | function removeKeyPair(keyPair: KeyPair) { function setKeyPair (line 39) | function setKeyPair(keyPair: KeyPair) { function getActiveKeyPair (line 43) | async function getActiveKeyPair(): Promise { FILE: src/lib/lru-cache.ts constant LRU (line 7) | const LRU = globalForLRU.LRU ?? new LRUCache({ max: 1000 }); FILE: src/lib/merge.ts type DataWithDate (line 3) | type DataWithDate = T & { createdAt: Timestamp }; function mergeData (line 5) | function mergeData( FILE: src/lib/paginated-reactions.ts type PaginatedUsersResponse (line 7) | interface PaginatedUsersResponse function getReactionUsersPaginated (line 13) | async function getReactionUsersPaginated( FILE: src/lib/paginated-tweets.ts type PaginatedTweetsType (line 11) | type PaginatedTweetsType = { type PaginatedTweetsResponse (line 17) | interface PaginatedTweetsResponse type TweetsResponse (line 20) | interface TweetsResponse extends BaseResponse<{ tweets: Tweet[] }> {} function getTweetsPaginatedRawSql (line 27) | async function getTweetsPaginatedRawSql(sql: Sql, ...args: any[]) { function getTweetsPaginatedPrismaArgs (line 37) | async function getTweetsPaginatedPrismaArgs( function convertAndCalculateCursor (line 51) | async function convertAndCalculateCursor( type CastToTweetsReturnType (line 77) | type CastToTweetsReturnType = { function castsToTweets (line 86) | async function castsToTweets( FILE: src/lib/passkeys.ts type UserWithKey (line 5) | type UserWithKey = UserFull & { keyPair?: KeyPair }; function storeSignerLargeBlob (line 7) | async function storeSignerLargeBlob({ function createNewPasskey (line 54) | async function createNewPasskey({ FILE: src/lib/random.ts constant CHARS (line 1) | const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234... function getRandomId (line 3) | function getRandomId(): string { function getRandomInt (line 10) | function getRandomInt(min: number, max: number): number { FILE: src/lib/signers.ts function getSignerDetail (line 4) | async function getSignerDetail( FILE: src/lib/topics/resolve-topic.ts type TopicsMapType (line 18) | type TopicsMapType = { [key: string]: TopicType }; type FarcasterChannel (line 20) | type FarcasterChannel = { function resolveTopic (line 31) | async function resolveTopic(url: string): Promise { function cleanUrl (line 47) | function cleanUrl(url: string): string { function getAllChannelsIndexed (line 58) | async function getAllChannelsIndexed() { function getChannel (line 83) | async function getChannel(url: string) { function _resolveTopic (line 89) | async function _resolveTopic(url: string): Promise { function resolveTopicsMap (line 258) | async function resolveTopicsMap(urls: string[]): Promise { FILE: src/lib/types/app-auth.ts type AppAuthResponse (line 3) | type AppAuthResponse = BaseResponse; type AppAuthType (line 5) | type AppAuthType = { FILE: src/lib/types/available.ts type AvailablePlace (line 1) | type AvailablePlace = { type PlaceType (line 11) | type PlaceType = { type AvailablePlaces (line 16) | type AvailablePlaces = AvailablePlace[]; FILE: src/lib/types/bookmark.ts type Bookmark (line 3) | type Bookmark = { method toFirestore (line 9) | toFirestore(bookmark) { method fromFirestore (line 12) | fromFirestore(snapshot, options) { FILE: src/lib/types/feed.ts type FeedOrderingType (line 1) | type FeedOrderingType = 'latest' | 'top'; FILE: src/lib/types/file.ts type ImageData (line 1) | type ImageData = { type ImagesPreview (line 6) | type ImagesPreview = (ImageData & { type ImagePreview (line 10) | type ImagePreview = ImageData & { id: string }; type FileWithId (line 11) | type FileWithId = File & { id: string }; type FilesWithId (line 13) | type FilesWithId = (File & { FILE: src/lib/types/keypair.ts type KeyPair (line 1) | type KeyPair = { FILE: src/lib/types/notifications.ts type MessageMetadata (line 6) | type MessageMetadata = { type ReactionQueryResult (line 13) | type ReactionQueryResult = casts & type FollowerQueryResult (line 18) | type FollowerQueryResult = MessageMetadata; type RepliesQueryResult (line 20) | type RepliesQueryResult = casts & type MentionsQueryResult (line 23) | type MentionsQueryResult = casts & type BasicNotification (line 28) | type BasicNotification = { type BasicReaction (line 34) | type BasicReaction = BasicNotification & { type BasicFollow (line 38) | type BasicFollow = BasicNotification; type BasicReply (line 39) | type BasicReply = BasicNotification & { type BasicMention (line 43) | type BasicMention = BasicNotification & { castId: string }; type NotificationsSummary (line 45) | type NotificationsSummary = { type NotificationsResponseSummary (line 50) | type NotificationsResponseSummary = BaseResponse; type AccumulatedReaction (line 52) | type AccumulatedReaction = BasicNotification & { type AccumulatedFollow (line 59) | type AccumulatedFollow = BasicNotification & { type NotificationsResponseFull (line 63) | type NotificationsResponseFull = BaseResponse< FILE: src/lib/types/online.ts type AppProfile (line 4) | type AppProfile = { pfp?: string; display?: string; username?: string }; type OnlineUsersResponse (line 6) | type OnlineUsersResponse = BaseResponse<{ FILE: src/lib/types/place.ts type TrendsReturn (line 1) | type TrendsReturn = { type TrendsResponse (line 6) | type TrendsResponse = SuccessResponse | ErrorResponse; type SuccessResponse (line 8) | type SuccessResponse = { type ErrorResponse (line 13) | type ErrorResponse = { type TrendsData (line 22) | type TrendsData = [ type Location (line 31) | type Location = [ type Trend (line 38) | type Trend = { type Trends (line 46) | type Trends = Trend[]; type FilteredTrends (line 48) | type FilteredTrends = (Trend & { FILE: src/lib/types/responses.ts type BaseResponse (line 1) | interface BaseResponse { FILE: src/lib/types/signer.ts type SignerDetail (line 4) | type SignerDetail = { type SignersResponse (line 21) | type SignersResponse = BaseResponse; type SignerResponse (line 22) | type SignerResponse = BaseResponse; type MessagesArchive (line 24) | type MessagesArchive = { type MessagesArchiveResponse (line 29) | type MessagesArchiveResponse = BaseResponse; FILE: src/lib/types/stats.ts type Stats (line 3) | type Stats = { method toFirestore (line 10) | toFirestore(bookmark) { method fromFirestore (line 13) | fromFirestore(snapshot, options) { FILE: src/lib/types/theme.ts type Theme (line 1) | type Theme = 'light' | 'dim' | 'dark'; type Accent (line 2) | type Accent = 'blue' | 'yellow' | 'pink' | 'purple' | 'orange' | 'green'; FILE: src/lib/types/topic.ts type TopicResponse (line 3) | type TopicResponse = BaseResponse; type TopicType (line 5) | type TopicType = { FILE: src/lib/types/trends.ts type TrendsResponse (line 4) | type TrendsResponse = BaseResponse< FILE: src/lib/types/tweet.ts type Mention (line 11) | type Mention = { type ExternalEmbed (line 18) | type ExternalEmbed = { type Tweet (line 29) | type Tweet = { type TweetWithUsers (line 51) | type TweetWithUsers = Tweet & { users: UsersMapType }; type TweetResponse (line 53) | type TweetResponse = BaseResponse; type TweetRepliesResponse (line 54) | interface TweetRepliesResponse method toTweet (line 118) | toTweet(cast: casts & { client?: string }): Tweet { FILE: src/lib/types/user.ts type User (line 6) | type User = { type UserFull (line 15) | type UserFull = User & { type EditableData (line 32) | type EditableData = Extract< type EditableUserData (line 37) | type EditableUserData = Pick; type UserResponse (line 39) | type UserResponse = BaseResponse; type UserFullResponse (line 41) | type UserFullResponse = BaseResponse; type UsersMapType (line 43) | type UsersMapType = { [key: string]: T }; type KnownFollowersResponse (line 45) | type KnownFollowersResponse = BaseResponse<{ method toUser (line 51) | toUser(user: any): User { method toUserFull (line 62) | toUserFull(user: any): UserFull { FILE: src/lib/user/resolve-user.ts function getUserDataMap (line 14) | async function getUserDataMap(fid: bigint): Promise< function resolveUserFromFid (line 64) | async function resolveUserFromFid(fid: bigint): Promise { function resolveUserFullFromFid (line 72) | async function resolveUserFullFromFid( function resolveUserAmbiguous (line 128) | async function resolveUserAmbiguous( function resolveUsers (line 156) | async function resolveUsers( function resolveUsersMap (line 170) | async function resolveUsersMap( function userInterests (line 189) | async function userInterests(fid: bigint): Promise { FILE: src/lib/utils.ts function preventBubbling (line 5) | function preventBubbling( function hasAncestorWithClass (line 17) | function hasAncestorWithClass(element: HTMLElement, className: string) { function delayScroll (line 31) | function delayScroll(ms: number) { function sleep (line 35) | function sleep(ms: number): Promise { function getStatsMove (line 39) | function getStatsMove(movePixels: number): MotionProps { function isPlural (line 60) | function isPlural(count: number): string { function replaceOccurrencesMultiple (line 64) | function replaceOccurrencesMultiple( type ParsedChainURL (line 75) | type ParsedChainURL = { function parseChainURL (line 82) | function parseChainURL(url: string): ParsedChainURL | null { function getHttpsUrls (line 101) | function getHttpsUrls(text: string): string[] { function JSONStringify (line 143) | function JSONStringify(data: T): string { function JSONParse (line 147) | function JSONParse(data: string): T { function serialize (line 151) | function serialize(data: T): T { FILE: src/lib/validation.ts constant IMAGE_EXTENSIONS (line 4) | const IMAGE_EXTENSIONS = [ type ImageExtensions (line 18) | type ImageExtensions = (typeof IMAGE_EXTENSIONS)[number]; function isValidImageExtension (line 20) | function isValidImageExtension( function isValidImage (line 28) | function isValidImage(name: string, bytes: number): boolean { function isValidUsername (line 32) | function isValidUsername( type ImagesData (line 48) | type ImagesData = { function getImagesData (line 53) | function getImagesData( function renameFile (line 90) | function renameFile( FILE: src/pages/404.tsx function NotFound (line 5) | function NotFound(): JSX.Element { FILE: src/pages/[...redirect].tsx function Redirect (line 3) | function Redirect(): JSX.Element { FILE: src/pages/_app.tsx type NextPageWithLayout (line 17) | type NextPageWithLayout = NextPage & { type AppPropsWithLayout (line 21) | type AppPropsWithLayout = AppProps & { function App (line 37) | function App({ FILE: src/pages/_document.tsx function Document (line 3) | function Document(): JSX.Element { FILE: src/pages/api/embeds.ts function handle (line 5) | async function handle( FILE: src/pages/api/feed.ts function handle (line 13) | async function handle( FILE: src/pages/api/hub/batch.ts function handle (line 6) | async function handle( FILE: src/pages/api/hub/index.ts function handle (line 6) | async function handle( FILE: src/pages/api/online/index.ts function handle (line 8) | async function handle( FILE: src/pages/api/search.ts function handle (line 7) | async function handle( FILE: src/pages/api/signer/[pubKey]/authorize.ts type SignerEndpointQuery (line 7) | type SignerEndpointQuery = { constant SIGNED_KEY_REQUEST_VALIDATOR_EIP_712_DOMAIN (line 11) | const SIGNED_KEY_REQUEST_VALIDATOR_EIP_712_DOMAIN = { constant SIGNED_KEY_REQUEST_TYPE (line 18) | const SIGNED_KEY_REQUEST_TYPE = [ function handle (line 24) | async function handle( FILE: src/pages/api/signer/[pubKey]/user.ts type SignerEndpointQuery (line 7) | type SignerEndpointQuery = { function signerUserEndpoint (line 11) | async function signerUserEndpoint( FILE: src/pages/api/topic/index.ts function topicIdEndpoint (line 6) | async function topicIdEndpoint( FILE: src/pages/api/trends/index.ts function handle (line 6) | async function handle( FILE: src/pages/api/tweet/[id]/engagers.ts function handle (line 7) | async function handle( FILE: src/pages/api/tweet/[id]/index.ts type TweetEndpointQuery (line 21) | type TweetEndpointQuery = { function tweetIdEndpoint (line 25) | async function tweetIdEndpoint( FILE: src/pages/api/tweet/[id]/replies.ts function handle (line 7) | async function handle( FILE: src/pages/api/tweet/batch.ts function handle (line 12) | async function handle( FILE: src/pages/api/user/[id]/index.ts type UserEndpointQuery (line 5) | type UserEndpointQuery = { function userIdEndpoint (line 10) | async function userIdEndpoint( FILE: src/pages/api/user/[id]/interests.ts function handle (line 5) | async function handle( FILE: src/pages/api/user/[id]/known-followers.ts function handle (line 6) | async function handle( FILE: src/pages/api/user/[id]/likes.ts function handle (line 9) | async function handle( FILE: src/pages/api/user/[id]/links.ts function handle (line 6) | async function handle( FILE: src/pages/api/user/[id]/notifications.ts function handle (line 23) | async function handle( FILE: src/pages/api/user/[id]/signers/[pubKey]/backup.ts type SignerEndpointQuery (line 8) | type SignerEndpointQuery = { function handler (line 13) | async function handler( FILE: src/pages/api/user/[id]/signers/[pubKey]/casts.ts type Query (line 9) | type Query = { function handle (line 14) | async function handle( FILE: src/pages/api/user/[id]/signers/[pubKey]/index.ts type SignerEndpointQuery (line 5) | type SignerEndpointQuery = { function handler (line 10) | async function handler( FILE: src/pages/api/user/[id]/signers/index.ts function handle (line 6) | async function handle( FILE: src/pages/api/user/[id]/sync.ts type UserEndpointQuery (line 4) | type UserEndpointQuery = { function handler (line 8) | async function handler( FILE: src/pages/api/user/[id]/tweets.ts function handle (line 9) | async function handle( FILE: src/pages/api/user/resolve-usernames.ts function handle (line 6) | async function handle( FILE: src/pages/home.tsx function Home (line 19) | function Home(): JSX.Element { FILE: src/pages/index.tsx function Landing (line 5) | function Landing(): JSX.Element { FILE: src/pages/login.tsx function Login (line 7) | function Login(): JSX.Element { FILE: src/pages/notifications.tsx function NotificationsPage (line 31) | function NotificationsPage(): JSX.Element { FILE: src/pages/settings/index.tsx function Settings (line 20) | function Settings(): JSX.Element { FILE: src/pages/settings/manage-signers/[pubKey].tsx function getSignerDescription (line 36) | function getSignerDescription(signer: SignerDetail) { function SignerDetailPage (line 47) | function SignerDetailPage(): JSX.Element { FILE: src/pages/settings/manage-signers/index.tsx function ManageSigners (line 19) | function ManageSigners(): JSX.Element { FILE: src/pages/topic/index.tsx function TopicPage (line 18) | function TopicPage(): JSX.Element { FILE: src/pages/trends.tsx function Trends (line 16) | function Trends(): JSX.Element { FILE: src/pages/tweet/[id].tsx function TweetId (line 26) | function TweetId(): JSX.Element { FILE: src/pages/user/[id]/followers.tsx function UserFollowers (line 8) | function UserFollowers(): JSX.Element { FILE: src/pages/user/[id]/following.tsx function UserFollowing (line 8) | function UserFollowing(): JSX.Element { FILE: src/pages/user/[id]/index.tsx function UserTweets (line 13) | function UserTweets(): JSX.Element { FILE: src/pages/user/[id]/likes.tsx function UserLikes (line 14) | function UserLikes(): JSX.Element { FILE: src/pages/user/[id]/with_replies.tsx function UserWithReplies (line 16) | function UserWithReplies(): JSX.Element {