SYMBOL INDEX (2128 symbols across 641 files) FILE: apps/browser-extension/src/BookmarkDeletedPage.tsx function BookmarkDeletedPage (line 1) | function BookmarkDeletedPage() { FILE: apps/browser-extension/src/BookmarkSavedPage.tsx function BookmarkSavedPage (line 18) | function BookmarkSavedPage() { FILE: apps/browser-extension/src/CustomHeadersPage.tsx function CustomHeadersPage (line 10) | function CustomHeadersPage() { FILE: apps/browser-extension/src/Layout.tsx function Layout (line 7) | function Layout() { FILE: apps/browser-extension/src/Logo.tsx function Logo (line 4) | function Logo() { FILE: apps/browser-extension/src/NotConfiguredPage.tsx function NotConfiguredPage (line 10) | function NotConfiguredPage() { FILE: apps/browser-extension/src/OptionsPage.tsx function OptionsPage (line 23) | function OptionsPage() { FILE: apps/browser-extension/src/SavePage.tsx function SavePage (line 17) | function SavePage() { FILE: apps/browser-extension/src/SignInPage.tsx type LoginState (line 11) | const enum LoginState { function SignInPage (line 17) | function SignInPage() { FILE: apps/browser-extension/src/Spinner.tsx function Spinner (line 1) | function Spinner() { FILE: apps/browser-extension/src/background/background.ts constant OPEN_KARAKEEP_ID (line 17) | const OPEN_KARAKEEP_ID = "open-karakeep"; constant ADD_LINK_TO_KARAKEEP_ID (line 18) | const ADD_LINK_TO_KARAKEEP_ID = "add-link"; constant CLEAR_CURRENT_CACHE_ID (line 19) | const CLEAR_CURRENT_CACHE_ID = "clear-current-cache"; constant CLEAR_ALL_CACHE_ID (line 20) | const CLEAR_ALL_CACHE_ID = "clear-all-cache"; constant SEPARATOR_ID (line 21) | const SEPARATOR_ID = "separator-1"; constant VIEW_PAGE_IN_KARAKEEP (line 22) | const VIEW_PAGE_IN_KARAKEEP = "view-page-in-karakeep"; function checkSettingsState (line 28) | async function checkSettingsState(settings: Settings) { function removeContextMenus (line 41) | function removeContextMenus() { function registerContextMenus (line 56) | function registerContextMenus(settings: Settings) { function handleContextMenuClick (line 104) | async function handleContextMenuClick( function addLinkToKarakeep (line 144) | function addLinkToKarakeep({ function searchCurrentUrl (line 189) | async function searchCurrentUrl(tabUrl?: string) { function clearCurrentPageCache (line 221) | async function clearCurrentPageCache() { function clearAllCache (line 244) | async function clearAllCache() { function handleCommand (line 269) | function handleCommand(command: string, tab: chrome.tabs.Tab) { function setBadge (line 292) | async function setBadge(badgeStatus: string | null, tabId?: number) { function checkAndUpdateIcon (line 312) | async function checkAndUpdateIcon(tabId: number) { FILE: apps/browser-extension/src/background/protocol.ts constant NEW_BOOKMARK_REQUEST_KEY_NAME (line 1) | const NEW_BOOKMARK_REQUEST_KEY_NAME = "karakeep-new-bookmark"; FILE: apps/browser-extension/src/components/BookmarkLists.tsx function BookmarkLists (line 12) | function BookmarkLists({ bookmarkId }: { bookmarkId: string }) { FILE: apps/browser-extension/src/components/ListsSelector.tsx function ListsSelector (line 26) | function ListsSelector({ bookmarkId }: { bookmarkId: string }) { FILE: apps/browser-extension/src/components/NoteEditor.tsx function NoteEditor (line 12) | function NoteEditor({ bookmarkId }: { bookmarkId: string }) { FILE: apps/browser-extension/src/components/TagList.tsx function TagList (line 6) | function TagList({ bookmarkId }: { bookmarkId: string }) { FILE: apps/browser-extension/src/components/TagsSelector.tsx function TagsSelector (line 25) | function TagsSelector({ bookmarkId }: { bookmarkId: string }) { FILE: apps/browser-extension/src/components/ui/badge.tsx type BadgeProps (line 27) | interface BadgeProps function Badge (line 32) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: apps/browser-extension/src/components/ui/button.tsx type ButtonProps (line 37) | interface ButtonProps FILE: apps/browser-extension/src/components/ui/command.tsx type CommandDialogProps (line 24) | type CommandDialogProps = DialogProps; FILE: apps/browser-extension/src/components/ui/dynamic-popover.tsx type DynamicPopoverContentProps (line 6) | interface DynamicPopoverContentProps extends React.ComponentPropsWithout... function useDebounce (line 26) | function useDebounce(value: T, delay: number): T { function getAvailableHeight (line 45) | function getAvailableHeight(element: HTMLElement): number { function getContentHeight (line 66) | function getContentHeight(element: HTMLElement): number { FILE: apps/browser-extension/src/components/ui/input.tsx type InputProps (line 5) | type InputProps = React.InputHTMLAttributes; FILE: apps/browser-extension/src/components/ui/textarea.tsx type TextareaProps (line 5) | type TextareaProps = React.TextareaHTMLAttributes; FILE: apps/browser-extension/src/main.tsx function App (line 17) | function App() { FILE: apps/browser-extension/src/utils/ThemeProvider.tsx type Theme (line 5) | type Theme = "dark" | "light" | "system"; type ThemeProviderProps (line 7) | interface ThemeProviderProps { type ThemeProviderState (line 11) | interface ThemeProviderState { function ThemeProvider (line 23) | function ThemeProvider({ children, ...props }: ThemeProviderProps) { FILE: apps/browser-extension/src/utils/badgeCache.ts function fetchBadgeStatus (line 11) | async function fetchBadgeStatus(url: string): Promise { function getBadgeStatus (line 32) | async function getBadgeStatus(url: string): Promise { function clearBadgeStatus (line 53) | async function clearBadgeStatus(url?: string): Promise { FILE: apps/browser-extension/src/utils/css.ts function cn (line 5) | function cn(...inputs: ClassValue[]) { FILE: apps/browser-extension/src/utils/providers.tsx function Providers (line 6) | function Providers({ children }: { children: React.ReactNode }) { FILE: apps/browser-extension/src/utils/settings.ts constant DEFAULT_BADGE_CACHE_EXPIRE_MS (line 4) | const DEFAULT_BADGE_CACHE_EXPIRE_MS = 60 * 60 * 1000; constant DEFAULT_SHOW_COUNT_BADGE (line 5) | const DEFAULT_SHOW_COUNT_BADGE = false; constant DEFAULT_SETTINGS (line 18) | const DEFAULT_SETTINGS: Settings = { type Settings (line 28) | type Settings = z.infer; constant STORAGE (line 30) | const STORAGE = chrome.storage.sync; function usePluginSettings (line 32) | function usePluginSettings() { function getPluginSettings (line 72) | async function getPluginSettings() { function subscribeToSettingsChanges (line 83) | function subscribeToSettingsChanges( FILE: apps/browser-extension/src/utils/storagePersister.ts constant TANSTACK_QUERY_CACHE_KEY (line 6) | const TANSTACK_QUERY_CACHE_KEY = "tanstack-query-cache-key"; FILE: apps/browser-extension/src/utils/trpc.ts function initializeClients (line 23) | async function initializeClients() { function getApiClient (line 115) | async function getApiClient() { function getQueryClient (line 122) | async function getQueryClient() { function cleanupApiClient (line 128) | function cleanupApiClient() { FILE: apps/browser-extension/src/utils/type.ts type MessageType (line 1) | const enum MessageType { FILE: apps/browser-extension/src/utils/url.ts function isHttpUrl (line 6) | function isHttpUrl(url: string) { function normalizeUrl (line 17) | function normalizeUrl(url: string, base?: string): string { function urlsMatchIgnoringAnchorAndTrailingSlash (line 35) | function urlsMatchIgnoringAnchorAndTrailingSlash( FILE: apps/cli/src/commands/admin.ts function toHumanReadableSize (line 15) | function toHumanReadableSize(size: number): string { FILE: apps/cli/src/commands/bookmarks.ts function collect (line 22) | function collect(val: T, acc: T[]) { type Bookmark (line 27) | type Bookmark = Omit & { function normalizeBookmark (line 31) | function normalizeBookmark(bookmark: ZBookmark): Bookmark { function printBookmark (line 38) | function printBookmark(bookmark: ZBookmark) { function printTagMessage (line 159) | function printTagMessage( function updateTags (line 172) | async function updateTags(addTags: string[], removeTags: string[], id: s... FILE: apps/cli/src/commands/dump.ts constant FAIL (line 18) | const FAIL = chalk.red("✗"); constant DOTS (line 19) | const DOTS = chalk.gray("…"); function line (line 21) | function line(msg: string) { function stepStart (line 25) | function stepStart(title: string) { function stepEndSuccess (line 29) | function stepEndSuccess(extra?: string) { function stepEndFail (line 33) | function stepEndFail(extra?: string) { function progressUpdate (line 37) | function progressUpdate( function progressDone (line 58) | function progressDone() { function ensureDir (line 62) | async function ensureDir(p: string) { function writeJson (line 66) | async function writeJson(filePath: string, data: unknown) { function writeJsonl (line 72) | async function writeJsonl( function createTarGz (line 88) | async function createTarGz(srcDir: string, outFile: string): Promise) { FILE: apps/cli/src/lib/globals.ts type GlobalOptions (line 1) | interface GlobalOptions { function setGlobalOptions (line 9) | function setGlobalOptions(opts: GlobalOptions) { function getGlobalOptions (line 13) | function getGlobalOptions() { FILE: apps/cli/src/lib/output.ts function printObject (line 11) | function printObject( function printStatusMessage (line 28) | function printStatusMessage(success: boolean, message: unknown): void { function printSuccess (line 38) | function printSuccess(message: string) { function printError (line 48) | function printError(message: string) { function printErrorMessageWithReason (line 58) | function printErrorMessageWithReason(message: string, error: object) { FILE: apps/cli/src/lib/trpc.ts function getAPIClient (line 8) | function getAPIClient() { function getAPIClientFor (line 26) | function getAPIClientFor(opts: { serverAddr: string; apiKey: string }) { FILE: apps/cli/src/vite-env.d.ts type ImportMetaEnv (line 3) | interface ImportMetaEnv { type ImportMeta (line 7) | interface ImportMeta { FILE: apps/landing/components/ui/button.tsx type ButtonProps (line 36) | interface ButtonProps FILE: apps/landing/lib/utils.ts function cn (line 5) | function cn(...inputs: ClassValue[]) { FILE: apps/landing/src/App.tsx function App (line 12) | function App() { FILE: apps/landing/src/Apps.tsx type Listing (line 9) | interface Listing { function ListingSection (line 61) | function ListingSection({ function Apps (line 101) | function Apps() { FILE: apps/landing/src/Homepage.tsx function Homepage (line 165) | function Homepage() { FILE: apps/landing/src/Navbar.tsx function NavBar (line 10) | function NavBar() { FILE: apps/landing/src/Pricing.tsx constant CONTACT_EMAIL (line 8) | const CONTACT_EMAIL = "mailto:support@karakeep.app"; function PricingHeader (line 80) | function PricingHeader() { function PricingCards (line 91) | function PricingCards() { function FAQ (line 170) | function FAQ() { function Pricing (line 209) | function Pricing() { FILE: apps/landing/src/Privacy.tsx function PrivacyPolicy (line 3) | function PrivacyPolicy() { FILE: apps/landing/src/SEO.tsx constant BASE_URL (line 1) | const BASE_URL = "https://karakeep.app"; constant DEFAULT_DESCRIPTION (line 2) | const DEFAULT_DESCRIPTION = type SEOProps (line 5) | interface SEOProps { function SEO (line 11) | function SEO({ FILE: apps/landing/src/Terms.tsx function Terms (line 3) | function Terms() { FILE: apps/landing/src/components/Banner.tsx function Banner (line 5) | function Banner() { FILE: apps/landing/src/components/CallToAction.tsx function CallToAction (line 6) | function CallToAction() { FILE: apps/landing/src/components/FeatureShowcase.tsx type FeatureBullet (line 5) | interface FeatureBullet { type FeatureShowcaseProps (line 10) | interface FeatureShowcaseProps { function FeatureShowcase (line 21) | function FeatureShowcase({ FILE: apps/landing/src/components/FeaturesGrid.tsx type Feature (line 3) | interface Feature { function FeaturesGrid (line 9) | function FeaturesGrid({ features }: { features: Feature[] }) { FILE: apps/landing/src/components/Footer.tsx function Footer (line 27) | function Footer() { FILE: apps/landing/src/components/Hero.tsx function Hero (line 8) | function Hero() { FILE: apps/landing/src/components/Layout.tsx function Layout (line 7) | function Layout() { FILE: apps/landing/src/components/OpenSource.tsx function OpenSource (line 7) | function OpenSource() { FILE: apps/landing/src/components/Platforms.tsx function Platforms (line 38) | function Platforms() { FILE: apps/landing/src/constants.ts constant GITHUB_LINK (line 1) | const GITHUB_LINK = "https://github.com/karakeep-app/karakeep"; constant DOCS_LINK (line 2) | const DOCS_LINK = "https://docs.karakeep.app"; constant DEMO_LINK (line 3) | const DEMO_LINK = "https://try.karakeep.app"; constant CLOUD_SIGNUP_LINK (line 4) | const CLOUD_SIGNUP_LINK = "https://cloud.karakeep.app/signup"; FILE: apps/mcp/src/index.ts function run (line 10) | async function run() { FILE: apps/mcp/src/utils.ts function toMcpToolError (line 5) | function toMcpToolError( function compactBookmark (line 19) | function compactBookmark( FILE: apps/mobile/app.config.js constant IS_DEV (line 1) | const IS_DEV = process.env.APP_VARIANT === "development"; FILE: apps/mobile/app/+not-found.tsx function NotFound (line 4) | function NotFound() { FILE: apps/mobile/app/dashboard/(tabs)/(highlights)/_layout.tsx function Layout (line 4) | function Layout() { FILE: apps/mobile/app/dashboard/(tabs)/(highlights)/index.tsx function Highlights (line 8) | function Highlights() { FILE: apps/mobile/app/dashboard/(tabs)/(home)/_layout.tsx function Layout (line 4) | function Layout() { FILE: apps/mobile/app/dashboard/(tabs)/(home)/index.tsx function HeaderRight (line 16) | function HeaderRight({ function Home (line 112) | function Home() { FILE: apps/mobile/app/dashboard/(tabs)/(lists)/_layout.tsx function Layout (line 4) | function Layout() { FILE: apps/mobile/app/dashboard/(tabs)/(lists)/index.tsx function HeaderRight (line 18) | function HeaderRight({ openNewListModal }: { openNewListModal: () => voi... type ListLink (line 32) | interface ListLink { function traverseTree (line 45) | function traverseTree( function Lists (line 79) | function Lists() { FILE: apps/mobile/app/dashboard/(tabs)/(settings)/_layout.tsx function Layout (line 4) | function Layout() { FILE: apps/mobile/app/dashboard/(tabs)/(settings)/index.tsx function SectionHeader (line 26) | function SectionHeader({ title }: { title: string }) { function Settings (line 34) | function Settings() { FILE: apps/mobile/app/dashboard/(tabs)/(tags)/_layout.tsx function Layout (line 4) | function Layout() { FILE: apps/mobile/app/dashboard/(tabs)/(tags)/index.tsx type TagItem (line 17) | interface TagItem { function Tags (line 24) | function Tags() { FILE: apps/mobile/app/dashboard/(tabs)/_layout.tsx function TabLayout (line 11) | function TabLayout() { FILE: apps/mobile/app/dashboard/(tabs)/index.tsx function TabIndex (line 3) | function TabIndex() { FILE: apps/mobile/app/dashboard/_layout.tsx function onAppStateChange (line 9) | function onAppStateChange(status: AppStateStatus) { function Dashboard (line 15) | function Dashboard() { FILE: apps/mobile/app/dashboard/archive.tsx function Archive (line 3) | function Archive() { FILE: apps/mobile/app/dashboard/bookmarks/[slug]/index.tsx function BookmarkView (line 22) | function BookmarkView() { FILE: apps/mobile/app/dashboard/bookmarks/[slug]/info.tsx function TitleEditor (line 42) | function TitleEditor({ function NotesEditor (line 68) | function NotesEditor({ function TagList (line 96) | function TagList({ function ManageLists (line 141) | function ManageLists({ bookmark }: { bookmark: ZBookmark }) { function AISummarySection (line 154) | function AISummarySection({ FILE: apps/mobile/app/dashboard/bookmarks/[slug]/manage_tags.tsx constant NEW_TAG_ID (line 18) | const NEW_TAG_ID = "new-tag"; FILE: apps/mobile/app/dashboard/favourites.tsx function Favourites (line 3) | function Favourites() { FILE: apps/mobile/app/dashboard/lists/[slug]/index.tsx function ListView (line 16) | function ListView() { function ListActionsMenu (line 56) | function ListActionsMenu({ FILE: apps/mobile/app/dashboard/lists/new.tsx type ListType (line 11) | type ListType = "manual" | "smart"; FILE: apps/mobile/app/dashboard/search.tsx constant MAX_DISPLAY_SUGGESTIONS (line 20) | const MAX_DISPLAY_SUGGESTIONS = 5; function Search (line 22) | function Search() { FILE: apps/mobile/app/dashboard/settings/bookmark-default-view.tsx function BookmarkDefaultViewSettings (line 9) | function BookmarkDefaultViewSettings() { FILE: apps/mobile/app/dashboard/settings/reader-settings.tsx function ReaderSettingsPage (line 22) | function ReaderSettingsPage() { FILE: apps/mobile/app/dashboard/settings/theme.tsx function ThemePage (line 7) | function ThemePage() { FILE: apps/mobile/app/dashboard/tags/[slug].tsx function TagView (line 10) | function TagView() { FILE: apps/mobile/app/error.tsx function ErrorPage (line 4) | function ErrorPage() { FILE: apps/mobile/app/index.tsx function App (line 5) | function App() { FILE: apps/mobile/app/server-address.tsx function ServerAddress (line 12) | function ServerAddress() { FILE: apps/mobile/app/sharing.tsx type Mode (line 19) | type Mode = function SaveBookmark (line 25) | function SaveBookmark({ setMode }: { setMode: (mode: Mode) => void }) { function Sharing (line 97) | function Sharing() { FILE: apps/mobile/app/signin.tsx type LoginType (line 22) | enum LoginType { function Signin (line 27) | function Signin() { FILE: apps/mobile/app/test-connection.tsx function TestConnection (line 10) | function TestConnection() { FILE: apps/mobile/components/CustomHeadersModal.tsx type CustomHeadersModalProps (line 11) | interface CustomHeadersModalProps { function CustomHeadersModal (line 18) | function CustomHeadersModal({ FILE: apps/mobile/components/FullPageError.tsx function FullPageError (line 6) | function FullPageError({ FILE: apps/mobile/components/SplashScreenController.tsx function SplashScreenController (line 6) | function SplashScreenController() { FILE: apps/mobile/components/TailwindResolver.tsx function TailwindResolverImpl (line 4) | function TailwindResolverImpl({ FILE: apps/mobile/components/bookmarks/BookmarkAssetImage.tsx function BookmarkAssetImage (line 5) | function BookmarkAssetImage({ FILE: apps/mobile/components/bookmarks/BookmarkAssetView.tsx type BookmarkAssetViewProps (line 10) | interface BookmarkAssetViewProps { function BookmarkAssetView (line 14) | function BookmarkAssetView({ FILE: apps/mobile/components/bookmarks/BookmarkCard.tsx function ActionBar (line 47) | function ActionBar({ bookmark }: { bookmark: ZBookmark }) { function TagList (line 311) | function TagList({ bookmark }: { bookmark: ZBookmark }) { function LinkCard (line 336) | function LinkCard({ function TextCard (line 424) | function TextCard({ function AssetCard (line 467) | function AssetCard({ function BookmarkCard (line 522) | function BookmarkCard({ FILE: apps/mobile/components/bookmarks/BookmarkHtmlHighlighterDom.tsx function BookmarkHtmlHighlighterDom (line 9) | function BookmarkHtmlHighlighterDom({ FILE: apps/mobile/components/bookmarks/BookmarkLinkPreview.tsx function BookmarkLinkBrowserPreview (line 28) | function BookmarkLinkBrowserPreview({ function BookmarkLinkPdfPreview (line 46) | function BookmarkLinkPdfPreview({ bookmark }: { bookmark: ZBookmark }) { function BookmarkLinkReaderPreview (line 70) | function BookmarkLinkReaderPreview({ function BookmarkLinkArchivePreview (line 196) | function BookmarkLinkArchivePreview({ function BookmarkLinkScreenshotPreview (line 229) | function BookmarkLinkScreenshotPreview({ FILE: apps/mobile/components/bookmarks/BookmarkLinkTypeSelector.tsx type BookmarkLinkType (line 9) | type BookmarkLinkType = function getAvailableViewTypes (line 16) | function getAvailableViewTypes(bookmark: ZBookmark): BookmarkLinkType[] { type BookmarkLinkTypeSelectorProps (line 43) | interface BookmarkLinkTypeSelectorProps { function BookmarkLinkTypeSelector (line 49) | function BookmarkLinkTypeSelector({ FILE: apps/mobile/components/bookmarks/BookmarkLinkView.tsx type BookmarkLinkViewProps (line 13) | interface BookmarkLinkViewProps { function BookmarkLinkView (line 18) | function BookmarkLinkView({ FILE: apps/mobile/components/bookmarks/BookmarkList.tsx function BookmarkList (line 12) | function BookmarkList({ FILE: apps/mobile/components/bookmarks/BookmarkTextMarkdown.tsx function BookmarkTextMarkdown (line 4) | function BookmarkTextMarkdown({ text }: { text: string }) { FILE: apps/mobile/components/bookmarks/BookmarkTextView.tsx type BookmarkTextViewProps (line 12) | interface BookmarkTextViewProps { function BookmarkTextView (line 16) | function BookmarkTextView({ bookmark }: BookmarkTextViewProps) { FILE: apps/mobile/components/bookmarks/BottomActions.tsx type BottomActionsProps (line 11) | interface BottomActionsProps { function BottomActions (line 15) | function BottomActions({ bookmark }: BottomActionsProps) { FILE: apps/mobile/components/bookmarks/NotePreview.tsx type NotePreviewProps (line 10) | interface NotePreviewProps { function NotePreview (line 16) | function NotePreview({ FILE: apps/mobile/components/bookmarks/PDFViewer.tsx type PDFViewerProps (line 9) | interface PDFViewerProps { function PDFViewer (line 14) | function PDFViewer({ source, headers }: PDFViewerProps) { FILE: apps/mobile/components/bookmarks/TagPill.tsx function TagPill (line 6) | function TagPill({ FILE: apps/mobile/components/bookmarks/UpdatingBookmarkList.tsx function UpdatingBookmarkList (line 11) | function UpdatingBookmarkList({ FILE: apps/mobile/components/highlights/HighlightCard.tsx constant HIGHLIGHT_COLOR_MAP (line 16) | const HIGHLIGHT_COLOR_MAP = { function HighlightCard (line 23) | function HighlightCard({ FILE: apps/mobile/components/highlights/HighlightList.tsx function HighlightList (line 12) | function HighlightList({ FILE: apps/mobile/components/navigation/stack.tsx type StackProps (line 5) | interface StackProps extends React.ComponentProps { function StackImpl (line 10) | function StackImpl({ contentStyle, headerStyle, ...props }: StackProps) { FILE: apps/mobile/components/reader/ReaderPreview.tsx constant PREVIEW_TEXT (line 9) | const PREVIEW_TEXT = type ReaderPreviewRef (line 12) | interface ReaderPreviewRef { type ReaderPreviewProps (line 20) | interface ReaderPreviewProps { FILE: apps/mobile/components/settings/UserProfileHeader.tsx type UserProfileHeaderProps (line 5) | interface UserProfileHeaderProps { function UserProfileHeader (line 11) | function UserProfileHeader({ FILE: apps/mobile/components/sharing/ErrorAnimation.tsx function ErrorAnimation (line 13) | function ErrorAnimation() { FILE: apps/mobile/components/sharing/LoadingAnimation.tsx function LoadingAnimation (line 16) | function LoadingAnimation() { FILE: apps/mobile/components/sharing/SuccessAnimation.tsx type ParticleProps (line 16) | interface ParticleProps { function Particle (line 22) | function Particle({ angle, delay, color }: ParticleProps) { type SuccessAnimationProps (line 59) | interface SuccessAnimationProps { function SuccessAnimation (line 63) | function SuccessAnimation({ FILE: apps/mobile/components/ui/ActionButton.tsx function ActionButton (line 4) | function ActionButton({ FILE: apps/mobile/components/ui/Avatar.tsx type AvatarProps (line 8) | interface AvatarProps { constant AVATAR_COLORS (line 16) | const AVATAR_COLORS = [ function nameToColor (line 29) | function nameToColor(name: string | null | undefined): string { function isExternalUrl (line 38) | function isExternalUrl(url: string) { function Avatar (line 42) | function Avatar({ FILE: apps/mobile/components/ui/Button.tsx function convertToRGBA (line 81) | function convertToRGBA(rgb: string, opacity: number): string { constant ANDROID_RIPPLE (line 95) | const ANDROID_RIPPLE = { constant BORDER_CURVE (line 131) | const BORDER_CURVE: ViewStyle = { type ButtonVariantProps (line 135) | type ButtonVariantProps = Omit< type AndroidOnlyButtonProps (line 142) | interface AndroidOnlyButtonProps { type ButtonProps (line 149) | type ButtonProps = PressableProps & ButtonVariantProps & AndroidOnlyButt... FILE: apps/mobile/components/ui/ChevronRight.tsx function ChevronRight (line 4) | function ChevronRight({ FILE: apps/mobile/components/ui/Divider.tsx function Divider (line 4) | function Divider({ FILE: apps/mobile/components/ui/EmptyState.tsx function EmptyState (line 7) | function EmptyState({ FILE: apps/mobile/components/ui/FullPageSpinner.tsx function FullPageSpinner (line 3) | function FullPageSpinner() { FILE: apps/mobile/components/ui/GroupedList.tsx function GroupedSection (line 9) | function GroupedSection({ function RowSeparator (line 37) | function RowSeparator() { function NavigationRow (line 50) | function NavigationRow({ FILE: apps/mobile/components/ui/Input.tsx type InputProps (line 7) | interface InputProps extends TextInputProps { FILE: apps/mobile/components/ui/SearchInput/SearchInput.ios.tsx constant BORDER_CURVE (line 19) | const BORDER_CURVE: ViewStyle = { function focus (line 106) | function focus() { function blur (line 110) | function blur() { function clear (line 114) | function clear() { function onFocus (line 118) | function onFocus(e: Parameters>[0]) { FILE: apps/mobile/components/ui/SearchInput/SearchInput.tsx function focus (line 38) | function focus() { function blur (line 42) | function blur() { function clear (line 46) | function clear() { FILE: apps/mobile/components/ui/SearchInput/types.ts type SearchInputProps (line 3) | interface SearchInputProps extends TextInputProps { type SearchInputRef (line 11) | type SearchInputRef = TextInput; FILE: apps/mobile/components/ui/Skeleton.tsx function Skeleton (line 6) | function Skeleton({ FILE: apps/mobile/components/ui/Text.tsx function Text (line 36) | function Text({ FILE: apps/mobile/components/ui/Toast.tsx type ToastVariant (line 10) | type ToastVariant = keyof typeof toastVariants; function useToast (line 13) | function useToast() { FILE: apps/mobile/lib/hooks.ts type AssetSource (line 8) | interface AssetSource { function useAssetUrl (line 13) | function useAssetUrl(assetId: string): AssetSource { function useServerVersion (line 21) | function useServerVersion() { function useArchiveFilter (line 47) | function useArchiveFilter(): { FILE: apps/mobile/lib/providers.tsx function Providers (line 10) | function Providers({ children }: { children: React.ReactNode }) { FILE: apps/mobile/lib/readerSettings.tsx constant MOBILE_FONT_FAMILIES (line 17) | const MOBILE_FONT_FAMILIES: Record< constant WEBVIEW_FONT_FAMILIES (line 34) | const WEBVIEW_FONT_FAMILIES: Record = { function ReaderSettingsProvider (line 44) | function ReaderSettingsProvider({ children }: { children: ReactNode }) { FILE: apps/mobile/lib/session.ts function useSession (line 8) | function useSession() { function useIsLoggedIn (line 28) | function useIsLoggedIn() { FILE: apps/mobile/lib/settings.ts constant SETTING_NAME (line 8) | const SETTING_NAME = "settings"; type Settings (line 28) | type Settings = z.infer; type AppSettingsState (line 30) | interface AppSettingsState { function useAppSettings (line 78) | function useAppSettings() { FILE: apps/mobile/lib/upload.ts function useUploadAsset (line 14) | function useUploadAsset( FILE: apps/mobile/lib/useColorScheme.tsx function useColorScheme (line 8) | function useColorScheme() { function useInitialAndroidBarSync (line 36) | function useInitialAndroidBarSync() { function setNavigationBar (line 48) | function setNavigationBar(colorScheme: "light" | "dark") { FILE: apps/mobile/lib/useMenuIconColors.ts function useMenuIconColors (line 3) | function useMenuIconColors() { FILE: apps/mobile/lib/utils.ts function cn (line 5) | function cn(...inputs: ClassValue[]) { function condProps (line 35) | function condProps( function buildApiHeaders (line 51) | function buildApiHeaders( FILE: apps/mobile/metro.config.js function withMonorepoPaths (line 25) | function withMonorepoPaths(config) { function withTurborepoManagedCache (line 51) | function withTurborepoManagedCache(config) { FILE: apps/mobile/plugins/camera-not-required.js function setCustomConfigAsync (line 10) | async function setCustomConfigAsync(_config, androidManifest) { FILE: apps/mobile/plugins/trust-local-certs.js function setCustomConfigAsync (line 16) | async function setCustomConfigAsync(config, androidManifest) { FILE: apps/mobile/tailwind.config.js function withOpacity (line 57) | function withOpacity(variableName) { FILE: apps/mobile/theme/colors.ts constant SYSTEM_COLORS (line 1) | const SYSTEM_COLORS = { constant COLORS (line 34) | const COLORS = SYSTEM_COLORS; FILE: apps/mobile/theme/index.ts constant NAV_THEME (line 5) | const NAV_THEME = { FILE: apps/web/@types/i18next.d.ts type CustomTypeOptions (line 7) | interface CustomTypeOptions { FILE: apps/web/app/admin/admin_tools/page.tsx function generateMetadata (line 5) | async function generateMetadata(): Promise { function AdminToolsPage (line 13) | function AdminToolsPage() { FILE: apps/web/app/admin/background_jobs/page.tsx function generateMetadata (line 5) | async function generateMetadata(): Promise { function BackgroundJobsPage (line 13) | function BackgroundJobsPage() { FILE: apps/web/app/admin/layout.tsx function AdminLayout (line 45) | async function AdminLayout({ FILE: apps/web/app/admin/overview/page.tsx function generateMetadata (line 6) | async function generateMetadata(): Promise { function AdminOverviewPage (line 14) | function AdminOverviewPage() { FILE: apps/web/app/admin/page.tsx function AdminHomepage (line 3) | function AdminHomepage() { FILE: apps/web/app/admin/users/page.tsx function generateMetadata (line 9) | async function generateMetadata(): Promise { function AdminUsersPage (line 17) | function AdminUsersPage() { FILE: apps/web/app/api/[[...route]]/route.ts constant GET (line 23) | const GET = handle(app); constant POST (line 24) | const POST = handle(app); constant PATCH (line 25) | const PATCH = handle(app); constant DELETE (line 26) | const DELETE = handle(app); constant OPTIONS (line 27) | const OPTIONS = handle(app); constant PUT (line 28) | const PUT = handle(app); FILE: apps/web/app/api/bookmarks/export/route.tsx function GET (line 23) | async function GET(request: NextRequest) { FILE: apps/web/app/check-email/page.tsx function CheckEmailPage (line 20) | function CheckEmailPage() { FILE: apps/web/app/dashboard/@modal/(.)preview/[bookmarkId]/page.tsx function BookmarkPreviewPage (line 14) | function BookmarkPreviewPage(props: { FILE: apps/web/app/dashboard/@modal/[...catchAll]/page.tsx function CatchAll (line 1) | function CatchAll() { FILE: apps/web/app/dashboard/@modal/default.tsx function Default (line 1) | function Default() { FILE: apps/web/app/dashboard/archive/page.tsx function generateMetadata (line 6) | async function generateMetadata(): Promise { function header (line 14) | function header() { function ArchivedBookmarkPage (line 25) | async function ArchivedBookmarkPage() { FILE: apps/web/app/dashboard/bookmarks/page.tsx function BookmarksPage (line 4) | async function BookmarksPage() { FILE: apps/web/app/dashboard/cleanups/page.tsx function Cleanups (line 6) | async function Cleanups() { FILE: apps/web/app/dashboard/error.tsx function Error (line 5) | function Error() { FILE: apps/web/app/dashboard/favourites/page.tsx function generateMetadata (line 5) | async function generateMetadata(): Promise { function FavouritesBookmarkPage (line 13) | async function FavouritesBookmarkPage() { FILE: apps/web/app/dashboard/feeds/[feedId]/page.tsx function FeedPage (line 6) | async function FeedPage(props: { FILE: apps/web/app/dashboard/highlights/page.tsx function generateMetadata (line 7) | async function generateMetadata(): Promise { function HighlightsPage (line 15) | async function HighlightsPage() { FILE: apps/web/app/dashboard/layout.tsx function Dashboard (line 25) | async function Dashboard({ FILE: apps/web/app/dashboard/lists/[listId]/page.tsx function generateMetadata (line 10) | async function generateMetadata(props: { function ListPage (line 27) | async function ListPage(props: { FILE: apps/web/app/dashboard/lists/page.tsx function ListsPage (line 9) | async function ListsPage() { FILE: apps/web/app/dashboard/not-found.tsx function NotFound (line 7) | function NotFound() { FILE: apps/web/app/dashboard/preview/[bookmarkId]/page.tsx function BookmarkPreviewPage (line 6) | async function BookmarkPreviewPage(props: { FILE: apps/web/app/dashboard/search/page.tsx function SearchComp (line 10) | function SearchComp() { function SearchPage (line 44) | function SearchPage() { FILE: apps/web/app/dashboard/tags/[tagId]/page.tsx function generateMetadata (line 11) | async function generateMetadata(props: { function TagPage (line 28) | async function TagPage(props: { FILE: apps/web/app/dashboard/tags/page.tsx function generateMetadata (line 5) | async function generateMetadata(): Promise { function TagsPage (line 13) | async function TagsPage() { FILE: apps/web/app/forgot-password/page.tsx function ForgotPasswordPage (line 6) | async function ForgotPasswordPage() { FILE: apps/web/app/invite/[token]/page.tsx type InvitePageProps (line 6) | interface InvitePageProps { function InvitePage (line 12) | async function InvitePage({ params }: InvitePageProps) { FILE: apps/web/app/layout.tsx function RootLayout (line 48) | async function RootLayout({ FILE: apps/web/app/logout/page.tsx function Logout (line 9) | function Logout() { FILE: apps/web/app/page.tsx function Home (line 4) | async function Home() { FILE: apps/web/app/public/layout.tsx function PublicLayout (line 1) | function PublicLayout({ FILE: apps/web/app/public/lists/[listId]/not-found.tsx function PublicListPageNotFound (line 3) | function PublicListPageNotFound() { FILE: apps/web/app/public/lists/[listId]/page.tsx function generateMetadata (line 9) | async function generateMetadata(props: { function PublicListPage (line 40) | async function PublicListPage(props: { FILE: apps/web/app/reader/[bookmarkId]/page.tsx function ReaderViewPage (line 21) | function ReaderViewPage() { FILE: apps/web/app/reader/layout.tsx function ReaderLayout (line 10) | async function ReaderLayout({ FILE: apps/web/app/reset-password/page.tsx type ResetPasswordPageProps (line 6) | interface ResetPasswordPageProps { function ResetPasswordPage (line 12) | async function ResetPasswordPage({ FILE: apps/web/app/settings/ai/page.tsx function generateMetadata (line 5) | async function generateMetadata(): Promise { function AISettingsPage (line 13) | function AISettingsPage() { FILE: apps/web/app/settings/api-keys/page.tsx function generateMetadata (line 7) | async function generateMetadata(): Promise { function ApiKeysPage (line 15) | async function ApiKeysPage() { FILE: apps/web/app/settings/assets/layout.tsx function generateMetadata (line 4) | async function generateMetadata(): Promise { function AssetsLayout (line 12) | function AssetsLayout({ FILE: apps/web/app/settings/assets/page.tsx function AssetsSettingsPage (line 35) | function AssetsSettingsPage() { FILE: apps/web/app/settings/backups/page.tsx function BackupsPage (line 7) | function BackupsPage() { FILE: apps/web/app/settings/broken-links/layout.tsx function generateMetadata (line 4) | async function generateMetadata(): Promise { function BrokenLinksLayout (line 12) | function BrokenLinksLayout({ FILE: apps/web/app/settings/broken-links/page.tsx function BrokenLinksPage (line 28) | function BrokenLinksPage() { FILE: apps/web/app/settings/feeds/page.tsx function generateMetadata (line 5) | async function generateMetadata(): Promise { function FeedSettingsPage (line 13) | function FeedSettingsPage() { FILE: apps/web/app/settings/import/[sessionId]/page.tsx function generateMetadata (line 5) | async function generateMetadata(): Promise { function ImportSessionDetailPage (line 13) | async function ImportSessionDetailPage({ FILE: apps/web/app/settings/import/page.tsx function generateMetadata (line 5) | async function generateMetadata(): Promise { function ImportSettingsPage (line 13) | function ImportSettingsPage() { FILE: apps/web/app/settings/info/page.tsx function generateMetadata (line 11) | async function generateMetadata(): Promise { function InfoPage (line 19) | async function InfoPage() { FILE: apps/web/app/settings/layout.tsx function SettingsLayout (line 114) | async function SettingsLayout({ FILE: apps/web/app/settings/page.tsx function SettingsHomepage (line 3) | function SettingsHomepage() { FILE: apps/web/app/settings/rules/layout.tsx function generateMetadata (line 4) | async function generateMetadata(): Promise { function RulesLayout (line 12) | function RulesLayout({ FILE: apps/web/app/settings/rules/page.tsx function RulesSettingsPage (line 19) | function RulesSettingsPage() { FILE: apps/web/app/settings/stats/layout.tsx function generateMetadata (line 4) | async function generateMetadata(): Promise { function StatsLayout (line 12) | function StatsLayout({ FILE: apps/web/app/settings/stats/page.tsx type BookmarkSource (line 39) | type BookmarkSource = z.infer; function formatBytes (line 41) | function formatBytes(bytes: number): string { function formatNumber (line 49) | function formatNumber(num: number): string { function formatSourceName (line 64) | function formatSourceName(source: BookmarkSource | null): string { function getSourceIcon (line 79) | function getSourceIcon(source: BookmarkSource | null): React.ReactNode { function SimpleBarChart (line 103) | function SimpleBarChart({ function StatCard (line 136) | function StatCard({ function StatsPage (line 163) | function StatsPage() { FILE: apps/web/app/settings/subscription/page.tsx function generateMetadata (line 10) | async function generateMetadata(): Promise { function SubscriptionPage (line 18) | async function SubscriptionPage() { FILE: apps/web/app/settings/webhooks/page.tsx function generateMetadata (line 5) | async function generateMetadata(): Promise { function WebhookSettingsPage (line 13) | function WebhookSettingsPage() { FILE: apps/web/app/signin/page.tsx function SignInPage (line 6) | async function SignInPage() { FILE: apps/web/app/signup/page.tsx function SignUpPage (line 11) | async function SignUpPage({ FILE: apps/web/app/verify-email/page.tsx function VerifyEmailPage (line 23) | function VerifyEmailPage() { FILE: apps/web/components/DemoModeBanner.tsx function DemoModeBanner (line 1) | function DemoModeBanner() { FILE: apps/web/components/KarakeepIcon.tsx function KarakeepLogo (line 3) | function KarakeepLogo({ height }: { height: number }) { FILE: apps/web/components/admin/AddUserDialog.tsx type AdminCreateUserSchema (line 39) | type AdminCreateUserSchema = z.infer; function AddUserDialog (line 41) | function AddUserDialog({ FILE: apps/web/components/admin/AdminCard.tsx function AdminCard (line 3) | function AdminCard({ FILE: apps/web/components/admin/AdminNotices.tsx type AdminNotice (line 12) | interface AdminNotice { function useAdminNotices (line 18) | function useAdminNotices() { function AdminNotices (line 28) | function AdminNotices() { function AdminNoticeBadge (line 49) | function AdminNoticeBadge() { FILE: apps/web/components/admin/BackgroundJobs.tsx type JobStats (line 38) | interface JobStats { type JobAction (line 44) | interface JobAction { function JobStatusExplanation (line 50) | function JobStatusExplanation() { function JobCardSkeleton (line 108) | function JobCardSkeleton() { function JobCard (line 155) | function JobCard({ function useJobActions (line 257) | function useJobActions() { function BackgroundJobs (line 480) | function BackgroundJobs() { FILE: apps/web/components/admin/BasicStats.tsx constant REPO_LATEST_RELEASE_API (line 10) | const REPO_LATEST_RELEASE_API = constant REPO_RELEASE_PAGE (line 12) | const REPO_RELEASE_PAGE = "https://github.com/karakeep-app/karakeep/rele... function useLatestRelease (line 14) | function useLatestRelease() { function ReleaseInfo (line 31) | function ReleaseInfo() { function StatsSkeleton (line 58) | function StatsSkeleton() { function BasicStats (line 74) | function BasicStats() { FILE: apps/web/components/admin/BookmarkDebugger.tsx function BookmarkDebugger (line 40) | function BookmarkDebugger() { FILE: apps/web/components/admin/CreateInviteDialog.tsx type CreateInviteDialogProps (line 35) | interface CreateInviteDialogProps { function CreateInviteDialog (line 39) | function CreateInviteDialog({ FILE: apps/web/components/admin/InvitesList.tsx function InvitesList (line 28) | function InvitesList() { FILE: apps/web/components/admin/InvitesListSkeleton.tsx function InvitesListSkeleton (line 14) | function InvitesListSkeleton() { FILE: apps/web/components/admin/ResetPasswordDialog.tsx type ResetPasswordDialogProps (line 33) | interface ResetPasswordDialogProps { type ResetPasswordSchema (line 38) | type ResetPasswordSchema = z.infer; function ResetPasswordDialog (line 40) | function ResetPasswordDialog({ FILE: apps/web/components/admin/ServiceConnections.tsx function ConnectionStatus (line 9) | function ConnectionStatus({ function ConnectionsSkeleton (line 85) | function ConnectionsSkeleton() { function ServiceConnections (line 109) | function ServiceConnections() { FILE: apps/web/components/admin/UpdateUserDialog.tsx type UpdateUserSchema (line 39) | type UpdateUserSchema = z.infer; type UpdateUserDialogProps (line 41) | interface UpdateUserDialogProps { function UpdateUserDialog (line 48) | function UpdateUserDialog({ FILE: apps/web/components/admin/UserList.tsx function toHumanReadableSize (line 31) | function toHumanReadableSize(size: number) { function UsersSection (line 38) | function UsersSection() { FILE: apps/web/components/admin/UserListSkeleton.tsx function UserListSkeleton (line 14) | function UserListSkeleton() { FILE: apps/web/components/dashboard/BulkBookmarksAction.tsx constant MAX_CONCURRENT_BULK_ACTIONS (line 39) | const MAX_CONCURRENT_BULK_ACTIONS = 50; function BulkBookmarksAction (line 41) | function BulkBookmarksAction() { FILE: apps/web/components/dashboard/EditableText.tsx type Props (line 13) | interface Props { function EditMode (line 23) | function EditMode({ function ViewMode (line 94) | function ViewMode({ function EditableText (line 135) | function EditableText(props: { FILE: apps/web/components/dashboard/ErrorFallback.tsx function ErrorFallback (line 7) | function ErrorFallback() { FILE: apps/web/components/dashboard/GlobalActions.tsx function GlobalActions (line 8) | function GlobalActions() { FILE: apps/web/components/dashboard/SortOrderToggle.tsx function SortOrderToggle (line 16) | function SortOrderToggle() { FILE: apps/web/components/dashboard/UploadDropzone.tsx function useUploadAsset (line 17) | function useUploadAsset() { function useUploadAssets (line 79) | function useUploadAssets({ function UploadDropzone (line 108) | function UploadDropzone({ FILE: apps/web/components/dashboard/ViewOptions.tsx type LayoutType (line 49) | type LayoutType = "masonry" | "grid" | "list" | "compact"; function ViewOptions (line 58) | function ViewOptions() { FILE: apps/web/components/dashboard/bookmarks/AssetCard.tsx function AssetImage (line 15) | function AssetImage({ function AssetCard (line 68) | function AssetCard({ FILE: apps/web/components/dashboard/bookmarks/BookmarkActionBar.tsx function BookmarkActionBar (line 11) | function BookmarkActionBar({ FILE: apps/web/components/dashboard/bookmarks/BookmarkCard.tsx function BookmarkCard (line 12) | function BookmarkCard({ FILE: apps/web/components/dashboard/bookmarks/BookmarkFormattedCreatedAt.tsx function BookmarkFormattedCreatedAt (line 3) | function BookmarkFormattedCreatedAt(prop: { createdAt: Date }) { FILE: apps/web/components/dashboard/bookmarks/BookmarkLayoutAdaptingCard.tsx type Props (line 47) | interface Props { function BottomRow (line 58) | function BottomRow({ function OwnerIndicator (line 81) | function OwnerIndicator({ bookmark }: { bookmark: ZBookmark }) { function MultiBookmarkSelector (line 118) | function MultiBookmarkSelector({ bookmark }: { bookmark: ZBookmark }) { function DragHandle (line 172) | function DragHandle({ function HoverActionBar (line 231) | function HoverActionBar({ bookmark }: { bookmark: ZBookmark }) { function ListView (line 286) | function ListView({ function GridView (line 343) | function GridView({ function CompactView (line 404) | function CompactView({ bookmark, title, footer, className }: Props) { function BookmarkLayoutAdaptingCard (line 458) | function BookmarkLayoutAdaptingCard(props: Props) { FILE: apps/web/components/dashboard/bookmarks/BookmarkMarkdownComponent.tsx function BookmarkMarkdownComponent (line 7) | function BookmarkMarkdownComponent({ FILE: apps/web/components/dashboard/bookmarks/BookmarkOptions.tsx type ActionItem (line 60) | interface ActionItem { type SubsectionItem (line 70) | interface SubsectionItem { type ActionItemType (line 81) | type ActionItemType = ActionItem | SubsectionItem; function isSubsectionItem (line 83) | function isSubsectionItem(item: ActionItemType): item is SubsectionItem { function BookmarkOptions (line 87) | function BookmarkOptions({ bookmark }: { bookmark: ZBookmark }) { FILE: apps/web/components/dashboard/bookmarks/BookmarkOwnerIcon.tsx type BookmarkOwnerIconProps (line 8) | interface BookmarkOwnerIconProps { function BookmarkOwnerIcon (line 13) | function BookmarkOwnerIcon({ FILE: apps/web/components/dashboard/bookmarks/BookmarkTagsEditor.tsx function BookmarkTagsEditor (line 8) | function BookmarkTagsEditor({ FILE: apps/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx function BookmarkedTextEditor (line 11) | function BookmarkedTextEditor({ FILE: apps/web/components/dashboard/bookmarks/Bookmarks.tsx function Bookmarks (line 10) | async function Bookmarks({ FILE: apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx function StyledBookmarkCard (line 25) | function StyledBookmarkCard({ children }: { children: React.ReactNode }) { function getBreakpointConfig (line 33) | function getBreakpointConfig(userColumns: number) { function BookmarksGrid (line 51) | function BookmarksGrid({ FILE: apps/web/components/dashboard/bookmarks/BookmarksGridSkeleton.tsx function getBreakpointConfig (line 14) | function getBreakpointConfig(userColumns: number) { function BookmarkCardSkeleton (line 31) | function BookmarkCardSkeleton({ height }: { height: string }) { function BookmarksGridSkeleton (line 46) | function BookmarksGridSkeleton({ FILE: apps/web/components/dashboard/bookmarks/BulkManageListsModal.tsx function BulkManageListsModal (line 28) | function BulkManageListsModal({ FILE: apps/web/components/dashboard/bookmarks/BulkTagModal.tsx function BulkTagModal (line 20) | function BulkTagModal({ FILE: apps/web/components/dashboard/bookmarks/DeleteBookmarkConfirmationDialog.tsx function DeleteBookmarkConfirmationDialog (line 10) | function DeleteBookmarkConfirmationDialog({ FILE: apps/web/components/dashboard/bookmarks/EditBookmarkDialog.tsx function EditBookmarkDialog (line 53) | function EditBookmarkDialog({ FILE: apps/web/components/dashboard/bookmarks/EditorCard.tsx type MultiUrlImportState (line 28) | interface MultiUrlImportState { function EditorCard (line 33) | function EditorCard({ className }: { className?: string }) { FILE: apps/web/components/dashboard/bookmarks/FooterLinkURL.tsx function FooterLinkURL (line 3) | function FooterLinkURL({ url }: { url: string | null }) { FILE: apps/web/components/dashboard/bookmarks/LinkCard.tsx function LinkTitle (line 32) | function LinkTitle({ bookmark }: { bookmark: ZBookmarkTypeLink }) { function LinkImage (line 42) | function LinkImage({ function LinkCard (line 90) | function LinkCard({ FILE: apps/web/components/dashboard/bookmarks/ManageListsModal.tsx function ManageListsModal (line 38) | function ManageListsModal({ function useManageListsModal (line 222) | function useManageListsModal(bookmarkId: string) { FILE: apps/web/components/dashboard/bookmarks/NoBookmarksBanner.tsx function NoBookmarksBanner (line 6) | function NoBookmarksBanner() { FILE: apps/web/components/dashboard/bookmarks/NotePreview.tsx type NotePreviewProps (line 15) | interface NotePreviewProps { function NotePreview (line 21) | function NotePreview({ note, bookmarkId, className }: NotePreviewProps) { FILE: apps/web/components/dashboard/bookmarks/SummarizeBookmarkArea.tsx function AISummary (line 17) | function AISummary({ function SummarizeBookmarkArea (line 103) | function SummarizeBookmarkArea({ FILE: apps/web/components/dashboard/bookmarks/TagList.tsx function TagList (line 9) | function TagList({ FILE: apps/web/components/dashboard/bookmarks/TagModal.tsx function TagModal (line 17) | function TagModal({ function useTagModel (line 46) | function useTagModel(bookmark: ZBookmark) { FILE: apps/web/components/dashboard/bookmarks/TagsEditor.tsx function TagsEditor (line 25) | function TagsEditor({ FILE: apps/web/components/dashboard/bookmarks/TextCard.tsx function TextCard (line 16) | function TextCard({ FILE: apps/web/components/dashboard/bookmarks/UnknownCard.tsx function UnknownCard (line 10) | function UnknownCard({ FILE: apps/web/components/dashboard/bookmarks/UpdatableBookmarksGrid.tsx function UpdatableBookmarksGrid (line 17) | function UpdatableBookmarksGrid({ FILE: apps/web/components/dashboard/bookmarks/action-buttons/ArchiveBookmarkButton.tsx type ArchiveBookmarkButtonProps (line 9) | interface ArchiveBookmarkButtonProps extends Omit< FILE: apps/web/components/dashboard/bookmarks/icons.tsx function FavouritedActionIcon (line 3) | function FavouritedActionIcon({ function ArchivedActionIcon (line 27) | function ArchivedActionIcon({ FILE: apps/web/components/dashboard/cleanups/TagDuplicationDetention.tsx type Suggestion (line 33) | interface Suggestion { function normalizeTag (line 38) | function normalizeTag(tag: string) { function updateMergeInto (line 45) | function updateMergeInto(suggestion: Suggestion, newMergeIntoId: string) { function deleteSuggestion (line 53) | function deleteSuggestion(suggestion: Suggestion) { function ApplyAllButton (line 60) | function ApplyAllButton({ suggestions }: { suggestions: Suggestion[] }) { function SuggestionRow (line 118) | function SuggestionRow({ function TagDuplicationDetection (line 202) | function TagDuplicationDetection() { FILE: apps/web/components/dashboard/feeds/FeedSelector.tsx function FeedSelector (line 15) | function FeedSelector({ FILE: apps/web/components/dashboard/header/Header.tsx function Header (line 9) | async function Header() { FILE: apps/web/components/dashboard/header/ProfileOptions.tsx function DarkModeToggle (line 35) | function DarkModeToggle() { function SidebarProfileOptions (line 56) | function SidebarProfileOptions() { FILE: apps/web/components/dashboard/highlights/AllHighlights.tsx function Highlight (line 23) | function Highlight({ highlight }: { highlight: ZHighlight }) { function AllHighlights (line 44) | function AllHighlights({ FILE: apps/web/components/dashboard/highlights/HighlightCard.tsx function HighlightCard (line 11) | function HighlightCard({ FILE: apps/web/components/dashboard/lists/AllListsView.tsx function ListItem (line 23) | function ListItem({ function AllListsView (line 69) | function AllListsView({ FILE: apps/web/components/dashboard/lists/BookmarkListSelector.tsx function BookmarkListSelector (line 23) | function BookmarkListSelector({ FILE: apps/web/components/dashboard/lists/CollapsibleBookmarkLists.tsx type RenderFunc (line 11) | type RenderFunc = (params: { type IsOpenFunc (line 19) | type IsOpenFunc = (list: ZBookmarkListTreeNode) => boolean; function ListItem (line 21) | function ListItem({ function CollapsibleBookmarkLists (line 82) | function CollapsibleBookmarkLists({ FILE: apps/web/components/dashboard/lists/DeleteListConfirmationDialog.tsx function DeleteListConfirmationDialog (line 13) | function DeleteListConfirmationDialog({ FILE: apps/web/components/dashboard/lists/EditListModal.tsx function EditListModal (line 61) | function EditListModal({ FILE: apps/web/components/dashboard/lists/LeaveListConfirmationDialog.tsx function LeaveListConfirmationDialog (line 12) | function LeaveListConfirmationDialog({ FILE: apps/web/components/dashboard/lists/ListHeader.tsx function ListHeader (line 23) | function ListHeader({ FILE: apps/web/components/dashboard/lists/ListOptions.tsx function ListOptions (line 31) | function ListOptions({ FILE: apps/web/components/dashboard/lists/ManageCollaboratorsModal.tsx function ManageCollaboratorsModal (line 34) | function ManageCollaboratorsModal({ FILE: apps/web/components/dashboard/lists/MergeListModal.tsx function MergeListModal (line 35) | function MergeListModal({ FILE: apps/web/components/dashboard/lists/PendingInvitationsCard.tsx type Invitation (line 18) | interface Invitation { function InvitationRow (line 31) | function InvitationRow({ invitation }: { invitation: Invitation }) { function PendingInvitationsCard (line 140) | function PendingInvitationsCard() { FILE: apps/web/components/dashboard/lists/PublicListLink.tsx function PublicListLink (line 13) | function PublicListLink({ list }: { list: ZBookmarkList }) { FILE: apps/web/components/dashboard/lists/RssLink.tsx function RssLink (line 16) | function RssLink({ listId }: { listId: string }) { FILE: apps/web/components/dashboard/lists/ShareListModal.tsx function ShareListModal (line 20) | function ShareListModal({ FILE: apps/web/components/dashboard/preview/ActionBar.tsx function ActionBar (line 20) | function ActionBar({ bookmark }: { bookmark: ZBookmark }) { FILE: apps/web/components/dashboard/preview/AssetContentSection.tsx constant BIG_FILE_SIZE (line 18) | const BIG_FILE_SIZE = 20 * 1024 * 1024; function PDFContentSection (line 20) | function PDFContentSection({ bookmark }: { bookmark: ZBookmark }) { function ImageContentSection (line 87) | function ImageContentSection({ bookmark }: { bookmark: ZBookmark }) { function AssetContentSection (line 105) | function AssetContentSection({ bookmark }: { bookmark: ZBookmark }) { FILE: apps/web/components/dashboard/preview/AttachmentBox.tsx function AttachmentBox (line 37) | function AttachmentBox({ FILE: apps/web/components/dashboard/preview/BookmarkPreview.tsx function ContentLoading (line 47) | function ContentLoading() { function CreationTime (line 59) | function CreationTime({ createdAt }: { createdAt: Date }) { function BookmarkMetadata (line 75) | function BookmarkMetadata({ bookmark }: { bookmark: ZBookmark }) { function PublishedDate (line 105) | function PublishedDate({ datePublished }: { datePublished: Date }) { function BookmarkPreview (line 122) | function BookmarkPreview({ FILE: apps/web/components/dashboard/preview/HighlightsBox.tsx function HighlightsBox (line 16) | function HighlightsBox({ FILE: apps/web/components/dashboard/preview/LinkContentSection.tsx function CustomRendererErrorFallback (line 45) | function CustomRendererErrorFallback({ error }: { error: Error }) { function FullPageArchiveSection (line 65) | function FullPageArchiveSection({ link }: { link: ZBookmarkedLink }) { function ScreenshotSection (line 78) | function ScreenshotSection({ link }: { link: ZBookmarkedLink }) { function VideoSection (line 93) | function VideoSection({ link }: { link: ZBookmarkedLink }) { function PDFSection (line 107) | function PDFSection({ link }: { link: ZBookmarkedLink }) { function LinkContentSection (line 117) | function LinkContentSection({ FILE: apps/web/components/dashboard/preview/NoteEditor.tsx function NoteEditor (line 8) | function NoteEditor({ FILE: apps/web/components/dashboard/preview/ReaderSettingsPopover.tsx type ReaderSettingsPopoverProps (line 43) | interface ReaderSettingsPopoverProps { function ReaderSettingsPopover (line 49) | function ReaderSettingsPopover({ FILE: apps/web/components/dashboard/preview/ReaderView.tsx function ReaderView (line 20) | function ReaderView({ FILE: apps/web/components/dashboard/preview/ReadingProgressBanner.tsx function ReadingProgressBanner (line 6) | function ReadingProgressBanner({ FILE: apps/web/components/dashboard/preview/TextContentSection.tsx function TextContentSection (line 9) | function TextContentSection({ bookmark }: { bookmark: ZBookmark }) { FILE: apps/web/components/dashboard/preview/content-renderers/AmazonRenderer.tsx function extractAmazonProductInfo (line 7) | function extractAmazonProductInfo( function canRenderAmazon (line 34) | function canRenderAmazon(bookmark: ZBookmark): boolean { function AmazonRendererComponent (line 43) | function AmazonRendererComponent({ bookmark }: { bookmark: ZBookmark }) { FILE: apps/web/components/dashboard/preview/content-renderers/TikTokRenderer.tsx function extractTikTokVideoId (line 7) | function extractTikTokVideoId(url: string): string | null { function canRenderTikTok (line 24) | function canRenderTikTok(bookmark: ZBookmark): boolean { function TikTokRendererComponent (line 33) | function TikTokRendererComponent({ bookmark }: { bookmark: ZBookmark }) { FILE: apps/web/components/dashboard/preview/content-renderers/XRenderer.tsx function extractTweetId (line 8) | function extractTweetId(url: string): string | null { function canRenderX (line 23) | function canRenderX(bookmark: ZBookmark): boolean { function XRendererComponent (line 32) | function XRendererComponent({ bookmark }: { bookmark: ZBookmark }) { FILE: apps/web/components/dashboard/preview/content-renderers/YouTubeRenderer.tsx function extractYouTubeVideoId (line 7) | function extractYouTubeVideoId(url: string): string | null { function canRenderYouTube (line 23) | function canRenderYouTube(bookmark: ZBookmark): boolean { function YouTubeRendererComponent (line 32) | function YouTubeRendererComponent({ bookmark }: { bookmark: ZBookmark }) { FILE: apps/web/components/dashboard/preview/content-renderers/registry.ts class ContentRendererRegistryImpl (line 5) | class ContentRendererRegistryImpl implements ContentRendererRegistry { method register (line 11) | register(renderer: ContentRenderer): void { method getRenderers (line 15) | getRenderers(bookmark: ZBookmark): ContentRenderer[] { method getAllRenderers (line 21) | getAllRenderers(): ContentRenderer[] { FILE: apps/web/components/dashboard/preview/content-renderers/types.ts type ContentRenderer (line 3) | interface ContentRenderer { type ContentRendererRegistry (line 12) | interface ContentRendererRegistry { FILE: apps/web/components/dashboard/rules/RuleEngineActionBuilder.tsx type ActionBuilderProps (line 26) | interface ActionBuilderProps { function ActionBuilder (line 31) | function ActionBuilder({ value, onChange }: ActionBuilderProps) { FILE: apps/web/components/dashboard/rules/RuleEngineConditionBuilder.tsx type ConditionBuilderProps (line 41) | interface ConditionBuilderProps { function ConditionBuilder (line 49) | function ConditionBuilder({ FILE: apps/web/components/dashboard/rules/RuleEngineEventSelector.tsx type EventSelectorProps (line 16) | interface EventSelectorProps { function EventSelector (line 21) | function EventSelector({ value, onChange }: EventSelectorProps) { FILE: apps/web/components/dashboard/rules/RuleEngineRuleEditor.tsx type RuleEditorProps (line 27) | interface RuleEditorProps { function RuleEditor (line 32) | function RuleEditor({ rule, onCancel }: RuleEditorProps) { FILE: apps/web/components/dashboard/rules/RuleEngineRuleList.tsx function RuleList (line 17) | function RuleList({ function formatEventType (line 143) | function formatEventType(type: string): string { FILE: apps/web/components/dashboard/search/QueryExplainerTooltip.tsx function QueryExplainerTooltip (line 9) | function QueryExplainerTooltip({ FILE: apps/web/components/dashboard/search/SearchInput.tsx function useFocusSearchOnKeyPress (line 34) | function useFocusSearchOnKeyPress( FILE: apps/web/components/dashboard/search/useSearchAutocomplete.ts constant MAX_DISPLAY_SUGGESTIONS (line 21) | const MAX_DISPLAY_SUGGESTIONS = 5; type SearchTranslationKey (line 23) | type SearchTranslationKey = `search.${keyof typeof translation.search}`; type QualifierDefinition (line 25) | interface QualifierDefinition { constant QUALIFIER_DEFINITIONS (line 32) | const QUALIFIER_DEFINITIONS = [ type AutocompleteSuggestionItem (line 109) | interface AutocompleteSuggestionItem { type HistorySuggestionItem (line 119) | interface HistorySuggestionItem { type SuggestionItem (line 127) | type SuggestionItem = AutocompleteSuggestionItem | HistorySuggestionItem; type SuggestionGroup (line 129) | interface SuggestionGroup { type ParsedSearchState (line 151) | interface ParsedSearchState { type UseSearchAutocompleteParams (line 159) | interface UseSearchAutocompleteParams { constant SOURCE_VALUES (line 417) | const SOURCE_VALUES = zBookmarkSourceSchema.options; FILE: apps/web/components/dashboard/sidebar/AllLists.tsx function useDropTarget (line 32) | function useDropTarget(listId: string, listName: string) { function DroppableListSidebarItem (line 91) | function DroppableListSidebarItem({ function AllLists (line 172) | function AllLists({ FILE: apps/web/components/dashboard/sidebar/InvitationNotificationBadge.tsx function InvitationNotificationBadge (line 7) | function InvitationNotificationBadge() { FILE: apps/web/components/dashboard/tags/AllTagsView.tsx function DeleteAllUnusedTags (line 46) | function DeleteAllUnusedTags({ numUnusedTags }: { numUnusedTags: number ... function AllTagsView (line 82) | function AllTagsView() { FILE: apps/web/components/dashboard/tags/BulkTagAction.tsx constant MAX_CONCURRENT_BULK_ACTIONS (line 16) | const MAX_CONCURRENT_BULK_ACTIONS = 50; function BulkTagAction (line 18) | function BulkTagAction() { FILE: apps/web/components/dashboard/tags/CreateTagModal.tsx function CreateTagModal (line 38) | function CreateTagModal() { FILE: apps/web/components/dashboard/tags/DeleteTagConfirmationDialog.tsx function DeleteTagConfirmationDialog (line 8) | function DeleteTagConfirmationDialog({ FILE: apps/web/components/dashboard/tags/EditableTagName.tsx function EditableTagName (line 11) | function EditableTagName({ FILE: apps/web/components/dashboard/tags/MergeTagModal.tsx function MergeTagModal (line 30) | function MergeTagModal({ FILE: apps/web/components/dashboard/tags/TagAutocomplete.tsx type TagAutocompleteProps (line 25) | interface TagAutocompleteProps { function TagAutocomplete (line 31) | function TagAutocomplete({ FILE: apps/web/components/dashboard/tags/TagOptions.tsx function TagOptions (line 17) | function TagOptions({ FILE: apps/web/components/invite/InviteAcceptForm.tsx type InviteAcceptFormProps (line 47) | interface InviteAcceptFormProps { function InviteAcceptForm (line 51) | function InviteAcceptForm({ token }: InviteAcceptFormProps) { FILE: apps/web/components/public/lists/PublicBookmarkGrid.tsx function TagPill (line 27) | function TagPill({ tag }: { tag: string }) { function BookmarkCard (line 41) | function BookmarkCard({ bookmark }: { bookmark: ZPublicBookmark }) { function getBreakpointConfig (line 175) | function getBreakpointConfig() { function PublicBookmarkGrid (line 187) | function PublicBookmarkGrid({ FILE: apps/web/components/public/lists/PublicListHeader.tsx function PublicListHeader (line 6) | function PublicListHeader({ FILE: apps/web/components/settings/AISettings.tsx function AIPreferences (line 64) | function AIPreferences() { function TagStyleSelector (line 219) | function TagStyleSelector() { function CuratedTagsSelector (line 321) | function CuratedTagsSelector() { function PromptEditor (line 457) | function PromptEditor() { function PromptRow (line 560) | function PromptRow({ prompt }: { prompt: ZPrompt }) { function TaggingRules (line 696) | function TaggingRules() { function expandTagPlaceholders (line 733) | function expandTagPlaceholders( function hasTagPlaceholder (line 755) | function hasTagPlaceholder(texts: string[]): boolean { function PromptDemo (line 762) | function PromptDemo() { function AISettings (line 875) | function AISettings() { FILE: apps/web/components/settings/AddApiKey.tsx function AddApiKeyForm (line 39) | function AddApiKeyForm({ onSuccess }: { onSuccess: (key: string) => void... function AddApiKey (line 114) | function AddApiKey() { FILE: apps/web/components/settings/ApiKeySettings.tsx function ApiKeys (line 17) | async function ApiKeys() { FILE: apps/web/components/settings/ApiKeySuccess.tsx function ApiKeySuccess (line 4) | function ApiKeySuccess({ FILE: apps/web/components/settings/BackupSettings.tsx function BackupConfigurationForm (line 60) | function BackupConfigurationForm() { function BackupRow (line 208) | function BackupRow({ backup }: { backup: z.infer }) { function BackupsList (line 333) | function BackupsList() { function BackupSettings (line 415) | function BackupSettings() { FILE: apps/web/components/settings/ChangePassword.tsx function ChangePassword (line 28) | function ChangePassword() { FILE: apps/web/components/settings/DeleteAccount.tsx function DeleteAccount (line 37) | function DeleteAccount() { FILE: apps/web/components/settings/DeleteApiKey.tsx function DeleteApiKey (line 14) | function DeleteApiKey({ FILE: apps/web/components/settings/FeedSettings.tsx function FeedsEditorDialog (line 65) | function FeedsEditorDialog() { function EditFeedDialog (line 197) | function EditFeedDialog({ feed }: { feed: ZFeed }) { function FeedRow (line 347) | function FeedRow({ feed }: { feed: ZFeed }) { function FeedSettings (line 469) | function FeedSettings() { FILE: apps/web/components/settings/ImportExport.tsx function ImportCard (line 26) | function ImportCard({ function ExportButton (line 51) | function ExportButton() { function ImportExportRow (line 134) | function ImportExportRow() { function ImportExport (line 330) | function ImportExport() { FILE: apps/web/components/settings/ImportSessionCard.tsx type ImportSessionCardProps (line 36) | interface ImportSessionCardProps { function getStatusColor (line 40) | function getStatusColor(status: string) { function getStatusIcon (line 59) | function getStatusIcon(status: string) { function ImportSessionCard (line 78) | function ImportSessionCard({ session }: ImportSessionCardProps) { FILE: apps/web/components/settings/ImportSessionDetail.tsx type FilterType (line 50) | type FilterType = type SimpleTFunction (line 57) | type SimpleTFunction = ( type ImportSessionResultItem (line 62) | interface ImportSessionResultItem { function getStatusColor (line 74) | function getStatusColor(status: string) { function getStatusIcon (line 93) | function getStatusIcon(status: string) { function getResultBadge (line 112) | function getResultBadge( function getTypeIcon (line 178) | function getTypeIcon(type: string) { function getTypeLabel (line 191) | function getTypeLabel(type: string, t: SimpleTFunction) { function getTitleDisplay (line 204) | function getTitleDisplay( function ImportSessionDetail (line 233) | function ImportSessionDetail({ FILE: apps/web/components/settings/ImportSessionsSection.tsx function ImportSessionsSection (line 12) | function ImportSessionsSection() { FILE: apps/web/components/settings/ReaderSettings.tsx function ReaderSettings (line 42) | function ReaderSettings() { FILE: apps/web/components/settings/RegenerateApiKey.tsx function RegenerateApiKey (line 26) | function RegenerateApiKey({ FILE: apps/web/components/settings/SettingsPage.tsx function SettingsPage (line 11) | function SettingsPage({ function SettingsSection (line 38) | function SettingsSection({ FILE: apps/web/components/settings/SubscriptionSettings.tsx function SubscriptionSettings (line 17) | function SubscriptionSettings() { FILE: apps/web/components/settings/UserAvatar.tsx function UserAvatar (line 21) | function UserAvatar() { FILE: apps/web/components/settings/UserDetails.tsx function UserDetails (line 9) | async function UserDetails() { FILE: apps/web/components/settings/UserOptions.tsx function UserOptions (line 56) | function UserOptions() { FILE: apps/web/components/settings/WebhookEventSelector.tsx function WebhookEventSelector (line 22) | function WebhookEventSelector({ FILE: apps/web/components/settings/WebhookSettings.tsx function WebhooksEditorDialog (line 60) | function WebhooksEditorDialog() { function EditWebhookDialog (line 185) | function EditWebhookDialog({ webhook }: { webhook: ZWebhook }) { function EditTokenDialog (line 310) | function EditTokenDialog({ webhook }: { webhook: ZWebhook }) { function WebhookRow (line 442) | function WebhookRow({ webhook }: { webhook: ZWebhook }) { function WebhookSettings (line 491) | function WebhookSettings() { FILE: apps/web/components/shared/sidebar/MobileSidebar.tsx function MobileSidebar (line 7) | async function MobileSidebar({ FILE: apps/web/components/shared/sidebar/ModileSidebarItem.tsx function MobileSidebarItem (line 8) | function MobileSidebarItem({ FILE: apps/web/components/shared/sidebar/Sidebar.tsx function Sidebar (line 10) | async function Sidebar({ FILE: apps/web/components/shared/sidebar/SidebarItem.tsx function SidebarItem (line 8) | function SidebarItem({ FILE: apps/web/components/shared/sidebar/SidebarLayout.tsx function SidebarLayout (line 12) | function SidebarLayout({ FILE: apps/web/components/shared/sidebar/SidebarVersion.tsx constant GITHUB_OWNER_REPO (line 20) | const GITHUB_OWNER_REPO = "karakeep-app/karakeep"; constant GITHUB_REPO_URL (line 21) | const GITHUB_REPO_URL = `https://github.com/${GITHUB_OWNER_REPO}`; constant GITHUB_RELEASE_URL (line 22) | const GITHUB_RELEASE_URL = `${GITHUB_REPO_URL}/releases/tag/`; constant RELEASE_API_URL (line 23) | const RELEASE_API_URL = `https://api.github.com/repos/${GITHUB_OWNER_REP... constant LOCAL_STORAGE_KEY (line 24) | const LOCAL_STORAGE_KEY = "karakeep:whats-new:last-seen-version"; constant RELEASE_NOTES_STALE_TIME (line 25) | const RELEASE_NOTES_STALE_TIME = 1000 * 60 * 10; function isStableRelease (line 33) | function isStableRelease(version?: string) { type SidebarVersionProps (line 48) | interface SidebarVersionProps { function SidebarVersion (line 55) | function SidebarVersion({ FILE: apps/web/components/shared/sidebar/TSidebarItem.ts type TSidebarItem (line 1) | interface TSidebarItem { FILE: apps/web/components/signin/CredentialsForm.tsx constant SIGNIN_FAILED (line 29) | const SIGNIN_FAILED = "Incorrect email or password"; constant OAUTH_FAILED (line 30) | const OAUTH_FAILED = "OAuth login failed: "; constant VERIFY_EMAIL_ERROR (line 32) | const VERIFY_EMAIL_ERROR = "Please verify your email address before sign... function CredentialsForm (line 34) | function CredentialsForm() { FILE: apps/web/components/signin/ForgotPasswordForm.tsx function ForgotPasswordForm (line 36) | function ForgotPasswordForm() { FILE: apps/web/components/signin/OAuthAutoRedirect.tsx function OAuthAutoRedirect (line 8) | function OAuthAutoRedirect({ FILE: apps/web/components/signin/ResetPasswordForm.tsx type ResetPasswordFormProps (line 43) | interface ResetPasswordFormProps { function ResetPasswordForm (line 47) | function ResetPasswordForm({ token }: ResetPasswordFormProps) { FILE: apps/web/components/signin/SignInForm.tsx function SignInForm (line 18) | async function SignInForm() { FILE: apps/web/components/signin/SignInProviderButton.tsx function SignInProviderButton (line 6) | function SignInProviderButton({ FILE: apps/web/components/signup/SignUpForm.tsx constant VERIFY_EMAIL_ERROR (line 40) | const VERIFY_EMAIL_ERROR = "Please verify your email address before sign... type SignUpFormProps (line 42) | interface SignUpFormProps { function SignUpForm (line 46) | function SignUpForm({ redirectUrl }: SignUpFormProps) { FILE: apps/web/components/subscription/QuotaProgress.tsx function formatBytes (line 18) | function formatBytes(bytes: number): string { function formatNumber (line 26) | function formatNumber(num: number): string { type QuotaProgressItemProps (line 36) | interface QuotaProgressItemProps { function QuotaProgressItem (line 46) | function QuotaProgressItem({ function QuotaProgress (line 114) | function QuotaProgress() { FILE: apps/web/components/theme-provider.tsx function ThemeProvider (line 7) | function ThemeProvider({ children, ...props }: ThemeProviderProps) { function useToggleTheme (line 15) | function useToggleTheme() { FILE: apps/web/components/ui/action-button.tsx type ActionButtonProps (line 14) | interface ActionButtonProps extends ButtonProps { FILE: apps/web/components/ui/action-confirming-dialog.tsx function ActionConfirmingDialog (line 15) | function ActionConfirmingDialog({ FILE: apps/web/components/ui/back-button.tsx function BackButton (line 8) | function BackButton({ ...props }: ButtonProps) { FILE: apps/web/components/ui/badge.tsx type BadgeProps (line 26) | interface BadgeProps function Badge (line 31) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: apps/web/components/ui/calendar.tsx function Calendar (line 13) | function Calendar({ function CalendarDayButton (line 171) | function CalendarDayButton({ FILE: apps/web/components/ui/collapsible.tsx function CollapsibleTriggerTriangle (line 13) | function CollapsibleTriggerTriangle({ function CollapsibleTriggerChevron (line 33) | function CollapsibleTriggerChevron({ FILE: apps/web/components/ui/copy-button.tsx function CopyBtn (line 8) | function CopyBtn({ function CopyBtnV2 (line 43) | function CopyBtnV2({ FILE: apps/web/components/ui/field.tsx function FieldSet (line 10) | function FieldSet({ className, ...props }: React.ComponentProps<"fieldse... function FieldLegend (line 24) | function FieldLegend({ function FieldGroup (line 44) | function FieldGroup({ className, ...props }: React.ComponentProps<"div">) { function Field (line 81) | function Field({ function FieldContent (line 97) | function FieldContent({ className, ...props }: React.ComponentProps<"div... function FieldLabel (line 110) | function FieldLabel({ function FieldTitle (line 128) | function FieldTitle({ className, ...props }: React.ComponentProps<"div">) { function FieldDescription (line 141) | function FieldDescription({ className, ...props }: React.ComponentProps<... function FieldSeparator (line 156) | function FieldSeparator({ function FieldError (line 186) | function FieldError({ FILE: apps/web/components/ui/file-picker-button.tsx type FilePickerButtonProps (line 5) | interface FilePickerButtonProps extends Omit { FILE: apps/web/components/ui/kbd.tsx function Kbd (line 3) | function Kbd({ className, ...props }: React.ComponentProps<"kbd">) { function KbdGroup (line 18) | function KbdGroup({ className, ...props }: React.ComponentProps<"div">) { FILE: apps/web/components/ui/markdown/markdown-editor.tsx function onError (line 34) | function onError(error: Error) { constant EDITOR_NODES (line 38) | const EDITOR_NODES = [ type MarkdownEditorProps (line 49) | interface MarkdownEditorProps { FILE: apps/web/components/ui/markdown/markdown-readonly.tsx function PreWithCopyBtn (line 10) | function PreWithCopyBtn({ className, ...props }: React.ComponentProps<"p... function MarkdownReadonly (line 25) | function MarkdownReadonly({ FILE: apps/web/components/ui/markdown/plugins/toolbar-plugin.tsx function MarkdownToolTip (line 39) | function MarkdownToolTip() { function ToolbarPlugin (line 122) | function ToolbarPlugin({ FILE: apps/web/components/ui/multiple-choice-dialog.tsx function MultipleChoiceDialog (line 11) | function MultipleChoiceDialog({ FILE: apps/web/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ FILE: apps/web/components/ui/sonner.tsx type ToasterProps (line 13) | type ToasterProps = React.ComponentProps; FILE: apps/web/components/ui/spinner.tsx function LoadingSpinner (line 3) | function LoadingSpinner({ className }: { className?: string }) { FILE: apps/web/components/ui/toast.tsx type ToastProps (line 113) | type ToastProps = React.ComponentPropsWithoutRef; type ToastActionElement (line 115) | type ToastActionElement = React.ReactElement; FILE: apps/web/components/ui/user-avatar.tsx type UserAvatarProps (line 9) | interface UserAvatarProps { function UserAvatar (line 21) | function UserAvatar({ FILE: apps/web/components/utils/BookmarkAlreadyExistsToast.tsx function BookmarkAlreadyExistsToast (line 4) | function BookmarkAlreadyExistsToast({ FILE: apps/web/components/utils/ValidAccountCheck.tsx function ValidAccountCheck (line 13) | function ValidAccountCheck() { FILE: apps/web/components/utils/useShowArchived.tsx function useShowArchived (line 5) | function useShowArchived() { FILE: apps/web/components/wrapped/ShareButton.tsx type ShareButtonProps (line 8) | interface ShareButtonProps { function ShareButton (line 13) | function ShareButton({ FILE: apps/web/components/wrapped/WrappedContent.tsx type WrappedStats (line 28) | type WrappedStats = z.infer; type BookmarkSource (line 29) | type BookmarkSource = z.infer; type WrappedContentProps (line 31) | interface WrappedContentProps { function formatSourceName (line 60) | function formatSourceName(source: BookmarkSource | null): string { function getSourceIcon (line 75) | function getSourceIcon(source: BookmarkSource | null, className = "h-5 w... FILE: apps/web/components/wrapped/WrappedModal.tsx type WrappedModalProps (line 19) | interface WrappedModalProps { function WrappedModal (line 24) | function WrappedModal({ open, onClose }: WrappedModalProps) { FILE: apps/web/instrumentation.ts function register (line 1) | async function register() { FILE: apps/web/lib/attachments.tsx constant ASSET_TYPE_TO_ICON (line 15) | const ASSET_TYPE_TO_ICON: Record = { FILE: apps/web/lib/bookmark-drag.ts constant BOOKMARK_DRAG_MIME (line 5) | const BOOKMARK_DRAG_MIME = "application/x-karakeep-bookmark"; FILE: apps/web/lib/bulkActions.ts type BookmarkState (line 7) | interface BookmarkState { FILE: apps/web/lib/bulkTagActions.ts type TagState (line 3) | interface TagState { FILE: apps/web/lib/clientConfig.tsx function useClientConfig (line 29) | function useClientConfig() { FILE: apps/web/lib/drag-and-drop.ts type DraggingState (line 4) | interface DraggingState { function useDragAndDrop (line 10) | function useDragAndDrop( FILE: apps/web/lib/haptic.ts function hasVibrate (line 9) | function hasVibrate( function haptic (line 25) | function haptic() { FILE: apps/web/lib/hooks/bookmark-search.ts function useSearchQuery (line 11) | function useSearchQuery() { function useDoBookmarkSearch (line 32) | function useDoBookmarkSearch() { function useBookmarkSearch (line 70) | function useBookmarkSearch() { FILE: apps/web/lib/hooks/relative-time.ts function useRelativeTime (line 4) | function useRelativeTime(date: Date) { FILE: apps/web/lib/hooks/upload-file.ts function useUpload (line 10) | function useUpload({ FILE: apps/web/lib/hooks/useBookmarkImport.ts type ImportProgress (line 18) | interface ImportProgress { function useBookmarkImport (line 23) | function useBookmarkImport() { FILE: apps/web/lib/hooks/useDialogFormReset.ts function useDialogFormReset (line 13) | function useDialogFormReset( FILE: apps/web/lib/hooks/useImportSessions.ts function useCreateImportSession (line 13) | function useCreateImportSession() { function useListImportSessions (line 34) | function useListImportSessions() { function useImportSessionStats (line 46) | function useImportSessionStats(importSessionId: string) { function useDeleteImportSession (line 65) | function useDeleteImportSession() { function usePauseImportSession (line 90) | function usePauseImportSession() { function useResumeImportSession (line 115) | function useResumeImportSession() { function useImportSessionResults (line 140) | function useImportSessionResults( FILE: apps/web/lib/i18n/server.ts function useTranslation (line 23) | async function useTranslation< FILE: apps/web/lib/i18n/settings.ts function getOptions (line 8) | function getOptions(lng: string = fallbackLng, ns: string = defaultNS) { FILE: apps/web/lib/providers.tsx function makeQueryClient (line 23) | function makeQueryClient() { function getQueryClient (line 37) | function getQueryClient() { function Providers (line 51) | function Providers({ FILE: apps/web/lib/readerSettings.tsx constant LOCAL_STORAGE_KEY (line 20) | const LOCAL_STORAGE_KEY = "karakeep-reader-settings"; function getLocalOverridesFromStorage (line 22) | function getLocalOverridesFromStorage(): ReaderSettingsPartial { function saveLocalOverridesToStorage (line 32) | function saveLocalOverridesToStorage(overrides: ReaderSettingsPartial): ... type SessionOverridesContextValue (line 38) | interface SessionOverridesContextValue { function ReaderSettingsProvider (line 48) | function ReaderSettingsProvider({ function useReaderSettings (line 85) | function useReaderSettings() { FILE: apps/web/lib/store/useInBookmarkGridStore.ts type InBookmarkGridState (line 3) | interface InBookmarkGridState { FILE: apps/web/lib/store/useInSearchPageStore.ts type InSearchPageState (line 3) | interface InSearchPageState { FILE: apps/web/lib/store/useSortOrderStore.ts type SortOrderState (line 5) | interface SortOrderState { FILE: apps/web/lib/userLocalSettings/bookmarksLayout.tsx function useUserLocalSettings (line 23) | function useUserLocalSettings() { function useBookmarkDisplaySettings (line 27) | function useBookmarkDisplaySettings() { function useBookmarkLayout (line 37) | function useBookmarkLayout() { function useInterfaceLang (line 42) | function useInterfaceLang() { function useGridColumns (line 47) | function useGridColumns() { function bookmarkLayoutSwitch (line 52) | function bookmarkLayoutSwitch( function useBookmarkLayoutSwitch (line 59) | function useBookmarkLayoutSwitch( FILE: apps/web/lib/userLocalSettings/types.ts constant USER_LOCAL_SETTINGS_COOKIE_NAME (line 3) | const USER_LOCAL_SETTINGS_COOKIE_NAME = "hoarder-user-local-settings"; type BookmarksLayoutTypes (line 6) | type BookmarksLayoutTypes = z.infer; type UserLocalSettings (line 18) | type UserLocalSettings = z.infer; function parseUserLocalSettings (line 20) | function parseUserLocalSettings(str: string | undefined) { function defaultUserLocalSettings (line 28) | function defaultUserLocalSettings() { FILE: apps/web/lib/userLocalSettings/userLocalSettings.ts function getUserLocalSettings (line 12) | async function getUserLocalSettings(): Promise { function readModifyWrite (line 19) | async function readModifyWrite( function updateBookmarksLayout (line 34) | async function updateBookmarksLayout(layout: BookmarksLayoutTypes) { function updateInterfaceLang (line 38) | async function updateInterfaceLang(lang: string) { function updateGridColumns (line 42) | async function updateGridColumns(gridColumns: number) { function updateShowNotes (line 46) | async function updateShowNotes(showNotes: boolean) { function updateShowTags (line 50) | async function updateShowTags(showTags: boolean) { function updateShowTitle (line 54) | async function updateShowTitle(showTitle: boolean) { function updateImageFit (line 58) | async function updateImageFit(imageFit: "cover" | "contain") { FILE: apps/web/lib/userSettings.tsx function UserSettingsContextProvider (line 26) | function UserSettingsContextProvider({ function useUserSettings (line 47) | function useUserSettings() { FILE: apps/web/lib/utils.ts function cn (line 5) | function cn(...inputs: ClassValue[]) { type OS (line 9) | type OS = "macos" | "ios" | "windows" | "android" | "linux" | null; function formatBytes (line 11) | function formatBytes(bytes: number, decimals = 2) { function getOS (line 23) | function getOS() { function match (line 45) | function match( function matchFunc (line 52) | function matchFunc( FILE: apps/web/next.config.mjs method headers (line 23) | async headers() { FILE: apps/web/server/api/client.ts function createContextFromRequest (line 10) | async function createContextFromRequest(req: Request) { FILE: apps/web/server/auth.ts type UserRole (line 24) | type UserRole = "admin" | "user"; type JWT (line 27) | interface JWT { type Session (line 39) | interface Session { type DefaultUser (line 46) | interface DefaultUser { function isFirstUser (line 56) | async function isFirstUser(): Promise { function isAdmin (line 66) | async function isAdmin(email: string): Promise { method authorize (line 102) | async authorize(credentials) { method profile (line 135) | async profile(profile: Record) { method signIn (line 164) | async signIn({ user: credUser, credentials, profile }) { method jwt (line 198) | async jwt({ token, user }) { method session (line 210) | async session({ session, token }) { FILE: apps/workers/index.ts type WorkerName (line 86) | type WorkerName = keyof typeof workerBuilders | "import"; function isWorkerEnabled (line 90) | function isWorkerEnabled(name: WorkerName) { function main (line 100) | async function main() { FILE: apps/workers/metascraper-plugins/metascraper-amazon-improved.ts constant REGEX_AMAZON_URL (line 21) | const REGEX_AMAZON_URL = FILE: apps/workers/metascraper-plugins/metascraper-reddit.ts type RedditPostData (line 66) | type RedditPostData = z.infer; type RedditFetchResult (line 76) | interface RedditFetchResult { constant REDDIT_CACHE_TTL_MS (line 81) | const REDDIT_CACHE_TTL_MS = 60 * 1000; type RedditCacheEntry (line 83) | interface RedditCacheEntry { constant REDDIT_LOGO_URL (line 186) | const REDDIT_LOGO_URL = FILE: apps/workers/network.ts constant DISALLOWED_IP_RANGES (line 12) | const DISALLOWED_IP_RANGES = new Set([ function resolveHostAddresses (line 37) | async function resolveHostAddresses(hostname: string): Promise { function isAddressForbidden (line 74) | function isAddressForbidden(address: string): boolean { function getBookmarkDomain (line 89) | function getBookmarkDomain(url?: string | null): string | undefined { type UrlValidationResult (line 98) | type UrlValidationResult = function hostnameMatchesAnyPattern (line 102) | function hostnameMatchesAnyPattern( function isHostnameAllowedForInternalAccess (line 126) | function isHostnameAllowedForInternalAccess(hostname: string): boolean { function validateUrl (line 136) | async function validateUrl( function getRandomProxy (line 224) | function getRandomProxy(proxyList: string[]): string { function matchesNoProxy (line 228) | function matchesNoProxy(url: string, noProxy: string[]) { function getProxyAgent (line 239) | function getProxyAgent(url: string) { function cloneHeaders (line 268) | function cloneHeaders(init?: HeadersInit): Headers { function isRedirectResponse (line 298) | function isRedirectResponse(response: Response): boolean { type FetchWithProxyOptions (line 308) | type FetchWithProxyOptions = Omit< type PreparedFetchOptions (line 315) | interface PreparedFetchOptions { function prepareFetchOptions (line 323) | function prepareFetchOptions( type BuildFetchOptionsInput (line 346) | interface BuildFetchOptionsInput { function buildFetchOptions (line 354) | function buildFetchOptions({ FILE: apps/workers/scripts/parseHtmlSubprocess.ts constant LAZY_SRC_ATTRS (line 87) | const LAZY_SRC_ATTRS = [ function normalizeLazyLoadImages (line 98) | function normalizeLazyLoadImages(document: Document): void { function extractReadableContent (line 123) | function extractReadableContent( function main (line 149) | async function main() { FILE: apps/workers/server.ts function buildServer (line 20) | function buildServer() { FILE: apps/workers/trpc.ts function buildImpersonatingTRPCClient (line 10) | async function buildImpersonatingTRPCClient(userId: string) { FILE: apps/workers/utils.ts function withTimeout (line 1) | function withTimeout( FILE: apps/workers/workerTracing.ts type WorkerRunFn (line 6) | type WorkerRunFn = ( function withWorkerTracing (line 25) | function withWorkerTracing( FILE: apps/workers/workerUtils.ts type DBAssetType (line 6) | type DBAssetType = typeof assets.$inferInsert; function updateAsset (line 7) | async function updateAsset( function getBookmarkDetails (line 19) | async function getBookmarkDetails(bookmarkId: string) { FILE: apps/workers/workers/adminMaintenance/tasks/migrateLinkHtmlContent.ts constant BATCH_SIZE (line 20) | const BATCH_SIZE = 25; type BookmarkHtmlRow (line 22) | interface BookmarkHtmlRow { function getBookmarksWithLargeInlineHtml (line 28) | async function getBookmarksWithLargeInlineHtml(limit: number, cursor?: s... function migrateBookmarkHtml (line 57) | async function migrateBookmarkHtml( function runMigrateLargeLinkHtmlTask (line 152) | async function runMigrateLargeLinkHtmlTask( FILE: apps/workers/workers/adminMaintenance/tasks/tidyAssets.ts function handleAsset (line 14) | async function handleAsset( function runTidyAssetsTask (line 57) | async function runTidyAssetsTask( FILE: apps/workers/workers/adminMaintenanceWorker.ts class AdminMaintenanceWorker (line 17) | class AdminMaintenanceWorker { method build (line 18) | static async build() { function runAdminMaintenance (line 66) | async function runAdminMaintenance(job: DequeuedJob) { FILE: apps/workers/workers/backupWorker.ts class BackupWorker (line 114) | class BackupWorker { method build (line 115) | static async build() { function run (line 166) | async function run(req: DequeuedJob) { function streamBookmarksToJsonFile (line 309) | async function streamBookmarksToJsonFile( function createZipArchiveFromFile (line 404) | async function createZipArchiveFromFile( function cleanupOldBackups (line 437) | async function cleanupOldBackups( FILE: apps/workers/workers/crawlerWorker.ts function abortPromise (line 95) | function abortPromise(signal: AbortSignal): Promise { function redactUrlCredentials (line 123) | function redactUrlCredentials(url: string): string { function normalizeContentType (line 142) | function normalizeContentType(header: string | null): string | null { function shouldRetryCrawlStatusCode (line 149) | function shouldRetryCrawlStatusCode(statusCode: number | null): boolean { type Cookie (line 156) | interface Cookie { type CrawlerRunResult (line 180) | interface CrawlerRunResult { function getPlaywrightProxyConfig (line 184) | function getPlaywrightProxyConfig(): BrowserContextOptions["proxy"] { constant CONTEXT_CLOSE_TIMEOUT_MS (line 223) | const CONTEXT_CLOSE_TIMEOUT_MS = 10_000; constant PAGE_CLOSE_TIMEOUT_MS (line 224) | const PAGE_CLOSE_TIMEOUT_MS = 5_000; function startContextReaper (line 230) | function startContextReaper() { function startBrowserInstance (line 284) | async function startBrowserInstance() { function launchBrowser (line 313) | async function launchBrowser() { class CrawlerWorker (line 346) | class CrawlerWorker { method ensureInitialized (line 349) | private static ensureInitialized() { method build (line 384) | static async build(queue: Queue) { function loadCookiesFromFile (line 466) | async function loadCookiesFromFile(): Promise { type DBAssetType (line 489) | type DBAssetType = typeof assets.$inferInsert; function browserlessCrawlPage (line 491) | async function browserlessCrawlPage( function crawlPage (line 527) | async function crawlPage( function getSubprocessScriptPath (line 1031) | function getSubprocessScriptPath(): string { function getSubprocessCommand (line 1041) | function getSubprocessCommand(): { cmd: string; args: string[] } { function runParseSubprocess (line 1059) | async function runParseSubprocess( function storeScreenshot (line 1153) | async function storeScreenshot( function storePdf (line 1212) | async function storePdf( function downloadAndStoreFile (line 1265) | async function downloadAndStoreFile( function downloadAndStoreImage (line 1374) | async function downloadAndStoreImage( function archiveWebpage (line 1389) | async function archiveWebpage( function getContentType (line 1483) | async function getContentType( function handleAsAssetBookmark (line 1537) | async function handleAsAssetBookmark( type StoreHtmlResult (line 1612) | type StoreHtmlResult = function storeHtmlContent (line 1617) | async function storeHtmlContent( function crawlAndParseUrl (line 1693) | async function crawlAndParseUrl( function checkDomainRateLimit (line 1994) | async function checkDomainRateLimit(url: string, jobId: string): Promise... function runCrawler (line 2044) | async function runCrawler( FILE: apps/workers/workers/feedWorker.ts function getFeedMinuteOffset (line 22) | function getFeedMinuteOffset(feedId: string): number { class FeedWorker (line 86) | class FeedWorker { method build (line 87) | static async build() { function run (line 130) | async function run(req: DequeuedJob) { FILE: apps/workers/workers/importWorker.ts function sleep (line 73) | function sleep(ms: number): Promise { function getSafeErrorMessage (line 81) | function getSafeErrorMessage(error: unknown): string { class ImportWorker (line 101) | class ImportWorker { method start (line 110) | async start() { method stop (line 143) | stop() { method processBatch (line 148) | private async processBatch(): Promise { method updateGauges (line 235) | private async updateGauges() { method checkAndCompleteIdleSessions (line 264) | private async checkAndCompleteIdleSessions() { method countPendingItems (line 278) | private async countPendingItems(): Promise { method getNextBatchFairly (line 295) | private async getNextBatchFairly(limit: number): Promise { method attachBookmarkToLists (line 321) | private async attachBookmarkToLists( method processOneBookmark (line 350) | private async processOneBookmark( method updateSessionLastProcessedAt (line 486) | private async updateSessionLastProcessedAt(sessionId: string) { method checkAndCompleteEmptySessions (line 493) | private async checkAndCompleteEmptySessions(sessionIds: string[]) { method checkAndCompleteProcessingItems (line 521) | private async checkAndCompleteProcessingItems(): Promise { method getAvailableCapacity (line 630) | private async getAvailableCapacity(): Promise { method resetStaleProcessingItems (line 657) | private async resetStaleProcessingItems(): Promise { FILE: apps/workers/workers/inference/inferenceWorker.ts function attemptMarkStatus (line 17) | async function attemptMarkStatus( class OpenAiWorker (line 40) | class OpenAiWorker { method build (line 41) | static async build() { function runOpenAI (line 76) | async function runOpenAI(job: DequeuedJob) { FILE: apps/workers/workers/inference/summarize.ts function fetchBookmarkDetailsForSummary (line 19) | async function fetchBookmarkDetailsForSummary(bookmarkId: string) { function runSummarization (line 46) | async function runSummarization( FILE: apps/workers/workers/inference/tagging.ts function parseJsonFromLLMResponse (line 38) | function parseJsonFromLLMResponse(response: string): unknown { function tagNormalizer (line 74) | function tagNormalizer() { function buildPrompt (line 84) | async function buildPrompt( function inferTagsFromImage (line 132) | async function inferTagsFromImage( function fetchCustomPrompts (line 175) | async function fetchCustomPrompts( function replaceTagsPlaceholders (line 201) | async function replaceTagsPlaceholders( function containsTagsPlaceholder (line 225) | function containsTagsPlaceholder(prompts: { text: string }[]): boolean { function inferTagsFromPDF (line 236) | async function inferTagsFromPDF( function inferTagsFromText (line 265) | async function inferTagsFromText( function inferTags (line 294) | async function inferTags( function connectTags (line 392) | async function connectTags( function fetchBookmark (line 494) | async function fetchBookmark(linkId: string) { function runTagging (line 505) | async function runTagging( FILE: apps/workers/workers/ruleEngineWorker.ts class RuleEngineWorker (line 18) | class RuleEngineWorker { method build (line 19) | static async build() { function getBookmarkUserId (line 55) | async function getBookmarkUserId(bookmarkId: string) { function runRuleEngine (line 64) | async function runRuleEngine(job: DequeuedJob) { FILE: apps/workers/workers/searchWorker.ts class SearchIndexingWorker (line 22) | class SearchIndexingWorker { method build (line 23) | static async build() { function runIndex (line 59) | async function runIndex( function runDelete (line 117) | async function runDelete( function runSearchIndexing (line 125) | async function runSearchIndexing(job: DequeuedJob; function parseFeedItems (line 34) | async function parseFeedItems( FILE: apps/workers/workers/utils/fetchBookmarks.ts function fetchAllBookmarksForUser (line 15) | async function fetchAllBookmarksForUser( FILE: apps/workers/workers/utils/parseHtmlSubprocessIpc.ts type ParseSubprocessInput (line 32) | type ParseSubprocessInput = z.infer; type ParseSubprocessOutput (line 33) | type ParseSubprocessOutput = z.infer; type ParseSubprocessError (line 34) | type ParseSubprocessError = z.infer; FILE: apps/workers/workers/videoWorker.ts constant TMP_FOLDER (line 30) | const TMP_FOLDER = path.join(os.tmpdir(), "video_downloads"); class VideoWorker (line 32) | class VideoWorker { method build (line 33) | static async build() { function prepareYtDlpArguments (line 70) | function prepareYtDlpArguments( function runWorker (line 92) | async function runWorker(job: DequeuedJob) { function deleteLeftOverAssetFile (line 226) | async function deleteLeftOverAssetFile( function findAssetFile (line 258) | async function findAssetFile(assetId: string): Promise { FILE: apps/workers/workers/webhookWorker.ts class WebhookWorker (line 17) | class WebhookWorker { method build (line 18) | static async build() { function fetchBookmark (line 57) | async function fetchBookmark(bookmarkId: string) { function fetchUserWebhooks (line 70) | async function fetchUserWebhooks(userId: string) { function runWebhook (line 76) | async function runWebhook(job: DequeuedJob) { FILE: docs/src/theme/DocSidebarItem/Category/index.tsx function useAutoExpandActiveCategory (line 53) | function useAutoExpandActiveCategory({ function useCategoryHrefWithSSRFallback (line 79) | function useCategoryHrefWithSSRFallback( function CollapseButton (line 96) | function CollapseButton({ function DocSidebarItemCategory (line 134) | function DocSidebarItemCategory({ FILE: packages/api/middlewares/trpcAdapter.ts function trpcCodeToHttpCode (line 5) | function trpcCodeToHttpCode(code: TRPCError["code"]) { FILE: packages/api/utils/assets.ts function serveAsset (line 12) | async function serveAsset(c: Context, assetId: string, userId: string) { FILE: packages/api/utils/pagination.ts function adaptPagination (line 19) | function adaptPagination< FILE: packages/api/utils/rss.ts function toRSS (line 10) | function toRSS( FILE: packages/api/utils/upload.ts constant MAX_UPLOAD_SIZE_BYTES (line 18) | const MAX_UPLOAD_SIZE_BYTES = serverConfig.maxAssetSizeMb * 1024 * 1024; function webStreamToNode (line 21) | function webStreamToNode( function toWebReadableStream (line 28) | function toWebReadableStream( function uploadAsset (line 42) | async function uploadAsset( FILE: packages/benchmarks/src/benchmarks.ts type CompletedTaskResult (line 9) | type CompletedTaskResult = Extract; type BenchmarkRow (line 11) | interface BenchmarkRow { type BenchmarkOptions (line 20) | interface BenchmarkOptions { function runBenchmarks (line 25) | async function runBenchmarks( function toRow (line 189) | function toRow(name: string, result: CompletedTaskResult): BenchmarkRow { function renderTable (line 204) | function renderTable(rows: BenchmarkRow[]): void { FILE: packages/benchmarks/src/index.ts type CliConfig (line 6) | interface CliConfig { function numberFromEnv (line 17) | function numberFromEnv(key: string, fallback: number): number { function loadConfig (line 24) | function loadConfig(): CliConfig { function main (line 37) | async function main() { FILE: packages/benchmarks/src/log.ts constant ICONS (line 1) | const ICONS = { function logStep (line 8) | function logStep(title: string): void { function logInfo (line 12) | function logInfo(message: string): void { function logSuccess (line 16) | function logSuccess(message: string): void { function logWarn (line 20) | function logWarn(message: string): void { FILE: packages/benchmarks/src/seed.ts type SeedConfig (line 11) | interface SeedConfig { type SeededBookmark (line 19) | interface SeededBookmark { type UserSeedData (line 26) | interface UserSeedData { type SeedResult (line 35) | interface SeedResult { constant TOPICS (line 46) | const TOPICS = [ function seedUserData (line 59) | async function seedUserData( function seedData (line 171) | async function seedData(config: SeedConfig): Promise { FILE: packages/benchmarks/src/startContainers.ts function getRandomPort (line 9) | async function getRandomPort(): Promise { function waitForHealthy (line 21) | async function waitForHealthy(port: number): Promise { function captureDockerLogs (line 33) | async function captureDockerLogs(composeDir: string): Promise { type RunningContainers (line 58) | interface RunningContainers { function startContainers (line 63) | async function startContainers(): Promise { FILE: packages/benchmarks/src/trpc.ts type TrpcClient (line 6) | type TrpcClient = ReturnType; function getTrpcClient (line 8) | function getTrpcClient(apiKey?: string) { FILE: packages/benchmarks/src/utils.ts function sleep (line 1) | function sleep(ms: number): Promise { function waitUntil (line 5) | async function waitUntil( function formatNumber (line 25) | function formatNumber(num: number, fractionDigits = 2): string { function formatMs (line 29) | function formatMs(ms: number): string { FILE: packages/db/drizzle.ts type DB (line 29) | type DB = typeof db; function getInMemoryDB (line 31) | function getInMemoryDB(runMigrations: boolean) { FILE: packages/db/drizzle/0000_luxuriant_johnny_blaze.sql type `account` (line 1) | CREATE TABLE `account` ( type `apiKey` (line 17) | CREATE TABLE `apiKey` ( type `bookmarkLinks` (line 27) | CREATE TABLE `bookmarkLinks` ( type `bookmarkTags` (line 38) | CREATE TABLE `bookmarkTags` ( type `bookmarks` (line 46) | CREATE TABLE `bookmarks` ( type `session` (line 55) | CREATE TABLE `session` ( type `tagsOnBookmarks` (line 62) | CREATE TABLE `tagsOnBookmarks` ( type `user` (line 72) | CREATE TABLE `user` ( type `verificationToken` (line 81) | CREATE TABLE `verificationToken` ( type `apiKey_name_unique` (line 88) | CREATE UNIQUE INDEX `apiKey_name_unique` ON `apiKey` (`name`) type `apiKey_keyId_unique` (line 89) | CREATE UNIQUE INDEX `apiKey_keyId_unique` ON `apiKey` (`keyId`) type `apiKey_name_userId_unique` (line 90) | CREATE UNIQUE INDEX `apiKey_name_userId_unique` ON `apiKey` (`name`,`use... type `bookmarkTags_userId_name_unique` (line 91) | CREATE UNIQUE INDEX `bookmarkTags_userId_name_unique` ON `bookmarkTags` ... type `user_email_unique` (line 92) | CREATE UNIQUE INDEX `user_email_unique` ON `user` (`email`) FILE: packages/db/drizzle/0001_dapper_trauma.sql type `bookmarkTexts` (line 1) | CREATE TABLE `bookmarkTexts` ( FILE: packages/db/drizzle/0002_worried_beyonder.sql type `bookmarkLists` (line 1) | CREATE TABLE `bookmarkLists` ( type `bookmarksInLists` (line 10) | CREATE TABLE `bookmarksInLists` ( type `bookmarkLists_name_userId_unique` (line 19) | CREATE UNIQUE INDEX `bookmarkLists_name_userId_unique` ON `bookmarkLists... FILE: packages/db/drizzle/0008_cloudy_skin.sql type `bookmarkLists_userId_idx` (line 1) | CREATE INDEX `bookmarkLists_userId_idx` ON `bookmarkLists` (`userId`) type `bookmarkTags_name_idx` (line 2) | CREATE INDEX `bookmarkTags_name_idx` ON `bookmarkTags` (`name`) type `bookmarkTags_userId_idx` (line 3) | CREATE INDEX `bookmarkTags_userId_idx` ON `bookmarkTags` (`userId`) type `bookmarks_userId_idx` (line 4) | CREATE INDEX `bookmarks_userId_idx` ON `bookmarks` (`userId`) type `bookmarks_archived_idx` (line 5) | CREATE INDEX `bookmarks_archived_idx` ON `bookmarks` (`archived`) type `bookmarks_favourited_idx` (line 6) | CREATE INDEX `bookmarks_favourited_idx` ON `bookmarks` (`favourited`) type `bookmarksInLists_bookmarkId_idx` (line 7) | CREATE INDEX `bookmarksInLists_bookmarkId_idx` ON `bookmarksInLists` (`b... type `bookmarksInLists_listId_idx` (line 8) | CREATE INDEX `bookmarksInLists_listId_idx` ON `bookmarksInLists` (`listId`) type `tagsOnBookmarks_tagId_idx` (line 9) | CREATE INDEX `tagsOnBookmarks_tagId_idx` ON `tagsOnBookmarks` (`bookmark... type `tagsOnBookmarks_bookmarkId_idx` (line 10) | CREATE INDEX `tagsOnBookmarks_bookmarkId_idx` ON `tagsOnBookmarks` (`boo... FILE: packages/db/drizzle/0009_cuddly_cammi.sql type `bookmarks_createdAt_idx` (line 1) | CREATE INDEX `bookmarks_createdAt_idx` ON `bookmarks` (`createdAt`) FILE: packages/db/drizzle/0010_curved_sharon_ventura.sql type `assets` (line 1) | CREATE TABLE `assets` ( type `assets_userId_idx` (line 11) | CREATE INDEX `assets_userId_idx` ON `assets` (`userId`) FILE: packages/db/drizzle/0011_ordinary_phalanx.sql type `bookmarkAssets` (line 1) | CREATE TABLE `bookmarkAssets` ( FILE: packages/db/drizzle/0012_noisy_grim_reaper.sql type `bookmarkAssets2` (line 1) | CREATE TABLE `bookmarkAssets2` ( FILE: packages/db/drizzle/0021_magical_firebrand.sql type `bookmarkLinks_url_idx` (line 1) | CREATE INDEX `bookmarkLinks_url_idx` ON `bookmarkLinks` (`url`) FILE: packages/db/drizzle/0024_premium_hammerhead.sql type `assets` (line 1) | CREATE TABLE `assets` ( type `assets_bookmarkId_idx` (line 8) | CREATE INDEX `assets_bookmarkId_idx` ON `assets` (`bookmarkId`) type `assets_assetType_idx` (line 10) | CREATE INDEX `assets_assetType_idx` ON `assets` (`assetType`) FILE: packages/db/drizzle/0026_silky_imperial_guard.sql type `config` (line 1) | CREATE TABLE `config` ( FILE: packages/db/drizzle/0027_cute_talon.sql type `customPrompts` (line 1) | CREATE TABLE `customPrompts` ( type `customPrompts_userId_idx` (line 11) | CREATE INDEX `customPrompts_userId_idx` ON `customPrompts` (`userId`) FILE: packages/db/drizzle/0029_short_gunslinger.sql type `assets_new` (line 1) | CREATE TABLE `assets_new` ( type `assets_bookmarkId_idx` (line 12) | CREATE INDEX `assets_bookmarkId_idx` ON `assets` (`bookmarkId`) type `assets_assetType_idx` (line 13) | CREATE INDEX `assets_assetType_idx` ON `assets` (`assetType`) type `assets_userId_idx` (line 14) | CREATE INDEX `assets_userId_idx` ON `assets` (`userId`) FILE: packages/db/drizzle/0032_futuristic_shiva.sql type `rssFeedImports` (line 1) | CREATE TABLE `rssFeedImports` ( type `rssFeeds` (line 11) | CREATE TABLE `rssFeeds` ( type `rssFeedImports_feedIdIdx_idx` (line 22) | CREATE INDEX `rssFeedImports_feedIdIdx_idx` ON `rssFeedImports` (`rssFee... type `rssFeedImports_entryIdIdx_idx` (line 23) | CREATE INDEX `rssFeedImports_entryIdIdx_idx` ON `rssFeedImports` (`entry... type `rssFeedImports_rssFeedId_entryId_unique` (line 24) | CREATE UNIQUE INDEX `rssFeedImports_rssFeedId_entryId_unique` ON `rssFee... type `rssFeeds_userId_idx` (line 25) | CREATE INDEX `rssFeeds_userId_idx` ON `rssFeeds` (`userId`) FILE: packages/db/drizzle/0033_nappy_molten_man.sql type `tagsOnBookmarks_tagId_idx` (line 2) | CREATE INDEX `tagsOnBookmarks_tagId_idx` ON `tagsOnBookmarks` (`tagId`) FILE: packages/db/drizzle/0035_gorgeous_may_parker.sql type `highlights` (line 1) | CREATE TABLE `highlights` ( type `highlights_bookmarkId_idx` (line 14) | CREATE INDEX `highlights_bookmarkId_idx` ON `highlights` (`bookmarkId`) type `highlights_userId_idx` (line 15) | CREATE INDEX `highlights_userId_idx` ON `highlights` (`userId`) FILE: packages/db/drizzle/0039_purple_albert_cleary.sql type `webhooks` (line 1) | CREATE TABLE `webhooks` ( type `webhooks_userId_idx` (line 10) | CREATE INDEX `webhooks_userId_idx` ON `webhooks` (`userId`) FILE: packages/db/drizzle/0045_add_rule_engine.sql type `ruleEngineActions` (line 1) | CREATE TABLE `ruleEngineActions` ( type `ruleEngineActions_userId_idx` (line 14) | CREATE INDEX `ruleEngineActions_userId_idx` ON `ruleEngineActions` (`use... type `ruleEngineActions_ruleId_idx` (line 15) | CREATE INDEX `ruleEngineActions_ruleId_idx` ON `ruleEngineActions` (`rul... type `ruleEngineRules` (line 16) | CREATE TABLE `ruleEngineRules` ( type `ruleEngine_userId_idx` (line 31) | CREATE INDEX `ruleEngine_userId_idx` ON `ruleEngineRules` (`userId`) type `bookmarkLists_userId_id_idx` (line 32) | CREATE UNIQUE INDEX `bookmarkLists_userId_id_idx` ON `bookmarkLists` (`u... type `bookmarkTags_userId_id_idx` (line 33) | CREATE UNIQUE INDEX `bookmarkTags_userId_id_idx` ON `bookmarkTags` (`use... FILE: packages/db/drizzle/0048_add_user_settings.sql type `userSettings` (line 1) | CREATE TABLE `userSettings` ( FILE: packages/db/drizzle/0056_user_invites.sql type `invites` (line 1) | CREATE TABLE `invites` ( type `invites_token_unique` (line 12) | CREATE UNIQUE INDEX `invites_token_unique` ON `invites` (`token`) FILE: packages/db/drizzle/0057_salty_carmella_unuscione.sql type `passwordResetToken` (line 1) | CREATE TABLE `passwordResetToken` ( type `passwordResetToken_token_unique` (line 10) | CREATE UNIQUE INDEX `passwordResetToken_token_unique` ON `passwordResetT... type `passwordResetTokens_userId_idx` (line 11) | CREATE INDEX `passwordResetTokens_userId_idx` ON `passwordResetToken` (`... FILE: packages/db/drizzle/0058_add_subscription.sql type `subscriptions` (line 1) | CREATE TABLE `subscriptions` ( type `subscriptions_userId_unique` (line 17) | CREATE UNIQUE INDEX `subscriptions_userId_unique` ON `subscriptions` (`u... type `subscriptions_userId_idx` (line 18) | CREATE INDEX `subscriptions_userId_idx` ON `subscriptions` (`userId`) type `subscriptions_stripeCustomerId_idx` (line 19) | CREATE INDEX `subscriptions_stripeCustomerId_idx` ON `subscriptions` (`s... FILE: packages/db/drizzle/0062_add_import_session.sql type `importSessionBookmarks` (line 1) | CREATE TABLE `importSessionBookmarks` ( type `importSessionBookmarks_sessionId_idx` (line 10) | CREATE INDEX `importSessionBookmarks_sessionId_idx` ON `importSessionBoo... type `importSessionBookmarks_bookmarkId_idx` (line 11) | CREATE INDEX `importSessionBookmarks_bookmarkId_idx` ON `importSessionBo... type `importSessionBookmarks_importSessionId_bookmarkId_unique` (line 12) | CREATE UNIQUE INDEX `importSessionBookmarks_importSessionId_bookmarkId_u... type `importSessions` (line 13) | CREATE TABLE `importSessions` ( type `importSessions_userId_idx` (line 25) | CREATE INDEX `importSessions_userId_idx` ON `importSessions` (`userId`) FILE: packages/db/drizzle/0065_collaborative_lists.sql type `listCollaborators` (line 1) | CREATE TABLE `listCollaborators` ( type `listCollaborators_listId_idx` (line 13) | CREATE INDEX `listCollaborators_listId_idx` ON `listCollaborators` (`lis... type `listCollaborators_userId_idx` (line 14) | CREATE INDEX `listCollaborators_userId_idx` ON `listCollaborators` (`use... type `listCollaborators_listId_userId_unique` (line 15) | CREATE UNIQUE INDEX `listCollaborators_listId_userId_unique` ON `listCol... FILE: packages/db/drizzle/0066_collaborative_lists_invites.sql type `listInvitations` (line 1) | CREATE TABLE `listInvitations` ( type `listInvitations_listId_idx` (line 15) | CREATE INDEX `listInvitations_listId_idx` ON `listInvitations` (`listId`) type `listInvitations_userId_idx` (line 16) | CREATE INDEX `listInvitations_userId_idx` ON `listInvitations` (`userId`) type `listInvitations_status_idx` (line 17) | CREATE INDEX `listInvitations_status_idx` ON `listInvitations` (`status`) type `listInvitations_listId_userId_unique` (line 18) | CREATE UNIQUE INDEX `listInvitations_listId_userId_unique` ON `listInvit... FILE: packages/db/drizzle/0067_add_backups_table.sql type `backups` (line 1) | CREATE TABLE `backups` ( type `backups_userId_idx` (line 14) | CREATE INDEX `backups_userId_idx` ON `backups` (`userId`) type `backups_createdAt_idx` (line 15) | CREATE INDEX `backups_createdAt_idx` ON `backups` (`createdAt`) FILE: packages/db/drizzle/0068_optimize_bookmark_indicies.sql type `bookmarks_userId_createdAt_id_idx` (line 3) | CREATE INDEX `bookmarks_userId_createdAt_id_idx` ON `bookmarks` (`userId... type `bookmarks_userId_archived_createdAt_id_idx` (line 4) | CREATE INDEX `bookmarks_userId_archived_createdAt_id_idx` ON `bookmarks`... type `bookmarks_userId_favourited_createdAt_id_idx` (line 5) | CREATE INDEX `bookmarks_userId_favourited_createdAt_id_idx` ON `bookmark... type `bookmarksInLists_listId_bookmarkId_idx` (line 6) | CREATE INDEX `bookmarksInLists_listId_bookmarkId_idx` ON `bookmarksInLis... type `rssFeedImports_rssFeedId_bookmarkId_idx` (line 7) | CREATE INDEX `rssFeedImports_rssFeedId_bookmarkId_idx` ON `rssFeedImport... type `tagsOnBookmarks_tagId_bookmarkId_idx` (line 8) | CREATE INDEX `tagsOnBookmarks_tagId_bookmarkId_idx` ON `tagsOnBookmarks`... FILE: packages/db/drizzle/0071_add_normalized_tag_name.sql type `bookmarkTags_normalizedName_idx` (line 2) | CREATE INDEX `bookmarkTags_normalizedName_idx` ON `bookmarkTags` (`norma... FILE: packages/db/drizzle/0077_import_listpaths_to_listids.sql type `importStagingBookmarks` (line 1) | CREATE TABLE `importStagingBookmarks` ( type `importStaging_session_status_idx` (line 23) | CREATE INDEX `importStaging_session_status_idx` ON `importStagingBookmar... type `importStaging_completedAt_idx` (line 24) | CREATE INDEX `importStaging_completedAt_idx` ON `importStagingBookmarks`... FILE: packages/db/drizzle/0078_add_import_session_indexes.sql type `importSessions_status_idx` (line 1) | CREATE INDEX `importSessions_status_idx` ON `importSessions` (`status`) type `importStaging_status_idx` (line 2) | CREATE INDEX `importStaging_status_idx` ON `importStagingBookmarks` (`st... type `importStaging_status_processingStartedAt_idx` (line 3) | CREATE INDEX `importStaging_status_processingStartedAt_idx` ON `importSt... FILE: packages/db/drizzle/0080_user_reading_progress.sql type `userReadingProgress` (line 1) | CREATE TABLE `userReadingProgress` ( type `userReadingProgress_bookmarkId_idx` (line 13) | CREATE INDEX `userReadingProgress_bookmarkId_idx` ON `userReadingProgres... type `userReadingProgress_userId_idx` (line 14) | CREATE INDEX `userReadingProgress_userId_idx` ON `userReadingProgress` (... type `userReadingProgress_bookmarkId_userId_unique` (line 15) | CREATE UNIQUE INDEX `userReadingProgress_bookmarkId_userId_unique` ON `u... FILE: packages/db/index.ts type KarakeepDBTransaction (line 13) | type KarakeepDBTransaction = SQLiteTransaction< FILE: packages/db/instrumentation.ts constant TRACER_NAME (line 4) | const TRACER_NAME = "@karakeep/db"; function getOperationType (line 6) | function getOperationType(sql: string): string { function instrumentDatabase (line 20) | function instrumentDatabase( FILE: packages/db/schema.ts function createdAtField (line 18) | function createdAtField() { function modifiedAtField (line 24) | function modifiedAtField() { type AssetTypes (line 273) | const enum AssetTypes { FILE: packages/e2e_tests/setup/seed.ts function setup (line 5) | async function setup({ provide }: GlobalSetupContext) { type ProvidedContext (line 24) | interface ProvidedContext { FILE: packages/e2e_tests/setup/startContainers.ts function getRandomPort (line 9) | async function getRandomPort(): Promise { function waitForHealthy (line 21) | async function waitForHealthy(port: number, timeout = 60000): Promise { function cleanupTempDirectory (line 120) | async function cleanupTempDirectory(tempDir: string): Promise { function createLocalFileSystemStore (line 128) | function createLocalFileSystemStore( function createS3Store (line 134) | function createS3Store(bucketName: string): S3AssetStore { function createTestBucket (line 148) | async function createTestBucket(bucketName: string): Promise { function cleanupTestBucket (line 174) | async function cleanupTestBucket( function createTempFile (line 212) | async function createTempFile( function streamToBuffer (line 222) | async function streamToBuffer( function generateLargeBuffer (line 235) | function generateLargeBuffer(sizeInMB: number): Buffer { function assertAssetExists (line 247) | async function assertAssetExists( function assertAssetNotExists (line 258) | async function assertAssetNotExists( function getAllAssetsArray (line 275) | async function getAllAssetsArray(store: AssetStore): Promise< FILE: packages/e2e_tests/tests/assetdb/interface-compliance.test.ts type TestContext (line 24) | interface TestContext { function createLocalContext (line 29) | async function createLocalContext(): Promise { function createS3Context (line 41) | async function createS3Context(): Promise { FILE: packages/e2e_tests/tests/workers/crawler.test.ts function getBookmark (line 18) | async function getBookmark(bookmarkId: string) { FILE: packages/e2e_tests/utils/api.ts function getAuthHeader (line 3) | function getAuthHeader(apiKey: string) { function uploadTestAsset (line 10) | async function uploadTestAsset( function createTestUser (line 37) | async function createTestUser() { FILE: packages/e2e_tests/utils/assets.ts function createTestPdfFile (line 7) | function createTestPdfFile(fileName = "test.pdf"): File { FILE: packages/e2e_tests/utils/general.ts function waitUntil (line 1) | async function waitUntil( FILE: packages/e2e_tests/utils/trpc.ts function getTrpcClient (line 6) | function getTrpcClient(apiKey?: string) { FILE: packages/open-api/index.ts function getOpenApiDocumentation (line 18) | function getOpenApiDocumentation() { function writeDocumentation (line 111) | function writeDocumentation() { function checkDocumentation (line 119) | function checkDocumentation() { FILE: packages/plugins/queue-liteque/src/index.ts class LitequeQueueWrapper (line 24) | class LitequeQueueWrapper implements Queue { method constructor (line 25) | constructor( method ensureInit (line 31) | ensureInit(): Promise { method name (line 35) | name(): string { method enqueue (line 39) | async enqueue( method stats (line 48) | async stats() { method cancelAllNonRunning (line 52) | async cancelAllNonRunning(): Promise { method _impl (line 57) | get _impl(): LQ { class LitequeQueueClient (line 62) | class LitequeQueueClient implements QueueClient { method prepare (line 69) | async prepare(): Promise { method start (line 73) | async start(): Promise { method createQueue (line 77) | createQueue(name: string, options: QueueOptions): Queue { method createRunner (line 90) | createRunner( method shutdown (line 138) | async shutdown(): Promise { class LitequeQueueProvider (line 143) | class LitequeQueueProvider implements PluginProvider { method getClient (line 146) | async getClient(): Promise { FILE: packages/plugins/queue-restate/src/admin.ts type InvocationStatus (line 14) | type InvocationStatus = z.infer; class AdminClient (line 16) | class AdminClient { method constructor (line 17) | constructor(private addr: string) {} method upsertDeployment (line 19) | async upsertDeployment(deploymentAddr: string) { method getStats (line 36) | async getStats( FILE: packages/plugins/queue-restate/src/dispatcher.ts function buildDispatcherService (line 15) | function buildDispatcherService( FILE: packages/plugins/queue-restate/src/idProvider.ts function genId (line 18) | async function genId(ctx: Context) { FILE: packages/plugins/queue-restate/src/index.ts class RestateQueueWrapper (line 21) | class RestateQueueWrapper implements Queue { method constructor (line 22) | constructor( method ensureInit (line 28) | ensureInit(): Promise { method name (line 32) | name(): string { method enqueue (line 36) | async enqueue( method stats (line 70) | async stats(): Promise<{ method cancelAllNonRunning (line 90) | async cancelAllNonRunning(): Promise { class RestateRunnerWrapper (line 95) | class RestateRunnerWrapper implements Runner { method constructor (line 96) | constructor( method run (line 106) | async run(): Promise { method stop (line 110) | async stop(): Promise { method runUntilEmpty (line 114) | async runUntilEmpty(): Promise { method dispatcherService (line 118) | get dispatcherService(): restate.ServiceDefinition { method runnerService (line 122) | get runnerService(): restate.ServiceDefinition { class RestateQueueClient (line 127) | class RestateQueueClient implements QueueClient { method constructor (line 132) | constructor() { method prepare (line 138) | async prepare(): Promise { method start (line 142) | async start(): Promise { method createQueue (line 175) | createQueue(name: string, opts: QueueOptions): Queue { method createRunner (line 184) | createRunner( method shutdown (line 203) | async shutdown(): Promise { class RestateQueueProvider (line 208) | class RestateQueueProvider implements PluginProvider { method isConfigured (line 211) | static isConfigured(): boolean { method getClient (line 215) | async getClient(): Promise { FILE: packages/plugins/queue-restate/src/runner.ts function serializeError (line 9) | function serializeError(error: Error): SerializedError { function runnerServiceName (line 17) | function runnerServiceName(queueName: string): string { function buildRunnerService (line 21) | function buildRunnerService( FILE: packages/plugins/queue-restate/src/semaphore.ts type QueueItem (line 11) | interface QueueItem { type LegacyQueueState (line 18) | interface LegacyQueueState { type QueueState (line 25) | interface QueueState { type GroupState (line 31) | interface GroupState { function selectAndPopItem (line 178) | function selectAndPopItem( function pruneExpiredLeases (line 223) | function pruneExpiredLeases(state: QueueState, now: number) { function tick (line 232) | async function tick( function getState (line 251) | async function getState( function idempotencyKeyAlreadyExists (line 265) | function idempotencyKeyAlreadyExists( function setState (line 277) | function setState(ctx: ObjectContext, state: QueueStat... class RestateSemaphore (line 283) | class RestateSemaphore { method constructor (line 284) | constructor( method acquire (line 291) | async acquire(priority: number, groupId?: string, idempotencyKey?: str... method release (line 318) | async release(leaseId: string) { FILE: packages/plugins/queue-restate/src/service.ts type RestateServicePair (line 11) | interface RestateServicePair { function buildRestateServices (line 16) | function buildRestateServices( FILE: packages/plugins/queue-restate/src/tests/queue.test.ts class Baton (line 19) | class Baton { method constructor (line 24) | constructor() { method acquire (line 33) | async acquire() { method waitUntilCountWaiting (line 38) | async waitUntilCountWaiting(count: number) { method release (line 44) | release() { type TestAction (line 49) | type TestAction = function waitUntilQueueEmpty (line 82) | async function waitUntilQueueEmpty() { FILE: packages/plugins/queue-restate/src/tests/setup/startContainers.ts function getRandomPort (line 9) | async function getRandomPort(): Promise { function waitForHealthy (line 21) | async function waitForHealthy( type ProvidedContext (line 86) | interface ProvidedContext { FILE: packages/plugins/queue-restate/src/tests/utils.ts function waitUntil (line 1) | async function waitUntil( FILE: packages/plugins/queue-restate/src/types.ts type SerializedError (line 12) | type SerializedError = z.infer; function zRunnerJobData (line 17) | function zRunnerJobData(payloadSchema: T) { type RunnerJobData (line 28) | interface RunnerJobData { type RunnerResult (line 55) | type RunnerResult = function zOnCompletedRequest (line 63) | function zOnCompletedRequest(payloadSchema: T) { function zOnErrorRequest (line 73) | function zOnErrorRequest(payloadSchema: T) { FILE: packages/plugins/ratelimit-memory/src/index.ts type RateLimitEntry (line 8) | interface RateLimitEntry { class RateLimiter (line 13) | class RateLimiter implements RateLimitClient { method constructor (line 17) | constructor(cleanupProbability = 0.01) { method cleanupExpiredEntries (line 22) | private cleanupExpiredEntries() { method checkRateLimit (line 31) | checkRateLimit(config: RateLimitConfig, key: string): RateLimitResult { method reset (line 67) | reset(config: RateLimitConfig, key: string) { method clear (line 72) | clear() { class RateLimitProvider (line 77) | class RateLimitProvider implements PluginProvider { method getClient (line 80) | async getClient(): Promise { FILE: packages/plugins/ratelimit-redis/src/index.ts constant KEY_PREFIX (line 12) | const KEY_PREFIX = "ratelimit:v1"; class RedisRateLimiter (line 16) | class RedisRateLimiter implements RateLimitClient { method constructor (line 19) | constructor(redis: RedisClientType) { method checkRateLimit (line 23) | async checkRateLimit( method reset (line 106) | async reset(config: RateLimitConfig, key: string) { method clear (line 116) | async clear() { method disconnect (line 134) | async disconnect() { type RedisRateLimiterOptions (line 141) | interface RedisRateLimiterOptions { class RedisRateLimitProvider (line 145) | class RedisRateLimitProvider implements PluginProvider { method constructor (line 152) | constructor(options: RedisRateLimiterOptions) { method createRedisClient (line 156) | private createRedisClient(): RedisClientType { method setupLifecycleHandlers (line 166) | private setupLifecycleHandlers(redis: RedisClientType): void { method initializeClient (line 182) | private async initializeClient(): Promise { method getClient (line 202) | async getClient(): Promise { FILE: packages/plugins/ratelimit-redis/src/tests/setup/startContainers.ts function getRandomPort (line 9) | async function getRandomPort(): Promise { function waitForHealthy (line 21) | async function waitForHealthy(port: number, timeout = 30000): Promise { method deleteDocument (line 68) | async deleteDocument(id: string): Promise { method scheduleFlush (line 79) | private scheduleFlush(): void { method flush (line 87) | private async flush(): Promise { method flushAddBatch (line 121) | private async flushAddBatch( method flushDeleteBatch (line 138) | private async flushDeleteBatch( method ensureTaskSuccess (line 153) | private async ensureTaskSuccess(taskUid: number): Promise { class MeiliSearchIndexClient (line 164) | class MeiliSearchIndexClient implements SearchIndexClient { method constructor (line 168) | constructor( method addDocuments (line 183) | async addDocuments( method deleteDocuments (line 202) | async deleteDocuments( method search (line 217) | async search(options: SearchOptions): Promise { method clearIndex (line 237) | async clearIndex(): Promise { method ensureTaskSuccess (line 242) | private async ensureTaskSuccess(taskUid: number): Promise { class MeiliSearchProvider (line 253) | class MeiliSearchProvider implements PluginProvider { method constructor (line 259) | constructor() { method isConfigured (line 268) | static isConfigured(): boolean { method getClient (line 272) | async getClient(): Promise { method initClient (line 287) | private async initClient(): Promise { method configureIndex (line 315) | private async configureIndex( FILE: packages/sdk/src/index.ts type KarakeepAPISchemas (line 12) | type KarakeepAPISchemas = components["schemas"]; FILE: packages/sdk/src/karakeep-api.d.ts type paths (line 6) | interface paths { type webhooks (line 2366) | type webhooks = Record; type components (line 2367) | interface components { type $defs (line 2548) | type $defs = Record; type operations (line 2549) | type operations = Record; FILE: packages/shared-react/components/BookmarkHtmlHighlighter.tsx type HighlightFormProps (line 22) | interface HighlightFormProps { type Highlight (line 130) | interface Highlight { type HTMLHighlighterProps (line 139) | interface HTMLHighlighterProps { FILE: packages/shared-react/components/ScrollProgressTracker.tsx constant IDLE_SAVE_DELAY_MS (line 18) | const IDLE_SAVE_DELAY_MS = 5000; constant PROGRESS_BAR_HIDE_DELAY_MS (line 21) | const PROGRESS_BAR_HIDE_DELAY_MS = 2000; type ScrollProgressTrackerProps (line 23) | interface ScrollProgressTrackerProps { FILE: packages/shared-react/components/highlights.ts constant HIGHLIGHT_COLOR_MAP (line 2) | const HIGHLIGHT_COLOR_MAP = { FILE: packages/shared-react/components/ui/button.tsx type ButtonProps (line 44) | interface ButtonProps FILE: packages/shared-react/components/ui/textarea.tsx type TextareaProps (line 4) | type TextareaProps = React.TextareaHTMLAttributes; FILE: packages/shared-react/hooks/assets.ts type TRPCApi (line 5) | type TRPCApi = ReturnType; function useAttachBookmarkAsset (line 7) | function useAttachBookmarkAsset( function useReplaceBookmarkAsset (line 30) | function useReplaceBookmarkAsset( function useDetachBookmarkAsset (line 53) | function useDetachBookmarkAsset( FILE: packages/shared-react/hooks/bookmark-grid-context.tsx function BookmarkGridContextProvider (line 11) | function BookmarkGridContextProvider({ function useBookmarkGridContext (line 25) | function useBookmarkGridContext() { FILE: packages/shared-react/hooks/bookmark-list-context.tsx function BookmarkListContextProvider (line 11) | function BookmarkListContextProvider({ function useBookmarkListContext (line 25) | function useBookmarkListContext() { FILE: packages/shared-react/hooks/bookmarks.ts type TRPCApi (line 9) | type TRPCApi = ReturnType; function useAutoRefreshingBookmarkQuery (line 11) | function useAutoRefreshingBookmarkQuery( function useCreateBookmark (line 28) | function useCreateBookmark( function useCreateBookmarkWithPostHook (line 50) | function useCreateBookmarkWithPostHook( function useDeleteBookmark (line 73) | function useDeleteBookmark( function useUpdateBookmark (line 98) | function useUpdateBookmark( function useSummarizeBookmark (line 123) | function useSummarizeBookmark( function useRecrawlBookmark (line 147) | function useRecrawlBookmark( function useUpdateBookmarkTags (line 167) | function useUpdateBookmarkTags( function useBookmarkPostCreationHook (line 199) | function useBookmarkPostCreationHook() { FILE: packages/shared-react/hooks/highlights.ts type TRPCApi (line 5) | type TRPCApi = ReturnType; function useCreateHighlight (line 7) | function useCreateHighlight( function useUpdateHighlight (line 28) | function useUpdateHighlight( function useDeleteHighlight (line 49) | function useDeleteHighlight( FILE: packages/shared-react/hooks/lists.ts type TRPCApi (line 11) | type TRPCApi = ReturnType; function useCreateBookmarkList (line 13) | function useCreateBookmarkList( function useEditBookmarkList (line 29) | function useEditBookmarkList( function useMergeLists (line 53) | function useMergeLists( function useAddBookmarkToList (line 73) | function useAddBookmarkToList( function useRemoveBookmarkFromList (line 97) | function useRemoveBookmarkFromList( function useDeleteBookmarkList (line 121) | function useDeleteBookmarkList( function useBookmarkLists (line 140) | function useBookmarkLists( function augmentBookmarkListsWithInitialData (line 155) | function augmentBookmarkListsWithInitialData( FILE: packages/shared-react/hooks/reader-settings.tsx type UseReaderSettingsOptions (line 22) | interface UseReaderSettingsOptions { function useReaderSettings (line 42) | function useReaderSettings(options: UseReaderSettingsOptions) { type ReaderSettingsContextValue (line 251) | type ReaderSettingsContextValue = ReturnType; type ReaderSettingsProviderProps (line 257) | interface ReaderSettingsProviderProps extends UseReaderSettingsOptions { function ReaderSettingsProvider (line 265) | function ReaderSettingsProvider({ function useReaderSettingsContext (line 282) | function useReaderSettingsContext() { FILE: packages/shared-react/hooks/reading-progress.ts type UseReadingProgressOptions (line 8) | interface UseReadingProgressOptions { function useReadingProgress (line 24) | function useReadingProgress({ bookmarkId }: UseReadingProgressOptions) { FILE: packages/shared-react/hooks/rules.ts type TRPCApi (line 5) | type TRPCApi = ReturnType; function useCreateRule (line 7) | function useCreateRule( function useUpdateRule (line 23) | function useUpdateRule( function useDeleteRule (line 39) | function useDeleteRule( FILE: packages/shared-react/hooks/search-history.ts constant BOOKMARK_SEARCH_HISTORY_KEY (line 6) | const BOOKMARK_SEARCH_HISTORY_KEY = "karakeep_search_history"; constant MAX_STORED_ITEMS (line 7) | const MAX_STORED_ITEMS = 50; class SearchHistoryUtil (line 9) | class SearchHistoryUtil { method constructor (line 10) | constructor( method getSearchHistory (line 18) | async getSearchHistory(): Promise { method addSearchTermToHistory (line 37) | async addSearchTermToHistory(term: string): Promise { method clearSearchHistory (line 57) | async clearSearchHistory(): Promise { function useSearchHistory (line 66) | function useSearchHistory(adapter: { FILE: packages/shared-react/hooks/tags.ts type TRPCApi (line 13) | type TRPCApi = ReturnType; function usePaginatedSearchTags (line 15) | function usePaginatedSearchTags( function useTagAutocomplete (line 31) | function useTagAutocomplete(opts: { function useCreateTag (line 54) | function useCreateTag( function useUpdateTag (line 71) | function useUpdateTag( function useMergeTag (line 97) | function useMergeTag( function useDeleteTag (line 122) | function useDeleteTag( function useDeleteUnusedTags (line 140) | function useDeleteUnusedTags( FILE: packages/shared-react/hooks/use-debounce.ts function useDebounce (line 3) | function useDebounce(value: T, delayMs: number): T { FILE: packages/shared-react/hooks/users.ts type TRPCApi (line 5) | type TRPCApi = ReturnType; function useUpdateUserSettings (line 7) | function useUpdateUserSettings( function useUpdateUserAvatar (line 23) | function useUpdateUserAvatar( function useDeleteAccount (line 39) | function useDeleteAccount( function useWhoAmI (line 46) | function useWhoAmI() { FILE: packages/shared-react/lib/utils.ts function cn (line 5) | function cn(...inputs: ClassValue[]) { FILE: packages/shared-react/providers/trpc-provider.tsx type Settings (line 10) | interface Settings { function makeQueryClient (line 18) | function makeQueryClient() { function getQueryClient (line 28) | function getQueryClient() { function getTRPCClient (line 42) | function getTRPCClient(settings: Settings) { function TRPCSettingsProvider (line 96) | function TRPCSettingsProvider({ FILE: packages/shared-server/src/plugins.ts function loadAllPlugins (line 4) | async function loadAllPlugins() { FILE: packages/shared-server/src/queues.ts type QueuePriority (line 14) | enum QueuePriority { function getClient (line 23) | function getClient(): Promise { function createDeferredQueue (line 37) | function createDeferredQueue(name: string, options: QueueOptions): Qu... function prepareQueue (line 70) | async function prepareQueue() { function startQueue (line 75) | async function startQueue() { type ZCrawlLinkRequest (line 87) | type ZCrawlLinkRequest = z.input; type ZOpenAIRequest (line 116) | type ZOpenAIRequest = z.infer; type ZSearchIndexingRequest (line 130) | type ZSearchIndexingRequest = z.infer< type ZTidyAssetsRequest (line 148) | type ZTidyAssetsRequest = z.infer; type ZAdminMaintenanceTask (line 160) | type ZAdminMaintenanceTask = z.infer; type ZAdminMaintenanceTaskType (line 161) | type ZAdminMaintenanceTaskType = ZAdminMaintenanceTask["type"]; type ZAdminMaintenanceTidyAssetsTask (line 162) | type ZAdminMaintenanceTidyAssetsTask = Extract< type ZAdminMaintenanceMigrateLargeLinkHtmlTask (line 166) | type ZAdminMaintenanceMigrateLargeLinkHtmlTask = Extract< function triggerSearchReindex (line 181) | async function triggerSearchReindex( type ZVideoRequest (line 201) | type ZVideoRequest = z.infer; type ZFeedRequestSchema (line 217) | type ZFeedRequestSchema = z.infer; type AssetPreprocessingRequest (line 232) | type AssetPreprocessingRequest = z.infer< type ZWebhookRequest (line 249) | type ZWebhookRequest = z.infer; function triggerWebhook (line 260) | async function triggerWebhook( type ZRuleEngineRequest (line 281) | type ZRuleEngineRequest = z.infer; function triggerRuleEngineOnEvent (line 292) | async function triggerRuleEngineOnEvent( type ZBackupRequest (line 311) | type ZBackupRequest = z.infer; FILE: packages/shared-server/src/services/quotaService.ts class StorageQuotaError (line 7) | class StorageQuotaError extends Error { method constructor (line 8) | constructor( class QuotaService (line 22) | class QuotaService { method canCreateBookmark (line 25) | static async canCreateBookmark( method checkStorageQuota (line 54) | static async checkStorageQuota( method getCurrentStorageUsage (line 85) | static async getCurrentStorageUsage( FILE: packages/shared-server/src/tracing.ts function initTracing (line 38) | function initTracing(serviceSuffix?: string): void { function shutdownTracing (line 98) | async function shutdownTracing(): Promise { function getTracer (line 109) | function getTracer(name: string): Tracer { function getActiveSpan (line 116) | function getActiveSpan(): Span | undefined { function getActiveContext (line 123) | function getActiveContext(): Context { function withSpan (line 131) | async function withSpan( function withSpanSync (line 170) | function withSpanSync( function addSpanEvent (line 207) | function addSpanEvent( function setSpanAttributes (line 220) | function setSpanAttributes(attributes: TracingAttributes): void { function recordSpanError (line 230) | function recordSpanError(error: Error): void { function extractTraceContext (line 244) | function extractTraceContext( function injectTraceContext (line 259) | function injectTraceContext( function runWithContext (line 269) | function runWithContext(ctx: Context, fn: () => T): T { FILE: packages/shared-server/src/tracingTypes.ts type TracingAttributeKey (line 1) | type TracingAttributeKey = type TracingAttributes (line 50) | type TracingAttributes = Partial< FILE: packages/shared/assetdb.ts constant ROOT_PATH (line 21) | const ROOT_PATH = serverConfig.assetsDir; type ASSET_TYPES (line 23) | const enum ASSET_TYPES { constant VIDEO_ASSET_TYPES (line 37) | const VIDEO_ASSET_TYPES: Set = new Set([ constant IMAGE_ASSET_TYPES (line 43) | const IMAGE_ASSET_TYPES: Set = new Set([ constant SUPPORTED_UPLOAD_ASSET_TYPES (line 51) | const SUPPORTED_UPLOAD_ASSET_TYPES: Set = new Set([ constant SUPPORTED_BOOKMARK_ASSET_TYPES (line 59) | const SUPPORTED_BOOKMARK_ASSET_TYPES: Set = new Set([ constant SUPPORTED_ASSET_TYPES (line 65) | const SUPPORTED_ASSET_TYPES: Set = new Set([ type AssetMetadata (line 77) | type AssetMetadata = z.infer; type AssetInfo (line 79) | interface AssetInfo { type AssetStore (line 87) | interface AssetStore { function newAssetId (line 128) | function newAssetId() { class LocalFileSystemAssetStore (line 132) | class LocalFileSystemAssetStore implements AssetStore { method constructor (line 135) | constructor(rootPath: string) { method getAssetDir (line 139) | private getAssetDir(userId: string, assetId: string) { method isPathExists (line 143) | private async isPathExists(filePath: string) { method saveAsset (line 150) | async saveAsset({ method saveAssetFromFile (line 179) | async saveAssetFromFile({ method readAsset (line 206) | async readAsset({ userId, assetId }: { userId: string; assetId: string... method createAssetReadStream (line 220) | async createAssetReadStream({ method readAssetMetadata (line 243) | async readAssetMetadata({ method getAssetSize (line 262) | async getAssetSize({ userId, assetId }: { userId: string; assetId: str... method deleteAsset (line 268) | async deleteAsset({ userId, assetId }: { userId: string; assetId: stri... method deleteUserAssets (line 276) | async deleteUserAssets({ userId }: { userId: string }) { method getAllAssets (line 285) | async *getAllAssets() { class S3AssetStore (line 308) | class S3AssetStore implements AssetStore { method constructor (line 312) | constructor(s3Client: S3Client, bucketName: string) { method getAssetKey (line 317) | private getAssetKey(userId: string, assetId: string) { method metadataToS3Metadata (line 321) | private metadataToS3Metadata( method s3MetadataToMetadata (line 332) | private s3MetadataToMetadata( method saveAsset (line 345) | async saveAsset({ method saveAssetFromFile (line 371) | async saveAssetFromFile({ method readAsset (line 399) | async readAsset({ userId, assetId }: { userId: string; assetId: string... method createAssetReadStream (line 417) | async createAssetReadStream({ method readAssetMetadata (line 446) | async readAssetMetadata({ method getAssetSize (line 463) | async getAssetSize({ userId, assetId }: { userId: string; assetId: str... method deleteAsset (line 474) | async deleteAsset({ userId, assetId }: { userId: string; assetId: stri... method deleteUserAssets (line 483) | async deleteUserAssets({ userId }: { userId: string }) { method getAllAssets (line 512) | async *getAllAssets() { method streamToBuffer (line 560) | private async streamToBuffer(stream: Readable): Promise { function createDefaultAssetStore (line 569) | function createDefaultAssetStore(): AssetStore { function saveAsset (line 629) | async function saveAsset({ function saveAssetFromFile (line 653) | async function saveAssetFromFile({ function readAsset (line 682) | async function readAsset({ function createAssetReadStream (line 692) | async function createAssetReadStream({ function readAssetMetadata (line 711) | async function readAssetMetadata({ function getAssetSize (line 721) | async function getAssetSize({ function silentDeleteAsset (line 736) | async function silentDeleteAsset( function deleteAsset (line 745) | async function deleteAsset({ function deleteUserAssets (line 755) | async function deleteUserAssets({ userId }: { userId: string }) { FILE: packages/shared/concurrency.ts class AsyncSemaphore (line 1) | class AsyncSemaphore { method constructor (line 5) | constructor(permits: number) { method acquire (line 9) | acquire(): Promise { method release (line 20) | release(): void { method available (line 31) | get available(): number { function limitConcurrency (line 36) | function limitConcurrency( FILE: packages/shared/config.ts type ClientConfig (line 505) | type ClientConfig = typeof clientConfig; FILE: packages/shared/customFetch.ts type FetchFunction (line 4) | type FetchFunction = ( function createCustomFetch (line 10) | function createCustomFetch(fetchImpl: FetchFunction = globalThis.fetch) { FILE: packages/shared/debug.ts function tap (line 1) | function tap(t: T, cb: (t: T) => void): T { function debugPrint (line 6) | function debugPrint(t: T): T { FILE: packages/shared/import-export/exporters.ts function toExportFormat (line 42) | function toExportFormat( function toExportListFormat (line 79) | function toExportListFormat( function toNetscapeFormat (line 93) | function toNetscapeFormat(bookmarks: ZBookmark[]): string { function escapeHtml (line 129) | function escapeHtml(input: string): string { FILE: packages/shared/import-export/importer.ts type ImportCounts (line 4) | interface ImportCounts { type StagedBookmark (line 11) | interface StagedBookmark { type ImportDeps (line 22) | interface ImportDeps { type ImportOptions (line 42) | interface ImportOptions { type ImportResult (line 49) | interface ImportResult { function importBookmarksFromFile (line 55) | async function importBookmarksFromFile( FILE: packages/shared/import-export/parsers.ts type ImportSource (line 11) | type ImportSource = type ParsedBookmark (line 22) | interface ParsedBookmark { type ParsedImportList (line 36) | interface ParsedImportList { type ParsedImportFile (line 46) | interface ParsedImportFile { function parseNetscapeBookmarkFile (line 51) | function parseNetscapeBookmarkFile(textContent: string): ParsedBookmark[] { function parsePocketBookmarkFile (line 111) | function parsePocketBookmarkFile(textContent: string): ParsedBookmark[] { function parseMatterBookmarkFile (line 135) | function parseMatterBookmarkFile(textContent: string): ParsedBookmark[] { function parseKarakeepBookmarkFile (line 181) | function parseKarakeepBookmarkFile(textContent: string): ParsedImportFile { function parseOmnivoreBookmarkFile (line 238) | function parseOmnivoreBookmarkFile(textContent: string): ParsedBookmark[] { function parseLinkwardenBookmarkFile (line 268) | function parseLinkwardenBookmarkFile(textContent: string): ParsedBookmar... function parseTabSessionManagerStateFile (line 324) | function parseTabSessionManagerStateFile( function parseMymindBookmarkFile (line 363) | function parseMymindBookmarkFile(textContent: string): ParsedBookmark[] { function parseInstapaperBookmarkFile (line 424) | function parseInstapaperBookmarkFile(textContent: string): ParsedBookmar... function deduplicateBookmarks (line 482) | function deduplicateBookmarks(bookmarks: ParsedBookmark[]): ParsedBookma... function parseImportFile (line 531) | function parseImportFile( FILE: packages/shared/inference.ts type InferenceResponse (line 12) | interface InferenceResponse { type EmbeddingResponse (line 17) | interface EmbeddingResponse { type InferenceOptions (line 21) | interface InferenceOptions { type InferenceClient (line 31) | interface InferenceClient { type OpenAIInferenceConfig (line 55) | interface OpenAIInferenceConfig { class InferenceClientFactory (line 68) | class InferenceClientFactory { method build (line 69) | static build(): InferenceClient | null { class OpenAIInferenceClient (line 81) | class OpenAIInferenceClient implements InferenceClient { method constructor (line 85) | constructor(config: OpenAIInferenceConfig) { method fromConfig (line 105) | static fromConfig(): OpenAIInferenceClient { method inferFromText (line 120) | async inferFromText( method inferFromImage (line 161) | async inferFromImage( method generateEmbeddingFromText (line 218) | async generateEmbeddingFromText( type OllamaInferenceConfig (line 233) | interface OllamaInferenceConfig { class OllamaInferenceClient (line 243) | class OllamaInferenceClient implements InferenceClient { method constructor (line 247) | constructor(config: OllamaInferenceConfig) { method fromConfig (line 255) | static fromConfig(): OllamaInferenceClient { method runModel (line 267) | async runModel( method inferFromText (line 339) | async inferFromText( method inferFromImage (line 355) | async inferFromImage( method generateEmbeddingFromText (line 373) | async generateEmbeddingFromText( FILE: packages/shared/logger.ts function throttledLogger (line 17) | function throttledLogger(periodMs: number) { FILE: packages/shared/plugins.ts type PluginType (line 8) | enum PluginType { type PluginTypeMap (line 14) | interface PluginTypeMap { type TPlugin (line 20) | interface TPlugin { type PluginProvider (line 26) | interface PluginProvider { type ProviderMap (line 31) | type ProviderMap = { [K in PluginType]: TPlugin[] }; class PluginManager (line 33) | class PluginManager { method register (line 40) | static register(plugin: TPlugin): void { method getClient (line 44) | static async getClient( method isRegistered (line 54) | static isRegistered(type: T): boolean { method getPluginName (line 58) | static getPluginName(type: T): string | null { method logAllPlugins (line 66) | static logAllPlugins() { FILE: packages/shared/prompts.server.ts function getEncodingInstance (line 12) | async function getEncodingInstance(): Promise { function calculateNumTokens (line 21) | async function calculateNumTokens(text: string): Promise { function truncateContent (line 26) | async function truncateContent( function preprocessContent (line 42) | function preprocessContent(content: string) { function buildTextPrompt (line 46) | async function buildTextPrompt( function buildSummaryPrompt (line 75) | async function buildSummaryPrompt( FILE: packages/shared/prompts.ts function preprocessContent (line 7) | function preprocessContent(content: string) { function buildImagePrompt (line 11) | function buildImagePrompt( function constructTextTaggingPrompt (line 37) | function constructTextTaggingPrompt( function constructSummaryPrompt (line 71) | function constructSummaryPrompt( function buildTextPromptUntruncated (line 87) | function buildTextPromptUntruncated( function buildSummaryPromptUntruncated (line 106) | function buildSummaryPromptUntruncated( function buildOCRPrompt (line 121) | function buildOCRPrompt(): string { FILE: packages/shared/queueing.ts class QueueRetryAfterError (line 10) | class QueueRetryAfterError extends Error { method constructor (line 11) | constructor( type EnqueueOptions (line 20) | interface EnqueueOptions { type QueueOptions (line 27) | interface QueueOptions { type DequeuedJob (line 34) | interface DequeuedJob { type DequeuedJobError (line 42) | interface DequeuedJobError { type RunnerFuncs (line 51) | interface RunnerFuncs { type RunnerOptions (line 57) | interface RunnerOptions { type Queue (line 64) | interface Queue { type Runner (line 78) | interface Runner<_T> { type QueueClient (line 84) | interface QueueClient { function getQueueClient (line 96) | async function getQueueClient(): Promise { FILE: packages/shared/ratelimiting.ts type RateLimitConfig (line 3) | interface RateLimitConfig { type RateLimitResult (line 9) | type RateLimitResult = type RateLimitClient (line 13) | interface RateLimitClient { function getRateLimitClient (line 38) | async function getRateLimitClient(): Promise { FILE: packages/shared/search.ts type BookmarkSearchDocument (line 25) | type BookmarkSearchDocument = z.infer; type SortOrder (line 27) | type SortOrder = "asc" | "desc"; type SortableAttributes (line 28) | type SortableAttributes = "createdAt"; type FilterableAttributes (line 30) | type FilterableAttributes = "userId" | "id"; type FilterQuery (line 31) | type FilterQuery = type SearchResult (line 43) | interface SearchResult { type SearchOptions (line 48) | interface SearchOptions { type SearchResponse (line 57) | interface SearchResponse { type IndexingOptions (line 63) | interface IndexingOptions { type SearchIndexClient (line 71) | interface SearchIndexClient { function getSearchClient (line 81) | async function getSearchClient(): Promise { FILE: packages/shared/searchQueryParser.ts type TokenType (line 23) | enum TokenType { class LexerToken (line 62) | class LexerToken implements Token { method constructor (line 63) | private constructor( method from (line 70) | public static from(input: string): Token | undefined { method next (line 86) | public get next(): Token | undefined { type TextAndMatcher (line 113) | interface TextAndMatcher { constant MATCHER (line 118) | const MATCHER = rule(); constant EXP (line 119) | const EXP = rule(); function flattenAndsAndOrs (line 369) | function flattenAndsAndOrs(matcher: Matcher): Matcher { function _parseAndPrintTokens (line 394) | function _parseAndPrintTokens(query: string) { function consumeTokenStream (line 404) | function consumeTokenStream(token: Token) { function parseSearchQuery (line 414) | function parseSearchQuery( FILE: packages/shared/signedTokens.test.ts constant SECRET (line 11) | const SECRET = "secret"; FILE: packages/shared/signedTokens.ts function getAlignedExpiry (line 24) | function getAlignedExpiry( type SignedTokenPayload (line 48) | type SignedTokenPayload = z.infer; function createSignedToken (line 50) | function createSignedToken( function verifySignedToken (line 76) | function verifySignedToken( FILE: packages/shared/storageQuota.ts class QuotaApproved (line 6) | class QuotaApproved { method constructor (line 7) | private constructor( method _create (line 16) | static _create(userId: string, approvedSize: number): QuotaApproved { FILE: packages/shared/trpc.ts constant TRPC_MAX_URL_LENGTH_INTERNAL (line 24) | const TRPC_MAX_URL_LENGTH_INTERNAL = 14000; constant TRPC_MAX_URL_LENGTH_EXTERNAL (line 25) | const TRPC_MAX_URL_LENGTH_EXTERNAL = 4000; FILE: packages/shared/tryCatch.ts type Success (line 2) | interface Success { type Failure (line 7) | interface Failure { type Result (line 12) | type Result = Success | Failure; function tryCatch (line 15) | async function tryCatch( FILE: packages/shared/types/backups.ts type ZBackup (line 14) | type ZBackup = z.infer; FILE: packages/shared/types/bookmarks.ts constant MAX_BOOKMARK_TITLE_LENGTH (line 6) | const MAX_BOOKMARK_TITLE_LENGTH = 1000; type BookmarkTypes (line 8) | const enum BookmarkTypes { type ZSortOrder (line 16) | type ZSortOrder = z.infer; type ZAssetType (line 32) | type ZAssetType = z.infer; type ZBookmarkedLink (line 62) | type ZBookmarkedLink = z.infer; type ZBookmarkedText (line 69) | type ZBookmarkedText = z.infer; type ZBookmarkedAsset (line 80) | type ZBookmarkedAsset = z.infer; type ZBookmarkContent (line 88) | type ZBookmarkContent = z.infer; type ZBookmarkSource (line 100) | type ZBookmarkSource = z.infer; type ZBareBookmark (line 117) | type ZBareBookmark = z.infer; type ZBookmark (line 126) | type ZBookmark = z.infer; type ZBookmarkTypeLink (line 135) | type ZBookmarkTypeLink = z.infer; type ZBookmarkTypeText (line 144) | type ZBookmarkTypeText = z.infer; type ZBookmarkTypeAsset (line 153) | type ZBookmarkTypeAsset = z.infer; type ZNewBookmarkRequest (line 192) | type ZNewBookmarkRequest = z.infer; constant DEFAULT_NUM_BOOKMARKS_PER_PAGE (line 196) | const DEFAULT_NUM_BOOKMARKS_PER_PAGE = 20; constant MAX_NUM_BOOKMARKS_PER_PAGE (line 197) | const MAX_NUM_BOOKMARKS_PER_PAGE = 100; type ZGetBookmarksRequest (line 215) | type ZGetBookmarksRequest = z.infer; type ZGetBookmarksResponse (line 221) | type ZGetBookmarksResponse = z.infer; type ZUpdateBookmarksRequest (line 246) | type ZUpdateBookmarksRequest = z.infer< type ZPublicBookmark (line 306) | type ZPublicBookmark = z.infer; FILE: packages/shared/types/feeds.ts constant MAX_FEED_URL_LENGTH (line 3) | const MAX_FEED_URL_LENGTH = 2000; constant MAX_FEED_NAME_LENGTH (line 4) | const MAX_FEED_NAME_LENGTH = 100; type ZFeed (line 18) | type ZFeed = z.infer; FILE: packages/shared/types/highlights.ts constant DEFAULT_NUM_HIGHLIGHTS_PER_PAGE (line 5) | const DEFAULT_NUM_HIGHLIGHTS_PER_PAGE = 20; type ZHighlightColor (line 8) | type ZHighlightColor = z.infer; constant SUPPORTED_HIGHLIGHT_COLORS (line 9) | const SUPPORTED_HIGHLIGHT_COLORS = zHighlightColorSchema.options; type ZHighlight (line 28) | type ZHighlight = z.infer; type ZGetAllHighlightsResponse (line 42) | type ZGetAllHighlightsResponse = z.infer< FILE: packages/shared/types/importSessions.ts type ZImportSessionStatus (line 11) | type ZImportSessionStatus = z.infer; type ZImportSessionBookmarkStatus (line 19) | type ZImportSessionBookmarkStatus = z.infer< type ZImportSession (line 33) | type ZImportSession = z.infer; type ZImportSessionWithStats (line 42) | type ZImportSessionWithStats = z.infer< type ZCreateImportSessionRequest (line 50) | type ZCreateImportSessionRequest = z.infer< type ZGetImportSessionStatsRequest (line 57) | type ZGetImportSessionStatsRequest = z.infer< type ZListImportSessionsRequest (line 62) | type ZListImportSessionsRequest = z.infer< type ZListImportSessionsResponse (line 69) | type ZListImportSessionsResponse = z.infer< type ZDeleteImportSessionRequest (line 76) | type ZDeleteImportSessionRequest = z.infer< FILE: packages/shared/types/lists.ts constant MAX_LIST_NAME_LENGTH (line 5) | const MAX_LIST_NAME_LENGTH = 100; constant MAX_LIST_DESCRIPTION_LENGTH (line 6) | const MAX_LIST_DESCRIPTION_LENGTH = 500; type ZBookmarkList (line 64) | type ZBookmarkList = z.infer; type ZMergeList (line 119) | type ZMergeList = z.infer; FILE: packages/shared/types/pagination.ts type ZCursor (line 8) | type ZCursor = z.infer; FILE: packages/shared/types/prompts.ts constant MAX_PROMPT_TEXT_LENGTH (line 3) | const MAX_PROMPT_TEXT_LENGTH = 500; type ZPrompt (line 19) | type ZPrompt = z.infer; FILE: packages/shared/types/readers.ts constant READER_DEFAULTS (line 5) | const READER_DEFAULTS = { constant READER_FONT_FAMILIES (line 11) | const READER_FONT_FAMILIES: Record = { constant READER_SETTING_CONSTRAINTS (line 18) | const READER_SETTING_CONSTRAINTS = { function formatFontSize (line 24) | function formatFontSize(value: number): string { function formatLineHeight (line 28) | function formatLineHeight(value: number): string { function formatFontFamily (line 32) | function formatFontFamily( type ReaderSettings (line 56) | type ReaderSettings = z.infer; type ReaderSettingsPartial (line 59) | type ReaderSettingsPartial = z.infer; FILE: packages/shared/types/rules.ts type RuleEngineEvent (line 47) | type RuleEngineEvent = z.infer; type NonRecursiveCondition (line 116) | type NonRecursiveCondition = z.infer; type RuleEngineCondition (line 117) | type RuleEngineCondition = type RuleEngineAction (line 189) | type RuleEngineAction = z.infer; type RuleEngineRule (line 200) | type RuleEngineRule = z.infer; FILE: packages/shared/types/search.ts type NonRecursiveMatcher (line 115) | type NonRecursiveMatcher = z.infer; type Matcher (line 116) | type Matcher = FILE: packages/shared/types/tags.ts constant MAX_NUM_TAGS_PER_PAGE (line 5) | const MAX_NUM_TAGS_PER_PAGE = 1000; type ZAttachedByEnum (line 17) | type ZAttachedByEnum = z.infer; type ZBookmarkTags (line 23) | type ZBookmarkTags = z.infer; type ZGetTagResponse (line 31) | type ZGetTagResponse = z.infer; type ZTagBasic (line 42) | type ZTagBasic = z.infer; type ZTagListResponse (line 70) | type ZTagListResponse = z.infer; FILE: packages/shared/types/uploads.ts type ZUploadError (line 7) | type ZUploadError = z.infer; type ZUploadResponse (line 16) | type ZUploadResponse = z.infer; FILE: packages/shared/types/users.ts constant PASSWORD_MIN_LENGTH (line 5) | const PASSWORD_MIN_LENGTH = 8; constant PASSWORD_MAX_LENGTH (line 6) | const PASSWORD_MAX_LENGTH = 100; type ZTagStyle (line 17) | type ZTagStyle = z.infer; type ZReaderFontFamily (line 185) | type ZReaderFontFamily = z.infer; type ZUserSettings (line 209) | type ZUserSettings = z.infer; FILE: packages/shared/types/webhooks.ts constant MAX_WEBHOOK_URL_LENGTH (line 3) | const MAX_WEBHOOK_URL_LENGTH = 500; constant MAX_WEBHOOK_TOKEN_LENGTH (line 4) | const MAX_WEBHOOK_TOKEN_LENGTH = 100; type ZWebhookEvent (line 13) | type ZWebhookEvent = z.infer; type ZWebhook (line 23) | type ZWebhook = z.infer; FILE: packages/shared/utils/assetUtils.ts function getAssetUrl (line 1) | function getAssetUrl(assetId: string) { FILE: packages/shared/utils/bookmarkUtils.ts function getBookmarkLinkAssetIdOrUrl (line 4) | function getBookmarkLinkAssetIdOrUrl(bookmark: ZBookmarkedLink) { function getBookmarkLinkImageUrl (line 16) | function getBookmarkLinkImageUrl(bookmark: ZBookmarkedLink) { function isBookmarkStillCrawling (line 30) | function isBookmarkStillCrawling(bookmark: ZBookmark) { function isBookmarkStillTagging (line 40) | function isBookmarkStillTagging(bookmark: ZBookmark) { function isBookmarkStillSummarizing (line 44) | function isBookmarkStillSummarizing(bookmark: ZBookmark) { function isBookmarkStillLoading (line 48) | function isBookmarkStillLoading(bookmark: ZBookmark) { function getBookmarkRefreshInterval (line 56) | function getBookmarkRefreshInterval( function getSourceUrl (line 85) | function getSourceUrl(bookmark: ZBookmark) { function getBookmarkTitle (line 98) | function getBookmarkTitle(bookmark: ZBookmark) { FILE: packages/shared/utils/htmlUtils.ts function htmlToPlainText (line 10) | function htmlToPlainText(htmlContent: string): string { FILE: packages/shared/utils/listUtils.ts type ZBookmarkListTreeNode (line 3) | interface ZBookmarkListTreeNode { type ZBookmarkListRoot (line 8) | type ZBookmarkListRoot = Record; function listsToTree (line 10) | function listsToTree(lists: ZBookmarkList[]) { FILE: packages/shared/utils/reading-progress-dom.ts type ReadingPosition (line 12) | interface ReadingPosition { constant PARAGRAPH_SELECTORS (line 18) | const PARAGRAPH_SELECTORS = [ constant PARAGRAPH_SELECTOR_STRING (line 30) | const PARAGRAPH_SELECTOR_STRING = PARAGRAPH_SELECTORS.join(", "); constant ANCHOR_TEXT_MAX_LENGTH (line 36) | const ANCHOR_TEXT_MAX_LENGTH = 50; constant SCROLL_BOTTOM_THRESHOLD (line 39) | const SCROLL_BOTTOM_THRESHOLD = 5; constant SCROLL_THROTTLE_MS (line 42) | const SCROLL_THROTTLE_MS = 150; type ScrollInfo (line 47) | interface ScrollInfo { function normalizeText (line 57) | function normalizeText(text: string): string { function normalizeTextLength (line 67) | function normalizeTextLength(text: string): number { function isElementVisible (line 77) | function isElementVisible(element: HTMLElement | null): boolean { function findScrollableParent (line 88) | function findScrollableParent(element: HTMLElement): HTMLElement { function getReadingPosition (line 121) | function getReadingPosition( function getReadingPositionWithViewport (line 151) | function getReadingPositionWithViewport( function scrollToReadingPosition (line 241) | function scrollToReadingPosition( FILE: packages/shared/utils/redirectUrl.ts function validateRedirectUrl (line 9) | function validateRedirectUrl( function isMobileAppRedirect (line 33) | function isMobileAppRedirect(url: string): boolean { FILE: packages/shared/utils/relativeDateUtils.ts type RelativeDate (line 1) | interface RelativeDate { FILE: packages/shared/utils/switch.ts function switchCase (line 1) | function switchCase( FILE: packages/shared/utils/tag.ts function normalizeTagName (line 6) | function normalizeTagName(raw: string): string { type TagStyle (line 10) | type TagStyle = ZTagStyle; function getTagStylePrompt (line 12) | function getTagStylePrompt(style: TagStyle): string { function getCuratedTagsPrompt (line 32) | function getCuratedTagsPrompt(curatedTags?: string[]): string { FILE: packages/trpc/auth.ts constant BCRYPT_SALT_ROUNDS (line 10) | const BCRYPT_SALT_ROUNDS = 10; constant API_KEY_PREFIX_V1 (line 11) | const API_KEY_PREFIX_V1 = "ak1"; constant API_KEY_PREFIX_V2 (line 12) | const API_KEY_PREFIX_V2 = "ak2"; function generateApiKeySecret (line 14) | function generateApiKeySecret() { function generatePasswordSalt (line 23) | function generatePasswordSalt() { function regenerateApiKey (line 27) | async function regenerateApiKey( function generateApiKey (line 50) | async function generateApiKey( function parseApiKey (line 79) | function parseApiKey(plain: string) { function authenticateApiKey (line 96) | async function authenticateApiKey(key: string, database: Context["db"]) { function hashPassword (line 144) | async function hashPassword(password: string, salt: string | null) { function validatePassword (line 148) | async function validatePassword( FILE: packages/trpc/email.ts function buildTransporter (line 8) | function buildTransporter() { type Transporter (line 26) | type Transporter = ReturnType; type Fn (line 28) | type Fn = ( type TracingOptions (line 33) | interface TracingOptions { function withTracing (line 37) | function withTracing( FILE: packages/trpc/index.ts type User (line 16) | interface User { type Context (line 23) | interface Context { type AuthedContext (line 31) | interface AuthedContext { method errorFormatter (line 45) | errorFormatter(opts) { FILE: packages/trpc/lib/attachments.ts function mapDBAssetTypeToUserType (line 9) | function mapDBAssetTypeToUserType(assetType: AssetTypes): ZAssetType { function mapSchemaAssetTypeToDB (line 28) | function mapSchemaAssetTypeToDB( function humanFriendlyNameForAssertType (line 48) | function humanFriendlyNameForAssertType(type: ZAssetType) { function isAllowedToAttachAsset (line 66) | function isAllowedToAttachAsset(type: ZAssetType) { function isAllowedToDetachAsset (line 84) | function isAllowedToDetachAsset(type: ZAssetType) { FILE: packages/trpc/lib/impersonate.ts function buildImpersonatingAuthedContext (line 8) | async function buildImpersonatingAuthedContext( FILE: packages/trpc/lib/rateLimit.ts function createRateLimitMiddleware (line 12) | function createRateLimitMiddleware(config: RateLimitConfig) { FILE: packages/trpc/lib/ruleEngine.ts function fetchBookmark (line 18) | async function fetchBookmark(db: AuthedContext["db"], bookmarkId: string) { type ReturnedBookmark (line 50) | type ReturnedBookmark = NonNullable { method onEvent (line 259) | async onEvent(event: RuleEngineEvent): Promise { method list (line 52) | static async list( method attachAsset (line 84) | static async attachAsset( method replaceAsset (line 123) | static async replaceAsset( method detachAsset (line 167) | static async detachAsset( method ensureBookmarkOwnership (line 204) | private static async ensureBookmarkOwnership( method ensureOwnership (line 212) | ensureOwnership() { method ensureOwnership (line 221) | static async ensureOwnership(ctx: AuthedContext, assetId: string) { method canUserView (line 225) | async canUserView(): Promise { method ensureCanView (line 253) | async ensureCanView() { method getUrl (line 262) | getUrl() { method getPublicSignedAssetUrl (line 266) | static getPublicSignedAssetUrl( FILE: packages/trpc/models/backups.ts class Backup (line 12) | class Backup { method constructor (line 13) | private constructor( method fromId (line 18) | static async fromId(ctx: AuthedContext, backupId: string): Promise { method create (line 52) | static async create(ctx: AuthedContext): Promise { method triggerBackgroundJob (line 65) | async triggerBackgroundJob({ method update (line 84) | async update( method delete (line 107) | async delete(): Promise { method findOldBackups (line 144) | static async findOldBackups( method asPublic (line 161) | asPublic(): z.infer { method id (line 165) | get id() { method assetId (line 169) | get assetId() { FILE: packages/trpc/models/bookmarks.ts function dummyDrizzleReturnType (line 56) | async function dummyDrizzleReturnType() { type BookmarkQueryReturnType (line 76) | type BookmarkQueryReturnType = Awaited< class BareBookmark (line 80) | class BareBookmark { method constructor (line 81) | protected constructor( method id (line 86) | get id() { method createdAt (line 90) | get createdAt() { method bareFromId (line 94) | static async bareFromId(ctx: AuthedContext, bookmarkId: string) { method isAllowedToAccessBookmark (line 116) | protected static async isAllowedToAccessBookmark( method ensureOwnership (line 127) | ensureOwnership() { class Bookmark (line 137) | class Bookmark extends BareBookmark { method constructor (line 138) | protected constructor( method toZodSchema (line 145) | private static async toZodSchema( method fromId (line 227) | static async fromId( method fromData (line 266) | static fromData(ctx: AuthedContext, data: ZBookmark) { method buildDebugInfo (line 270) | static async buildDebugInfo(ctx: AuthedContext, bookmarkId: string) { method loadMulti (line 394) | static async loadMulti( method asZBookmark (line 747) | asZBookmark(): ZBookmark { method asPublicBookmark (line 762) | asPublicBookmark(): ZPublicBookmark { method getBookmarkHtmlContent (line 856) | static async getBookmarkHtmlContent( method getBookmarkPlainTextContent (line 879) | static async getBookmarkPlainTextContent( method cleanupAssets (line 902) | private async cleanupAssets() { method delete (line 917) | async delete() { FILE: packages/trpc/models/feeds.ts class Feed (line 15) | class Feed { method constructor (line 16) | constructor( method fromId (line 21) | static async fromId(ctx: AuthedContext, id: string): Promise { method create (line 44) | static async create( method getAll (line 76) | static async getAll(ctx: AuthedContext): Promise { method delete (line 84) | async delete(): Promise { method update (line 99) | async update(input: z.infer): Promise { method asPublicFeed (line 123) | asPublicFeed(): z.infer { FILE: packages/trpc/models/highlights.ts class Highlight (line 16) | class Highlight { method constructor (line 17) | constructor( method fromId (line 22) | static async fromId(ctx: AuthedContext, id: string): Promise { method create (line 45) | static async create( method getForBookmark (line 65) | static async getForBookmark( method getAll (line 77) | static async getAll( method search (line 117) | static async search( method delete (line 163) | async delete(): Promise> { method update (line 181) | async update(input: z.infer): Promise { FILE: packages/trpc/models/importSessions.ts class ImportSession (line 14) | class ImportSession { method constructor (line 15) | protected constructor( method fromId (line 20) | static async fromId( method create (line 41) | static async create( method getAll (line 57) | static async getAll(ctx: AuthedContext): Promise { method getAllWithStats (line 67) | static async getAllWithStats( method getWithStats (line 79) | async getWithStats(): Promise { method delete (line 124) | async delete(): Promise { method stageBookmarks (line 143) | async stageBookmarks( method finalize (line 189) | async finalize(): Promise { method pause (line 203) | async pause(): Promise { method resume (line 217) | async resume(): Promise { FILE: packages/trpc/models/listInvitations.ts type Role (line 8) | type Role = "viewer" | "editor"; type InvitationStatus (line 9) | type InvitationStatus = "pending" | "declined"; type InvitationData (line 11) | interface InvitationData { class ListInvitation (line 23) | class ListInvitation { method constructor (line 24) | protected constructor( method id (line 29) | get id() { method fromId (line 39) | static async fromId( method ensureIsInvitedUser (line 88) | ensureIsInvitedUser() { method ensureIsListOwner (line 100) | ensureIsListOwner() { method accept (line 112) | async accept(): Promise { method decline (line 142) | async decline(): Promise { method revoke (line 163) | async revoke(): Promise { method inviteByEmail (line 174) | static async inviteByEmail( method pendingForUser (line 295) | static async pendingForUser(ctx: AuthedContext) { method invitationsForList (line 344) | static async invitationsForList( method sendInvitationEmail (line 380) | static async sendInvitationEmail(params: { FILE: packages/trpc/models/lists.ts type ListCollaboratorEntry (line 31) | interface ListCollaboratorEntry { method constructor (line 36) | protected constructor( method id (line 41) | get id() { method asZBookmarkList (line 45) | asZBookmarkList() { method fromData (line 70) | private static fromData( method fromId (line 82) | static async fromId( method getPublicList (line 158) | private static async getPublicList( method getPublicListMetadata (line 188) | static async getPublicListMetadata( method getPublicListContents (line 203) | static async getPublicListContents( method create (line 252) | static async create( method getAll (line 279) | static async getAll(ctx: AuthedContext) { method getAllOwned (line 287) | static async getAllOwned( method forBookmark (line 317) | static async forBookmark(ctx: AuthedContext, bookmarkId: string) { method canUserView (line 394) | canUserView(): boolean { method canUserEdit (line 406) | canUserEdit(): boolean { method canUserManage (line 419) | canUserManage(): boolean { method ensureCanView (line 431) | ensureCanView(): void { method ensureCanEdit (line 443) | ensureCanEdit(): void { method ensureCanManage (line 455) | ensureCanManage(): void { method delete (line 464) | async delete() { method getChildren (line 479) | async getChildren(): Promise<(ManualList | SmartList)[]> { method update (line 515) | async update( method setRssToken (line 556) | private async setRssToken(token: string | null) { method getRssToken (line 573) | async getRssToken(): Promise { method regenRssToken (line 588) | async regenRssToken() { method clearRssToken (line 593) | async clearRssToken() { method addCollaboratorByEmail (line 603) | async addCollaboratorByEmail( method removeCollaborator (line 626) | async removeCollaborator(userId: string): Promise { method leaveList (line 651) | async leaveList(): Promise { method updateCollaboratorRole (line 680) | async updateCollaboratorRole( method getCollaborators (line 708) | async getCollaborators() { method getSharedWithUser (line 782) | static async getSharedWithUser( class SmartList (line 822) | class SmartList extends List { method constructor (line 827) | constructor(ctx: AuthedContext, list: ZBookmarkList & { userId: string... method type (line 831) | get type(): "smart" { method query (line 836) | get query() { method getParsedQuery (line 841) | getParsedQuery() { method getBookmarkIds (line 852) | async getBookmarkIds(visitedListIds = new Set()): Promise { method addBookmark (line 879) | addBookmark(_bookmarkId: string): Promise { method removeBookmark (line 886) | removeBookmark(_bookmarkId: string): Promise { method mergeInto (line 893) | mergeInto( class ManualList (line 904) | class ManualList extends List { method constructor (line 905) | constructor( method type (line 913) | get type(): "manual" { method getBookmarkIds (line 918) | async getBookmarkIds(_visitedListIds?: Set): Promise { method getSize (line 926) | async getSize(): Promise { method addBookmark (line 934) | async addBookmark(bookmarkId: string): Promise { method removeBookmark (line 963) | async removeBookmark(bookmarkId: string): Promise { method update (line 989) | async update(input: z.infer { method getAll (line 215) | static async getAll(ctx: AuthedContext): Promise { FILE: packages/trpc/models/tags.ts class Tag (line 30) | class Tag { method constructor (line 31) | constructor( method fromId (line 36) | static async fromId(ctx: AuthedContext, id: string): Promise { method create (line 59) | static async create( method getAll (line 84) | static async getAll( method deleteUnused (line 184) | static async deleteUnused(ctx: AuthedContext): Promise { method merge (line 201) | static async merge( method delete (line 303) | async delete(): Promise { method update (line 333) | async update(input: z.infer): Promise<... method _aggregateStats (line 386) | static _aggregateStats( method getStats (line 407) | async getStats(): Promise> { method asBasicTag (line 436) | asBasicTag(): z.infer { FILE: packages/trpc/models/users.ts class User (line 37) | class User { method constructor (line 38) | constructor( method fromId_DANGEROUS (line 43) | static async fromId_DANGEROUS(ctx: AuthedContext, id: string): Promise... method fromCtx (line 58) | static async fromCtx(ctx: AuthedContext): Promise { method create (line 62) | static async create( method createRaw (line 93) | static async createRaw( method getAll (line 146) | static async getAll(ctx: AuthedContext): Promise { method genEmailVerificationToken (line 152) | static async genEmailVerificationToken( method verifyEmailToken (line 168) | static async verifyEmailToken( method verifyEmail (line 206) | static async verifyEmail( method resendVerificationEmail (line 232) | static async resendVerificationEmail( method forgotPassword (line 274) | static async forgotPassword(ctx: Context, email: string): Promise { method resetPassword (line 310) | static async resetPassword( method deleteInternal (line 365) | private static async deleteInternal(db: Context["db"], userId: string) { method deleteAsAdmin (line 375) | static async deleteAsAdmin( method deleteAccount (line 383) | async deleteAccount(password?: string): Promise { method changePassword (line 407) | async changePassword( method getSettings (line 434) | async getSettings(): Promise> { method updateSettings (line 480) | async updateSettings( method updateAvatar (line 511) | async updateAvatar(assetId: string | null): Promise { method getStats (line 609) | async getStats(): Promise> { method hasWrapped (line 883) | async hasWrapped(): Promise { method getWrappedStats (line 904) | async getWrappedStats( method asWhoAmI (line 1195) | asWhoAmI(): z.infer { method asPublicUser (line 1205) | asPublicUser() { FILE: packages/trpc/models/webhooks.ts class Webhook (line 15) | class Webhook { method constructor (line 16) | constructor( method fromId (line 21) | static async fromId(ctx: AuthedContext, id: string): Promise { method create (line 44) | static async create( method getAll (line 75) | static async getAll(ctx: AuthedContext): Promise { method delete (line 83) | async delete(): Promise { method update (line 98) | async update(input: z.infer): Promise { FILE: packages/trpc/routers/_app.ts type AppRouter (line 42) | type AppRouter = typeof appRouter; FILE: packages/trpc/routers/bookmarks.test.ts function createTestTag (line 39) | async function createTestTag(api: APICallerType, tagName: string) { function createTestFeed (line 44) | async function createTestFeed( FILE: packages/trpc/routers/bookmarks.ts function attemptToDedupLink (line 96) | async function attemptToDedupLink(ctx: AuthedContext, url: string) { function shouldUseLowPriorityQueues (line 119) | async function shouldUseLowPriorityQueues( function normalizeUrl (line 800) | function normalizeUrl(url: string): string { FILE: packages/trpc/routers/importSessions.test.ts function createTestList (line 24) | async function createTestList(api: APICallerType) { FILE: packages/trpc/routers/lists.test.ts function createTestBookmark (line 13) | async function createTestBookmark(api: APICallerType) { FILE: packages/trpc/routers/sharedLists.test.ts function addAndAcceptCollaborator (line 13) | async function addAndAcceptCollaborator( FILE: packages/trpc/routers/subscriptions.ts function requireStripeConfig (line 20) | function requireStripeConfig() { function syncStripeDataToDatabase (line 53) | async function syncStripeDataToDatabase(customerId: string, db: Context[... function processEvent (line 166) | async function processEvent(event: Stripe.Event, db: Context["db"]) { FILE: packages/trpc/stats.ts method collect (line 25) | async collect() { method collect (line 67) | async collect() { method collect (line 82) | async collect() { method collect (line 99) | async collect() { FILE: packages/trpc/testUtils.ts function getTestDB (line 9) | function getTestDB() { type TestDB (line 13) | type TestDB = ReturnType; function seedUsers (line 15) | async function seedUsers(db: TestDB) { function getApiCaller (line 35) | function getApiCaller( type APICallerType (line 57) | type APICallerType = ReturnType; type CustomTestContext (line 59) | interface CustomTestContext { function buildTestContext (line 65) | async function buildTestContext( function defaultBeforeEach (line 82) | function defaultBeforeEach(seedDB = true) { FILE: tools/compare-models/src/apiClient.ts class KarakeepAPIClient (line 6) | class KarakeepAPIClient { method constructor (line 9) | constructor() { method fetchBookmarks (line 19) | async fetchBookmarks(limit: number): Promise { FILE: tools/compare-models/src/bookmarkProcessor.ts function extractBookmarkContent (line 7) | async function extractBookmarkContent( function runTaggingForModel (line 39) | async function runTaggingForModel( FILE: tools/compare-models/src/index.ts type VoteCounters (line 18) | interface VoteCounters { type ShuffleResult (line 26) | interface ShuffleResult { function main (line 32) | async function main() { FILE: tools/compare-models/src/inferenceClient.ts function createInferenceClient (line 10) | function createInferenceClient(modelName: string): InferenceClient { function inferTags (line 26) | async function inferTags( FILE: tools/compare-models/src/interactive.ts function askQuestion (line 11) | async function askQuestion(question: string): Promise { function displayComparison (line 19) | function displayComparison( function displayError (line 69) | function displayError(message: string): void { function displayProgress (line 73) | function displayProgress(message: string): void { function clearProgress (line 77) | function clearProgress(): void { function close (line 81) | function close(): void { function displayFinalResults (line 85) | function displayFinalResults(results: { FILE: tools/compare-models/src/types.ts type Bookmark (line 1) | interface Bookmark { type ModelConfig (line 15) | interface ModelConfig { type ComparisonResult (line 21) | interface ComparisonResult { type FinalResults (line 30) | interface FinalResults {