SYMBOL INDEX (23025 symbols across 3622 files) FILE: fluxer_admin/src/Config.tsx type Config (line 51) | type Config = typeof Config; FILE: fluxer_admin/src/Logger.tsx type Logger (line 23) | type Logger = FluxerLogger; FILE: fluxer_api/scripts/CassandraMigrate.tsx constant MIGRATION_TABLE (line 27) | const MIGRATION_TABLE = 'schema_migrations'; constant MIGRATION_KEYSPACE (line 28) | const MIGRATION_KEYSPACE = process.env['CASSANDRA_KEYSPACE'] ?? 'fluxer'; constant MIGRATIONS_DIR (line 29) | const MIGRATIONS_DIR = '../fluxer_devops/cassandra/migrations'; type ForbiddenPattern (line 31) | interface ForbiddenPattern { constant FORBIDDEN_PATTERNS (line 36) | const FORBIDDEN_PATTERNS: Array = [ function getMigrationsDir (line 52) | function getMigrationsDir(): string { function getMigrationPath (line 56) | function getMigrationPath(filename: string): string { function sanitizeName (line 60) | function sanitizeName(name: string): string { function removeComments (line 72) | function removeComments(content: string): string { function parseStatements (line 84) | function parseStatements(content: string): Array { function calculateChecksum (line 114) | function calculateChecksum(content: string): string { function validateMigrationContent (line 118) | function validateMigrationContent(filename: string, content: string): Ar... function getMigrationFiles (line 135) | function getMigrationFiles(): Array { function hasSkipCi (line 152) | function hasSkipCi(filename: string): boolean { function sleep (line 166) | async function sleep(ms: number): Promise { function createSession (line 170) | async function createSession( function getAppliedMigrations (line 210) | async function getAppliedMigrations(session: cassandra.Client): Promise<... function applyMigration (line 224) | async function applyMigration(session: cassandra.Client, filename: strin... function autoAcknowledgeMigration (line 250) | async function autoAcknowledgeMigration(session: cassandra.Client, filen... function createMigration (line 260) | function createMigration(name: string): void { function checkMigrations (line 280) | function checkMigrations(): void { function runMigrations (line 316) | async function runMigrations(host: string, port: number, username: strin... function showStatus (line 380) | async function showStatus(host: string, port: number, username: string, ... function acknowledgeMigration (line 406) | async function acknowledgeMigration( function testConnection (line 435) | async function testConnection(host: string, port: number, username: stri... function debugConnection (line 454) | async function debugConnection(host: string, port: number, username: str... function printUsage (line 517) | function printUsage(): void { function main (line 544) | async function main(): Promise { FILE: fluxer_api/scripts/LicenseEnforcer.tsx constant TS_LICENSE_HEADER (line 23) | const TS_LICENSE_HEADER = `/* constant ERLANG_LICENSE_HEADER (line 42) | const ERLANG_LICENSE_HEADER = `%% Copyright (C) {year} Fluxer Contributors constant SHELL_LICENSE_HEADER (line 59) | const SHELL_LICENSE_HEADER = `# Copyright (C) {year} Fluxer Contributors constant BLOCK_COMMENT_EXTS (line 76) | const BLOCK_COMMENT_EXTS = new Set([ constant HASH_LINE_EXTS (line 106) | const HASH_LINE_EXTS = new Set(['sh', 'bash', 'zsh', 'py', 'rb', 'ps1', ... type HeaderStyle (line 108) | type HeaderStyle = {kind: 'block'} | {kind: 'line'; prefix: string}; type FileTemplate (line 110) | interface FileTemplate { class Processor (line 115) | class Processor { method constructor (line 120) | constructor() { method loadGitignore (line 125) | private loadGitignore(): void { method shouldIgnore (line 139) | private shouldIgnore(filePath: string): boolean { method matchPattern (line 153) | private matchPattern(pattern: string, filePath: string): boolean { method getTemplate (line 179) | private getTemplate(filePath: string): FileTemplate | null { method templateForExtension (line 184) | private templateForExtension(ext: string): FileTemplate | null { method detectLicense (line 202) | private detectLicense(content: string): {hasHeader: boolean; detectedY... method updateYear (line 232) | private updateYear(content: string, oldYear: number): string { method stripLicenseHeader (line 236) | private stripLicenseHeader(content: string, style: HeaderStyle): {stri... method addHeader (line 318) | private addHeader(content: string, template: FileTemplate): string { method processFile (line 330) | private processFile(filePath: string): void { method walkDir (line 366) | private walkDir(dir: string): void { method walk (line 397) | walk(): void { method getUpdatedCount (line 401) | getUpdatedCount(): number { function main (line 406) | function main(): void { FILE: fluxer_api/src/App.tsx function main (line 30) | async function main(): Promise { FILE: fluxer_api/src/Config.tsx type ExtendedAPIConfig (line 29) | interface ExtendedAPIConfig extends APIConfig { type Config (line 42) | type Config = typeof Config; FILE: fluxer_api/src/Logger.tsx type Logger (line 23) | type Logger = FluxerLogger; FILE: fluxer_app/crates/libfluxcore/src/animation.rs constant PNG_SIGNATURE (line 24) | const PNG_SIGNATURE: [u8; 8] = [137, 80, 78, 71, 13, 10, 26, 10]; type ImageFormat (line 26) | enum ImageFormat { function detect_format (line 34) | fn detect_format(input: &[u8]) -> ImageFormat { function is_animated_gif (line 53) | fn is_animated_gif(input: &[u8]) -> bool { function has_apng_actl (line 78) | fn has_apng_actl(input: &[u8]) -> bool { function has_webp_anim (line 100) | fn has_webp_anim(input: &[u8]) -> bool { function is_avif_file (line 122) | fn is_avif_file(input: &[u8]) -> bool { function has_avif_anim (line 137) | fn has_avif_anim(input: &[u8]) -> bool { function is_animated_image (line 151) | pub fn is_animated_image(input: &[u8]) -> bool { FILE: fluxer_app/crates/libfluxcore/src/apng.rs function crop_and_rotate_apng (line 26) | pub fn crop_and_rotate_apng( function process_apng (line 49) | fn process_apng( function draw_frame_on_canvas_source (line 237) | fn draw_frame_on_canvas_source( function draw_frame_on_canvas_over (line 260) | fn draw_frame_on_canvas_over( function clear_rect (line 294) | fn clear_rect(canvas: &mut [u8], canvas_width: u32, x: u32, y: u32, w: u... function crop_rgba (line 316) | fn crop_rgba( function rotate_rgba_90 (line 341) | fn rotate_rgba_90(src: &[u8], src_w: usize, src_h: usize) -> (Vec, u... function rotate_rgba_180 (line 359) | fn rotate_rgba_180(src: &[u8], src_w: usize, src_h: usize) -> (Vec, ... function rotate_rgba_270 (line 373) | fn rotate_rgba_270(src: &[u8], src_w: usize, src_h: usize) -> (Vec, ... function resize_rgba_nearest (line 391) | fn resize_rgba_nearest( FILE: fluxer_app/crates/libfluxcore/src/gateway.rs function decompress_zstd_frame (line 25) | pub fn decompress_zstd_frame(input: &[u8]) -> Result, JsValue> { FILE: fluxer_app/crates/libfluxcore/src/gif.rs type EncodeError (line 26) | enum EncodeError { method from (line 32) | fn from(value: JsValue) -> Self { function crop_and_rotate_gif (line 39) | pub fn crop_and_rotate_gif( type EncoderMode (line 82) | enum EncoderMode { function process_gif (line 88) | fn process_gif( function draw_frame_on_canvas (line 236) | fn draw_frame_on_canvas( function clear_rect (line 272) | fn clear_rect(canvas: &mut [u8], canvas_width: u32, x: u16, y: u16, w: u... function crop_rgba (line 292) | fn crop_rgba( function rotate_rgba_90 (line 317) | fn rotate_rgba_90(src: &[u8], src_w: usize, src_h: usize) -> (Vec, u... function rotate_rgba_180 (line 335) | fn rotate_rgba_180(src: &[u8], src_w: usize, src_h: usize) -> (Vec, ... function rotate_rgba_270 (line 349) | fn rotate_rgba_270(src: &[u8], src_w: usize, src_h: usize) -> (Vec, ... function resize_rgba_nearest (line 367) | fn resize_rgba_nearest( function create_decoder (line 389) | fn create_decoder(input: &[u8]) -> Result>, E... type FrameEncoder (line 398) | enum FrameEncoder { method new (line 404) | fn new(mode: EncoderMode, width: u16, height: u16) -> Result, delay: u16) -> Result<(), Enc... method finish (line 420) | fn finish(self) -> Result, EncodeError> { type PaletteFrameEncoder (line 428) | struct PaletteFrameEncoder { method new (line 435) | fn new(width: u16, height: u16) -> Result { method write_frame (line 449) | fn write_frame(&mut self, rgba: Vec, delay: u16) -> Result<(), Enc... method finish (line 468) | fn finish(self) -> Result, EncodeError> { type PaletteFrameData (line 474) | struct PaletteFrameData { method from_rgba (line 481) | fn from_rgba(rgba: &[u8]) -> Result { type QuantizedFrameEncoder (line 531) | struct QuantizedFrameEncoder { method new (line 538) | fn new(width: u16, height: u16) -> Result { method write_frame (line 552) | fn write_frame(&mut self, mut rgba: Vec, delay: u16) -> Result<(),... method finish (line 558) | fn finish(self) -> Result, EncodeError> { function map_encoding_error (line 564) | fn map_encoding_error(err: gif::EncodingError) -> EncodeError { function map_io_error (line 568) | fn map_io_error(err: std::io::Error) -> EncodeError { FILE: fluxer_app/crates/libfluxcore/src/static_image.rs function normalize_rotation (line 25) | fn normalize_rotation(rotation_deg: u32) -> u32 { function map_format_hint (line 29) | fn map_format_hint(hint: &str) -> Result { function crop_and_rotate_image (line 42) | pub fn crop_and_rotate_image( FILE: fluxer_app/rspack.config.mjs constant ROOT_DIR (line 31) | const ROOT_DIR = path.resolve(__dirname, '.'); constant MONOREPO_ROOT (line 32) | const MONOREPO_ROOT = path.resolve(__dirname, '..'); constant SRC_DIR (line 33) | const SRC_DIR = path.join(ROOT_DIR, 'src'); constant DIST_DIR (line 34) | const DIST_DIR = path.join(ROOT_DIR, 'dist'); constant PKGS_DIR (line 35) | const PKGS_DIR = path.join(ROOT_DIR, 'pkgs'); constant PUBLIC_DIR (line 36) | const PUBLIC_DIR = path.join(ROOT_DIR, 'assets'); constant CDN_ENDPOINT (line 38) | const CDN_ENDPOINT = 'https://fluxerstatic.com'; function resolveMode (line 40) | function resolveMode() { function isPlainObject (line 57) | function isPlainObject(value) { function readConfig (line 61) | function readConfig() { function getValue (line 75) | function getValue(source, path, fallback) { function asString (line 86) | function asString(value, fallback = undefined) { function normalizeOverride (line 99) | function normalizeOverride(value) { function buildUrl (line 104) | function buildUrl(scheme, domain, port, path = '') { function deriveDomain (line 114) | function deriveDomain(endpointType, config) { function deriveEndpointsFromDomain (line 127) | function deriveEndpointsFromDomain(domainConfig, overrides) { function stripApiSuffix (line 166) | function stripApiSuffix(url) { function resolveAppPublic (line 173) | function resolveAppPublic(config) { function resolveReleaseChannel (line 190) | function resolveReleaseChannel() { function resolveBuildMetadata (line 198) | function resolveBuildMetadata() { function getPublicEnvVar (line 221) | function getPublicEnvVar(values, name) { FILE: fluxer_app/scripts/DevServer.tsx constant DEFAULT_SKIP_DIRS (line 33) | const DEFAULT_SKIP_DIRS = new Set(['.git', 'node_modules', '.turbo', 'di... type StepMetadata (line 36) | interface StepMetadata { type Metadata (line 41) | interface Metadata { type StepKey (line 45) | type StepKey = 'wasm' | 'colors' | 'masks' | 'cssTypes' | 'lingui'; function loadMetadata (line 47) | async function loadMetadata(): Promise { function saveMetadata (line 66) | async function saveMetadata(): Promise { function haveInputsChanged (line 75) | function haveInputsChanged(prev: Record, next: Record... function collectFileStats (line 104) | async function collectFileStats(paths: ReadonlyArray): Promise> { function gatherColorInputs (line 185) | async function gatherColorInputs(): Promise> { function gatherMaskInputs (line 189) | async function gatherMaskInputs(): Promise> { function gatherCssModuleInputs (line 193) | async function gatherCssModuleInputs(): Promise> { function gatherLinguiInputs (line 197) | async function gatherLinguiInputs(): Promise> { function handleShutdown (line 207) | function handleShutdown(signal: NodeJS.Signals): void { function runCommand (line 221) | function runCommand(command: string, args: ReadonlyArray): Promi... function cleanDist (line 263) | async function cleanDist(): Promise { function startCssTypeWatcher (line 272) | function startCssTypeWatcher(): void { function runRspack (line 299) | function runRspack(): Promise { function main (line 336) | async function main(): Promise { FILE: fluxer_app/scripts/GenerateAvatarMasks.tsx type AvatarSize (line 28) | type AvatarSize = 16 | 20 | 24 | 32 | 36 | 40 | 44 | 48 | 56 | 80 | 120; type StatusConfig (line 30) | interface StatusConfig { constant STATUS_CONFIG (line 36) | const STATUS_CONFIG: Record = { constant DESIGN_RULES (line 50) | const DESIGN_RULES = { constant MOBILE_SCREEN_WIDTH_TRIM_PX (line 77) | const MOBILE_SCREEN_WIDTH_TRIM_PX = 4; constant MOBILE_SCREEN_HEIGHT_TRIM_PX (line 78) | const MOBILE_SCREEN_HEIGHT_TRIM_PX = 2; constant MOBILE_SCREEN_X_OFFSET_PX (line 79) | const MOBILE_SCREEN_X_OFFSET_PX = 0; constant MOBILE_SCREEN_Y_OFFSET_PX (line 80) | const MOBILE_SCREEN_Y_OFFSET_PX = 3; function getStatusConfig (line 82) | function getStatusConfig(avatarSize: number): StatusConfig { type StatusGeometry (line 95) | interface StatusGeometry { type MobileStatusGeometry (line 104) | interface MobileStatusGeometry extends StatusGeometry { function calculateStatusGeometry (line 113) | function calculateStatusGeometry(avatarSize: number, isMobile: boolean =... function generateAvatarMaskDefault (line 156) | function generateAvatarMaskDefault(size: number): string { function generateAvatarMaskStatusRound (line 161) | function generateAvatarMaskStatusRound(size: number): string { function generateAvatarMaskStatusTyping (line 173) | function generateAvatarMaskStatusTyping(size: number): string { function generateMobilePhoneMask (line 195) | function generateMobilePhoneMask(mobileStatus: MobileStatusGeometry): st... function generateStatusOnline (line 226) | function generateStatusOnline(size: number, isMobile: boolean = false): ... function generateStatusIdle (line 236) | function generateStatusIdle(size: number, isMobile: boolean = false): st... function generateStatusDnd (line 256) | function generateStatusDnd(size: number, isMobile: boolean = false): str... function generateStatusOffline (line 278) | function generateStatusOffline(size: number): string { function generateStatusTyping (line 290) | function generateStatusTyping(size: number): string { constant SIZES (line 303) | const SIZES: Array = [16, 20, 24, 32, 36, 40, 44, 48, 56, 80... FILE: fluxer_app/scripts/GenerateColorSystem.tsx type ColorFamily (line 23) | interface ColorFamily { type ScaleStop (line 29) | interface ScaleStop { type Scale (line 34) | interface Scale { type TokenDef (line 41) | interface TokenDef { type Config (line 53) | interface Config { constant CONFIG (line 63) | const CONFIG: Config = { type OutputToken (line 475) | interface OutputToken { function clamp01 (line 487) | function clamp01(value: number): number { function applyCurve (line 491) | function applyCurve(curve: Scale['curve'], t: number): number { function buildScaleTokens (line 507) | function buildScaleTokens(scale: Scale): Array { function expandTokens (line 536) | function expandTokens(defs: Array, scales: Record, famil... function generateCSS (line 641) | function generateCSS( function main (line 661) | function main() { FILE: fluxer_app/scripts/GenerateEmojiSprites.tsx constant EMOJI_SPRITES (line 25) | const EMOJI_SPRITES = { constant EMOJI_SIZE (line 32) | const EMOJI_SIZE = 32; constant TWEMOJI_CDN (line 33) | const TWEMOJI_CDN = 'https://fluxerstatic.com/emoji'; constant SPRITE_SCALES (line 34) | const SPRITE_SCALES = [1, 2] as const; type EmojiObject (line 36) | interface EmojiObject { type EmojiEntry (line 41) | interface EmojiEntry { function fetchTwemojiSVG (line 47) | async function fetchTwemojiSVG(codepoint: string): Promise { function fixSVGSize (line 73) | function fixSVGSize(svg: string, size: number): string { function renderSVGToBuffer (line 77) | async function renderSVGToBuffer(svgContent: string, size: number): Prom... function hslToRgb (line 82) | function hslToRgb(h: number, s: number, l: number): [number, number, num... function createPlaceholder (line 115) | async function createPlaceholder(size: number): Promise { function loadEmojiImage (line 130) | async function loadEmojiImage(surrogate: string, size: number): Promise<... function renderSpriteSheet (line 158) | async function renderSpriteSheet( function generateMainSpriteSheet (line 212) | async function generateMainSpriteSheet( function generateDiversitySpriteSheets (line 225) | async function generateDiversitySpriteSheets( function generatePickerSpriteSheet (line 252) | async function generatePickerSpriteSheet(outputDir: string): Promise { FILE: fluxer_app/scripts/auto-i18n.mjs constant FLUXER_AUTO_I18N (line 26) | const FLUXER_AUTO_I18N = process.env.FLUXER_AUTO_I18N ?? envOverrides.FL... constant OPENROUTER_API_KEY (line 27) | const OPENROUTER_API_KEY = process.env.OPENROUTER_API_KEY ?? envOverride... function loadEnvFromFiles (line 40) | function loadEnvFromFiles(keys) { function parseExportLine (line 65) | function parseExportLine(line) { function stripQuotes (line 79) | function stripQuotes(value) { FILE: fluxer_app/scripts/build/Config.tsx constant ROOT_DIR (line 22) | const ROOT_DIR = path.resolve(import.meta.dirname, '..', '..'); constant SRC_DIR (line 23) | const SRC_DIR = path.join(ROOT_DIR, 'src'); constant DIST_DIR (line 24) | const DIST_DIR = path.join(ROOT_DIR, 'dist'); constant ASSETS_DIR (line 25) | const ASSETS_DIR = path.join(DIST_DIR, 'assets'); constant PKGS_DIR (line 26) | const PKGS_DIR = path.join(ROOT_DIR, 'pkgs'); constant PUBLIC_DIR (line 27) | const PUBLIC_DIR = path.join(ROOT_DIR, 'assets'); constant CDN_ENDPOINT (line 29) | const CDN_ENDPOINT = 'https://fluxerstatic.com'; constant DEV_PORT (line 31) | const DEV_PORT = 3000; constant RESOLVE_EXTENSIONS (line 33) | const RESOLVE_EXTENSIONS = ['.tsx', '.ts', '.jsx', '.js', '.json', '.mjs... constant LOCALES (line 35) | const LOCALES = [ constant FILE_LOADERS (line 72) | const FILE_LOADERS: Record = { FILE: fluxer_app/scripts/build/rspack/externals.mjs constant EXTERNAL_MODULES (line 20) | const EXTERNAL_MODULES = [ constant EXTERNAL_PATTERNS (line 53) | const EXTERNAL_PATTERNS = [/^node:.*/]; class ExternalsPlugin (line 55) | class ExternalsPlugin { method apply (line 56) | apply(compiler) { function externalsPlugin (line 63) | function externalsPlugin() { FILE: fluxer_app/scripts/build/rspack/lingui.mjs function getLinguiSwcPluginConfig (line 26) | function getLinguiSwcPluginConfig() { function createPoFileRule (line 40) | function createPoFileRule() { FILE: fluxer_app/scripts/build/rspack/po-loader.mjs function poLoader (line 22) | function poLoader(source) { function parsePoFile (line 54) | function parsePoFile(content) { function splitEntries (line 67) | function splitEntries(content) { function parseEntry (line 75) | function parseEntry(entry) { function extractPoString (line 159) | function extractPoString(str) { FILE: fluxer_app/scripts/build/rspack/static-files.mjs function normalizeEndpoint (line 22) | function normalizeEndpoint(staticCdnEndpoint) { function generateManifest (line 27) | function generateManifest(staticCdnEndpointRaw) { function generateBrowserConfig (line 77) | function generateBrowserConfig(staticCdnEndpointRaw) { function generateRobotsTxt (line 91) | function generateRobotsTxt() { class StaticFilesPlugin (line 95) | class StaticFilesPlugin { method constructor (line 96) | constructor(options) { method apply (line 100) | apply(compiler) { function staticFilesPlugin (line 120) | function staticFilesPlugin(options) { FILE: fluxer_app/scripts/build/rspack/wasm.mjs function wasmLoader (line 27) | function wasmLoader(_source) { function wasmModuleRule (line 52) | function wasmModuleRule() { FILE: fluxer_app/scripts/build/types.d.ts type ProcessOptions (line 21) | interface ProcessOptions { type Result (line 30) | interface Result { type Plugin (line 39) | interface Plugin { type Processor (line 54) | interface Processor { type PostcssModulesOptions (line 64) | interface PostcssModulesOptions { FILE: fluxer_app/scripts/build/utils/Assets.tsx function copyPublicAssets (line 24) | async function copyPublicAssets(): Promise { function copyWasmFiles (line 42) | async function copyWasmFiles(): Promise { function removeUnusedCssAssets (line 51) | async function removeUnusedCssAssets(assetsDir: string, keepFiles: Array... FILE: fluxer_app/scripts/build/utils/CssDts.tsx constant RESERVED_KEYWORDS (line 26) | const RESERVED_KEYWORDS = new Set([ function isValidIdentifier (line 72) | function isValidIdentifier(name: string): boolean { function generateDtsContent (line 79) | function generateDtsContent(classNames: Record): string { function findCssModuleFiles (line 88) | async function findCssModuleFiles(dir: string): Promise> { function generateDtsForFile (line 111) | async function generateDtsForFile(cssPath: string): Promise { function generateCssDtsForFile (line 130) | async function generateCssDtsForFile(cssPath: string): Promise { function generateAllCssDts (line 137) | async function generateAllCssDts(): Promise { FILE: fluxer_app/scripts/build/utils/Html.tsx type BuildOutput (line 24) | interface BuildOutput { type GenerateHtmlOptions (line 32) | interface GenerateHtmlOptions { function findCssModulesFile (line 37) | async function findCssModulesFile(): Promise { function generateHtml (line 62) | async function generateHtml(options: GenerateHtmlOptions): Promise { FILE: fluxer_app/scripts/build/utils/Sourcemaps.tsx function fileExists (line 23) | async function fileExists(filePath: string): Promise { function traverseDir (line 32) | async function traverseDir(dir: string, callback: (filePath: string) => ... function cleanEmptySourceMaps (line 46) | async function cleanEmptySourceMaps(dir: string): Promise { FILE: fluxer_app/scripts/translate-i18n.mjs constant OPENROUTER_API_KEY (line 23) | const OPENROUTER_API_KEY = process.env.OPENROUTER_API_KEY; constant LOCALES_DIR (line 29) | const LOCALES_DIR = new URL('../src/locales', import.meta.url).pathname; constant SOURCE_LOCALE (line 30) | const SOURCE_LOCALE = 'en-US'; constant BATCH_SIZE (line 31) | const BATCH_SIZE = 20; constant CONCURRENT_LOCALES (line 32) | const CONCURRENT_LOCALES = 10; constant CONCURRENT_BATCHES_PER_LOCALE (line 33) | const CONCURRENT_BATCHES_PER_LOCALE = 3; constant LOCALE_NAMES (line 35) | const LOCALE_NAMES = { function parsePo (line 71) | function parsePo(content) { function rebuildPo (line 124) | function rebuildPo(content, translations) { function rebuildPoBlock (line 132) | function rebuildPoBlock(block, translationMap) { function getFieldRange (line 161) | function getFieldRange(lines, field) { function readFieldRawValue (line 173) | function readFieldRawValue(lines, range) { function escapePo (line 183) | function escapePo(str) { function unescapePo (line 187) | function unescapePo(str) { function translateBatch (line 191) | async function translateBatch(strings, targetLocale) { function pMap (line 251) | async function pMap(items, mapper, concurrency) { function processLocale (line 271) | async function processLocale(locale) { function main (line 340) | async function main() { FILE: fluxer_app/src/App.tsx type AppWrapperProps (line 70) | interface AppWrapperProps { FILE: fluxer_app/src/AppConstants.tsx function getOAuth2ScopeDescription (line 34) | function getOAuth2ScopeDescription(i18n: I18n, scope: OAuth2Scope): stri... function getStatusTypeLabel (line 46) | function getStatusTypeLabel(i18n: I18n, statusType: StatusType | string)... function getStatusTypeDescription (line 59) | function getStatusTypeDescription(i18n: I18n, statusType: StatusType | s... FILE: fluxer_app/src/I18n.tsx type LocaleCode (line 96) | type LocaleCode = (typeof supportedLocales)[number]; constant DEFAULT_LOCALE (line 97) | const DEFAULT_LOCALE: LocaleCode = 'en-US'; constant LANGUAGE_OVERRIDES (line 102) | const LANGUAGE_OVERRIDES: Record = { type LocaleLoader (line 106) | type LocaleLoader = () => {messages: Messages}; function formatLocaleValue (line 145) | function formatLocaleValue(value: string): string { function normalizeLocale (line 169) | function normalizeLocale(value?: string | null): LocaleCode { function detectBrowserLocale (line 201) | function detectBrowserLocale(): string | null { function detectPreferredLocale (line 209) | function detectPreferredLocale(forceLocale?: string): LocaleCode { function loadLocaleCatalog (line 232) | function loadLocaleCatalog(localeCode: string): LocaleCode { function initI18n (line 242) | async function initI18n(forceLocale?: string) { FILE: fluxer_app/src/actions/AccessibilityActionCreators.tsx function update (line 22) | function update(settings: Partial): void { FILE: fluxer_app/src/actions/AuthSessionActionCreators.tsx function fetch (line 28) | async function fetch(): Promise { function logout (line 44) | async function logout(sessionIdHashes: Array): Promise { FILE: fluxer_app/src/actions/AuthenticationActionCreators.tsx type VerificationResult (line 48) | type VerificationResult = ValueOf; type RegisterData (line 50) | interface RegisterData { type StandardLoginResponse (line 62) | interface StandardLoginResponse { type MfaLoginResponse (line 69) | interface MfaLoginResponse { type LoginResponse (line 79) | type LoginResponse = StandardLoginResponse | MfaLoginResponse; type IpAuthorizationRequiredResponse (line 81) | interface IpAuthorizationRequiredResponse { function isIpAuthorizationRequiredResponse (line 88) | function isIpAuthorizationRequiredResponse( type TokenResponse (line 94) | interface TokenResponse { type ResetPasswordResponse (line 101) | type ResetPasswordResponse = TokenResponse | MfaLoginResponse; type DesktopHandoffInitiateResponse (line 103) | interface DesktopHandoffInitiateResponse { type DesktopHandoffStatusResponse (line 108) | interface DesktopHandoffStatusResponse { function login (line 114) | async function login({ function loginMfaTotp (line 168) | async function loginMfaTotp(code: string, ticket: string, inviteCode?: s... function loginMfaSmsSend (line 192) | async function loginMfaSmsSend(ticket: string): Promise { function loginMfaSms (line 206) | async function loginMfaSms(code: string, ticket: string, inviteCode?: st... function loginMfaWebAuthn (line 230) | async function loginMfaWebAuthn( function getWebAuthnMfaOptions (line 260) | async function getWebAuthnMfaOptions(ticket: string): Promise { type UsernameSuggestionsResponse (line 341) | interface UsernameSuggestionsResponse { function getUsernameSuggestions (line 345) | async function getUsernameSuggestions(globalName: string): Promise { function resendVerificationEmail (line 435) | async function resendVerificationEmail(): Promise { function logout (line 454) | async function logout(): Promise { function authorizeIp (line 458) | async function authorizeIp(token: string): Promise { function resendIpAuthorization (line 478) | async function resendIpAuthorization(ticket: string): Promise { type IpAuthorizationPollResult (line 486) | interface IpAuthorizationPollResult { function pollIpAuthorization (line 492) | async function pollIpAuthorization(ticket: string): Promise { function completeLogin (line 584) | async function completeLogin({ function startSso (line 602) | async function startSso(redirectTo?: string): Promise<{authorization_url... function completeSso (line 611) | async function completeSso({code, state}: {code: string; state: string})... type SetMfaTicketPayload (line 620) | interface SetMfaTicketPayload { function setMfaTicket (line 627) | function setMfaTicket({ticket, sms, totp, webauthn}: SetMfaTicketPayload... function clearMfaTicket (line 632) | function clearMfaTicket(): void { FILE: fluxer_app/src/actions/CallActionCreators.tsx type PendingRing (line 34) | interface PendingRing { function checkCallEligibility (line 44) | async function checkCallEligibility(channelId: string): Promise<{ringabl... function ringCallRecipients (line 49) | async function ringCallRecipients(channelId: string, recipients?: Array<... function stopRingingCallRecipients (line 63) | async function stopRingingCallRecipients(channelId: string, recipients?:... function ringParticipants (line 67) | async function ringParticipants(channelId: string, recipients?: Array):... function startCall (line 104) | function startCall(channelId: string, silent = false): void { function joinCall (line 126) | function joinCall(channelId: string): void { function leaveCall (line 136) | async function leaveCall(channelId: string): Promise { function rejectCall (line 167) | function rejectCall(channelId: string): void { function ignoreCall (line 184) | function ignoreCall(channelId: string): void { function fetchCallRegions (line 196) | async function fetchCallRegions(channelId: string): Promise> { function pin (line 128) | async function pin(channelId: string, messageId: string): Promise { function unpin (line 139) | async function unpin(channelId: string, messageId: string): Promise { FILE: fluxer_app/src/actions/ChannelStickerActionCreators.tsx function setPendingSticker (line 23) | function setPendingSticker(channelId: string, sticker: GuildStickerRecor... function removePendingSticker (line 27) | function removePendingSticker(channelId: string): void { FILE: fluxer_app/src/actions/ConnectionActionCreators.tsx function showErrorToast (line 41) | function showErrorToast(i18n: I18n, error: unknown, fallbackMessage: Mes... function fetchConnections (line 50) | async function fetchConnections(): Promise { function initiateConnection (line 61) | async function initiateConnection( function authorizeBlueskyConnection (line 82) | async function authorizeBlueskyConnection(i18n: I18n, handle: string): P... function verifyAndCreateConnection (line 93) | async function verifyAndCreateConnection( function updateConnection (line 121) | async function updateConnection( function deleteConnection (line 143) | async function deleteConnection(i18n: I18n, type: string, connectionId: ... function verifyConnection (line 160) | async function verifyConnection(i18n: I18n, type: string, connectionId: ... function reorderConnections (line 177) | async function reorderConnections(i18n: I18n, connectionIds: Array void}) => React.ReactNode; function openAtPoint (line 56) | function openAtPoint( function openForElement (line 72) | function openForElement( function openFromEvent (line 81) | function openFromEvent( function openFromElementBottomRight (line 108) | function openFromElementBottomRight( function openFromElementTopLeft (line 133) | function openFromElementTopLeft( function openNativeContextMenu (line 158) | function openNativeContextMenu(render: RenderFn, config?: ContextMenu['c... FILE: fluxer_app/src/actions/DeveloperOptionsActionCreators.tsx function updateOption (line 34) | function updateOption(key: K, val... function setAttachmentMock (line 39) | function setAttachmentMock( function clearAllAttachmentMocks (line 53) | function clearAllAttachmentMocks(): void { function triggerMockIncomingCall (line 58) | function triggerMockIncomingCall(): void { FILE: fluxer_app/src/actions/DimensionActionCreators.tsx function updateChannelListScroll (line 25) | function updateChannelListScroll(guildId: string, scrollTop: number): vo... function clearChannelListScrollTo (line 30) | function clearChannelListScrollTo(guildId: string): void { function updateGuildListScroll (line 35) | function updateGuildListScroll(scrollTop: number): void { FILE: fluxer_app/src/actions/DiscoveryActionCreators.tsx type DiscoveryGuild (line 26) | interface DiscoveryGuild { type DiscoverySearchResponse (line 38) | interface DiscoverySearchResponse { type DiscoveryCategory (line 43) | interface DiscoveryCategory { function searchGuilds (line 48) | async function searchGuilds(params: { function getCategories (line 75) | async function getCategories(): Promise> { function joinGuild (line 82) | async function joinGuild(guildId: string): Promise { FILE: fluxer_app/src/actions/DraftActionCreators.tsx function createDraft (line 25) | function createDraft(channelId: string, content: string): void { function deleteDraft (line 30) | function deleteDraft(channelId: string): void { FILE: fluxer_app/src/actions/EmojiActionCreators.tsx function setSkinTone (line 25) | function setSkinTone(skinTone: string): void { FILE: fluxer_app/src/actions/EmojiPickerActionCreators.tsx function getEmojiKey (line 23) | function getEmojiKey(emoji: FlatEmoji): string { function trackEmojiUsage (line 30) | function trackEmojiUsage(emoji: FlatEmoji): void { function toggleFavorite (line 34) | function toggleFavorite(emoji: FlatEmoji): void { function toggleCategory (line 38) | function toggleCategory(category: string): void { FILE: fluxer_app/src/actions/ExpressionPickerActionCreators.tsx function open (line 26) | function open(channelId: string, tab?: ExpressionPickerTabType): void { function close (line 31) | function close(): void { function toggle (line 36) | function toggle(channelId: string, tab: ExpressionPickerTabType): void { function setTab (line 41) | function setTab(tab: ExpressionPickerTabType): void { FILE: fluxer_app/src/actions/FavoriteMemeActionCreators.tsx function createFavoriteMeme (line 37) | async function createFavoriteMeme( function createFavoriteMemeFromUrl (line 83) | async function createFavoriteMemeFromUrl( function updateFavoriteMeme (line 128) | async function updateFavoriteMeme( function deleteFavoriteMeme (line 162) | async function deleteFavoriteMeme(i18n: I18n, memeId: string): Promise void) | undefined, i18n:... FILE: fluxer_app/src/actions/GifActionCreators.tsx type Gif (line 30) | interface Gif { type GifCategory (line 40) | interface GifCategory { type GifFeatured (line 46) | interface GifFeatured { function getProvider (line 51) | function getProvider(): GifProvider { function getProviderEndpoints (line 55) | function getProviderEndpoints(provider: GifProvider): { function search (line 83) | async function search(q: string): Promise> { function getFeatured (line 100) | async function getFeatured(): Promise { function getTrending (line 125) | async function getTrending(): Promise> { function registerShare (line 142) | async function registerShare(id: string, q: string): Promise { function suggest (line 155) | async function suggest(q: string): Promise> { function resetFeaturedCache (line 172) | function resetFeaturedCache(): void { FILE: fluxer_app/src/actions/GiftActionCreators.tsx type ApiErrorResponse (line 38) | interface ApiErrorResponse { type Gift (line 46) | interface Gift { type GiftMetadata (line 53) | interface GiftMetadata { function fetch (line 62) | async function fetch(code: string): Promise { function fetchWithCoalescing (line 79) | async function fetchWithCoalescing(code: string): Promise { function openAcceptModal (line 83) | async function openAcceptModal(code: string): Promise { function redeem (line 91) | async function redeem(i18n: I18n, code: string): Promise { function fetchUserGifts (line 174) | async function fetchUserGifts(): Promise> { FILE: fluxer_app/src/actions/GuildActionCreators.tsx type GuildAuditLogFetchParams (line 42) | interface GuildAuditLogFetchParams { type GuildAuditLogFetchResponse (line 50) | interface GuildAuditLogFetchResponse { type GuildBan (line 56) | interface GuildBan { function create (line 70) | async function create(params: Pick & {icon?: string | nul... function update (line 82) | async function update( function moveChannel (line 118) | async function moveChannel(guildId: string, operation: ChannelMoveOperat... function getVanityURL (line 140) | async function getVanityURL(guildId: string): Promise<{code: string | nu... function updateVanityURL (line 152) | async function updateVanityURL(guildId: string, code: string | null): Pr... function createRole (line 163) | async function createRole(guildId: string, name: string): Promise { function updateRole (line 173) | async function updateRole(guildId: string, roleId: string, patch: Partia... function deleteRole (line 183) | async function deleteRole(guildId: string, roleId: string): Promise { function setRoleOrder (line 193) | async function setRoleOrder(guildId: string, orderedRoleIds: Array { function remove (line 227) | async function remove(guildId: string): Promise { function leave (line 237) | async function leave(guildId: string): Promise { function fetchGuildInvites (line 247) | async function fetchGuildInvites(guildId: string): Promise> { function toggleInvitesDisabled (line 261) | async function toggleInvitesDisabled(guildId: string, disabled: boolean)... function toggleTextChannelFlexibleNames (line 275) | async function toggleTextChannelFlexibleNames(guildId: string, enabled: ... function toggleDetachedBanner (line 290) | async function toggleDetachedBanner(guildId: string, enabled: boolean): ... function transferOwnership (line 302) | async function transferOwnership(guildId: string, newOwnerId: string): P... function banMember (line 316) | async function banMember( function unbanMember (line 339) | async function unbanMember(guildId: string, userId: string): Promise> { function fetchGuildAuditLogs (line 361) | async function fetchGuildAuditLogs( function getDiscoveryStatus (line 387) | async function getDiscoveryStatus(guildId: string): Promise { function timeout (line 92) | async function timeout( FILE: fluxer_app/src/actions/GuildNSFWActionCreators.tsx function agreeToChannel (line 22) | function agreeToChannel(channelId: string): void { function agreeToGuild (line 26) | function agreeToGuild(guildId: string): void { FILE: fluxer_app/src/actions/GuildStickerActionCreators.tsx function sanitizeStickerName (line 27) | function sanitizeStickerName(fileName: string): string { function list (line 36) | async function list(guildId: string): Promise { function fetchWithCoalescing (line 72) | async function fetchWithCoalescing(code: string): Promise { function acceptAndTransitionToChannel (line 89) | async function acceptAndTransitionToChannel(code: string, i18n: I18n): P... function openAcceptModal (line 197) | async function openAcceptModal(code: string): Promise { type HandlePackInviteErrorParams (line 205) | interface HandlePackInviteErrorParams { type PackLimitPayload (line 212) | interface PackLimitPayload { function handlePackInviteError (line 309) | function handlePackInviteError(params: HandlePackInviteErrorParams): boo... function create (line 355) | async function create( function list (line 369) | async function list(channelId: string): Promise> { function remove (line 380) | async function remove(code: string): Promise { FILE: fluxer_app/src/actions/KlipyActionCreators.tsx type KlipyGif (line 29) | interface KlipyGif { type KlipyCategory (line 39) | interface KlipyCategory { type KlipyFeatured (line 45) | interface KlipyFeatured { function search (line 52) | async function search(q: string): Promise> { function getFeatured (line 68) | async function getFeatured(): Promise { function getTrending (line 92) | async function getTrending(): Promise> { function registerShare (line 108) | async function registerShare(id: string, q: string): Promise { function suggest (line 118) | async function suggest(q: string): Promise> { FILE: fluxer_app/src/actions/LayoutActionCreators.tsx function updateMobileLayoutState (line 26) | function updateMobileLayoutState(navExpanded: boolean, chatExpanded: boo... function toggleMembers (line 31) | function toggleMembers(_isOpen: boolean): void { FILE: fluxer_app/src/actions/MediaViewerActionCreators.tsx function openMediaViewer (line 23) | function openMediaViewer( function closeMediaViewer (line 35) | function closeMediaViewer(): void { function navigateMediaViewer (line 39) | function navigateMediaViewer(index: number): void { FILE: fluxer_app/src/actions/MessageActionCreators.tsx function shouldBlockMessageFetch (line 68) | function shouldBlockMessageFetch(channelId: string): boolean { function makeFetchKey (line 77) | function makeFetchKey( function requestMissingGuildMembers (line 102) | async function requestMissingGuildMembers(channelId: string, messages: A... type SendMessageParams (line 122) | interface SendMessageParams { function jumpToPresent (line 134) | function jumpToPresent(channelId: string, limit = MAX_MESSAGES_PER_CHANN... function jumpToMessage (line 151) | function jumpToMessage( function fetchMessages (line 193) | async function fetchMessages( function send (line 302) | function send(channelId: string, params: SendMessageParams): Promise { function getBackupCodes (line 56) | async function getBackupCodes(regenerate = false): Promise React.ReactElement): ModalRender { function push (line 41) | function push(modal: ModalRender): void { function pushWithKey (line 63) | function pushWithKey(modal: ModalRender, key: string): void { function update (line 90) | function update(key: string, updater: (currentModal: ModalRender) => Mod... function pop (line 95) | function pop(): void { function popWithKey (line 100) | function popWithKey(key: string): void { function popByType (line 105) | function popByType(component: React.ComponentType): void { function popAll (line 110) | function popAll(): void { FILE: fluxer_app/src/actions/ModalRender.tsx type ModalRender (line 22) | type ModalRender = () => React.ReactElement; FILE: fluxer_app/src/actions/NagbarActionCreators.tsx function dismissNagbar (line 22) | function dismissNagbar(nagbarType: NagbarToggleKey): void { function dismissInvitesDisabledNagbar (line 26) | function dismissInvitesDisabledNagbar(guildId: string): void { function resetNagbar (line 30) | function resetNagbar(nagbarType: NagbarToggleKey): void { function resetAllNagbars (line 34) | function resetAllNagbars(): void { function setForceHideNagbar (line 38) | function setForceHideNagbar(key: NagbarToggleKey, value: boolean): void { function dismissPendingBulkDeletionNagbar (line 42) | function dismissPendingBulkDeletionNagbar(scheduleKey: string): void { function clearPendingBulkDeletionNagbarDismissal (line 46) | function clearPendingBulkDeletionNagbarDismissal(scheduleKey: string): v... FILE: fluxer_app/src/actions/NavigationActionCreators.tsx type NavigationMode (line 26) | type NavigationMode = 'push' | 'replace'; function selectChannel (line 28) | function selectChannel( function selectGuild (line 45) | function selectGuild(guildId: string, channelId?: string, mode: Navigati... function deselectGuild (line 57) | function deselectGuild(): void { function navigateToMessage (line 62) | function navigateToMessage( function clearMessageIdForChannel (line 79) | function clearMessageIdForChannel(channelId: string, mode: NavigationMod... FILE: fluxer_app/src/actions/NotificationActionCreators.tsx function permissionDenied (line 31) | function permissionDenied(i18n: I18n, suppressModal = false): void { function permissionGranted (line 58) | function permissionGranted(): void { function toggleUnreadMessageBadge (line 63) | function toggleUnreadMessageBadge(enabled: boolean): void { FILE: fluxer_app/src/actions/OAuth2AuthorizationActionCreators.tsx type OAuth2Authorization (line 26) | interface OAuth2Authorization { function listAuthorizations (line 38) | async function listAuthorizations(): Promise> { function deauthorize (line 48) | async function deauthorize(applicationId: string): Promise { FILE: fluxer_app/src/actions/PackActionCreators.tsx function list (line 27) | async function list(): Promise { function create (line 38) | async function create( function update (line 56) | async function update( function remove (line 70) | async function remove(packId: string): Promise { function install (line 80) | async function install(packId: string): Promise { function uninstall (line 90) | async function uninstall(packId: string): Promise { FILE: fluxer_app/src/actions/PackInviteActionCreators.tsx type CreatePackInviteParams (line 27) | interface CreatePackInviteParams { function createInvite (line 34) | async function createInvite(params: CreatePackInviteParams): Promise { function createCustomerPortalSession (line 43) | async function createCustomerPortalSession(): Promise { function createCheckoutSession (line 54) | async function createCheckoutSession(priceId: string, isGift: boolean = ... function cancelSubscriptionAtPeriodEnd (line 66) | async function cancelSubscriptionAtPeriodEnd(): Promise { function reactivateSubscription (line 76) | async function reactivateSubscription(): Promise { function rejoinVisionaryGuild (line 86) | async function rejoinVisionaryGuild(): Promise { function rejoinOperatorGuild (line 96) | async function rejoinOperatorGuild(): Promise { FILE: fluxer_app/src/actions/PremiumModalActionCreators.tsx type OpenOptions (line 25) | interface OpenOptions { function open (line 29) | function open(optionsOrDefaultGiftMode: OpenOptions | boolean = {}): void { FILE: fluxer_app/src/actions/PrivateChannelActionCreators.tsx function create (line 31) | async function create(userId: string) { function createGroupDM (line 45) | async function createGroupDM(recipientIds: Array) { function removeRecipient (line 59) | async function removeRecipient(channelId: string, userId: string) { function ensureDMChannel (line 70) | async function ensureDMChannel(userId: string): Promise { function openDMChannel (line 89) | async function openDMChannel(userId: string): Promise { function pinDmChannel (line 99) | async function pinDmChannel(channelId: string): Promise { function unpinDmChannel (line 110) | async function unpinDmChannel(channelId: string): Promise { function addRecipient (line 121) | async function addRecipient(channelId: string, userId: string): Promise<... FILE: fluxer_app/src/actions/QuickSwitcherActionCreators.tsx constant QUICK_SWITCHER_MODAL_KEY (line 34) | const QUICK_SWITCHER_MODAL_KEY = 'quick_switcher'; function hide (line 36) | function hide(): void { function search (line 40) | function search(query: string): void { function select (line 44) | function select(selectedIndex: number): void { function moveSelection (line 48) | function moveSelection(direction: 'up' | 'down'): void { function confirmSelection (line 53) | async function confirmSelection(): Promise { function switchTo (line 59) | async function switchTo(result: QuickSwitcherExecutableResult): Promise<... function getModalKey (line 140) | function getModalKey(): string { FILE: fluxer_app/src/actions/ReactionActionCreators.tsx constant MAX_RETRIES (line 43) | const MAX_RETRIES = 3; function retryWithExponentialBackoff (line 149) | async function retryWithExponentialBackoff(func: () => Promise, at... function getReactions (line 201) | async function getReactions( function addReaction (line 233) | function addReaction(i18n: I18n, channelId: string, messageId: string, e... function removeReaction (line 245) | function removeReaction( function removeAllReactions (line 263) | function removeAllReactions(i18n: I18n, channelId: string, messageId: st... function removeReactionEmoji (line 276) | function removeReactionEmoji(i18n: I18n, channelId: string, messageId: s... FILE: fluxer_app/src/actions/ReadStateActionCreators.tsx function ack (line 30) | function ack(channelId: string, immediate = false, force = false): void { function ackWithStickyUnread (line 35) | function ackWithStickyUnread(channelId: string): void { function manualAck (line 40) | async function manualAck(channelId: string, messageId: string): Promise<... function markAsUnread (line 61) | async function markAsUnread(channelId: string, messageId: string): Promi... function clearManualAck (line 84) | function clearManualAck(channelId: string): void { function clearStickyUnread (line 88) | function clearStickyUnread(channelId: string): void { type BulkAckEntry (line 93) | interface BulkAckEntry { constant BULK_ACK_BATCH_SIZE (line 98) | const BULK_ACK_BATCH_SIZE = 100; function chunkEntries (line 100) | function chunkEntries(entries: Array, size: number): Array): Promise { function updateReadStatesLocally (line 137) | function updateReadStatesLocally(entries: Array): void { function bulkAckChannels (line 143) | async function bulkAckChannels(channelIds: Array): Promise { FILE: fluxer_app/src/actions/RecentMentionActionCreators.tsx function fetch (line 30) | async function fetch(): Promise> { function loadMore (line 55) | async function loadMore(): Promise> { function updateFilters (line 88) | function updateFilters(filters: Partial): void { function remove (line 92) | async function remove(messageId: string): Promise { FILE: fluxer_app/src/actions/RelationshipActionCreators.tsx function sendFriendRequest (line 27) | async function sendFriendRequest(userId: string) { function sendFriendRequestByTag (line 36) | async function sendFriendRequestByTag(username: string, discriminator: s... function acceptFriendRequest (line 45) | async function acceptFriendRequest(userId: string) { function removeRelationship (line 54) | async function removeRelationship(userId: string) { function blockUser (line 63) | async function blockUser(userId: string) { function updateFriendNickname (line 72) | async function updateFriendNickname(userId: string, nickname: string | n... FILE: fluxer_app/src/actions/SavedMessageActionCreators.tsx function fetch (line 37) | async function fetch(): Promise> { function create (line 53) | async function create(i18n: I18n, channelId: string, messageId: string):... function remove (line 78) | async function remove(i18n: I18n, messageId: string): Promise { FILE: fluxer_app/src/actions/ScheduledMessageActionCreators.tsx type ScheduledMessageRequest (line 66) | type ScheduledMessageRequest = MessageCreateRequest & { type ApiErrorBody (line 71) | interface ApiErrorBody { type ScheduleMessageParams (line 77) | interface ScheduleMessageParams { type UpdateScheduledMessageParams (line 90) | interface UpdateScheduledMessageParams { function mapScheduledAttachments (line 104) | function mapScheduledAttachments( function fetchScheduledMessages (line 119) | async function fetchScheduledMessages(): Promise { function removeTrustedDomain (line 30) | async function removeTrustedDomain(domain: string): Promise { function clearAllTrustedDomains (line 35) | async function clearAllTrustedDomains(): Promise { function setTrustAllDomains (line 40) | async function setTrustAllDomains(trustAll: boolean): Promise { function checkAndMigrateLegacyData (line 45) | function checkAndMigrateLegacyData(): void { FILE: fluxer_app/src/actions/TypingActionCreators.tsx function sendTyping (line 27) | async function sendTyping(channelId: string): Promise { function startTyping (line 37) | function startTyping(channelId: string, userId: string): void { function stopTyping (line 42) | function stopTyping(channelId: string, userId: string): void { FILE: fluxer_app/src/actions/UnsavedChangesActionCreators.tsx function setUnsavedChanges (line 22) | function setUnsavedChanges(tabId: string, hasChanges: boolean): void { function triggerFlashEffect (line 26) | function triggerFlashEffect(tabId: string): void { function clearUnsavedChanges (line 30) | function clearUnsavedChanges(tabId: string): void { function setTabData (line 34) | function setTabData( FILE: fluxer_app/src/actions/UserActionCreators.tsx type FluxerTagAvailabilityResponse (line 33) | interface FluxerTagAvailabilityResponse { type WebAuthnCredential (line 37) | interface WebAuthnCredential { type PhoneTokenResponse (line 44) | interface PhoneTokenResponse { type EmailChangeStartResponse (line 48) | interface EmailChangeStartResponse { type EmailChangeVerifyOriginalResponse (line 56) | interface EmailChangeVerifyOriginalResponse { type EmailChangeRequestNewResponse (line 60) | interface EmailChangeRequestNewResponse { type EmailChangeVerifyNewResponse (line 67) | interface EmailChangeVerifyNewResponse { type PasswordChangeStartResponse (line 71) | interface PasswordChangeStartResponse { type PasswordChangeVerifyResponse (line 77) | interface PasswordChangeVerifyResponse { function update (line 81) | async function update( function checkFluxerTagAvailability (line 115) | async function checkFluxerTagAvailability({ function sendPhoneVerification (line 135) | async function sendPhoneVerification(phone: string): Promise { function verifyPhone (line 146) | async function verifyPhone(phone: string, code: string): Promise { function startEmailChange (line 169) | async function startEmailChange(): Promise { function resendEmailChangeOriginal (line 183) | async function resendEmailChangeOriginal(ticket: string): Promise { function verifyEmailChangeOriginal (line 196) | async function verifyEmailChangeOriginal( function requestEmailChangeNew (line 213) | async function requestEmailChangeNew( function resendEmailChangeNew (line 231) | async function resendEmailChangeNew(ticket: string): Promise { function verifyEmailChangeNew (line 244) | async function verifyEmailChangeNew( function requestBouncedEmailChangeNew (line 262) | async function requestBouncedEmailChangeNew(newEmail: string): Promise { function verifyBouncedEmailChangeNew (line 289) | async function verifyBouncedEmailChangeNew(ticket: string, code: string)... function startPasswordChange (line 303) | async function startPasswordChange(): Promise { function verifyPasswordChangeCode (line 330) | async function verifyPasswordChangeCode(ticket: string, code: string): P... function completePasswordChange (line 344) | async function completePasswordChange( function removePhone (line 366) | async function removePhone(): Promise { function enableSmsMfa (line 377) | async function enableSmsMfa(): Promise { function disableSmsMfa (line 389) | async function disableSmsMfa(): Promise { function listWebAuthnCredentials (line 400) | async function listWebAuthnCredentials(): Promise { function deleteAccount (line 478) | async function deleteAccount(): Promise { function forgetAuthorizedIps (line 489) | async function forgetAuthorizedIps(sudoPayload: SudoVerificationPayload)... function bulkDeleteAllMessages (line 500) | async function bulkDeleteAllMessages(): Promise { function cancelBulkDeleteAllMessages (line 511) | async function cancelBulkDeleteAllMessages(): Promise { function testBulkDeleteAllMessages (line 522) | async function testBulkDeleteAllMessages(): Promise { function resetPremiumState (line 533) | async function resetPremiumState(): Promise { function requestDataHarvest (line 544) | async function requestDataHarvest(): Promise<{harvestId: string}> { function getLatestHarvest (line 556) | async function getLatestHarvest(): Promise { function getHarvestStatus (line 567) | async function getHarvestStatus(harvestId: string): Promise; function preloadDMMessages (line 580) | async function preloadDMMessages(channelIds: Array): Promise { FILE: fluxer_app/src/actions/UserProfileActionCreators.tsx function buildKey (line 38) | function buildKey(userId: string, guildId?: string): string { function fetch (line 42) | async function fetch(userId: string, guildId?: string, force = false): P... function invalidate (line 103) | function invalidate(userId: string, guildId?: string): void { function clearCurrentUserProfiles (line 114) | function clearCurrentUserProfiles(): void { function openUserProfile (line 131) | function openUserProfile(userId: string, guildId?: string, autoFocusNote... FILE: fluxer_app/src/actions/UserSettingsActionCreators.tsx function update (line 23) | async function update(settings: Partial): Promise { FILE: fluxer_app/src/actions/VoiceCallLayoutActionCreators.tsx function setLayoutMode (line 23) | function setLayoutMode(mode: LayoutMode): void { function setPinnedParticipant (line 27) | function setPinnedParticipant(identity: string | null, source?: PinnedPa... function markUserOverride (line 31) | function markUserOverride(): void { FILE: fluxer_app/src/actions/VoiceSettingsActionCreators.tsx function update (line 23) | function update( FILE: fluxer_app/src/actions/VoiceStateActionCreators.tsx function toggleSelfDeaf (line 40) | async function toggleSelfDeaf(_guildId: string | null = null): Promise, mute: b... function bulkDeafenConnections (line 433) | async function bulkDeafenConnections(connectionIds: Array, deafe... function bulkTurnOffCameras (line 437) | async function bulkTurnOffCameras(connectionIds: Array): Promise... function bulkDisconnect (line 441) | async function bulkDisconnect(connectionIds: Array): Promise, targetC... FILE: fluxer_app/src/actions/WebhookActionCreators.tsx type CreateWebhookParams (line 28) | interface CreateWebhookParams { type UpdateWebhookParams (line 34) | interface UpdateWebhookParams { function fetchGuildWebhooks (line 40) | async function fetchGuildWebhooks(guildId: string): Promise { function moveWebhook (line 109) | async function moveWebhook(webhookId: string, newChannelId: string): Pro... function updateWebhooks (line 143) | async function updateWebhooks(updates: Array): Prom... FILE: fluxer_app/src/actions/WindowActionCreators.tsx function focused (line 25) | function focused(focused: boolean): void { function resized (line 35) | function resized(): void { function visibilityChanged (line 39) | function visibilityChanged(visible: boolean): void { FILE: fluxer_app/src/bootstrap/SetupHttpClient.tsx function setupHttpClient (line 25) | function setupHttpClient(): void { FILE: fluxer_app/src/components/AppBadge.tsx constant UNREAD_INDICATOR (line 34) | const UNREAD_INDICATOR = -1; FILE: fluxer_app/src/components/BootstrapErrorScreen.tsx type BootstrapErrorScreenProps (line 28) | interface BootstrapErrorScreenProps { constant PRESERVED_RESET_STORAGE_KEYS (line 32) | const PRESERVED_RESET_STORAGE_KEYS = ['DraftStore'] as const; FILE: fluxer_app/src/components/ErrorFallback.tsx type ErrorFallbackProps (line 36) | interface ErrorFallbackProps { constant PRESERVED_RESET_STORAGE_KEYS (line 42) | const PRESERVED_RESET_STORAGE_KEYS = ['DraftStore'] as const; FILE: fluxer_app/src/components/LongPressable.tsx constant LONG_PRESS_MOVEMENT_THRESHOLD (line 22) | const LONG_PRESS_MOVEMENT_THRESHOLD = 10; constant SWIPE_VELOCITY_THRESHOLD (line 24) | const SWIPE_VELOCITY_THRESHOLD = 0.4; constant MIN_VELOCITY_SAMPLES (line 26) | const MIN_VELOCITY_SAMPLES = 2; constant MAX_VELOCITY_SAMPLE_AGE (line 28) | const MAX_VELOCITY_SAMPLE_AGE = 100; constant PRESS_HIGHLIGHT_DELAY_MS (line 30) | const PRESS_HIGHLIGHT_DELAY_MS = 100; constant LONG_PRESS_DURATION_MS (line 32) | const LONG_PRESS_DURATION_MS = 500; constant HAS_POINTER_EVENTS (line 34) | const HAS_POINTER_EVENTS = 'PointerEvent' in window; type VelocitySample (line 36) | interface VelocitySample { type LongPressEvent (line 42) | type LongPressEvent = React.PointerEvent | React.TouchEv... type LongPressableProps (line 44) | interface LongPressableProps extends React.HTMLAttributes { FILE: fluxer_app/src/components/accounts/AccountListItem.tsx type AccountListItemProps (line 31) | interface AccountListItemProps { FILE: fluxer_app/src/components/accounts/AccountRow.tsx constant STANDARD_INSTANCES (line 35) | const STANDARD_INSTANCES = new Set(['web.fluxer.app', 'web.canary.fluxer... function getInstanceHost (line 39) | function getInstanceHost(account: Account): string | null { function getInstanceEndpoint (line 53) | function getInstanceEndpoint(account: Account): string | null { type AccountRowVariant (line 57) | type AccountRowVariant = 'default' | 'manage' | 'compact'; type AccountRowProps (line 59) | interface AccountRowProps { FILE: fluxer_app/src/components/accounts/AccountSelector.tsx type AccountSelectorProps (line 40) | interface AccountSelectorProps { FILE: fluxer_app/src/components/alerts/FileSizeTooLargeModal.tsx type FileSizeTooLargeModalProps (line 31) | interface FileSizeTooLargeModalProps { FILE: fluxer_app/src/components/alerts/GenericErrorModal.tsx type GenericErrorModalProps (line 24) | interface GenericErrorModalProps { FILE: fluxer_app/src/components/alerts/GroupOwnershipTransferFailedModal.tsx type GroupOwnershipTransferFailedModalProps (line 25) | interface GroupOwnershipTransferFailedModalProps { FILE: fluxer_app/src/components/alerts/GroupRemoveUserFailedModal.tsx type GroupRemoveUserFailedModalProps (line 25) | interface GroupRemoveUserFailedModalProps { FILE: fluxer_app/src/components/alerts/MaxBookmarksModal.tsx type MaxBookmarksModalProps (line 30) | interface MaxBookmarksModalProps { FILE: fluxer_app/src/components/alerts/MaxGuildsModal.tsx type MaxGuildsModalProps (line 25) | interface MaxGuildsModalProps { FILE: fluxer_app/src/components/alerts/MessageEditTooQuickModal.tsx type MessageEditTooQuickModalProps (line 24) | interface MessageEditTooQuickModalProps { FILE: fluxer_app/src/components/alerts/MessageSendTooQuickModal.tsx type MessageSendTooQuickModalProps (line 24) | interface MessageSendTooQuickModalProps { FILE: fluxer_app/src/components/alerts/PinFailedModal.tsx type PinFailureReason (line 24) | type PinFailureReason = 'dm_restricted' | 'generic'; type PinFailedModalProps (line 26) | interface PinFailedModalProps { FILE: fluxer_app/src/components/alerts/RateLimitedConfirmModal.tsx type RateLimitedConfirmModalProps (line 25) | interface RateLimitedConfirmModalProps { FILE: fluxer_app/src/components/alerts/RoleDeleteFailedModal.tsx type RoleDeleteFailedModalProps (line 24) | interface RoleDeleteFailedModalProps { FILE: fluxer_app/src/components/alerts/SlowmodeRateLimitedModal.tsx type SlowmodeRateLimitedModalProps (line 25) | interface SlowmodeRateLimitedModalProps { FILE: fluxer_app/src/components/auth/AuthBackground.tsx type AuthBackgroundProps (line 38) | interface AuthBackgroundProps { FILE: fluxer_app/src/components/auth/AuthBottomLink.tsx type AuthBottomLinkProps (line 24) | interface AuthBottomLinkProps { function AuthBottomLink (line 29) | function AuthBottomLink({variant, to}: AuthBottomLinkProps) { type AuthBottomLinksProps (line 42) | interface AuthBottomLinksProps { function AuthBottomLinks (line 46) | function AuthBottomLinks({children}: AuthBottomLinksProps) { FILE: fluxer_app/src/components/auth/AuthCardContainer.tsx type AuthCardContainerProps (line 27) | interface AuthCardContainerProps { function AuthCardContainer (line 34) | function AuthCardContainer({showLogoSide = true, children, isInert = fal... FILE: fluxer_app/src/components/auth/AuthErrorState.tsx type AuthErrorStateProps (line 24) | interface AuthErrorStateProps { function AuthErrorState (line 30) | function AuthErrorState({icon: IconComponent = QuestionIcon, title, text... FILE: fluxer_app/src/components/auth/AuthLoadingState.tsx function AuthLoadingState (line 24) | function AuthLoadingState(): JSX.Element { FILE: fluxer_app/src/components/auth/AuthLoginLayout.tsx type AuthLoginLayoutProps (line 44) | interface AuthLoginLayoutProps { FILE: fluxer_app/src/components/auth/AuthMinimalRegisterFormCore.tsx type AuthMinimalRegisterFormCoreProps (line 39) | interface AuthMinimalRegisterFormCoreProps { function AuthMinimalRegisterFormCore (line 47) | function AuthMinimalRegisterFormCore({ FILE: fluxer_app/src/components/auth/AuthPageHeader.tsx type AuthPageHeaderStatProps (line 24) | interface AuthPageHeaderStatProps { type AuthPageHeaderProps (line 29) | interface AuthPageHeaderProps { function AuthPageHeader (line 37) | function AuthPageHeader({icon, title, subtitle, features, stats}: AuthPa... FILE: fluxer_app/src/components/auth/AuthRegisterFormCore.tsx type FieldConfig (line 42) | interface FieldConfig { type AuthRegisterFormCoreProps (line 49) | interface AuthRegisterFormCoreProps { function AuthRegisterFormCore (line 58) | function AuthRegisterFormCore({ FILE: fluxer_app/src/components/auth/AuthRouterLink.tsx type AuthRouterLinkProps (line 24) | interface AuthRouterLinkProps { function AuthRouterLink (line 32) | function AuthRouterLink({ringOffset = -2, children, className, to, searc... FILE: fluxer_app/src/components/auth/BrowserLoginHandoffModal.tsx type LoginSuccessPayload (line 36) | interface LoginSuccessPayload { type BrowserLoginHandoffModalProps (line 41) | interface BrowserLoginHandoffModalProps { constant CODE_LENGTH (line 47) | const CODE_LENGTH = 8; constant VALID_CODE_PATTERN (line 48) | const VALID_CODE_PATTERN = /^[A-Za-z0-9]{8}$/; function normalizeInstanceOrigin (line 69) | function normalizeInstanceOrigin(raw: string): string { function showBrowserLoginHandoffModal (line 281) | function showBrowserLoginHandoffModal( FILE: fluxer_app/src/components/auth/DateOfBirthField.tsx type DateFieldType (line 32) | type DateFieldType = 'month' | 'day' | 'year'; type DateOfBirthFieldProps (line 34) | interface DateOfBirthFieldProps { type NativeDatePickerProps (line 44) | interface NativeDatePickerProps { function NativeDatePicker (line 54) | function NativeDatePicker({ FILE: fluxer_app/src/components/auth/DesktopDeepLinkPrompt.tsx type DesktopDeepLinkPromptProps (line 32) | interface DesktopDeepLinkPromptProps { FILE: fluxer_app/src/components/auth/DesktopHandoffAccountSelector.tsx type HandoffState (line 29) | type HandoffState = 'selecting' | 'generating' | 'displaying' | 'error'; type DesktopHandoffAccountSelectorProps (line 31) | interface DesktopHandoffAccountSelectorProps { FILE: fluxer_app/src/components/auth/FormField.tsx type FormFieldProps (line 23) | interface FormFieldProps extends Omit { function saveRecentInstance (line 60) | function saveRecentInstance(domain: string, name?: string): void { function removeRecentInstance (line 78) | function removeRecentInstance(domain: string): void { function handleClickOutside (line 190) | function handleClickOutside(event: MouseEvent) { FILE: fluxer_app/src/components/auth/InviteHeader.tsx type InviteHeaderProps (line 35) | interface InviteHeaderProps { type GuildInviteHeaderProps (line 39) | interface GuildInviteHeaderProps { type GroupDMInviteHeaderProps (line 43) | interface GroupDMInviteHeaderProps { type PackInviteHeaderProps (line 47) | interface PackInviteHeaderProps { type PreviewGuildInviteHeaderProps (line 51) | interface PreviewGuildInviteHeaderProps { function formatInviteCount (line 62) | function formatInviteCount(value: number): string { function InviteHeader (line 169) | function InviteHeader({invite}: InviteHeaderProps) { FILE: fluxer_app/src/components/auth/IpAuthorizationScreen.tsx type PollingState (line 29) | type PollingState = 'polling' | 'error'; type IpAuthorizationScreenProps (line 31) | interface IpAuthorizationScreenProps { constant POLL_INTERVAL_MS (line 37) | const POLL_INTERVAL_MS = 2000; constant MAX_POLL_ERRORS (line 38) | const MAX_POLL_ERRORS = 3; FILE: fluxer_app/src/components/auth/MfaScreen.tsx type MfaScreenProps (line 28) | interface MfaScreenProps { FILE: fluxer_app/src/components/auth/MockMinimalRegisterForm.tsx type DateFieldType (line 33) | type DateFieldType = 'month' | 'day' | 'year'; type MockMinimalRegisterFormProps (line 35) | interface MockMinimalRegisterFormProps { function MockMinimalRegisterForm (line 39) | function MockMinimalRegisterForm({submitLabel}: MockMinimalRegisterFormP... FILE: fluxer_app/src/components/auth/SubmitTooltip.tsx type MissingField (line 27) | interface MissingField { type SubmitTooltipProps (line 32) | interface SubmitTooltipProps { constant CONSENT_REQUIRED_DESCRIPTOR (line 38) | const CONSENT_REQUIRED_DESCRIPTOR = msg`You must agree to the Terms of S... function getTooltipContentDescriptor (line 42) | function getTooltipContentDescriptor(consent: boolean, missingFields: Ar... function shouldDisableSubmit (line 55) | function shouldDisableSubmit(consent: boolean, missingFields: Array | null | undefined; type AuthFormControllerLike (line 28) | interface AuthFormControllerLike { type AuthEmailPasswordFormClasses (line 36) | interface AuthEmailPasswordFormClasses { type Props (line 40) | interface Props { function AuthLoginEmailPasswordForm (line 52) | function AuthLoginEmailPasswordForm({ FILE: fluxer_app/src/components/auth/auth_login_core/AuthLoginPasskeyActions.tsx type AuthLoginDividerClasses (line 24) | interface AuthLoginDividerClasses { function AuthLoginDivider (line 30) | function AuthLoginDivider({ type AuthPasskeyClasses (line 46) | interface AuthPasskeyClasses { type Props (line 50) | interface Props { function AuthLoginPasskeyActions (line 63) | function AuthLoginPasskeyActions({ FILE: fluxer_app/src/components/auth/auth_login_core/useDesktopHandoffFlow.tsx type DesktopHandoffMode (line 23) | type DesktopHandoffMode = 'idle' | 'selecting' | 'login' | 'generating' ... type Options (line 25) | interface Options { function useDesktopHandoffFlow (line 32) | function useDesktopHandoffFlow({enabled, hasStoredAccounts, initialMode}... FILE: fluxer_app/src/components/bottomsheets/CategoryBottomSheet.tsx type CategoryBottomSheetProps (line 30) | interface CategoryBottomSheetProps { FILE: fluxer_app/src/components/bottomsheets/ChannelBottomSheet.tsx type ChannelBottomSheetProps (line 30) | interface ChannelBottomSheetProps { FILE: fluxer_app/src/components/bottomsheets/ChannelDetailsBottomSheet.tsx constant MEMBER_ITEM_HEIGHT (line 135) | const MEMBER_ITEM_HEIGHT = 56; constant INITIAL_MEMBER_RANGE (line 136) | const INITIAL_MEMBER_RANGE: [number, number] = [0, 99]; constant SCROLL_BUFFER (line 137) | const SCROLL_BUFFER = 50; function isScrollableOverflow (line 139) | function isScrollableOverflow(value: string): boolean { function findScrollableParent (line 143) | function findScrollableParent(node: HTMLElement | null): HTMLElement | n... type ChannelDetailsTab (line 165) | type ChannelDetailsTab = 'members' | 'pins'; type ChannelDetailsBottomSheetProps (line 167) | interface ChannelDetailsBottomSheetProps { type QuickActionButtonProps (line 175) | interface QuickActionButtonProps { type LazyMemberListGroupProps (line 294) | interface LazyMemberListGroupProps { FILE: fluxer_app/src/components/bottomsheets/ChannelSearchBottomSheet.tsx type ChannelSearchBottomSheetProps (line 62) | interface ChannelSearchBottomSheetProps { FILE: fluxer_app/src/components/bottomsheets/CreateDMBottomSheet.tsx type CreateDMBottomSheetProps (line 34) | interface CreateDMBottomSheetProps { type ScrollContentStyle (line 39) | type ScrollContentStyle = React.CSSProperties & { FILE: fluxer_app/src/components/bottomsheets/DMBottomSheet.tsx type DMBottomSheetProps (line 30) | interface DMBottomSheetProps { FILE: fluxer_app/src/components/bottomsheets/DirectCallLobbyBottomSheet.tsx type DirectCallLobbyBottomSheetProps (line 59) | interface DirectCallLobbyBottomSheetProps { FILE: fluxer_app/src/components/bottomsheets/EmojiInfoBottomSheet.tsx type EmojiInfoData (line 34) | interface EmojiInfoData { type EmojiInfoBottomSheetProps (line 40) | interface EmojiInfoBottomSheetProps { constant EMOJI_SHEET_SNAP_POINTS (line 46) | const EMOJI_SHEET_SNAP_POINTS: Array = [0, 0.4, 0.5]; type EmojiInfoBottomSheetContentProps (line 56) | interface EmojiInfoBottomSheetContentProps { FILE: fluxer_app/src/components/bottomsheets/FavoritesGuildHeaderBottomSheet.tsx type FavoritesGuildHeaderBottomSheetProps (line 42) | interface FavoritesGuildHeaderBottomSheetProps { FILE: fluxer_app/src/components/bottomsheets/GuildHeaderBottomSheet.tsx type GuildHeaderBottomSheetProps (line 35) | interface GuildHeaderBottomSheetProps { FILE: fluxer_app/src/components/bottomsheets/MuteDurationSheet.tsx type MuteDurationSheetProps (line 29) | interface MuteDurationSheetProps { FILE: fluxer_app/src/components/bottomsheets/QuickSwitcherBottomSheet.tsx type QuickSwitcherContainerStyle (line 53) | type QuickSwitcherContainerStyle = React.CSSProperties & { constant QUICK_SWITCHER_SCROLL_PADDING_BOTTOM (line 57) | const QUICK_SWITCHER_SCROLL_PADDING_BOTTOM = 'calc(env(safe-area-inset-b... type QuickSwitcherBottomSheetProps (line 140) | interface QuickSwitcherBottomSheetProps { FILE: fluxer_app/src/components/bottomsheets/VoiceLobbyBottomSheet.tsx type VoiceLobbyBottomSheetProps (line 56) | interface VoiceLobbyBottomSheetProps { FILE: fluxer_app/src/components/bottomsheets/VoiceParticipantBottomSheet.tsx type VoiceParticipantBottomSheetProps (line 27) | interface VoiceParticipantBottomSheetProps { FILE: fluxer_app/src/components/bottomsheets/VoiceSettingsBottomSheets.tsx type VoiceAudioSettingsBottomSheetProps (line 47) | interface VoiceAudioSettingsBottomSheetProps { type VoiceCameraSettingsBottomSheetProps (line 175) | interface VoiceCameraSettingsBottomSheetProps { type VoiceMoreOptionsBottomSheetProps (line 237) | interface VoiceMoreOptionsBottomSheetProps { FILE: fluxer_app/src/components/captcha/TurnstileWidget.tsx type TurnstileWidgetProps (line 23) | interface TurnstileWidgetProps { FILE: fluxer_app/src/components/channel/Autocomplete.tsx type ScrollerWithScrollableElement (line 44) | type ScrollerWithScrollableElement = ScrollerHandle & { type AutocompleteOption (line 48) | type AutocompleteOption = type AutocompleteType (line 60) | type AutocompleteType = 'mention' | 'channel' | 'emoji' | 'command' | 'm... method apply (line 131) | apply({rects, elements}) { function scrollChildIntoView (line 202) | function scrollChildIntoView(node: HTMLElement | null, margin = 32) { FILE: fluxer_app/src/components/channel/AutocompleteCommand.tsx type Props (line 25) | interface Props { FILE: fluxer_app/src/components/channel/BlockedMessageGroups.tsx type BlockedMessageGroupsProps (line 29) | interface BlockedMessageGroupsProps { FILE: fluxer_app/src/components/channel/CallMessage.tsx type DurationUnit (line 42) | type DurationUnit = 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute'; constant DURATION_UNITS (line 44) | const DURATION_UNITS: Array<{unit: DurationUnit; minutes: number}> = [ constant DURATION_UNIT_LABELS (line 65) | const DURATION_UNIT_LABELS: Record { method constructor (line 27) | constructor(createElement: () => T, cleanElement: (element: T) => void) { method getElement (line 33) | getElement(): T { method poolElement (line 37) | poolElement(element: T): void { method clearPool (line 42) | clearPool(): void { type PooledVideo (line 47) | interface PooledVideo { method getElement (line 135) | getElement(src?: string): HTMLVideoElement { method poolElement (line 143) | poolElement(element: HTMLVideoElement, src?: string): void { method clearPool (line 171) | clearPool(): void { method registerActive (line 183) | registerActive(element: HTMLVideoElement) { method unregisterActive (line 186) | unregisterActive(element: HTMLVideoElement) { method pauseAll (line 189) | pauseAll() { method resumeAll (line 196) | resumeAll() { method clearBlobCache (line 205) | clearBlobCache(): void { FILE: fluxer_app/src/components/channel/GiftEmbed.tsx type GiftEmbedProps (line 46) | interface GiftEmbedProps { FILE: fluxer_app/src/components/channel/GuildJoinMessage.tsx type GuildJoinMessageProps (line 30) | interface GuildJoinMessageProps { FILE: fluxer_app/src/components/channel/GuildMembersPage.tsx constant SEARCH_DEBOUNCE_MS (line 74) | const SEARCH_DEBOUNCE_MS = 300; constant DEFAULT_PAGE_SIZE (line 75) | const DEFAULT_PAGE_SIZE = 25; constant INDEXING_POLL_INTERVAL_MS (line 76) | const INDEXING_POLL_INTERVAL_MS = 5000; constant HOUR_MS (line 78) | const HOUR_MS = 3_600_000; constant DAY_MS (line 79) | const DAY_MS = 86_400_000; type SearchableGuildMemberSupplemental (line 81) | interface SearchableGuildMemberSupplemental { type SearchableGuildMember (line 87) | interface SearchableGuildMember { type GuildMemberSearchResponse (line 101) | interface GuildMemberSearchResponse { type SearchParams (line 109) | interface SearchParams { function searchGuildMembers (line 124) | async function searchGuildMembers(guildId: string, params: SearchParams)... type MemberDisplayData (line 129) | interface MemberDisplayData { function toMemberDisplayData (line 147) | function toMemberDisplayData(searchMember: SearchableGuildMember, guildI... type SortMode (line 173) | type SortMode = 'newest' | 'oldest'; type DateRangeFilter (line 175) | interface DateRangeFilter { type JoinMethodFilter (line 180) | interface JoinMethodFilter { type MemberTableRowProps (line 185) | interface MemberTableRowProps { constant PAGE_SIZE_OPTIONS (line 430) | const PAGE_SIZE_OPTIONS: Array> = [ type RolesFilterMenuContentProps (line 437) | interface RolesFilterMenuContentProps { function RolesFilterMenuContent (line 444) | function RolesFilterMenuContent({roles, initialRoleFilter, setRoleFilter... function isPresetMatch (line 494) | function isPresetMatch(filter: DateRangeFilter, durationMs: number): boo... type GuildMembersPageProps (line 1102) | interface GuildMembersPageProps { FILE: fluxer_app/src/components/channel/InviteEmbed.tsx function formatInviteCount (line 78) | function formatInviteCount(value: number): string { type InviteEmbedProps (line 82) | interface InviteEmbedProps { type GuildInviteEmbedPreviewProps (line 397) | interface GuildInviteEmbedPreviewProps { FILE: fluxer_app/src/components/channel/MasonryListComputer.tsx type VisibleSection (line 20) | type VisibleSection = Array<[string, number, number]>; type GridCoordinates (line 22) | interface GridCoordinates { type GridData (line 28) | interface GridData { type CoordsStyle (line 33) | interface CoordsStyle { type Padding (line 42) | type Padding = number | {top?: number; bottom?: number; left?: number; r... function defaultGetSectionHeight (line 44) | function defaultGetSectionHeight(_section: number): number { function findMinColumnIndex (line 48) | function findMinColumnIndex(columnHeights: Array): [number, numb... function getSectionHeaderKey (line 60) | function getSectionHeaderKey(sectionIndex: number): string { function getSectionKey (line 64) | function getSectionKey(sectionIndex: number): string { class MasonryListComputer (line 68) | class MasonryListComputer { method getPadding (line 101) | private getPadding(key: 'top' | 'bottom' | 'left' | 'right'): number { method getPaddingLeft (line 111) | private getPaddingLeft(): number { method getPaddingRight (line 115) | private getPaddingRight(): number { method getPaddingTop (line 119) | private getPaddingTop(): number { method getPaddingBottom (line 123) | private getPaddingBottom(): number { method getSectionGutter (line 127) | private getSectionGutter(): number { method mergeProps (line 131) | mergeProps(props: { method computeFullCoords (line 202) | private computeFullCoords(): void { method computeVisibleSections (line 332) | computeVisibleSections(start: number, end: number): void { method getMaxColumnHeight (line 397) | private getMaxColumnHeight(columnHeights: Array = this.columnH... method getState (line 401) | getState(): { FILE: fluxer_app/src/components/channel/MediaActionBottomSheet.tsx type MediaActionBottomSheetProps (line 30) | interface MediaActionBottomSheetProps { FILE: fluxer_app/src/components/channel/MemberListContainer.tsx type ScrollerResizeType (line 26) | type ScrollerResizeType = 'container' | 'content'; type MemberListContainerProps (line 28) | interface MemberListContainerProps { FILE: fluxer_app/src/components/channel/MemberListItem.tsx type MemberListItemProps (line 46) | interface MemberListItemProps { FILE: fluxer_app/src/components/channel/MentionEveryonePopout.tsx type MentionEveryonePopoutProps (line 29) | interface MentionEveryonePopoutProps { FILE: fluxer_app/src/components/channel/Message.tsx type MessageBehaviorOverrides (line 107) | type MessageBehaviorOverrides = Partial<{ type MessageProps (line 121) | interface MessageProps { FILE: fluxer_app/src/components/channel/MessageActionBar.tsx method subscribe (line 151) | subscribe(listener: () => void) { method getSnapshot (line 155) | getSnapshot(): Array { method getServerSnapshot (line 161) | getServerSnapshot(): Array { type MessageActionBarButtonProps (line 185) | interface MessageActionBarButtonProps { type QuickReactionButtonProps (line 233) | interface QuickReactionButtonProps { type MessageActionBarCoreProps (line 308) | interface MessageActionBarCoreProps { FILE: fluxer_app/src/components/channel/MessageActionBottomSheet.tsx type MessageActionBottomSheetProps (line 35) | interface MessageActionBottomSheetProps { FILE: fluxer_app/src/components/channel/MessageActionMenu.tsx type MessageActionMenuOptions (line 72) | interface MessageActionMenuOptions { type MessageActionMenuData (line 90) | interface MessageActionMenuData { FILE: fluxer_app/src/components/channel/MessageActionUtils.tsx function isEmbedsSuppressed (line 63) | function isEmbedsSuppressed(message: MessageRecord): boolean { function isClientSystemMessage (line 67) | function isClientSystemMessage(message: MessageRecord): boolean { function canReportMessage (line 71) | function canReportMessage(message: MessageRecord): boolean { function canDeleteAttachmentUtil (line 84) | function canDeleteAttachmentUtil(message: MessageRecord | undefined): bo... function requestOpenReactionPicker (line 92) | function requestOpenReactionPicker(messageId: string): void { function triggerAddReaction (line 96) | function triggerAddReaction(message: MessageRecord): boolean { type MessagePermissions (line 119) | interface MessagePermissions { function getMessagePermissionsFromStores (line 132) | function getMessagePermissionsFromStores(message: MessageRecord): Messag... function useMessagePermissions (line 207) | function useMessagePermissions(message: MessageRecord): MessagePermissio... type MessageActionHandlersOptions (line 220) | interface MessageActionHandlersOptions { type MessageActionHandlers (line 225) | interface MessageActionHandlers { function createMessageActionHandlers (line 242) | function createMessageActionHandlers( function startMessageEdit (line 381) | function startMessageEdit(message: MessageRecord): void { function requestDeleteMessage (line 392) | function requestDeleteMessage(message: MessageRecord, i18n: I18n, bypass... function requestMessagePin (line 401) | function requestMessagePin(message: MessageRecord, i18n: I18n, options: ... function requestMessageReply (line 438) | function requestMessageReply(message: MessageRecord, options?: {mention?... function requestMessageForward (line 449) | function requestMessageForward(message: MessageRecord): void { function requestCopyMessageText (line 462) | function requestCopyMessageText(message: MessageRecord, i18n: I18n): void { function requestMarkMessageUnread (line 467) | function requestMarkMessageUnread(message: MessageRecord): void { function requestCopyMessageLink (line 471) | function requestCopyMessageLink(message: MessageRecord, i18n: I18n): void { function requestCopyMessageId (line 486) | function requestCopyMessageId(message: MessageRecord, i18n: I18n): void { function requestToggleBookmark (line 490) | function requestToggleBookmark(message: MessageRecord, i18n: I18n): void { function requestToggleSuppressEmbeds (line 502) | function requestToggleSuppressEmbeds(message: MessageRecord, i18n: I18n)... function requestSpeakMessage (line 531) | function requestSpeakMessage(message: MessageRecord): void { FILE: fluxer_app/src/components/channel/MessageAttachmentStateUtils.tsx type AttachmentRenderingState (line 26) | interface AttachmentRenderingState { FILE: fluxer_app/src/components/channel/MessageAttachmentUtils.tsx constant IMAGE_TYPES (line 22) | const IMAGE_TYPES = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif'... constant VIDEO_TYPES (line 23) | const VIDEO_TYPES = ['video/mp4', 'video/webm', 'video/ogg', 'video/quic... constant AUDIO_TYPES (line 24) | const AUDIO_TYPES = ['audio/mpeg', 'audio/mp3', 'audio/ogg', 'audio/wav'... function isImageType (line 26) | function isImageType(contentType?: string): boolean { function isVideoType (line 30) | function isVideoType(contentType?: string): boolean { function isAudioType (line 34) | function isAudioType(contentType?: string): boolean { function splitMediaAndFileAttachments (line 47) | function splitMediaAndFileAttachments(attachments: ReadonlyArray(a: T, b: T): boolean { type MessageState (line 141) | interface MessageState extends MessagesStoreSnapshot { function LoadErrorBar (line 692) | function LoadErrorBar({loading, onRetry}: {loading: boolean; onRetry: ()... FILE: fluxer_app/src/components/channel/MobileMemesPicker.tsx type ContentType (line 53) | type ContentType = 'all' | 'image' | 'video' | 'audio' | 'gif'; type FilterOption (line 55) | interface FilterOption { type MemesPickerState (line 81) | interface MemesPickerState { type MobileMemesPickerProps (line 91) | interface MobileMemesPickerProps { type GridItemProps (line 295) | interface GridItemProps { type MemeActionBottomSheetProps (line 524) | interface MemeActionBottomSheetProps { FILE: fluxer_app/src/components/channel/MuteOptions.tsx type MuteDurationOption (line 30) | interface MuteDurationOption { type MuteDurationOptionDescriptor (line 35) | interface MuteDurationOptionDescriptor { constant FINITE_MUTE_DURATION_DESCRIPTORS (line 40) | const FINITE_MUTE_DURATION_DESCRIPTORS: ReadonlyArray & React.R... FILE: fluxer_app/src/components/channel/PremiumUpsellBanner.tsx type PremiumUpsellBannerProps (line 30) | interface PremiumUpsellBannerProps { constant COMMUNITY_ICON_LIMIT (line 38) | const COMMUNITY_ICON_LIMIT = 4; FILE: fluxer_app/src/components/channel/QuickReactionsRow.tsx function renderQuickReactionEmoji (line 27) | function renderQuickReactionEmoji(emoji: FlatEmoji): React.ReactNode { FILE: fluxer_app/src/components/channel/RecipientAddMessage.tsx type RecipientAddMessageProps (line 30) | interface RecipientAddMessageProps { FILE: fluxer_app/src/components/channel/RecipientRemoveMessage.tsx type RecipientRemoveMessageProps (line 30) | interface RecipientRemoveMessageProps { FILE: fluxer_app/src/components/channel/ReplyBar.tsx type ReplyBarProps (line 35) | interface ReplyBarProps { FILE: fluxer_app/src/components/channel/ScheduledMessageEditBar.tsx type ScheduledMessageEditBarProps (line 30) | interface ScheduledMessageEditBarProps { FILE: fluxer_app/src/components/channel/ScrollFillerSkeleton.tsx type Props (line 24) | interface Props { FILE: fluxer_app/src/components/channel/SearchResultsUtils.tsx type SearchMachineStateIdle (line 23) | interface SearchMachineStateIdle { type SearchMachineStateLoading (line 27) | interface SearchMachineStateLoading { type SearchMachineStateIndexing (line 31) | interface SearchMachineStateIndexing { type SearchMachineStateSuccess (line 36) | interface SearchMachineStateSuccess { type SearchMachineStateError (line 44) | interface SearchMachineStateError { type SearchMachineState (line 49) | type SearchMachineState = FILE: fluxer_app/src/components/channel/SearchScopeOptions.tsx type ScopeValueOption (line 26) | interface ScopeValueOption extends SearchValueOption { constant DEFAULT_SCOPE_VALUE (line 30) | const DEFAULT_SCOPE_VALUE: MessageSearchScope = 'current'; FILE: fluxer_app/src/components/channel/SlowmodeIndicator.tsx type SlowmodeIndicatorProps (line 27) | interface SlowmodeIndicatorProps { FILE: fluxer_app/src/components/channel/ThemeEmbed.tsx type ThemeEmbedProps (line 37) | interface ThemeEmbedProps { FILE: fluxer_app/src/components/channel/TimestampWithTooltip.tsx type TimestampWithTooltipProps (line 28) | interface TimestampWithTooltipProps { FILE: fluxer_app/src/components/channel/Typing.tsx type TypingProps (line 26) | interface TypingProps { FILE: fluxer_app/src/components/channel/TypingUsers.tsx constant SEVERAL_PEOPLE_DESCRIPTOR (line 40) | const SEVERAL_PEOPLE_DESCRIPTOR = msg`Several people are typing...`; constant HANDFUL_DESCRIPTOR (line 41) | const HANDFUL_DESCRIPTOR = msg`A handful of keyboard warriors are assemb... constant SYMPHONY_DESCRIPTOR (line 42) | const SYMPHONY_DESCRIPTOR = msg`A symphony of clacking keys is underway.... constant FIESTA_DESCRIPTOR (line 43) | const FIESTA_DESCRIPTOR = msg`It's a full-blown typing fiesta in here`; constant APOCALYPSE_DESCRIPTOR (line 44) | const APOCALYPSE_DESCRIPTOR = msg`Whoa, it's a typing apocalypse`; constant AVATAR_THRESHOLD (line 110) | const AVATAR_THRESHOLD = 5; FILE: fluxer_app/src/components/channel/UnreadDividerSlot.tsx type UnreadDividerSlotProps (line 25) | type UnreadDividerSlotProps = FILE: fluxer_app/src/components/channel/UploadManager.tsx constant UPLOAD_DROP_MODAL_KEY (line 38) | const UPLOAD_DROP_MODAL_KEY = 'upload-drop-modal'; FILE: fluxer_app/src/components/channel/UserMessage.tsx constant CUSTOM_EMOJI_MARKDOWN_PATTERN (line 64) | const CUSTOM_EMOJI_MARKDOWN_PATTERN = //g; FILE: fluxer_app/src/components/channel/UserTag.tsx type UserTagProps (line 25) | interface UserTagProps extends React.ComponentPropsWithoutRef<'span'> { FILE: fluxer_app/src/components/channel/VerificationBarrier.tsx type Props (line 34) | interface Props { FILE: fluxer_app/src/components/channel/VoiceMessageRecorder.tsx type StopAction (line 55) | type StopAction = 'send' | 'discard'; type VoiceMessageRecorderProps (line 73) | interface VoiceMessageRecorderProps { function VoiceMessageRecorder (line 79) | function VoiceMessageRecorder({channelId, disabled, tooltipAnchorRef}: V... FILE: fluxer_app/src/components/channel/active_now/useActiveFriendVoiceStates.tsx function useActiveFriendVoiceStates (line 31) | function useActiveFriendVoiceStates(): ReadonlyArray { FILE: fluxer_app/src/components/channel/barriers/BarrierComponents.tsx type BarrierProps (line 45) | interface BarrierProps { type TimedBarrierProps (line 49) | interface TimedBarrierProps extends BarrierProps { type BarrierBaseProps (line 53) | interface BarrierBaseProps { type BlockedUserBarrierProps (line 260) | interface BlockedUserBarrierProps extends BarrierProps { FILE: fluxer_app/src/components/channel/channel_header/useChannelHeaderData.tsx type ChannelHeaderData (line 28) | interface ChannelHeaderData { FILE: fluxer_app/src/components/channel/channel_header_components/ChannelHeaderIcon.tsx type ChannelHeaderIconProps (line 29) | interface ChannelHeaderIconProps { FILE: fluxer_app/src/components/channel/channel_header_components/ChannelNotificationSettingsButton.tsx type ChannelNotificationSettingsButtonProps (line 31) | interface ChannelNotificationSettingsButtonProps { FILE: fluxer_app/src/components/channel/channel_header_components/ChannelNotificationSettingsDropdown.tsx type Props (line 39) | interface Props { FILE: fluxer_app/src/components/channel/channel_header_components/ChannelPinsButton.tsx type ChannelPinsButtonProps (line 34) | interface ChannelPinsButtonProps { FILE: fluxer_app/src/components/channel/channel_view/ChannelViewScaffold.tsx type ChannelViewScaffoldProps (line 24) | interface ChannelViewScaffoldProps { FILE: fluxer_app/src/components/channel/channel_view/DMChannelView.tsx type DMChannelViewProps (line 87) | interface DMChannelViewProps { constant CALL_AVATAR_DEFAULT_SIZE (line 92) | const CALL_AVATAR_DEFAULT_SIZE = 64; constant CALL_AVATAR_MAX_SIZE (line 93) | const CALL_AVATAR_MAX_SIZE = 72; constant CALL_AVATAR_PADDING (line 94) | const CALL_AVATAR_PADDING = 12; constant CALL_AVATAR_LAYOUT_OFFSET (line 95) | const CALL_AVATAR_LAYOUT_OFFSET = 240; constant CALL_RINGING_AVATAR_ANIMATION (line 96) | const CALL_RINGING_AVATAR_ANIMATION = { constant CALL_RINGING_RIPPLE_ANIMATION (line 99) | const CALL_RINGING_RIPPLE_ANIMATION = { constant CALL_RINGING_BREATH_TIMES (line 103) | const CALL_RINGING_BREATH_TIMES = [0, 0.16, 0.34, 0.52, 0.7, 0.86, 1]; constant CALL_RINGING_DURATION_SECONDS (line 104) | const CALL_RINGING_DURATION_SECONDS = 3.2; constant CALL_AVATAR_SPRING (line 105) | const CALL_AVATAR_SPRING = {stiffness: 520, damping: 34, mass: 0.6} as c... constant COMPACT_CALL_RESIZE_DRAG_THRESHOLD_SQ (line 106) | const COMPACT_CALL_RESIZE_DRAG_THRESHOLD_SQ = 9; constant COMPACT_CALL_RESIZE_VIEWPORT_MARGIN (line 107) | const COMPACT_CALL_RESIZE_VIEWPORT_MARGIN = 32; constant COMPACT_CALL_RESIZE_STEP (line 108) | const COMPACT_CALL_RESIZE_STEP = 16; function getFullscreenElement (line 110) | function getFullscreenElement(): Element | null { function getCompactCallHeightKey (line 121) | function getCompactCallHeightKey(channelId: string, callMessageId: strin... function getCompactCallHeightMax (line 125) | function getCompactCallHeightMax(compactHeightMin: number): number { type CallParticipant (line 130) | interface CallParticipant { type CallParticipantsRowProps (line 135) | interface CallParticipantsRowProps { type CompactCallResizeListeners (line 142) | interface CompactCallResizeListeners { type CompactCallResizeState (line 147) | interface CompactCallResizeState { type CallControlRenderMode (line 155) | type CallControlRenderMode = 'mobile' | 'voiceControlBar'; type CallControlTone (line 156) | type CallControlTone = 'primary' | 'secondary' | 'danger'; FILE: fluxer_app/src/components/channel/channel_view/GuildChannelView.tsx type GuildChannelViewProps (line 57) | interface GuildChannelViewProps { FILE: fluxer_app/src/components/channel/channel_view/useCallHeaderState.tsx type CallHeaderControlsVariant (line 26) | type CallHeaderControlsVariant = 'hidden' | 'inCall' | 'incoming' | 'con... type CallHeaderState (line 28) | interface CallHeaderState { function useCallHeaderState (line 37) | function useCallHeaderState(channel?: ChannelRecord | null): CallHeaderS... FILE: fluxer_app/src/components/channel/channel_view/useChannelSearchState.tsx type UseChannelSearchStateReturn (line 26) | interface UseChannelSearchStateReturn { FILE: fluxer_app/src/components/channel/direct_message/AddFriendForm.tsx type AddFriendFormProps (line 38) | interface AddFriendFormProps { FILE: fluxer_app/src/components/channel/direct_message/DMFriendsView.tsx type TabButtonProps (line 44) | interface TabButtonProps extends Omit { constant HIGHLIGHT_LANGUAGE_OPTIONS (line 136) | const HIGHLIGHT_LANGUAGE_OPTIONS = buildHighlightLanguageOptions(); constant AUTO_HIGHLIGHT_LANGUAGES (line 137) | const AUTO_HIGHLIGHT_LANGUAGES = highlight.listLanguages(); function escapeHtml (line 139) | function escapeHtml(value: string): string { function getAttachmentFileName (line 143) | function getAttachmentFileName(attachment: MessageAttachment): string { function getFileExtension (line 147) | function getFileExtension(fileName: string): string | null { function inferLanguageCodeFromAttachment (line 155) | function inferLanguageCodeFromAttachment(attachment: MessageAttachment):... function getInitialSelectedLanguage (line 170) | function getInitialSelectedLanguage(attachment: MessageAttachment, infer... function getLineCount (line 183) | function getLineCount(textContent: string | null): number { function getVisibleLineCount (line 190) | function getVisibleLineCount(lineCount: number, isExpanded: boolean): nu... function highlightTextContent (line 202) | function highlightTextContent(selectedLanguage: string, textContent: str... FILE: fluxer_app/src/components/channel/embeds/media/EmbedAudio.tsx type EmbedAudioProps (line 41) | type EmbedAudioProps = BaseMediaProps & { FILE: fluxer_app/src/components/channel/embeds/media/EmbedGifv.tsx type GifvEmbedProps (line 52) | type GifvEmbedProps = BaseMediaProps & { type VideoConfig (line 60) | interface VideoConfig { function useEmbedMediaCalculator (line 69) | function useEmbedMediaCalculator() { type ImagePreviewHandlerProps (line 157) | interface ImagePreviewHandlerProps { FILE: fluxer_app/src/components/channel/embeds/media/EmbedImage.tsx constant IMAGE_CONFIG (line 46) | const IMAGE_CONFIG = { type ImagePreviewHandlerProps (line 55) | interface ImagePreviewHandlerProps { type EmbedImageProps (line 72) | type EmbedImageProps = React.ImgHTMLAttributes & FILE: fluxer_app/src/components/channel/embeds/media/EmbedVideo.tsx constant VIDEO_CONFIG (line 54) | const VIDEO_CONFIG = { type EmbedVideoProps (line 63) | type EmbedVideoProps = BaseMediaProps & { FILE: fluxer_app/src/components/channel/embeds/media/EmbedYouTube.tsx constant YOUTUBE_CONFIG (line 34) | const YOUTUBE_CONFIG = { type EmbedYouTubeProps (line 45) | interface EmbedYouTubeProps { type ThumbnailProps (line 50) | interface ThumbnailProps { FILE: fluxer_app/src/components/channel/embeds/media/MediaButtonUtils.tsx type MediaButtonVisibilityOptions (line 24) | interface MediaButtonVisibilityOptions { type MediaButtonVisibility (line 28) | interface MediaButtonVisibility { function getMediaButtonVisibility (line 34) | function getMediaButtonVisibility( FILE: fluxer_app/src/components/channel/embeds/media/MediaButtons.tsx type OverlayPlayButtonProps (line 24) | interface OverlayPlayButtonProps { type OverlayActionButtonProps (line 36) | interface OverlayActionButtonProps { FILE: fluxer_app/src/components/channel/embeds/media/MediaContainer.tsx constant MIN_SIZE_FOR_OVERLAYS (line 30) | const MIN_SIZE_FOR_OVERLAYS = 120; type LongPressEvent (line 39) | type LongPressEvent = React.PointerEvent | React.TouchEv... type MediaContainerProps (line 41) | interface MediaContainerProps { FILE: fluxer_app/src/components/channel/embeds/media/MediaTypes.tsx type BaseMediaProps (line 22) | interface BaseMediaProps { type MediaContext (line 33) | interface MediaContext { FILE: fluxer_app/src/components/channel/embeds/media/VoiceMessagePlayer.tsx type VoiceMessagePlayerProps (line 45) | interface VoiceMessagePlayerProps extends BaseMediaProps { function decodeWaveform (line 55) | function decodeWaveform(waveform: string): Array { function normaliseWaveform (line 69) | function normaliseWaveform(values: Array): Array { function formatTime (line 81) | function formatTime(time: number): string { FILE: fluxer_app/src/components/channel/emoji_picker/EmojiPickerCategoryList.tsx type EmojiPickerCategoryListProps (line 32) | interface EmojiPickerCategoryListProps { FILE: fluxer_app/src/components/channel/emoji_picker/EmojiPickerConstants.tsx constant EMOJI_CLAP (line 22) | const EMOJI_CLAP = '\u{1F44F}'; constant EMOJI_SPRITE_SIZE (line 23) | const EMOJI_SPRITE_SIZE = 32; constant EMOJI_ROW_HEIGHT (line 24) | const EMOJI_ROW_HEIGHT = 48; constant EMOJI_PICKER_CUSTOM_EMOJI_SIZE (line 25) | const EMOJI_PICKER_CUSTOM_EMOJI_SIZE = 48; constant CATEGORY_HEADER_HEIGHT (line 26) | const CATEGORY_HEADER_HEIGHT = 32; constant EMOJIS_PER_ROW (line 27) | const EMOJIS_PER_ROW = 9; constant OVERSCAN_ROWS (line 28) | const OVERSCAN_ROWS = 5; type SpriteSheetOptions (line 30) | interface SpriteSheetOptions { type SpriteSheetVariant (line 34) | interface SpriteSheetVariant { constant SPRITE_BASE (line 39) | const SPRITE_BASE = 'https://fluxerstatic.com/emoji'; constant SPRITE_VERSION (line 40) | const SPRITE_VERSION = '2'; constant SPRITE_SHEET_RESOURCES (line 53) | const SPRITE_SHEET_RESOURCES: Record = { FILE: fluxer_app/src/components/channel/emoji_picker/EmojiPickerInspector.tsx type EmojiPickerInspectorProps (line 28) | interface EmojiPickerInspectorProps { FILE: fluxer_app/src/components/channel/emoji_picker/EmojiPickerSearchBar.tsx type EmojiPickerSearchBarProps (line 29) | interface EmojiPickerSearchBarProps { FILE: fluxer_app/src/components/channel/emoji_picker/EmojiRenderer.tsx type EmojiRendererProps (line 45) | interface EmojiRendererProps { FILE: fluxer_app/src/components/channel/emoji_picker/SkinToneSelector.tsx type SkinTonePickerProps (line 33) | interface SkinTonePickerProps { type SkinTonePickerButtonProps (line 90) | interface SkinTonePickerButtonProps { FILE: fluxer_app/src/components/channel/emoji_picker/VirtualRow.tsx type VirtualRow (line 37) | type VirtualRow = type VirtualRowRendererProps (line 41) | interface VirtualRowRendererProps { type VirtualizedRowProps (line 192) | interface VirtualizedRowProps { FILE: fluxer_app/src/components/channel/emoji_picker/hooks/useEmojiCategories.tsx function useEmojiCategories (line 26) | function useEmojiCategories( FILE: fluxer_app/src/components/channel/emoji_picker/hooks/useVirtualRows.tsx function useVirtualRows (line 29) | function useVirtualRows( FILE: fluxer_app/src/components/channel/friends/FriendListItem.tsx type FriendAction (line 56) | interface FriendAction { type FriendListItemProps (line 64) | interface FriendListItemProps { FILE: fluxer_app/src/components/channel/friends/FriendsTypes.tsx type FriendsTab (line 20) | type FriendsTab = 'online' | 'all' | 'pending' | 'add'; FILE: fluxer_app/src/components/channel/friends/MobileFriendRequestItem.tsx type MobileFriendRequestItemProps (line 40) | interface MobileFriendRequestItemProps { FILE: fluxer_app/src/components/channel/friends/views/FriendsList.tsx type FriendsListProps (line 35) | interface FriendsListProps { FILE: fluxer_app/src/components/channel/friends/views/PendingFriendsView.tsx type PendingFriendsViewProps (line 33) | interface PendingFriendsViewProps { FILE: fluxer_app/src/components/channel/invite_embed/InviteEmbedUtils.tsx function getGroupDMTitle (line 24) | function getGroupDMTitle(channel: Channel, unnamedGroupLabel: string): s... function getChannelDisplayName (line 28) | function getChannelDisplayName(channel: Channel, unnamedGroupLabel: stri... type InviteGuild (line 46) | type InviteGuild = Guild | GuildRecord; FILE: fluxer_app/src/components/channel/message_search_bar/AutocompleteOption.tsx type AutocompleteOptionProps (line 26) | interface AutocompleteOptionProps { FILE: fluxer_app/src/components/channel/message_search_bar/ChannelsSection.tsx type ChannelsSectionProps (line 29) | interface ChannelsSectionProps { FILE: fluxer_app/src/components/channel/message_search_bar/DateSection.tsx type DateSectionProps (line 28) | interface DateSectionProps { FILE: fluxer_app/src/components/channel/message_search_bar/FilterOption.tsx type FilterOptionProps (line 28) | interface FilterOptionProps { type FiltersSectionProps (line 86) | interface FiltersSectionProps { FILE: fluxer_app/src/components/channel/message_search_bar/HistorySection.tsx type HistorySectionProps (line 31) | interface HistorySectionProps { FILE: fluxer_app/src/components/channel/message_search_bar/MessageSearchBar.tsx constant SCOPE_ICON_COMPONENTS (line 73) | const SCOPE_ICON_COMPONENTS: Record): Array(ref: React.Ref | undefined, value: T | null): v... function normalizeFilterKey (line 138) | function normalizeFilterKey(filterKey: string): string { function isDateFilterKey (line 142) | function isDateFilterKey(filterKey: string): boolean { function isUserFilterKey (line 154) | function isUserFilterKey(filterKey: string): boolean { type GuildSearchMode (line 164) | type GuildSearchMode = 'none' | 'current_guild' | 'all_guilds'; type UserGuildSearchPlan (line 166) | interface UserGuildSearchPlan { function getUserGuildSearchPlan (line 173) | function getUserGuildSearchPlan(scope: MessageSearchScope, currentGuildI... type MemberSearchBoosters (line 222) | type MemberSearchBoosters = Record; function buildUserSearchBoosters (line 224) | function buildUserSearchBoosters( method apply (line 552) | apply({rects, elements}) { FILE: fluxer_app/src/components/channel/message_search_bar/UsersSection.tsx type UsersSectionProps (line 31) | interface UsersSectionProps { FILE: fluxer_app/src/components/channel/message_search_bar/ValuesSection.tsx type ValuesSectionProps (line 28) | interface ValuesSectionProps { FILE: fluxer_app/src/components/channel/pickers/gif/GifPicker.tsx type GifPickerProps (line 23) | interface GifPickerProps { FILE: fluxer_app/src/components/channel/pickers/gif/GifPickerGrid.tsx constant CATEGORY_TILE_WIDTH (line 36) | const CATEGORY_TILE_WIDTH = 200; constant CATEGORY_TILE_HEIGHT (line 37) | const CATEGORY_TILE_HEIGHT = 96; function buildSkeletonItems (line 39) | function buildSkeletonItems(count: number): Array { FILE: fluxer_app/src/components/channel/pickers/gif/GifPickerGridItem.tsx constant VIDEO_FILE_EXTENSION_REGEX (line 41) | const VIDEO_FILE_EXTENSION_REGEX = /\.(mp4|webm|mov|m4v)(?:$|\?)/iu; function isVideoSourceUrl (line 43) | function isVideoSourceUrl(value: string): boolean { function GifPickerGridItem (line 52) | function GifPickerGridItem({ FILE: fluxer_app/src/components/channel/pickers/gif/GifPickerStore.tsx class GifPickerStore (line 26) | class GifPickerStore { method constructor (line 47) | constructor() { method dispose (line 62) | dispose() { method isLandingPage (line 68) | get isLandingPage(): boolean { method isShowingFeatured (line 72) | get isShowingFeatured(): boolean { method gifsToRender (line 76) | get gifsToRender(): Array { method shouldShowNoResults (line 80) | get shouldShowNoResults(): boolean { method goToDefaultView (line 93) | goToDefaultView() { method goToTrending (line 104) | goToTrending() { method ensureFeaturedLoaded (line 123) | async ensureFeaturedLoaded() { method loadTrending (line 149) | private async loadTrending() { method setSearchTerm (line 172) | setSearchTerm(term: string) { method resetSearch (line 192) | resetSearch() { method triggerSuggestions (line 205) | triggerSuggestions() { method flushSearch (line 216) | flushSearch() { method performSearch (line 226) | private async performSearch(term: string) { method performSuggest (line 252) | private async performSuggest(term: string) { FILE: fluxer_app/src/components/channel/pickers/gif/GifPickerTypes.tsx type View (line 22) | type View = 'default' | 'trending'; type GifPickerGridItemData (line 23) | type GifPickerGridItemData = FILE: fluxer_app/src/components/channel/pickers/memes/MemesPicker.tsx type MemesPickerProps (line 23) | interface MemesPickerProps { FILE: fluxer_app/src/components/channel/pickers/memes/MemesPickerHeader.tsx type ContentType (line 27) | type ContentType = 'all' | 'image' | 'video' | 'audio' | 'gif'; type FilterOption (line 29) | interface FilterOption { function MemesPickerHeader (line 35) | function MemesPickerHeader({ FILE: fluxer_app/src/components/channel/pickers/memes/MemesPickerView.tsx type MemesPickerState (line 40) | interface MemesPickerState { FILE: fluxer_app/src/components/channel/pickers/shared/ComputeColumns.tsx type ComputeColumnsOptions (line 20) | interface ComputeColumnsOptions { function computeMasonryColumns (line 26) | function computeMasonryColumns( FILE: fluxer_app/src/components/channel/pickers/shared/MasonryVirtualGrid.tsx type VisibleItemTuple (line 26) | type VisibleItemTuple = [itemKey: string, sectionIndex: number, itemInde... type Coords (line 28) | interface Coords { type CoordsMap (line 37) | type CoordsMap = Record; type VisibleSections (line 38) | type VisibleSections = Record>; type GridCoordinates (line 40) | interface GridCoordinates { type GridData (line 46) | interface GridData { type MasonryExtraSection (line 51) | interface MasonryExtraSection { constant EMPTY_EXTRA_SECTIONS (line 57) | const EMPTY_EXTRA_SECTIONS: ReadonlyArray = []; function MasonryVirtualGrid (line 59) | function MasonryVirtualGrid({ FILE: fluxer_app/src/components/channel/pickers/shared/PickerConstants.tsx constant MASONRY_OVERSCAN_PX (line 20) | const MASONRY_OVERSCAN_PX = 480; constant MASONRY_PADDING_PX (line 21) | const MASONRY_PADDING_PX = 12; FILE: fluxer_app/src/components/channel/pickers/shared/usePooledVideo.tsx type GifVideoPoolLike (line 22) | interface GifVideoPoolLike { function usePooledVideo (line 30) | function usePooledVideo({ FILE: fluxer_app/src/components/channel/pickers/shared/useScrollerViewport.tsx type ResizeType (line 23) | type ResizeType = 'container' | 'content'; function useScrollerViewport (line 25) | function useScrollerViewport(scrollerRef: React.RefObject & { FILE: fluxer_app/src/components/common/FriendSelector.tsx type FriendSelectorProps (line 39) | interface FriendSelectorProps { type FriendGroup (line 50) | interface FriendGroup { FILE: fluxer_app/src/components/common/GroupDMAvatar.tsx function computeGroupStatus (line 43) | function computeGroupStatus(channel: ChannelRecord): string | null { function renderGroupStatusDot (line 56) | function renderGroupStatusDot(status: string | null, size: number, isTyp... function renderTypingCutouts (line 138) | function renderTypingCutouts(layout: AvatarStatusLayout): Array = Omit & { type RenderInputArgs (line 78) | interface RenderInputArgs { type InputProps (line 85) | type InputProps = React.InputHTMLAttributes & { type TextareaProps (line 282) | type TextareaProps = React.TextareaHTMLAttributes & { FILE: fluxer_app/src/components/form/Select.tsx type Primitive (line 44) | type Primitive = string | number | null; type SelectOption (line 46) | interface SelectOption { type SelectGroup (line 52) | type SelectGroup> = Group... type ReactSelectProps (line 53) | type ReactSelectProps... FILE: fluxer_app/src/components/form/Switch.tsx type SwitchProps (line 28) | interface SwitchProps { FILE: fluxer_app/src/components/form/UsernameValidationRules.tsx constant FLUXER_TAG_REGEX (line 27) | const FLUXER_TAG_REGEX = /^[a-zA-Z0-9_]+$/; type UsernameValidationResult (line 29) | interface UsernameValidationResult { function validateUsername (line 35) | function validateUsername(username: string): UsernameValidationResult { type UsernameValidationRulesProps (line 49) | interface UsernameValidationRulesProps { FILE: fluxer_app/src/components/guild/GuildBadge.tsx type GuildBadgeProps (line 26) | interface GuildBadgeProps { function hasFeature (line 33) | function hasFeature(features: ReadonlySet | ReadonlyArray { function exitFullscreenAPI (line 88) | async function exitFullscreenAPI(): Promise { function useMediaFullscreen (line 101) | function useMediaFullscreen(options: UseMediaFullscreenOptions): UseMedi... FILE: fluxer_app/src/components/media_player/hooks/useMediaKeyboard.tsx type UseMediaKeyboardOptions (line 23) | interface UseMediaKeyboardOptions { type UseMediaKeyboardReturn (line 38) | interface UseMediaKeyboardReturn { function keyMatches (line 42) | function keyMatches(key: string, keys: ReadonlyArray): boolean { constant PLAY_PAUSE_KEYS (line 46) | const PLAY_PAUSE_KEYS = ['Space', 'k', 'K'] as const; constant SEEK_BACKWARD_KEYS (line 47) | const SEEK_BACKWARD_KEYS = ['ArrowLeft', 'j', 'J'] as const; constant SEEK_FORWARD_KEYS (line 48) | const SEEK_FORWARD_KEYS = ['ArrowRight', 'l', 'L'] as const; constant VOLUME_UP_KEYS (line 49) | const VOLUME_UP_KEYS = ['ArrowUp'] as const; constant VOLUME_DOWN_KEYS (line 50) | const VOLUME_DOWN_KEYS = ['ArrowDown'] as const; constant MUTE_KEYS (line 51) | const MUTE_KEYS = ['m', 'M'] as const; constant FULLSCREEN_KEYS (line 52) | const FULLSCREEN_KEYS = ['f', 'F'] as const; constant SEEK_PERCENTAGE_KEYS (line 53) | const SEEK_PERCENTAGE_KEYS = ['0', '1', '2', '3', '4', '5', '6', '7', '8... function useMediaKeyboard (line 55) | function useMediaKeyboard(options: UseMediaKeyboardOptions): UseMediaKey... FILE: fluxer_app/src/components/media_player/hooks/useMediaPiP.tsx type UseMediaPiPOptions (line 26) | interface UseMediaPiPOptions { type UseMediaPiPReturn (line 31) | interface UseMediaPiPReturn { function useMediaPiP (line 39) | function useMediaPiP(options: UseMediaPiPOptions): UseMediaPiPReturn { FILE: fluxer_app/src/components/media_player/hooks/useMediaPlayer.tsx constant VOLUME_STORAGE_KEY (line 24) | const VOLUME_STORAGE_KEY = 'fluxer:media:volume'; constant MUTE_STORAGE_KEY (line 25) | const MUTE_STORAGE_KEY = 'fluxer:media:muted'; constant PLAYBACK_RATE_STORAGE_KEY (line 26) | const PLAYBACK_RATE_STORAGE_KEY = 'fluxer:media:playbackRate'; type MediaPlayerState (line 30) | interface MediaPlayerState { type UseMediaPlayerOptions (line 45) | interface UseMediaPlayerOptions { type UseMediaPlayerReturn (line 61) | interface UseMediaPlayerReturn { function getStoredVolume (line 75) | function getStoredVolume(): number { function getStoredMuted (line 88) | function getStoredMuted(): boolean { function getStoredPlaybackRate (line 96) | function getStoredPlaybackRate(): number { function storeVolume (line 109) | function storeVolume(volume: number): void { function storeMuted (line 115) | function storeMuted(muted: boolean): void { function storePlaybackRate (line 121) | function storePlaybackRate(rate: number): void { function useMediaPlayer (line 138) | function useMediaPlayer(options: UseMediaPlayerOptions = {}): UseMediaPl... FILE: fluxer_app/src/components/media_player/hooks/useMediaProgress.tsx type UseMediaProgressOptions (line 22) | interface UseMediaProgressOptions { type UseMediaProgressReturn (line 29) | interface UseMediaProgressReturn { function getBufferedPercentage (line 41) | function getBufferedPercentage(media: HTMLMediaElement): number { function useMediaProgress (line 66) | function useMediaProgress(options: UseMediaProgressOptions): UseMediaPro... FILE: fluxer_app/src/components/media_player/hooks/useMediaVolume.tsx type UseMediaVolumeOptions (line 23) | interface UseMediaVolumeOptions { type UseMediaVolumeReturn (line 32) | interface UseMediaVolumeReturn { function getStoredVolume (line 43) | function getStoredVolume(): number { function getStoredMuted (line 56) | function getStoredMuted(): boolean { function storeVolume (line 64) | function storeVolume(volume: number): void { function storeMuted (line 70) | function storeMuted(muted: boolean): void { function useMediaVolume (line 76) | function useMediaVolume(options: UseMediaVolumeOptions): UseMediaVolumeR... FILE: fluxer_app/src/components/media_player/utils/MediaConstants.tsx constant AUDIO_PLAYBACK_RATES (line 20) | const AUDIO_PLAYBACK_RATES = [1, 1.5, 2, 0.75] as const; constant DEFAULT_SEEK_AMOUNT (line 21) | const DEFAULT_SEEK_AMOUNT = 10; constant DEFAULT_VOLUME (line 22) | const DEFAULT_VOLUME = 1; constant PLAYBACK_RATES (line 23) | const PLAYBACK_RATES = [1, 1.5, 2, 0.75] as const; constant VIDEO_PLAYBACK_RATES (line 24) | const VIDEO_PLAYBACK_RATES = [1, 1.5, 2, 0.75] as const; constant VIDEO_BREAKPOINTS (line 25) | const VIDEO_BREAKPOINTS = { constant VOLUME_STEP (line 31) | const VOLUME_STEP = 0.1; constant SEEK_STEP (line 33) | const SEEK_STEP = 10; constant VOLUME_STORAGE_KEY (line 35) | const VOLUME_STORAGE_KEY = 'fluxer:media_player:volume'; constant MUTE_STORAGE_KEY (line 37) | const MUTE_STORAGE_KEY = 'fluxer:media_player:muted'; constant PLAYBACK_RATE_STORAGE_KEY (line 39) | const PLAYBACK_RATE_STORAGE_KEY = 'fluxer:media_player:playback-rate'; FILE: fluxer_app/src/components/modals/AccountDeleteModal.tsx type FormInputs (line 33) | interface FormInputs { FILE: fluxer_app/src/components/modals/AccountDisableModal.tsx type FormInputs (line 34) | interface FormInputs { FILE: fluxer_app/src/components/modals/AddConnectionModal.tsx constant COPY_RESET_DELAY_MS (line 40) | const COPY_RESET_DELAY_MS = 2000; type CopyButtonProps (line 42) | interface CopyButtonProps { type InitiateFormInputs (line 61) | interface InitiateFormInputs { type VerifyFormInputs (line 65) | interface VerifyFormInputs { type AddConnectionModalProps (line 69) | interface AddConnectionModalProps { FILE: fluxer_app/src/components/modals/AddFavoriteChannelModal.tsx type ChannelWithCategory (line 41) | interface ChannelWithCategory { FILE: fluxer_app/src/components/modals/AddFavoriteMemeModal.tsx type AddFavoriteMemeModalProps (line 32) | interface AddFavoriteMemeModalProps { type FormInputs (line 41) | interface FormInputs { FILE: fluxer_app/src/components/modals/AddFriendSheet.tsx type AddFriendSheetProps (line 31) | interface AddFriendSheetProps { FILE: fluxer_app/src/components/modals/AddFriendsToGroupModal.tsx type AddFriendsToGroupModalProps (line 32) | interface AddFriendsToGroupModalProps { FILE: fluxer_app/src/components/modals/AddGuildModal.tsx type GuildCreateFormInputs (line 48) | interface GuildCreateFormInputs { type GuildJoinFormInputs (line 53) | interface GuildJoinFormInputs { type ModalFooterContextValue (line 57) | interface ModalFooterContextValue { type AddGuildModalView (line 61) | type AddGuildModalView = 'landing' | 'create_guild' | 'join_guild'; FILE: fluxer_app/src/components/modals/AddGuildStickerModal.tsx type AddGuildStickerModalProps (line 39) | interface AddGuildStickerModalProps { type FormInputs (line 45) | interface FormInputs { FILE: fluxer_app/src/components/modals/AssetCropModal.tsx type AssetType (line 36) | type AssetType = ValueOf; type AssetConfig (line 38) | interface AssetConfig { constant ASSET_CONFIGS (line 48) | const ASSET_CONFIGS: Record = { type AssetCropModalProps (line 224) | interface AssetCropModalProps { FILE: fluxer_app/src/components/modals/AttachmentEditModal.tsx type FormInputs (line 36) | interface FormInputs { FILE: fluxer_app/src/components/modals/AudioPlaybackPermissionModal.tsx type AudioPlaybackPermissionModalProps (line 24) | interface AudioPlaybackPermissionModalProps { FILE: fluxer_app/src/components/modals/BackgroundImageGalleryModal.tsx type BackgroundImage (line 56) | interface BackgroundImage { type BuiltInBackground (line 61) | interface BuiltInBackground { type BackgroundItemType (line 69) | type BackgroundItemType = BuiltInBackground | BackgroundImage; constant MAX_FILE_SIZE (line 71) | const MAX_FILE_SIZE = 10 * 1024 * 1024; constant ALLOWED_MIME_TYPES (line 72) | const ALLOWED_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'ima... type BackgroundItemProps (line 74) | interface BackgroundItemProps { FILE: fluxer_app/src/components/modals/BackupCodesModal.tsx type BackupCodesModalProps (line 33) | interface BackupCodesModalProps { FILE: fluxer_app/src/components/modals/BackupCodesRegenerateModal.tsx type FormInputs (line 35) | interface FormInputs { type BackupCodesRegenerateModalProps (line 39) | interface BackupCodesRegenerateModalProps { FILE: fluxer_app/src/components/modals/BackupCodesViewModal.tsx type FormInputs (line 34) | interface FormInputs { type BackupCodesViewModalProps (line 38) | interface BackupCodesViewModalProps { FILE: fluxer_app/src/components/modals/BanDetailsModal.tsx type BanDetailsModalProps (line 34) | interface BanDetailsModalProps { FILE: fluxer_app/src/components/modals/BanMemberModal.tsx type SelectOption (line 41) | interface SelectOption { FILE: fluxer_app/src/components/modals/BaseChangeNicknameModal.tsx type FormInputs (line 37) | interface FormInputs { type BaseChangeNicknameModalProps (line 41) | interface BaseChangeNicknameModalProps { FILE: fluxer_app/src/components/modals/BookmarksBottomSheet.tsx type BookmarksBottomSheetProps (line 40) | interface BookmarksBottomSheetProps { type MessageWithLongPressProps (line 154) | interface MessageWithLongPressProps { FILE: fluxer_app/src/components/modals/CameraPreviewModal.tsx type CameraPreviewModalProps (line 48) | interface CameraPreviewModalProps { type VideoResolutionPreset (line 56) | interface VideoResolutionPreset { constant TARGET_ASPECT_RATIO (line 62) | const TARGET_ASPECT_RATIO = 16 / 9; constant ASPECT_RATIO_TOLERANCE (line 63) | const ASPECT_RATIO_TOLERANCE = 0.1; constant RESOLUTION_WAIT_TIMEOUT (line 64) | const RESOLUTION_WAIT_TIMEOUT = 2000; constant RESOLUTION_CHECK_INTERVAL (line 65) | const RESOLUTION_CHECK_INTERVAL = 100; constant VIDEO_ELEMENT_WAIT_TIMEOUT (line 66) | const VIDEO_ELEMENT_WAIT_TIMEOUT = 5000; constant VIDEO_ELEMENT_CHECK_INTERVAL (line 67) | const VIDEO_ELEMENT_CHECK_INTERVAL = 10; constant CAMERA_RESOLUTION_PRESETS (line 69) | const CAMERA_RESOLUTION_PRESETS: Record<'low' | 'medium' | 'high', Video... FILE: fluxer_app/src/components/modals/CaptchaModal.tsx type CaptchaType (line 34) | type CaptchaType = 'turnstile' | 'hcaptcha'; type HCaptchaComponentProps (line 36) | interface HCaptchaComponentProps { type CaptchaModalProps (line 47) | interface CaptchaModalProps { FILE: fluxer_app/src/components/modals/CategoryCreateModal.tsx type FormInputs (line 32) | interface FormInputs { FILE: fluxer_app/src/components/modals/ChangeFriendNicknameModal.tsx type ChangeFriendNicknameModalProps (line 28) | interface ChangeFriendNicknameModalProps { FILE: fluxer_app/src/components/modals/ChangeGroupDMNicknameModal.tsx type ChangeGroupDMNicknameModalProps (line 28) | interface ChangeGroupDMNicknameModalProps { FILE: fluxer_app/src/components/modals/ChangeNicknameModal.tsx type ChangeNicknameModalProps (line 29) | interface ChangeNicknameModalProps { FILE: fluxer_app/src/components/modals/ClaimAccountModal.tsx type FormInputs (line 38) | interface FormInputs { type Stage (line 44) | type Stage = 'collect' | 'verify'; constant CLAIM_ACCOUNT_MODAL_KEY (line 234) | const CLAIM_ACCOUNT_MODAL_KEY = 'claim-account-modal'; FILE: fluxer_app/src/components/modals/ConfirmModal.tsx type ConfirmModalCheckboxProps (line 33) | interface ConfirmModalCheckboxProps { type ConfirmModalPrimaryVariant (line 38) | type ConfirmModalPrimaryVariant = 'primary' | 'danger-primary'; type ConfirmModalProps (line 40) | type ConfirmModalProps = FILE: fluxer_app/src/components/modals/CreateFavoriteCategoryModal.tsx type FormInputs (line 31) | interface FormInputs { FILE: fluxer_app/src/components/modals/CreatePackModal.tsx type FormInputs (line 33) | interface FormInputs { type CreatePackModalProps (line 38) | interface CreatePackModalProps { FILE: fluxer_app/src/components/modals/CustomStatusBottomSheet.tsx constant CUSTOM_STATUS_SNAP_POINTS (line 49) | const CUSTOM_STATUS_SNAP_POINTS: Array = [0, 1]; type ExpiryOption (line 51) | interface ExpiryOption { type CustomStatusBottomSheetProps (line 57) | interface CustomStatusBottomSheetProps { FILE: fluxer_app/src/components/modals/CustomStatusModal.tsx constant MS_PER_MINUTE (line 58) | const MS_PER_MINUTE = 60 * 1000; type TimeLabel (line 60) | interface TimeLabel { type ExpirationPreset (line 65) | interface ExpirationPreset { type ExpirationOption (line 71) | interface ExpirationOption { constant DEFAULT_EXPIRATION_KEY (line 79) | const DEFAULT_EXPIRATION_KEY: TimeWindowKey = DEFAULT_TIME_WINDOW_KEY; FILE: fluxer_app/src/components/modals/DeviceRevokeModal.tsx type DeviceRevokeModalProps (line 32) | interface DeviceRevokeModalProps { type FormInputs (line 36) | interface FormInputs { FILE: fluxer_app/src/components/modals/DuplicateGroupConfirmModal.tsx type DuplicateGroupConfirmModalProps (line 34) | interface DuplicateGroupConfirmModalProps { FILE: fluxer_app/src/components/modals/EditAltTextModal.tsx type FormInputs (line 40) | interface FormInputs { type EditAltTextModalProps (line 44) | interface EditAltTextModalProps { function handleKeyDown (line 108) | function handleKeyDown(event: KeyboardEvent) { FILE: fluxer_app/src/components/modals/EditConnectionModal.tsx type Props (line 31) | interface Props { FILE: fluxer_app/src/components/modals/EditFavoriteMemeModal.tsx type EditFavoriteMemeModalProps (line 34) | interface EditFavoriteMemeModalProps { type FormInputs (line 38) | interface FormInputs { FILE: fluxer_app/src/components/modals/EditGroupBottomSheet.tsx type FormInputs (line 43) | interface FormInputs { type EditGroupBottomSheetProps (line 48) | interface EditGroupBottomSheetProps { FILE: fluxer_app/src/components/modals/EditGroupModal.tsx type FormInputs (line 42) | interface FormInputs { FILE: fluxer_app/src/components/modals/EditGuildStickerModal.tsx type EditGuildStickerModalProps (line 40) | interface EditGuildStickerModalProps { type FormInputs (line 46) | interface FormInputs { FILE: fluxer_app/src/components/modals/EditPackModal.tsx type FormInputs (line 34) | interface FormInputs { type EditPackModalProps (line 39) | interface EditPackModalProps { FILE: fluxer_app/src/components/modals/EmailChangeModal.tsx type Stage (line 35) | type Stage = 'intro' | 'verifyOriginal' | 'newEmail' | 'verifyNew'; type NewEmailForm (line 37) | interface NewEmailForm { type EmailChangeModalProps (line 41) | interface EmailChangeModalProps { FILE: fluxer_app/src/components/modals/EmojiUploadModal.tsx type EmojiUploadModalProps (line 27) | interface EmojiUploadModalProps { FILE: fluxer_app/src/components/modals/ExpressionPickerSheet.tsx type ExpressionPickerCategoryDescriptor (line 43) | interface ExpressionPickerCategoryDescriptor { constant EXPRESSION_PICKER_CATEGORY_DESCRIPTORS (line 56) | const EXPRESSION_PICKER_CATEGORY_DESCRIPTORS: Array = { type GuildFolderSettingsModalProps (line 61) | interface GuildFolderSettingsModalProps { function openGuildFolderSettingsModal (line 209) | function openGuildFolderSettingsModal(folderId: number): void { FILE: fluxer_app/src/components/modals/GuildNotificationSettingsModal.tsx type ChannelOption (line 41) | interface ChannelOption { FILE: fluxer_app/src/components/modals/GuildOwnershipWarningModal.tsx type GuildOwnershipWarningModalProps (line 29) | interface GuildOwnershipWarningModalProps { FILE: fluxer_app/src/components/modals/GuildSettingsModal.tsx type GuildSettingsModalProps (line 42) | interface GuildSettingsModalProps { FILE: fluxer_app/src/components/modals/IARModal.tsx type ViolationSelectOption (line 45) | interface ViolationSelectOption extends SelectOption { type IARContext (line 51) | type IARContext = type IARModalProps (line 66) | interface IARModalProps { FILE: fluxer_app/src/components/modals/ImageCropModal.tsx type Point (line 37) | interface Point { type Size (line 41) | interface Size { type DragBoundaries (line 45) | interface DragBoundaries { type AnimatedImageCropOptions (line 52) | interface AnimatedImageCropOptions { function cropAnimatedImageWithWorker (line 62) | async function cropAnimatedImageWithWorker( function clamp (line 70) | function clamp(value: number, min: number, max: number): number { function inRange (line 76) | function inRange(value: number, start: number, end?: number): boolean { function computeCropRect (line 89) | function computeCropRect(containerWidth: number, containerHeight: number... function computeDragBoundaries (line 105) | function computeDragBoundaries(imageWidth: number, imageHeight: number, ... function clampTransformToBounds (line 117) | function clampTransformToBounds(x: number, y: number, bounds: DragBounda... function rotatePoint (line 124) | function rotatePoint({x, y}: Point, rotationDeg: number): Point { function computeDestinationOffset (line 138) | function computeDestinationOffset(cropWidthNatural: number, cropHeightNa... type ComputeCropGeometryInput (line 154) | interface ComputeCropGeometryInput { type ComputeCropGeometryOutput (line 163) | interface ComputeCropGeometryOutput { function computeCropGeometry (line 176) | function computeCropGeometry(input: ComputeCropGeometryInput): ComputeCr... function containSize (line 227) | function containSize(srcW: number, srcH: number, boxW: number, boxH: num... function exportStaticImage (line 237) | async function exportStaticImage( function exportAnimatedImage (line 323) | async function exportAnimatedImage( function snapCropOptionsToImageBounds (line 392) | function snapCropOptionsToImageBounds(options: AnimatedImageCropOptions,... function hasEditsFrom (line 429) | function hasEditsFrom(zoomRatio: number, rotation: number, transform: Po... type ImageCropModalProps (line 433) | interface ImageCropModalProps { FILE: fluxer_app/src/components/modals/InputMonitoringCTAModal.tsx type InputMonitoringCTAModalProps (line 32) | interface InputMonitoringCTAModalProps { FILE: fluxer_app/src/components/modals/InviteAcceptModal.tsx type InviteAcceptModalProps (line 46) | interface InviteAcceptModalProps { FILE: fluxer_app/src/components/modals/InviteAcceptModalPreview.tsx type InviteAcceptModalPreviewProps (line 34) | interface InviteAcceptModalPreviewProps { FILE: fluxer_app/src/components/modals/InvitePagePreviewModal.tsx type InvitePagePreviewModalProps (line 47) | interface InvitePagePreviewModalProps { constant ALIGNMENT_MIN_WIDTH (line 56) | const ALIGNMENT_MIN_WIDTH = 1600; FILE: fluxer_app/src/components/modals/KeyboardModeIntroModal.tsx function KeyboardModeIntroModal (line 30) | function KeyboardModeIntroModal() { FILE: fluxer_app/src/components/modals/MediaModal.tsx type MediaModalProps (line 62) | interface MediaModalProps { type MediaThumbnail (line 92) | interface MediaThumbnail { type ControlButtonProps (line 98) | interface ControlButtonProps { type FileInfoProps (line 142) | interface FileInfoProps { type ControlsProps (line 204) | interface ControlsProps { type CompactMobileControlsProps (line 338) | interface CompactMobileControlsProps { type ZoomState (line 362) | type ZoomState = 'fit' | 'zoomed'; type DesktopMediaViewerProps (line 364) | interface DesktopMediaViewerProps { type MobileMediaViewerProps (line 581) | interface MobileMediaViewerProps { FILE: fluxer_app/src/components/modals/MediaViewerModal.tsx type MobileMediaOptionsSheetProps (line 50) | interface MobileMediaOptionsSheetProps { function getBaseProxyURL (line 59) | function getBaseProxyURL(src: string): string { FILE: fluxer_app/src/components/modals/MessageHistoryThresholdModal.tsx type MessageHistoryThresholdModalProps (line 42) | interface MessageHistoryThresholdModalProps { FILE: fluxer_app/src/components/modals/MfaTotpDisableModal.tsx type FormInputs (line 32) | interface FormInputs { FILE: fluxer_app/src/components/modals/MfaTotpEnableModal.tsx type FormInputs (line 39) | interface FormInputs { type MfaTotpEnableModalProps (line 43) | interface MfaTotpEnableModalProps { FILE: fluxer_app/src/components/modals/MobileVideoViewer.tsx type MobileVideoViewerProps (line 31) | interface MobileVideoViewerProps { function formatTime (line 39) | function formatTime(time: number): string { FILE: fluxer_app/src/components/modals/Modal.tsx type ContentProps (line 396) | type ContentProps = React.ComponentPropsWithoutRef & { type FooterProps (line 417) | interface FooterProps { type InsetCloseButtonProps (line 447) | type InsetCloseButtonProps = Omit = [0, 0.75, 1]; type StatusChangeBottomSheetProps (line 80) | interface StatusChangeBottomSheetProps { type StatusItemProps (line 85) | interface StatusItemProps { type CustomStatusSectionProps (line 154) | interface CustomStatusSectionProps { FILE: fluxer_app/src/components/modals/SudoVerificationModal.tsx type FormInputs (line 41) | interface FormInputs { type SmsStatus (line 47) | enum SmsStatus { FILE: fluxer_app/src/components/modals/ThemeAcceptModal.tsx type ThemeAcceptModalProps (line 39) | interface ThemeAcceptModalProps { FILE: fluxer_app/src/components/modals/TimeoutMemberModal.tsx type SelectOption (line 44) | interface SelectOption { type TimeoutMemberModalProps (line 49) | interface TimeoutMemberModalProps { constant MAX_TIMEOUT_SECONDS (line 54) | const MAX_TIMEOUT_SECONDS = DAYS_PER_YEAR * SECONDS_PER_DAY; type CustomDurationUnit (line 56) | type CustomDurationUnit = 'seconds' | 'minutes' | 'hours' | 'days'; constant CUSTOM_DURATION_MULTIPLIERS (line 58) | const CUSTOM_DURATION_MULTIPLIERS: Record = { FILE: fluxer_app/src/components/modals/TimeoutMemberOptions.tsx type TimeoutDurationOption (line 23) | interface TimeoutDurationOption { type TimeoutDurationOptionDescriptor (line 28) | interface TimeoutDurationOptionDescriptor { constant TIMEOUT_DURATION_OPTIONS_DESCRIPTORS (line 33) | const TIMEOUT_DURATION_OPTIONS_DESCRIPTORS: ReadonlyArray; type ProfileModalContentProps (line 158) | interface ProfileModalContentProps { type MutualView (line 338) | type MutualView = 'mutual_friends' | 'mutual_communities' | 'mutual_grou... type MutualGuildDisplay (line 350) | type MutualGuildDisplay = { FILE: fluxer_app/src/components/modals/UserProfileUtils.tsx constant DEFAULT_NOTCH_COLOR (line 22) | const DEFAULT_NOTCH_COLOR = 'rgba(255, 255, 255, 0.6)'; constant DARK_NOTCH_COLOR (line 23) | const DARK_NOTCH_COLOR = 'rgba(0, 0, 0, 0.4)'; constant LIGHT_NOTCH_COLOR (line 24) | const LIGHT_NOTCH_COLOR = 'rgba(255, 255, 255, 0.7)'; FILE: fluxer_app/src/components/modals/UserSettingsModal.tsx type UserSettingsModalProps (line 42) | interface UserSettingsModalProps { FILE: fluxer_app/src/components/modals/channel_tabs/ChannelOverviewTab.tsx type FormInputs (line 67) | interface FormInputs { constant CHANNEL_OVERVIEW_TAB_ID (line 78) | const CHANNEL_OVERVIEW_TAB_ID = 'overview'; constant SETTINGS_AUTOCOMPLETE_Z_INDEX (line 79) | const SETTINGS_AUTOCOMPLETE_Z_INDEX = 10001; constant BITRATE_OPTIONS (line 81) | const BITRATE_OPTIONS = [8, 64, 96, 128] as const; constant MAX_TOPIC_LENGTH (line 82) | const MAX_TOPIC_LENGTH = 1024; constant TOPIC_AUTOCOMPLETE_TRIGGERS (line 83) | const TOPIC_AUTOCOMPLETE_TRIGGERS: Array = ['emoji']; type RtcRegionOption (line 91) | interface RtcRegionOption extends SelectOption { type ExtendedOptionProps (line 95) | interface ExtendedOptionProps extends OptionProps(['keybinds']); type MobileContentWithScrollSpyProps (line 322) | interface MobileContentWithScrollSpyProps { FILE: fluxer_app/src/components/modals/components/PlutoniumContent.tsx type PlutoniumContentProps (line 50) | interface PlutoniumContentProps { FILE: fluxer_app/src/components/modals/components/SettingsModalHeader.tsx type SettingsModalHeaderProps (line 32) | interface SettingsModalHeaderProps { FILE: fluxer_app/src/components/modals/components/SettingsSearch.tsx type SettingsSearchProps (line 30) | interface SettingsSearchProps { FILE: fluxer_app/src/components/modals/components/Slate.tsx type SlateProps (line 26) | interface SlateProps { FILE: fluxer_app/src/components/modals/components/plutonium/BottomCTASection.tsx type BottomCTASectionProps (line 28) | interface BottomCTASectionProps { FILE: fluxer_app/src/components/modals/components/plutonium/GiftInventoryBanner.tsx type GiftInventoryBannerProps (line 30) | interface GiftInventoryBannerProps { FILE: fluxer_app/src/components/modals/components/plutonium/GiftSection.tsx type GiftSectionProps (line 31) | interface GiftSectionProps { FILE: fluxer_app/src/components/modals/components/plutonium/PricingSection.tsx type PricingSectionProps (line 31) | interface PricingSectionProps { FILE: fluxer_app/src/components/modals/components/plutonium/PurchaseDisabledWrapper.tsx type PurchaseDisabledWrapperProps (line 23) | interface PurchaseDisabledWrapperProps { FILE: fluxer_app/src/components/modals/components/plutonium/PurchaseHistorySection.tsx type PurchaseHistorySectionProps (line 26) | interface PurchaseHistorySectionProps { FILE: fluxer_app/src/components/modals/components/plutonium/SectionHeader.tsx type SectionHeaderProps (line 25) | interface SectionHeaderProps { FILE: fluxer_app/src/components/modals/components/plutonium/SubscriptionCard.tsx type SubscriptionCardProps (line 33) | interface SubscriptionCardProps { FILE: fluxer_app/src/components/modals/components/plutonium/hooks/useCheckoutActions.tsx type Plan (line 35) | type Plan = 'monthly' | 'yearly' | 'gift_1_month' | 'gift_1_year'; FILE: fluxer_app/src/components/modals/components/plutonium/hooks/usePremiumData.tsx type PremiumData (line 29) | interface PremiumData { FILE: fluxer_app/src/components/modals/components/plutonium/hooks/useSubscriptionStatus.tsx type GracePeriodInfo (line 25) | interface GracePeriodInfo { type SubscriptionStatusInfo (line 32) | interface SubscriptionStatusInfo { FILE: fluxer_app/src/components/modals/discovery/DiscoveryGuildCard.tsx type DiscoveryGuildCardProps (line 40) | interface DiscoveryGuildCardProps { FILE: fluxer_app/src/components/modals/guild_tabs/BannedUserActionsSheet.tsx type BannedUserActionsSheetProps (line 32) | interface BannedUserActionsSheetProps { FILE: fluxer_app/src/components/modals/guild_tabs/GuildAuditLogTab.Components.tsx type UserTagParts (line 33) | interface UserTagParts { type ClickableUserProps (line 76) | interface ClickableUserProps { type CopyIdInlineProps (line 113) | interface CopyIdInlineProps { FILE: fluxer_app/src/components/modals/guild_tabs/GuildAuditLogTab.Constants.tsx constant DEFAULT_FOR_STRINGS_KEY (line 20) | const DEFAULT_FOR_STRINGS_KEY = '__DEFAULT__'; constant LOG_PAGE_SIZE (line 21) | const LOG_PAGE_SIZE = 50; type AuditLogTargetType (line 22) | enum AuditLogTargetType { type AuditLogActionKind (line 35) | enum AuditLogActionKind { FILE: fluxer_app/src/components/modals/guild_tabs/GuildAuditLogTab.Renderers.tsx type ChangeRenderer (line 53) | type ChangeRenderer = ( constant GUILD_CHANGE_RENDERERS (line 260) | const GUILD_CHANGE_RENDERERS: Record = { constant CHANNEL_CHANGE_RENDERERS (line 416) | const CHANNEL_CHANGE_RENDERERS: Record = { constant USER_CHANGE_RENDERERS (line 463) | const USER_CHANGE_RENDERERS: Record = { constant ROLE_CHANGE_RENDERERS (line 600) | const ROLE_CHANGE_RENDERERS: Record = { constant INVITE_CHANGE_RENDERERS (line 672) | const INVITE_CHANGE_RENDERERS: Record = { constant EMOJI_CHANGE_RENDERERS (line 702) | const EMOJI_CHANGE_RENDERERS: Record = { constant STICKER_CHANGE_RENDERERS (line 708) | const STICKER_CHANGE_RENDERERS: Record = { constant WEBHOOK_CHANGE_RENDERERS (line 727) | const WEBHOOK_CHANGE_RENDERERS: Record = { constant RENDERERS_BY_TARGET (line 753) | const RENDERERS_BY_TARGET: Partial { FILE: fluxer_app/src/components/modals/guild_tabs/GuildAuditLogTab.tsx type IconComponent (line 95) | type IconComponent = React.ComponentType<{size?: number | string; weight... type ChangeTone (line 96) | type ChangeTone = 'add' | 'remove' | 'update'; constant USER_FILTER_AVATAR_SIZE (line 166) | const USER_FILTER_AVATAR_SIZE = 28; type UserFilterOption (line 215) | type UserFilterOption = AuditLogUserOption | SelectOption; FILE: fluxer_app/src/components/modals/guild_tabs/GuildDiscoveryTab.tsx type FormInputs (line 48) | interface FormInputs { function StatusBadge (line 53) | function StatusBadge({status}: {status: string}) { FILE: fluxer_app/src/components/modals/guild_tabs/GuildEmojiTab.tsx constant MAX_EMOJIS_PER_UPLOAD (line 54) | const MAX_EMOJIS_PER_UPLOAD = 50; FILE: fluxer_app/src/components/modals/guild_tabs/GuildMemberActionsSheet.tsx type GuildMemberActionsSheetProps (line 73) | interface GuildMemberActionsSheetProps { FILE: fluxer_app/src/components/modals/guild_tabs/GuildMembersDateRangeModal.tsx type GuildMembersDateRangeModalProps (line 27) | interface GuildMembersDateRangeModalProps { function GuildMembersDateRangeModal (line 33) | function GuildMembersDateRangeModal({onApply, initialGte, initialLte}: G... FILE: fluxer_app/src/components/modals/guild_tabs/GuildModerationTab.tsx type FormInputs (line 47) | interface FormInputs { constant GUILD_MODERATION_TAB_ID (line 54) | const GUILD_MODERATION_TAB_ID = 'moderation'; FILE: fluxer_app/src/components/modals/guild_tabs/GuildRolesTab.tsx constant ROLE_DND_TYPE (line 77) | const ROLE_DND_TYPE = 'guild-role'; type RoleDragItem (line 79) | interface RoleDragItem { type RoleUpdate (line 84) | interface RoleUpdate { constant GUILD_ROLES_TAB_ID (line 93) | const GUILD_ROLES_TAB_ID = 'roles'; FILE: fluxer_app/src/components/modals/guild_tabs/GuildVanityURLTab.tsx type FormInputs (line 44) | interface FormInputs { function hasAnyChannelViewableToEveryone (line 48) | function hasAnyChannelViewableToEveryone(guildId: string): boolean { FILE: fluxer_app/src/components/modals/guild_tabs/GuildWebhooksTab.tsx constant GUILD_WEBHOOKS_TAB_ID (line 37) | const GUILD_WEBHOOKS_TAB_ID = 'webhooks'; FILE: fluxer_app/src/components/modals/guild_tabs/RoleMoveOperation.tsx type RoleMoveOperation (line 22) | interface RoleMoveOperation { type RoleMovePreview (line 28) | interface RoleMovePreview { FILE: fluxer_app/src/components/modals/guild_tabs/UserListItem.tsx type UserData (line 31) | interface UserData { type UserListItemProps (line 37) | interface UserListItemProps { FILE: fluxer_app/src/components/modals/guild_tabs/guild_overview_tab/GuildOverviewTypes.tsx type GuildLike (line 20) | interface GuildLike { type ChannelLike (line 30) | interface ChannelLike { FILE: fluxer_app/src/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx type ImageAssetFieldName (line 45) | type ImageAssetFieldName = 'icon' | 'banner' | 'splash' | 'embed_splash'; type GifMode (line 47) | type GifMode = 'allow' | 'disallow' | 'require-feature'; type GifPolicy (line 49) | interface GifPolicy { type AspectRatioConfig (line 58) | interface AspectRatioConfig { type UseGuildImageAssetFieldArgs (line 63) | interface UseGuildImageAssetFieldArgs { type ImageAssetFieldController (line 84) | interface ImageAssetFieldController { function useGuildImageAssetField (line 91) | function useGuildImageAssetField({ FILE: fluxer_app/src/components/modals/guild_tabs/guild_overview_tab/sections/MessageHistoryThresholdContent.tsx type MessageHistoryThresholdFormValues (line 31) | interface MessageHistoryThresholdFormValues { function buildMessageHistoryThresholdValidator (line 106) | function buildMessageHistoryThresholdValidator( type MessageHistoryThresholdFieldProps (line 125) | interface MessageHistoryThresholdFieldProps { function MessageHistoryThresholdField (line 133) | function MessageHistoryThresholdField({ type MessageHistoryThresholdPickerProps (line 162) | interface MessageHistoryThresholdPickerProps { function MessageHistoryThresholdPicker (line 170) | function MessageHistoryThresholdPicker({ FILE: fluxer_app/src/components/modals/guild_tabs/guild_overview_tab/utils/ImageAsset.tsx constant MAX_IMAGE_BYTES (line 20) | const MAX_IMAGE_BYTES = 10 * 1024 * 1024; function isGif (line 21) | function isGif(file: File): boolean { function revokeObjectUrl (line 29) | function revokeObjectUrl(url: string | null | undefined): void { function blobToDataUrl (line 37) | function blobToDataUrl(blob: Blob): Promise { function getSafeImageMimeType (line 46) | function getSafeImageMimeType(file: File): string { FILE: fluxer_app/src/components/modals/hooks/ScrollSpyContext.tsx type ScrollSpyContextValue (line 23) | interface ScrollSpyContextValue { type ScrollSpyProviderProps (line 31) | interface ScrollSpyProviderProps { function useScrollSpyContext (line 53) | function useScrollSpyContext(): ScrollSpyContextValue | null { FILE: fluxer_app/src/components/modals/hooks/useMobileNavigation.tsx type NavigationStackItem (line 23) | interface NavigationStackItem { type MobileNavigationState (line 28) | interface MobileNavigationState { type NavigationAction (line 38) | type NavigationAction = type NavigationReducerState (line 43) | interface NavigationReducerState { function navigationReducer (line 48) | function navigationReducer( FILE: fluxer_app/src/components/modals/hooks/useScrollSpy.tsx type UseScrollSpyOptions (line 22) | interface UseScrollSpyOptions { type UseScrollSpyReturn (line 28) | interface UseScrollSpyReturn { function useScrollSpy (line 33) | function useScrollSpy({sectionIds, containerRef, offset = 68}: UseScroll... FILE: fluxer_app/src/components/modals/hooks/useSettingsContentKey.tsx type SettingsContentKeyContextValue (line 22) | interface SettingsContentKeyContextValue { FILE: fluxer_app/src/components/modals/hooks/useUnsavedChangesFlash.tsx function useUnsavedChangesFlash (line 24) | function useUnsavedChangesFlash(selectedTab?: string) { FILE: fluxer_app/src/components/modals/meme_form/MemeFormFields.tsx type MemeFormFieldsProps (line 31) | interface MemeFormFieldsProps { FILE: fluxer_app/src/components/modals/shared/AddOverridePopout.tsx type AddOverridePopoutProps (line 35) | interface AddOverridePopoutProps { FILE: fluxer_app/src/components/modals/shared/CopyLinkSection.tsx type CopyLinkSectionProps (line 26) | interface CopyLinkSectionProps { FILE: fluxer_app/src/components/modals/shared/EmptySlate.tsx type EmptySlateProps (line 24) | interface EmptySlateProps { FILE: fluxer_app/src/components/modals/shared/ForwardChannelSelection.tsx type TFn (line 29) | type TFn = (literals: TemplateStringsArray, ...placeholders: Array( type UseForwardChannelSelectionOptions (line 67) | interface UseForwardChannelSelectionOptions { FILE: fluxer_app/src/components/modals/shared/GuildSelectComponents.tsx type GuildSelectOption (line 27) | interface GuildSelectOption extends SelectOption { type GuildSelectStyles (line 31) | interface GuildSelectStyles { type GuildSelectComponentsConfig (line 42) | interface GuildSelectComponentsConfig { FILE: fluxer_app/src/components/modals/shared/MobileSettingsComponents.tsx type MobileHeaderProps (line 38) | interface MobileHeaderProps { type MobileHeaderWithBannerProps (line 58) | interface MobileHeaderWithBannerProps { type SettingsTab (line 137) | interface SettingsTab { type PressableTabItemProps (line 144) | interface PressableTabItemProps { type MobileSettingsDangerItemProps (line 170) | interface MobileSettingsDangerItemProps { type MobileSettingsListProps (line 197) | interface MobileSettingsListProps { type MobileSectionNavProps (line 273) | interface MobileSectionNavProps { FILE: fluxer_app/src/components/modals/shared/PermissionComponents.tsx type PermissionState (line 31) | type PermissionState = 'ALLOW' | 'DENY' | 'NEUTRAL'; function getPermissionState (line 32) | function getPermissionState(permission: bigint, allow: bigint, deny: big... constant DEFAULT_ROLE_COLOR_HEX (line 313) | const DEFAULT_ROLE_COLOR_HEX = '#99aab5'; FILE: fluxer_app/src/components/modals/shared/RecipientList.tsx type RecipientItem (line 40) | interface RecipientItem { type RecipientListProps (line 128) | interface RecipientListProps { FILE: fluxer_app/src/components/modals/shared/SettingsModalLayout.tsx type SettingsModalContextValue (line 33) | interface SettingsModalContextValue { type SettingsModalDesktopContentProps (line 60) | interface SettingsModalDesktopContentProps { type SettingsModalDesktopScrollProps (line 87) | interface SettingsModalDesktopScrollProps { type SidebarCategoryContextValue (line 119) | interface SidebarCategoryContextValue { type SidebarTablistContextValue (line 125) | interface SidebarTablistContextValue { type SettingsModalSidebarNavProps (line 133) | interface SettingsModalSidebarNavProps { type SettingsModalSidebarSubItemProps (line 260) | interface SettingsModalSidebarSubItemProps { type SettingsModalSidebarSubItemsProps (line 285) | interface SettingsModalSidebarSubItemsProps { FILE: fluxer_app/src/components/modals/shared/SettingsSection.tsx type SettingsSectionProps (line 27) | interface SettingsSectionProps { FILE: fluxer_app/src/components/modals/shared/SettingsTabLayout.tsx type SettingsTabContainerProps (line 25) | interface SettingsTabContainerProps { type SettingsTabHeaderProps (line 34) | interface SettingsTabHeaderProps { type SettingsTabContentProps (line 49) | interface SettingsTabContentProps { type SettingsTabSectionProps (line 58) | interface SettingsTabSectionProps { FILE: fluxer_app/src/components/modals/shared/StatusSlate.tsx type StatusAction (line 25) | interface StatusAction { type StatusSlateProps (line 33) | interface StatusSlateProps { FILE: fluxer_app/src/components/modals/sticker_form/StickerFormFields.tsx type StickerFormFieldsProps (line 30) | interface StickerFormFieldsProps { FILE: fluxer_app/src/components/modals/sticker_form/StickerPreview.tsx type StickerPreviewProps (line 24) | interface StickerPreviewProps { FILE: fluxer_app/src/components/modals/tabs/AccessibilityTab.tsx constant TTS_RATE_MARKERS (line 141) | const TTS_RATE_MARKERS = [0.1, 0.5, 1.0, 1.5, 2.0]; constant TTS_RATE_LABEL_ID (line 142) | const TTS_RATE_LABEL_ID = 'tts-rate-slider-label'; FILE: fluxer_app/src/components/modals/tabs/DevicesTab.tsx constant MOBILE_DEVICE_REGEX (line 52) | const MOBILE_DEVICE_REGEX = /iOS|Android|Windows Phone|BlackBerry|Mobile/i; type AuthSessionProps (line 62) | interface AuthSessionProps { FILE: fluxer_app/src/components/modals/tabs/ExpressionPacksTab.tsx constant PACK_TYPES (line 49) | const PACK_TYPES: Array<{key: 'emoji' | 'sticker'; label: string}> = [ FILE: fluxer_app/src/components/modals/tabs/GiftInventoryTab.tsx type GiftCodeFormInputs (line 50) | interface GiftCodeFormInputs { type GiftCardProps (line 54) | interface GiftCardProps { FILE: fluxer_app/src/components/modals/tabs/LimitsConfigTab.tsx constant CATEGORY_ORDER (line 40) | const CATEGORY_ORDER: Array = [ constant METADATA_BY_CATEGORY (line 50) | const METADATA_BY_CATEGORY: Record = [ constant THEME_FONT_VARIABLES (line 191) | const THEME_FONT_VARIABLES: ReadonlyArray = ['--font-sans', '--f... function escapeRegExp (line 193) | function escapeRegExp(value: string): string { function extractThemeVariableOverrides (line 197) | function extractThemeVariableOverrides(css: string): Record { method selectedApplication (line 78) | get selectedApplication(): DeveloperApplicationRecord | null { method hasApplications (line 85) | get hasApplications(): boolean { method fetchApplications (line 89) | async fetchApplications(options?: {showLoading?: boolean}): Promise { method clearError (line 230) | clearError(): void { method mergeApplications (line 243) | private mergeApplications(applications: Array): ... method cacheApplication (line 257) | private cacheApplication(application: DeveloperApplication): Developer... FILE: fluxer_app/src/components/modals/tabs/applications_tab/application_detail/ApplicationDetailTypes.tsx type ApplicationDetailFormValues (line 22) | interface ApplicationDetailFormValues { type ApplicationDetailForm (line 39) | type ApplicationDetailForm = UseFormReturn; FILE: fluxer_app/src/components/modals/tabs/applications_tab/application_detail/ApplicationHeader.tsx type ApplicationHeaderProps (line 27) | interface ApplicationHeaderProps { FILE: fluxer_app/src/components/modals/tabs/applications_tab/application_detail/ApplicationInfoSection.tsx type ApplicationInfoSectionProps (line 30) | interface ApplicationInfoSectionProps { FILE: fluxer_app/src/components/modals/tabs/applications_tab/application_detail/BotProfileSection.tsx type BotProfileSectionProps (line 34) | interface BotProfileSectionProps { FILE: fluxer_app/src/components/modals/tabs/applications_tab/application_detail/OAuthBuilderSection.tsx type OAuthBuilderSectionProps (line 33) | interface OAuthBuilderSectionProps { FILE: fluxer_app/src/components/modals/tabs/applications_tab/application_detail/SecretsSection.tsx type SecretsSectionProps (line 27) | interface SecretsSectionProps { FILE: fluxer_app/src/components/modals/tabs/applications_tab/application_detail/SectionCard.tsx type SectionCardProps (line 24) | interface SectionCardProps { FILE: fluxer_app/src/components/modals/tabs/component_gallery_tab/ButtonsTab.tsx type ButtonsTabProps (line 47) | interface ButtonsTabProps { FILE: fluxer_app/src/components/modals/tabs/component_gallery_tab/IndicatorsTab.tsx constant AVATAR_SIZES_WITH_STATUS (line 40) | const AVATAR_SIZES_WITH_STATUS: Array<16 | 24 | 32 | 36 | 40 | 48 | 80> ... constant AVATAR_STATUSES (line 42) | const AVATAR_STATUSES: Array = [ FILE: fluxer_app/src/components/modals/tabs/component_gallery_tab/InputsTab.tsx type InputsTabProps (line 35) | interface InputsTabProps { FILE: fluxer_app/src/components/modals/tabs/component_gallery_tab/MessagesTab.tsx constant MOCK_GUILD_ID (line 46) | const MOCK_GUILD_ID = '1000000000000000001'; constant MOCK_CHANNEL_ID (line 47) | const MOCK_CHANNEL_ID = '1000000000000000002'; constant MOCK_TIMED_OUT_USER_ID (line 48) | const MOCK_TIMED_OUT_USER_ID = '1000000000000000003'; constant ATTACHMENT_IMAGE_PATHS (line 92) | const ATTACHMENT_IMAGE_PATHS = [ type MessageDisplayProps (line 153) | interface MessageDisplayProps { FILE: fluxer_app/src/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx type OverlaysTabProps (line 34) | interface OverlaysTabProps { FILE: fluxer_app/src/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx type SelectionsTabProps (line 37) | interface SelectionsTabProps { FILE: fluxer_app/src/components/modals/tabs/components/MicTestSection.tsx type MicTestSectionProps (line 28) | interface MicTestSectionProps { FILE: fluxer_app/src/components/modals/tabs/developer_options_tab/AccountPremiumTab.tsx type AccountPremiumTabContentProps (line 42) | interface AccountPremiumTabContentProps { FILE: fluxer_app/src/components/modals/tabs/developer_options_tab/DeveloperOptionsToggleGroups.tsx type ToggleDef (line 24) | interface ToggleDef { type ToggleGroup (line 30) | interface ToggleGroup { FILE: fluxer_app/src/components/modals/tabs/developer_options_tab/NagbarControls.tsx type NagbarControlDefinition (line 26) | interface NagbarControlDefinition { constant FORCE_ENABLED_DESCRIPTOR (line 38) | const FORCE_ENABLED_DESCRIPTOR = msg`Force enabled`; constant FORCE_DISABLED_DESCRIPTOR (line 39) | const FORCE_DISABLED_DESCRIPTOR = msg`Force disabled`; constant USING_ACTUAL_ACCOUNT_STATE_DESCRIPTOR (line 40) | const USING_ACTUAL_ACCOUNT_STATE_DESCRIPTOR = msg`Using actual account s... constant USING_ACTUAL_VERIFICATION_STATE_DESCRIPTOR (line 41) | const USING_ACTUAL_VERIFICATION_STATE_DESCRIPTOR = msg`Using actual veri... constant CURRENTLY_DISMISSED_DESCRIPTOR (line 42) | const CURRENTLY_DISMISSED_DESCRIPTOR = msg`Currently dismissed`; constant CURRENTLY_SHOWING_DESCRIPTOR (line 43) | const CURRENTLY_SHOWING_DESCRIPTOR = msg`Currently showing`; constant USING_ACTUAL_PREMIUM_STATE_DESCRIPTOR (line 44) | const USING_ACTUAL_PREMIUM_STATE_DESCRIPTOR = msg`Using actual premium s... constant USING_ACTUAL_GIFT_INVENTORY_STATE_DESCRIPTOR (line 45) | const USING_ACTUAL_GIFT_INVENTORY_STATE_DESCRIPTOR = msg`Using actual gi... constant USING_ACTUAL_STATE_DESCRIPTOR (line 46) | const USING_ACTUAL_STATE_DESCRIPTOR = msg`Using actual state`; FILE: fluxer_app/src/components/modals/tabs/developer_options_tab/NagbarsTab.tsx type NagbarsTabContentProps (line 32) | interface NagbarsTabContentProps { FILE: fluxer_app/src/components/modals/tabs/developer_options_tab/PremiumScenarioOptions.tsx type PremiumScenarioSelectOption (line 27) | interface PremiumScenarioSelectOption extends Omit... FILE: fluxer_app/src/components/modals/utils/SettingsConstants.tsx type AppearanceTabType (line 58) | type AppearanceTabType = 'theme' | 'messages' | 'interface' | 'channel_l... type AccessibilityTabType (line 59) | type AccessibilityTabType = 'visual' | 'keyboard' | 'animation' | 'motion'; type ChatTab (line 60) | type ChatTab = 'display' | 'media' | 'input' | 'interaction'; type VoiceVideoTabType (line 61) | type VoiceVideoTabType = 'voice' | 'video'; type PrivacySafetyTabType (line 62) | type PrivacySafetyTabType = 'connections' | 'communication' | 'data-expo... type AccountSecurityTabType (line 63) | type AccountSecurityTabType = 'account' | 'security' | 'danger_zone'; type DevTab (line 64) | type DevTab = 'general' | 'account_premium' | 'mocking' | 'nagbars' | 't... type ComponentGalleryTabType (line 65) | type ComponentGalleryTabType = 'buttons' | 'inputs' | 'selections' | 'ov... type UserSettingsSubtabType (line 67) | type UserSettingsSubtabType = type UserSettingsTabCategories (line 77) | type UserSettingsTabCategories = 'user_settings' | 'app_settings' | 'dev... type SettingsTab (line 79) | interface SettingsTab { type SettingsTabDescriptor (line 87) | interface SettingsTabDescriptor { function getCategoryLabel (line 95) | function getCategoryLabel(category: UserSettingsTabCategories): React.Re... constant ALL_TABS_DESCRIPTORS (line 108) | const ALL_TABS_DESCRIPTORS: Array = [ type SettingsSubtab (line 262) | interface SettingsSubtab { type SettingsSubtabDescriptor (line 268) | interface SettingsSubtabDescriptor { constant SETTINGS_SUBTABS_DESCRIPTORS (line 274) | const SETTINGS_SUBTABS_DESCRIPTORS: Array = [ function getSubtabsForTab (line 323) | function getSubtabsForTab(tabType: UserSettingsTabType, i18n: I18n): Arr... function getSectionsForTab (line 327) | function getSectionsForTab(tabType: UserSettingsTabType, i18n: I18n): Ar... function tabHasSections (line 331) | function tabHasSections(tabType: UserSettingsTabType): boolean { function getSectionIdsForTab (line 335) | function getSectionIdsForTab(tabType: UserSettingsTabType): Array { FILE: fluxer_app/src/components/modals/utils/SettingsSearchIndex.tsx type SearchableSettingDescriptor (line 30) | interface SearchableSettingDescriptor { type SettingsSearchResult (line 39) | interface SettingsSearchResult { constant ADDITIONAL_SEARCHABLE_ITEMS (line 45) | const ADDITIONAL_SEARCHABLE_ITEMS: Array = [ function createSearchableItems (line 325) | function createSearchableItems(): Array { function getSearchableItems (line 340) | function getSearchableItems(): Array { function invalidateSearchCache (line 347) | function invalidateSearchCache(): void { function normalizeSearchQuery (line 351) | function normalizeSearchQuery(query: string): string { function calculateMatchScore (line 355) | function calculateMatchScore(item: SearchableSettingItem, queryWords: Ar... function searchSettings (line 380) | function searchSettings(query: string, tabs: Array): Array<... function getMatchedSectionIds (line 422) | function getMatchedSectionIds(results: Array): Set... function getMatchedTabTypes (line 434) | function getMatchedTabTypes(results: Array): Set = [ function getSectionsForTab (line 717) | function getSectionsForTab(tabType: UserSettingsTabType, i18n: I18n): Ar... function getSectionIdsForTab (line 729) | function getSectionIdsForTab(tabType: UserSettingsTabType): Array { function tabHasSections (line 737) | function tabHasSections(tabType: UserSettingsTabType): boolean { function getAllSectionDefinitions (line 741) | function getAllSectionDefinitions(): Array { function getSectionDefinition (line 745) | function getSectionDefinition(sectionId: string): SectionDefinition | un... function getVisibleSectionsForTab (line 749) | function getVisibleSectionsForTab(tabType: UserSettingsTabType): Array { type MessageDescriptor (line 33) | type MessageDescriptor = ReturnType; constant REPORT_TYPE_OPTION_DESCRIPTORS (line 35) | const REPORT_TYPE_OPTION_DESCRIPTORS: ReadonlyArray = [ constant USER_CATEGORY_OPTIONS (line 57) | const USER_CATEGORY_OPTIONS: ReadonlyArray = [ constant GUILD_CATEGORY_OPTIONS (line 68) | const GUILD_CATEGORY_OPTIONS: ReadonlyArray = [ constant COUNTRY_OPTIONS (line 81) | const COUNTRY_OPTIONS: ReadonlyArray = [ FILE: fluxer_app/src/components/pages/report/ReportBreadcrumbs.tsx type Props (line 26) | interface Props { constant STEP_ORDER (line 34) | const STEP_ORDER: Array = ['selection', 'email', 'verification... FILE: fluxer_app/src/components/pages/report/ReportStepComplete.tsx type Props (line 29) | interface Props { FILE: fluxer_app/src/components/pages/report/ReportStepDetails.tsx type Props (line 28) | interface Props { FILE: fluxer_app/src/components/pages/report/ReportStepEmail.tsx type Props (line 26) | interface Props { FILE: fluxer_app/src/components/pages/report/ReportStepSelection.tsx type Props (line 27) | interface Props { FILE: fluxer_app/src/components/pages/report/ReportStepVerification.tsx type Props (line 26) | interface Props { FILE: fluxer_app/src/components/pages/report/ReportTypes.tsx type FlowStep (line 20) | type FlowStep = 'selection' | 'email' | 'verification' | 'details' | 'co... type ReportType (line 21) | type ReportType = 'message' | 'user' | 'guild'; constant INITIAL_FORM_VALUES (line 22) | const INITIAL_FORM_VALUES = { type FormValues (line 36) | type FormValues = typeof INITIAL_FORM_VALUES; type State (line 38) | interface State { type Action (line 60) | type Action = FILE: fluxer_app/src/components/pages/report/State.tsx function createInitialState (line 22) | function createInitialState(): State { function reducer (line 46) | function reducer(state: State, action: Action): State { FILE: fluxer_app/src/components/pages/report/Validators.tsx constant EMAIL_REGEX (line 20) | const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; constant VERIFICATION_CODE_REGEX (line 21) | const VERIFICATION_CODE_REGEX = /^[A-Z0-9]{4}-[A-Z0-9]{4}$/; function formatVerificationCodeInput (line 22) | function formatVerificationCodeInput(raw: string): string { function normalizeLikelyUrl (line 31) | function normalizeLikelyUrl(raw: string): string { function isValidHttpUrl (line 42) | function isValidHttpUrl(raw: string): boolean { FILE: fluxer_app/src/components/panels/ExpressionPickerPanel.tsx type ExpressionPickerPanelProps (line 36) | interface ExpressionPickerPanelProps { FILE: fluxer_app/src/components/panels/panels/GuildExpressionPickerPanel.tsx type GuildExpressionPickerPanelProps (line 36) | interface GuildExpressionPickerPanelProps { FILE: fluxer_app/src/components/popouts/ExpressionPickerPopout.tsx type ExpressionPickerHeaderContextType (line 38) | interface ExpressionPickerHeaderContextType { type ExpressionPickerTabType (line 56) | type ExpressionPickerTabType = 'gifs' | 'memes' | 'stickers' | 'emojis'; type ExpressionPickerCategory (line 58) | interface ExpressionPickerCategory { type ExpressionPickerPopoutProps (line 102) | interface ExpressionPickerPopoutProps { FILE: fluxer_app/src/components/popouts/GuildIcon.tsx type GuildIconProps (line 32) | interface GuildIconProps { type GuildIconStyleVars (line 41) | type GuildIconStyleVars = React.CSSProperties & { FILE: fluxer_app/src/components/popouts/InboxMessageHeader.tsx type InboxMessageHeaderProps (line 27) | interface InboxMessageHeaderProps { FILE: fluxer_app/src/components/popouts/InboxPopout.tsx type TabConfig (line 37) | interface TabConfig { FILE: fluxer_app/src/components/popouts/ReactionTooltip.tsx method onMouseEnter (line 110) | onMouseEnter(event: React.MouseEvent) { method onMouseLeave (line 114) | onMouseLeave(event: React.MouseEvent) { FILE: fluxer_app/src/components/popouts/UnreadChannelsContent.tsx function getUnreadChannels (line 56) | function getUnreadChannels(): Array { type ChannelPreviewData (line 80) | interface ChannelPreviewData { function fetchChannelPreview (line 86) | async function fetchChannelPreview(channel: ChannelRecord): Promise = [ type HasFilterSheetProps (line 59) | interface HasFilterSheetProps { FILE: fluxer_app/src/components/search/ScopeSheet.tsx constant SCOPE_ICON_COMPONENTS (line 38) | const SCOPE_ICON_COMPONENTS: Record = [ type SortModeSheetProps (line 59) | interface SortModeSheetProps { FILE: fluxer_app/src/components/search/UserFilterSheet.tsx type UserFilterSheetProps (line 40) | interface UserFilterSheetProps { FILE: fluxer_app/src/components/shared/ChannelPinsContent.tsx type ChannelPinsContentProps (line 48) | interface ChannelPinsContentProps { FILE: fluxer_app/src/components/shared/ImagePreviewField.tsx type ImagePreviewFieldProps (line 23) | interface ImagePreviewFieldProps { FILE: fluxer_app/src/components/shared/MessageReactionsContent.tsx type ReactionFilterButtonProps (line 38) | interface ReactionFilterButtonProps { type MessageReactionsFiltersProps (line 94) | interface MessageReactionsFiltersProps { type ReactorListItemProps (line 177) | interface ReactorListItemProps { type MessageReactionsReactorsListProps (line 246) | interface MessageReactionsReactorsListProps { FILE: fluxer_app/src/components/shared/SavedMessageMissingCard.tsx type SavedMessageMissingCardProps (line 25) | interface SavedMessageMissingCardProps { FILE: fluxer_app/src/components/shared/message_context_prefix/MessageContextPrefix.tsx type MessageContextPrefixProps (line 71) | interface MessageContextPrefixProps { FILE: fluxer_app/src/components/stickers/StickerGridItem.tsx type StickerGridItemProps (line 38) | interface StickerGridItemProps { FILE: fluxer_app/src/components/uikit/Avatar.tsx type AvatarProps (line 32) | interface AvatarProps { FILE: fluxer_app/src/components/uikit/AvatarStatusGeometry.tsx type StatusGeometry (line 20) | interface StatusGeometry { constant STATUS_GEOMETRY (line 31) | const STATUS_GEOMETRY: Record = { constant STATUS_GEOMETRY_MOBILE (line 44) | const STATUS_GEOMETRY_MOBILE: Record = { function getStatusGeometry (line 57) | function getStatusGeometry(avatarSize: number, isMobile: boolean = false... FILE: fluxer_app/src/components/uikit/AvatarStatusLayout.tsx type AvatarStatusLayout (line 23) | interface AvatarStatusLayout { function getAvatarStatusLayout (line 52) | function getAvatarStatusLayout(size: number, isMobile: boolean = false):... FILE: fluxer_app/src/components/uikit/BaseAvatar.tsx type BaseAvatarProps (line 36) | interface BaseAvatarProps { type StatusIndicatorSvgProps (line 333) | interface StatusIndicatorSvgProps { FILE: fluxer_app/src/components/uikit/FocusRingWrapper.tsx type FocusRingWrapperProps (line 26) | interface FocusRingWrapperProps type FocusRingWrapperChild (line 53) | type FocusRingWrapperChild = React.ReactElement>... FILE: fluxer_app/src/components/uikit/InlineEdit.tsx type InlineEditProps (line 27) | interface InlineEditProps { type Mode (line 42) | type Mode = 'idle' | 'editing' | 'saving'; function sanitizeDraft (line 44) | function sanitizeDraft(draft: string): string { FILE: fluxer_app/src/components/uikit/KeyboardKey.tsx type KeyboardKeyProps (line 24) | interface KeyboardKeyProps { FILE: fluxer_app/src/components/uikit/LiveBadge.tsx type LiveBadgeProps (line 25) | interface LiveBadgeProps { function LiveBadge (line 30) | function LiveBadge({className, showTooltip = true}: LiveBadgeProps) { FILE: fluxer_app/src/components/uikit/MentionBadge.tsx type MentionBadgeProps (line 42) | interface MentionBadgeProps { FILE: fluxer_app/src/components/uikit/MockAvatar.tsx type MockAvatarProps (line 26) | interface MockAvatarProps { FILE: fluxer_app/src/components/uikit/Scroller.tsx type ScrollerState (line 42) | interface ScrollerState { type ScrollerHandle (line 51) | interface ScrollerHandle { type ScrollAxis (line 81) | type ScrollAxis = 'vertical' | 'horizontal'; type ScrollOverflow (line 82) | type ScrollOverflow = 'scroll' | 'auto' | 'hidden'; type ScrollbarTrackMode (line 83) | type ScrollbarTrackMode = 'overlay' | 'reserve'; type ScrollerProps (line 85) | interface ScrollerProps function getScrollState (line 108) | function getScrollState(element: HTMLElement | null): ScrollerState { function measureElementOffset (line 129) | function measureElementOffset(element: HTMLElement, axis: ScrollAxis, co... type SpringConfig (line 137) | interface SpringConfig { constant DEFAULT_SPRING (line 145) | const DEFAULT_SPRING: SpringConfig = { function prefersReducedMotion (line 153) | function prefersReducedMotion(): boolean { method scrollTo (line 425) | scrollTo({to, animate = false, callback}) { method mergeTo (line 444) | mergeTo({to, callback}) { method scrollIntoViewRect (line 456) | scrollIntoViewRect({start, end, shouldScrollToStart = false, padding = 0... method scrollIntoViewNode (line 485) | scrollIntoViewNode({node: targetNode, shouldScrollToStart = false, paddi... method scrollPageUp (line 505) | scrollPageUp({animate = false, callback} = {}) { method scrollPageDown (line 519) | scrollPageDown({animate = false, callback} = {}) { method scrollToTop (line 534) | scrollToTop({animate = false, callback} = {}) { method scrollToBottom (line 538) | scrollToBottom({animate = false, callback} = {}) { method isScrolledToTop (line 548) | isScrolledToTop() { method isScrolledToBottom (line 554) | isScrolledToBottom() { method getDistanceFromTop (line 562) | getDistanceFromTop() { method getDistanceFromBottom (line 568) | getDistanceFromBottom() { FILE: fluxer_app/src/components/uikit/Slider.tsx type SliderProps (line 37) | interface SliderProps { type MarkerState (line 62) | interface MarkerState { FILE: fluxer_app/src/components/uikit/Spinner.tsx type SpinnerProps (line 25) | interface SpinnerProps { FILE: fluxer_app/src/components/uikit/StatusAwareAvatar.tsx type StatusAwareAvatarProps (line 31) | interface StatusAwareAvatarProps { function getStatusWithTransientFallback (line 47) | function getStatusWithTransientFallback(userId: string): StatusType { FILE: fluxer_app/src/components/uikit/StatusIndicator.tsx type StatusIndicatorProps (line 25) | interface StatusIndicatorProps { type RenderStatusIconOptions (line 59) | interface RenderStatusIconOptions { FILE: fluxer_app/src/components/uikit/SwitchGroup.tsx type SwitchGroupItemProps (line 27) | interface SwitchGroupItemProps { type SwitchGroupProps (line 67) | interface SwitchGroupProps { type SwitchGroupCustomItemProps (line 75) | interface SwitchGroupCustomItemProps { FILE: fluxer_app/src/components/uikit/TypingConstants.tsx constant TYPING_BRIDGE_RIGHT_SHIFT_RATIO (line 20) | const TYPING_BRIDGE_RIGHT_SHIFT_RATIO = 0.35; constant TYPING_WIDTH_MULTIPLIER (line 21) | const TYPING_WIDTH_MULTIPLIER = 1.8; FILE: fluxer_app/src/components/uikit/accordion/Accordion.tsx type AccordionProps (line 29) | interface AccordionProps { FILE: fluxer_app/src/components/uikit/alt_text_tooltip/AltTextTooltip.tsx type AltTextTooltipProps (line 32) | interface AltTextTooltipProps { FILE: fluxer_app/src/components/uikit/avatars/AvatarStack.tsx type AvatarStackProps (line 32) | interface AvatarStackProps { FILE: fluxer_app/src/components/uikit/avatars/AvatarWithPresence.tsx type Props (line 29) | interface Props { FILE: fluxer_app/src/components/uikit/avatars/StackUserAvatar.tsx type StackUserAvatarProps (line 29) | interface StackUserAvatarProps { FILE: fluxer_app/src/components/uikit/bottom_sheet/BottomSheet.tsx type BottomSheetProps (line 24) | interface BottomSheetProps { FILE: fluxer_app/src/components/uikit/button/Button.tsx type BaseButtonProps (line 25) | interface BaseButtonProps type SquareButtonProps (line 49) | interface SquareButtonProps extends BaseButtonProps { type RegularButtonProps (line 55) | interface RegularButtonProps extends BaseButtonProps { type ButtonProps (line 60) | type ButtonProps = SquareButtonProps | RegularButtonProps; FILE: fluxer_app/src/components/uikit/card_alignment_controls/CardAlignmentControls.tsx type CardAlignmentControlOption (line 33) | interface CardAlignmentControlOption { type CardAlignmentControlsProps (line 39) | interface CardAlignmentControlsProps { constant DEFAULT_ALIGNMENT_OPTIONS (line 49) | const DEFAULT_ALIGNMENT_OPTIONS: ReadonlyArray; type CheckboxLinkShortcut (line 43) | interface CheckboxLinkShortcut { type CheckboxBaseProps (line 50) | interface CheckboxBaseProps { type CheckboxWithLabelProps (line 69) | type CheckboxWithLabelProps = CheckboxBaseProps & { type CheckboxAccessibleProps (line 73) | type CheckboxAccessibleProps = CheckboxBaseProps & { type CheckboxHiddenProps (line 78) | type CheckboxHiddenProps = CheckboxBaseProps & { type CheckboxProps (line 83) | type CheckboxProps = CheckboxWithLabelProps | CheckboxAccessibleProps | ... FILE: fluxer_app/src/components/uikit/context_menu/BannedUserContextMenu.tsx type BannedUserContextMenuProps (line 31) | interface BannedUserContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/CategoryContextMenu.tsx type CategoryContextMenuProps (line 30) | interface CategoryContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/ChannelContextMenu.tsx type ChannelContextMenuProps (line 32) | interface ChannelContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/ChannelListContextMenu.tsx type ChannelListContextMenuProps (line 40) | interface ChannelListContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/ContextMenu.tsx type RootContextMenuProps (line 56) | interface RootContextMenuProps { type MenuItemProps (line 296) | interface MenuItemProps { type SubMenuProps (line 350) | interface SubMenuProps { type CheckboxItemProps (line 460) | interface CheckboxItemProps { type MenuGroupProps (line 515) | interface MenuGroupProps { FILE: fluxer_app/src/components/uikit/context_menu/ContextMenuIcons.tsx type IconProps (line 109) | interface IconProps { FILE: fluxer_app/src/components/uikit/context_menu/DMContextMenu.tsx type DMContextMenuProps (line 31) | interface DMContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/DataMenuRenderer.tsx type MenuDataItem (line 38) | type MenuDataItem = MenuItemType | MenuSliderType | MenuCheckboxType | M... type DataMenuRendererProps (line 40) | interface DataMenuRendererProps { function isSubmenuItem (line 45) | function isSubmenuItem(item: MenuDataItem): item is MenuSubmenuItemType { function isCheckboxItem (line 49) | function isCheckboxItem(item: MenuDataItem): item is MenuCheckboxType { function isRadioItem (line 53) | function isRadioItem(item: MenuDataItem): item is MenuRadioType { function isMenuItem (line 57) | function isMenuItem(item: MenuDataItem): item is MenuItemType { function isSliderItem (line 61) | function isSliderItem(item: MenuDataItem): item is MenuSliderType { FILE: fluxer_app/src/components/uikit/context_menu/FavoritesCategoryContextMenu.tsx type FavoritesCategoryContextMenuProps (line 37) | interface FavoritesCategoryContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/FavoritesChannelContextMenu.tsx type FavoritesChannelContextMenuProps (line 58) | interface FavoritesChannelContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/FavoritesChannelListContextMenu.tsx type FavoritesChannelListContextMenuProps (line 34) | interface FavoritesChannelListContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/FavoritesGuildContextMenu.tsx type FavoritesGuildContextMenuProps (line 31) | interface FavoritesGuildContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/GroupDMContextMenu.tsx type GroupDMContextMenuProps (line 70) | interface GroupDMContextMenuProps { type GroupDMMemberContextMenuProps (line 95) | interface GroupDMMemberContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/GuildContextMenu.tsx type GuildContextMenuProps (line 30) | interface GuildContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/GuildFolderContextMenu.tsx type GuildFolder (line 32) | interface GuildFolder { type GuildFolderContextMenuProps (line 39) | interface GuildFolderContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/GuildMemberContextMenu.tsx type GuildMemberContextMenuProps (line 58) | interface GuildMemberContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/MediaContextMenu.tsx type MediaType (line 37) | type MediaType = 'image' | 'gif' | 'gifv' | 'video' | 'audio' | 'file'; type MediaContextMenuProps (line 39) | interface MediaContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/MenuGroup.tsx type MenuGroupProps (line 24) | interface MenuGroupProps { FILE: fluxer_app/src/components/uikit/context_menu/MenuGroups.tsx type MenuGroupsProps (line 25) | interface MenuGroupsProps { FILE: fluxer_app/src/components/uikit/context_menu/MenuItem.tsx type MenuItemPrimitiveProps (line 25) | type MenuItemPrimitiveProps = React.ComponentProps, ids: ReadonlySet... type MessageContextMenuProps (line 104) | interface MessageContextMenuProps { function renderEmojiContent (line 115) | function renderEmojiContent(emoji: FlatEmoji, imgClassName: string, nati... FILE: fluxer_app/src/components/uikit/context_menu/SettingsContextMenu.tsx type SettingsContextMenuProps (line 39) | interface SettingsContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/UserContextMenu.tsx type UserContextMenuProps (line 78) | interface UserContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/VoiceParticipantContextMenu.tsx type VoiceParticipantContextMenuProps (line 34) | interface VoiceParticipantContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/WebhookContextMenu.tsx type WebhookContextMenuProps (line 29) | interface WebhookContextMenuProps { FILE: fluxer_app/src/components/uikit/context_menu/items/ActionsSubmenu.tsx type ActionsSubmenuProps (line 45) | interface ActionsSubmenuProps { FILE: fluxer_app/src/components/uikit/context_menu/items/CallMenuItems.tsx type StartVoiceCallMenuItemProps (line 42) | interface StartVoiceCallMenuItemProps { type StartVideoCallMenuItemProps (line 73) | interface StartVideoCallMenuItemProps { type RingUserMenuItemProps (line 104) | interface RingUserMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/CategoryMenuData.tsx type CategoryMenuDataOptions (line 54) | interface CategoryMenuDataOptions { type CategoryMenuData (line 59) | interface CategoryMenuData { type CategoryMenuHandlers (line 65) | interface CategoryMenuHandlers { type CategoryMenuState (line 76) | interface CategoryMenuState { function getCategoryMenuState (line 86) | function getCategoryMenuState(category: ChannelRecord): CategoryMenuState { function useCategoryMenuData (line 126) | function useCategoryMenuData(category: ChannelRecord, options: CategoryM... FILE: fluxer_app/src/components/uikit/context_menu/items/CategoryMenuItems.tsx type CategoryMenuItemProps (line 61) | interface CategoryMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/ChannelMenuData.tsx type ChannelMenuDataOptions (line 78) | interface ChannelMenuDataOptions { type ChannelMenuData (line 83) | interface ChannelMenuData { type ChannelMenuHandlers (line 89) | interface ChannelMenuHandlers { type ChannelMenuState (line 109) | interface ChannelMenuState { function getChannelMenuState (line 126) | function getChannelMenuState(channel: ChannelRecord, guild: GuildRecord ... function useChannelMenuData (line 168) | function useChannelMenuData( FILE: fluxer_app/src/components/uikit/context_menu/items/ChannelMenuItems.tsx type ChannelMenuItemProps (line 69) | interface ChannelMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/CopyMenuItems.tsx type CopyUserIdMenuItemProps (line 29) | interface CopyUserIdMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/DMMenuData.tsx type InviteCandidate (line 98) | interface InviteCandidate { type DMMenuHandlers (line 122) | interface DMMenuHandlers { type DMMenuDataOptions (line 147) | interface DMMenuDataOptions { type DMMenuData (line 152) | interface DMMenuData { function useDMMenuData (line 168) | function useDMMenuData( FILE: fluxer_app/src/components/uikit/context_menu/items/DMMenuItems.tsx type DMMenuItemProps (line 37) | interface DMMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/DebugMenuItems.tsx type BaseDebugMenuItemProps (line 37) | interface BaseDebugMenuItemProps { type DebugUserMenuItemProps (line 41) | type DebugUserMenuItemProps = BaseDebugMenuItemProps & { type DebugChannelMenuItemProps (line 59) | type DebugChannelMenuItemProps = BaseDebugMenuItemProps & { type DebugGuildMenuItemProps (line 77) | type DebugGuildMenuItemProps = BaseDebugMenuItemProps & { type DebugGuildMemberMenuItemProps (line 95) | type DebugGuildMemberMenuItemProps = BaseDebugMenuItemProps & { FILE: fluxer_app/src/components/uikit/context_menu/items/GuildMemberMenuItems.tsx type TransferOwnershipMenuItemProps (line 57) | interface TransferOwnershipMenuItemProps { type KickMemberMenuItemProps (line 82) | interface KickMemberMenuItemProps { type BanMemberMenuItemProps (line 106) | interface BanMemberMenuItemProps { type ManageRolesMenuItemProps (line 130) | interface ManageRolesMenuItemProps { type ChangeNicknameMenuItemProps (line 221) | interface ChangeNicknameMenuItemProps { type TimeoutMemberMenuItemProps (line 260) | interface TimeoutMemberMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/GuildMenuData.tsx type UseGuildMenuDataOptions (line 73) | interface UseGuildMenuDataOptions { type GuildMenuHandlers (line 78) | interface GuildMenuHandlers { type GuildMenuPermissions (line 94) | interface GuildMenuPermissions { type GuildMenuData (line 104) | interface GuildMenuData { function useGuildMenuData (line 113) | function useGuildMenuData(guild: GuildRecord, options: UseGuildMenuDataO... FILE: fluxer_app/src/components/uikit/context_menu/items/GuildMenuItems.tsx type GuildMenuItemProps (line 69) | interface GuildMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/InviteMenuItems.tsx type InviteCandidate (line 48) | interface InviteCandidate { type InviteToCommunityMenuItemProps (line 79) | interface InviteToCommunityMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/MediaMenuData.tsx type MediaType (line 54) | type MediaType = 'image' | 'gif' | 'gifv' | 'video' | 'audio' | 'file'; function canvasToPngBlob (line 56) | async function canvasToPngBlob(canvas: HTMLCanvasElement): Promise { function createImageBitmapWithOrientation (line 69) | async function createImageBitmapWithOrientation(blob: Blob): Promise { function fetchFirstPngBlob (line 114) | async function fetchFirstPngBlob(urls: Array): Promise { type MediaMenuDataOptions (line 134) | interface MediaMenuDataOptions { type MediaMenuDataProps (line 138) | interface MediaMenuDataProps { type MediaMenuData (line 150) | interface MediaMenuData { type MediaMenuHandlers (line 156) | interface MediaMenuHandlers { type MediaMenuState (line 167) | interface MediaMenuState { function getCopyLabel (line 173) | function getCopyLabel(type: MediaType, i18n: I18n): string { function getSaveLabel (line 191) | function getSaveLabel(type: MediaType, i18n: I18n): string { function useMediaMenuData (line 209) | function useMediaMenuData(props: MediaMenuDataProps, options: MediaMenuD... FILE: fluxer_app/src/components/uikit/context_menu/items/MentionUserMenuItem.tsx type MentionUserMenuItemProps (line 29) | interface MentionUserMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/MessageMenuItems.tsx type MessageMenuItemProps (line 51) | interface MessageMenuItemProps { type EditMessageMenuItemProps (line 70) | type EditMessageMenuItemProps = MessageMenuItemProps & { type ReplyMessageMenuItemProps (line 88) | type ReplyMessageMenuItemProps = MessageMenuItemProps & { type ForwardMessageMenuItemProps (line 106) | type ForwardMessageMenuItemProps = MessageMenuItemProps & { type BookmarkMessageMenuItemProps (line 124) | type BookmarkMessageMenuItemProps = MessageMenuItemProps & { type PinMessageMenuItemProps (line 150) | type PinMessageMenuItemProps = MessageMenuItemProps & { type SuppressEmbedsMenuItemProps (line 168) | type SuppressEmbedsMenuItemProps = MessageMenuItemProps & { type CopyMessageTextMenuItemProps (line 192) | type CopyMessageTextMenuItemProps = MessageMenuItemProps & { type CopyMessageLinkMenuItemProps (line 210) | type CopyMessageLinkMenuItemProps = MessageMenuItemProps & { type CopyMessageIdMenuItemProps (line 230) | type CopyMessageIdMenuItemProps = MessageMenuItemProps & { type DeleteMessageMenuItemProps (line 262) | type DeleteMessageMenuItemProps = MessageMenuItemProps & { type RemoveAllReactionsMenuItemProps (line 284) | type RemoveAllReactionsMenuItemProps = MessageMenuItemProps & { type MarkAsUnreadMenuItemProps (line 304) | type MarkAsUnreadMenuItemProps = MessageMenuItemProps & { FILE: fluxer_app/src/components/uikit/context_menu/items/MessageUserMenuItem.tsx type MessageUserMenuItemProps (line 37) | interface MessageUserMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/ModerationSubmenu.tsx type ModerationSubmenuProps (line 53) | interface ModerationSubmenuProps { FILE: fluxer_app/src/components/uikit/context_menu/items/MoveToChannelSubmenu.tsx type MoveToChannelSubmenuProps (line 39) | interface MoveToChannelSubmenuProps { FILE: fluxer_app/src/components/uikit/context_menu/items/RelationshipMenuItems.tsx type SendFriendRequestMenuItemProps (line 44) | interface SendFriendRequestMenuItemProps { type AcceptFriendRequestMenuItemProps (line 96) | interface AcceptFriendRequestMenuItemProps { type RemoveFriendMenuItemProps (line 115) | interface RemoveFriendMenuItemProps { type ChangeFriendNicknameMenuItemProps (line 135) | interface ChangeFriendNicknameMenuItemProps { type IgnoreFriendRequestMenuItemProps (line 160) | interface IgnoreFriendRequestMenuItemProps { type CancelFriendRequestMenuItemProps (line 179) | interface CancelFriendRequestMenuItemProps { type BlockUserMenuItemProps (line 198) | interface BlockUserMenuItemProps { type UnblockUserMenuItemProps (line 217) | interface UnblockUserMenuItemProps { type RelationshipActionMenuItemProps (line 236) | interface RelationshipActionMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/ReportGuildMenuItem.tsx type ReportGuildMenuItemProps (line 33) | interface ReportGuildMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/ReportMessageMenuItem.tsx type ReportMessageMenuItemProps (line 33) | interface ReportMessageMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/UserNoteMenuItems.tsx type AddNoteMenuItemProps (line 29) | interface AddNoteMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/UserProfileMenuItem.tsx type UserProfileMenuItemProps (line 29) | interface UserProfileMenuItemProps { FILE: fluxer_app/src/components/uikit/context_menu/items/VoiceParticipantMenuData.tsx type VoiceParticipantMenuDataOptions (line 111) | interface VoiceParticipantMenuDataOptions { type VoiceParticipantMenuData (line 126) | interface VoiceParticipantMenuData { function useVoiceParticipantMenuData (line 139) | function useVoiceParticipantMenuData(options: VoiceParticipantMenuDataOp... FILE: fluxer_app/src/components/uikit/context_menu/items/VoiceParticipantMenuItems.tsx type SelfMuteMenuItemProps (line 65) | interface SelfMuteMenuItemProps { type SelfDeafenMenuItemProps (line 98) | interface SelfDeafenMenuItemProps { type VoiceVideoSettingsMenuItemProps (line 131) | interface VoiceVideoSettingsMenuItemProps { type SelfTurnOffCameraMenuItemProps (line 148) | interface SelfTurnOffCameraMenuItemProps { type SelfTurnOffStreamMenuItemProps (line 168) | interface SelfTurnOffStreamMenuItemProps { type ParticipantVolumeSliderProps (line 188) | interface ParticipantVolumeSliderProps { type LocalMuteParticipantMenuItemProps (line 214) | interface LocalMuteParticipantMenuItemProps { type LocalDisableVideoMenuItemProps (line 240) | interface LocalDisableVideoMenuItemProps { type GuildMuteMenuItemProps (line 279) | interface GuildMuteMenuItemProps { type GuildDeafenMenuItemProps (line 316) | interface GuildDeafenMenuItemProps { type DisconnectParticipantMenuItemProps (line 351) | interface DisconnectParticipantMenuItemProps { type TurnOffDeviceCameraMenuItemProps (line 392) | interface TurnOffDeviceCameraMenuItemProps { type TurnOffDeviceStreamMenuItemProps (line 415) | interface TurnOffDeviceStreamMenuItemProps { type CopyDeviceIdMenuItemProps (line 438) | interface CopyDeviceIdMenuItemProps { type BulkMuteDevicesMenuItemProps (line 456) | interface BulkMuteDevicesMenuItemProps { type BulkDeafenDevicesMenuItemProps (line 481) | interface BulkDeafenDevicesMenuItemProps { type BulkCameraDevicesMenuItemProps (line 506) | interface BulkCameraDevicesMenuItemProps { type BulkDisconnectDevicesMenuItemProps (line 527) | interface BulkDisconnectDevicesMenuItemProps { type FocusParticipantMenuItemProps (line 547) | interface FocusParticipantMenuItemProps { FILE: fluxer_app/src/components/uikit/emoji_tooltip_content/EmojiTooltipContent.tsx type EmojiTooltipContentProps (line 26) | interface EmojiTooltipContentProps { FILE: fluxer_app/src/components/uikit/focus_ring/FocusRing.tsx type ForwardableProps (line 30) | type ForwardableProps = React.HTMLAttributes; type FluxerFocusRingProps (line 32) | type FluxerFocusRingProps = FocusRingProps & constant EVENT_HANDLER_REGEX (line 37) | const EVENT_HANDLER_REGEX = /^on[A-Z]/; type FocusableChildProps (line 39) | interface FocusableChildProps extends React.HTMLAttributes { function onFocus (line 119) | function onFocus(event: FocusEvent) { function onBlur (line 131) | function onBlur() { FILE: fluxer_app/src/components/uikit/focus_ring/FocusRingContext.tsx constant ACTIVE_RING_CONTEXT_MANAGER (line 30) | let ACTIVE_RING_CONTEXT_MANAGER: FocusRingContextManager | undefined; function setActiveRingContextManager (line 32) | function setActiveRingContextManager(manager: FocusRingContextManager) { function parseBorderRadius (line 39) | function parseBorderRadius(radius: string | undefined) { class FocusRingContextManager (line 46) | class FocusRingContextManager { method setContainer (line 57) | setContainer(element: Element | null) { method showElement (line 61) | showElement(element: Element, opts: FocusRingShowOpts = {}) { method hide (line 72) | hide() { method visible (line 82) | get visible() { method getElementAncestors (line 86) | private getElementAncestors(element?: Element): FocusRingAncestry { method getNextZIndexForAncestry (line 101) | private getNextZIndexForAncestry(ancestry: FocusRingAncestry) { method getBorderRadius (line 114) | private getBorderRadius(ancestry: FocusRingAncestry) { method makePositionFromDOMRect (line 127) | private makePositionFromDOMRect(rect: DOMRect) { method getStyle (line 158) | getStyle(): FocusRingStyleProperties { constant GLOBAL_FOCUS_RING_CONTEXT (line 181) | const GLOBAL_FOCUS_RING_CONTEXT = new FocusRingContextManager(); FILE: fluxer_app/src/components/uikit/focus_ring/FocusRingManager.tsx class FocusRingManagerClass (line 22) | class FocusRingManagerClass { method setRingsEnabled (line 25) | setRingsEnabled(enabled: boolean) { FILE: fluxer_app/src/components/uikit/focus_ring/FocusRingScope.tsx type FocusRingScopeProps (line 27) | interface FocusRingScopeProps { function FocusRingScope (line 32) | function FocusRingScope(props: FocusRingScopeProps) { function Ring (line 48) | function Ring() { FILE: fluxer_app/src/components/uikit/focus_ring/FocusRingTypes.tsx constant FOCUS_RING_COLOR_CSS_PROPERTY (line 22) | const FOCUS_RING_COLOR_CSS_PROPERTY = '--focus-ring-color'; constant FOCUS_RING_RADIUS_CSS_PROPERTY (line 23) | const FOCUS_RING_RADIUS_CSS_PROPERTY = '--focus-ring-radius'; type Offset (line 24) | interface Offset { type FocusRingShowOpts (line 31) | interface FocusRingShowOpts { type FocusRingAncestry (line 37) | interface FocusRingAncestry { type FocusRingStyleProperties (line 42) | interface FocusRingStyleProperties extends React.CSSProperties { type ThemeOptions (line 47) | interface ThemeOptions { type FocusRingProps (line 54) | interface FocusRingProps { FILE: fluxer_app/src/components/uikit/keybind_hint/KeybindHint.tsx type KeyPart (line 30) | interface KeyPart { type KeybindHintProps (line 86) | interface KeybindHintProps { type TooltipWithKeybindProps (line 119) | interface TooltipWithKeybindProps { FILE: fluxer_app/src/components/uikit/menu_bottom_sheet/MenuBottomSheet.tsx type MenuItemType (line 30) | interface MenuItemType { type MenuSubmenuItemType (line 42) | interface MenuSubmenuItemType { type MenuSliderType (line 51) | interface MenuSliderType { type MenuCheckboxType (line 61) | interface MenuCheckboxType { type MenuRadioType (line 69) | interface MenuRadioType { type MenuLeafItem (line 77) | type MenuLeafItem = MenuItemType | MenuSliderType | MenuCheckboxType | M... type MenuSheetItem (line 78) | type MenuSheetItem = MenuLeafItem | MenuSubmenuItemType; type MenuGroupType (line 80) | interface MenuGroupType { type MenuBottomSheetProps (line 84) | interface MenuBottomSheetProps { FILE: fluxer_app/src/components/uikit/plutonium_upsell/PlutoniumUpsell.tsx type PlutoniumUpsellProps (line 29) | interface PlutoniumUpsellProps { FILE: fluxer_app/src/components/uikit/popout/Popout.tsx type PopoutProps (line 36) | interface PopoutProps { type OpenPopoutOptions (line 64) | interface OpenPopoutOptions extends Partial { type PopoutState (line 97) | interface PopoutState { type PopoutChildProps (line 287) | type PopoutChildProps = React.HTMLAttributes & {ref?: React... FILE: fluxer_app/src/components/uikit/popout/Popouts.tsx type PopoutItemProps (line 35) | type PopoutItemProps = Omit & { constant FOCUSABLE_SELECTOR (line 43) | const FOCUSABLE_SELECTOR = FILE: fluxer_app/src/components/uikit/popout/index.tsx function usePopoutKeyContext (line 23) | function usePopoutKeyContext(): PopoutKey | null { function usePopoutKey (line 27) | function usePopoutKey(): PopoutKey | null { type PopoutKey (line 31) | type PopoutKey = string | number; type PopoutPosition (line 33) | type PopoutPosition = type Popout (line 47) | interface Popout { FILE: fluxer_app/src/components/uikit/popout/searchable_list_popout/SearchableListPopout.tsx type SearchableListPopoutItem (line 38) | interface SearchableListPopoutItem { type SearchableListPopoutSection (line 47) | interface SearchableListPopoutSection { type SearchableListPopoutProps (line 53) | interface SearchableListPopoutProps { type FlattenedOption (line 70) | interface FlattenedOption { function getDefaultActiveIndex (line 75) | function getDefaultActiveIndex(options: Array): number ... function SearchableListPopout (line 88) | function SearchableListPopout({ FILE: fluxer_app/src/components/uikit/radio_group/RadioGroup.tsx type RadioOption (line 28) | interface RadioOption { type RadioGroupProps (line 35) | interface RadioGroupProps { type RadioOptionItemProps (line 45) | interface RadioOptionItemProps { FILE: fluxer_app/src/components/uikit/scroller/ScrollerMath.tsx type ScrollAxis (line 20) | type ScrollAxis = 'vertical' | 'horizontal'; type AxisScrollMetrics (line 22) | interface AxisScrollMetrics { type ScrollbarThumbState (line 29) | interface ScrollbarThumbState { function clamp (line 37) | function clamp(value: number, minValue: number, maxValue: number): number { function getAxisScrollMetrics (line 41) | function getAxisScrollMetrics(element: HTMLElement, orientation: ScrollA... function calculateThumbState (line 69) | function calculateThumbState( function getAxisPointerPosition (line 113) | function getAxisPointerPosition(clientX: number, clientY: number, orient... function getAxisScrollPosition (line 121) | function getAxisScrollPosition(element: HTMLElement, orientation: Scroll... function setAxisScrollPosition (line 129) | function setAxisScrollPosition(element: HTMLElement, orientation: Scroll... FILE: fluxer_app/src/components/uikit/scroller/ScrollerTrack.tsx type ScrollAxis (line 24) | type ScrollAxis = 'vertical' | 'horizontal'; type ScrollerTrackProps (line 26) | interface ScrollerTrackProps { function ScrollerTrack (line 39) | function ScrollerTrack({ FILE: fluxer_app/src/components/uikit/scroller/useScrollerThumb.tsx type ScrollOverflow (line 32) | type ScrollOverflow = 'scroll' | 'auto' | 'hidden'; type UseScrollerThumbOptions (line 34) | interface UseScrollerThumbOptions { type DragState (line 41) | interface DragState { type UseScrollerThumbResult (line 50) | interface UseScrollerThumbResult { function createEmptyThumbState (line 58) | function createEmptyThumbState(): ScrollbarThumbState { function useScrollerThumb (line 68) | function useScrollerThumb({ FILE: fluxer_app/src/components/uikit/segmented_tabs/SegmentedTabs.tsx type SegmentedTab (line 25) | interface SegmentedTab { type SegmentedTabsProps (line 30) | interface SegmentedTabsProps { function SegmentedTabs (line 38) | function SegmentedTabs({ FILE: fluxer_app/src/components/uikit/sheet/Sheet.tsx type Surface (line 31) | type Surface = 'primary' | 'secondary' | 'tertiary'; type RootProps (line 33) | interface RootProps { type HandleProps (line 111) | interface HandleProps { type HeaderAlign (line 121) | type HeaderAlign = 'center' | 'start' | 'end'; type HeaderProps (line 123) | interface HeaderProps { type TitleProps (line 177) | interface TitleProps { type SubtitleProps (line 186) | interface SubtitleProps { type ContentProps (line 192) | interface ContentProps { type SectionProps (line 205) | interface SectionProps { type FooterProps (line 214) | interface FooterProps { type ActionsProps (line 224) | interface ActionsProps { type DividerProps (line 233) | interface DividerProps { type CloseButtonProps (line 239) | interface CloseButtonProps { FILE: fluxer_app/src/components/uikit/tabs/Tabs.tsx type TabItem (line 25) | interface TabItem { type TabsProps (line 30) | interface TabsProps { function Tabs (line 38) | function Tabs({tabs, activeTab, onTabChange, className... FILE: fluxer_app/src/components/uikit/toast/Toast.tsx constant MINIMUM_TIMEOUT (line 30) | const MINIMUM_TIMEOUT = 1500; FILE: fluxer_app/src/components/uikit/toast/index.tsx type ToastType (line 22) | type ToastType = 'success' | 'error' | 'info'; type ToastProps (line 24) | interface ToastProps { type ToastPropsExtended (line 33) | type ToastPropsExtended = ToastProps & { FILE: fluxer_app/src/components/uikit/tooltip/Tooltip.tsx type TooltipPosition (line 37) | type TooltipPosition = 'top' | 'left' | 'right' | 'bottom'; type TooltipType (line 38) | type TooltipType = 'normal' | 'error'; constant MAX_WIDTH_MAP (line 62) | const MAX_WIDTH_MAP = { type TooltipProps (line 80) | interface TooltipProps { type TooltipChildProps (line 370) | type TooltipChildProps = React.HTMLAttributes & {disabled?:... FILE: fluxer_app/src/components/uikit/warning_alert/WarningAlert.tsx type WarningAlertProps (line 25) | interface WarningAlertProps { FILE: fluxer_app/src/components/voice/CompactVoiceCallView.tsx type CompactVoiceCallViewProps (line 59) | interface CompactVoiceCallViewProps { type ResizeListeners (line 70) | interface ResizeListeners { type ResizeState (line 75) | interface ResizeState { type NormalizedPiPPosition (line 83) | interface NormalizedPiPPosition { type CompactPiPDragState (line 88) | interface CompactPiPDragState { type CompactPiPMetrics (line 96) | interface CompactPiPMetrics { constant COMPACT_HEIGHT_DRAG_THRESHOLD_SQ (line 103) | const COMPACT_HEIGHT_DRAG_THRESHOLD_SQ = 9; constant COMPACT_HEIGHT_MIN (line 104) | const COMPACT_HEIGHT_MIN = COMPACT_VOICE_CALL_HEIGHT_MIN; constant COMPACT_HEIGHT_VIEWPORT_MARGIN (line 105) | const COMPACT_HEIGHT_VIEWPORT_MARGIN = 32; constant COMPACT_HEIGHT_STEP (line 106) | const COMPACT_HEIGHT_STEP = 16; constant VOICE_HUD_IDLE_TIMEOUT_MS (line 107) | const VOICE_HUD_IDLE_TIMEOUT_MS = 3000; constant COMPACT_PIP_EDGE_MARGIN (line 108) | const COMPACT_PIP_EDGE_MARGIN = 12; function clampNormalizedPosition (line 110) | function clampNormalizedPosition(value: number): number { function useConnectionLabel (line 117) | function useConnectionLabel(state: ConnectionState, participantCount: nu... function getCompactHeightKey (line 133) | function getCompactHeightKey(channelId: string, callMessageId: string | ... function getCompactHeightMax (line 137) | function getCompactHeightMax(compactHeightMin: number): number { function hasValidRoomForCompactVoiceCall (line 142) | function hasValidRoomForCompactVoiceCall(channel: ChannelRecord): boolean { FILE: fluxer_app/src/components/voice/FeedHiddenOverlay.tsx type FeedHiddenOverlayProps (line 25) | interface FeedHiddenOverlayProps { function FeedHiddenOverlay (line 31) | function FeedHiddenOverlay({message, buttonLabel, onReveal}: FeedHiddenO... FILE: fluxer_app/src/components/voice/HiddenStreamPlaceholder.tsx type HiddenStreamPlaceholderProps (line 26) | interface HiddenStreamPlaceholderProps { function HiddenStreamPlaceholder (line 31) | function HiddenStreamPlaceholder({className, label}: HiddenStreamPlaceho... FILE: fluxer_app/src/components/voice/IncomingCallManager.tsx type PopoutModel (line 47) | interface PopoutModel { type Position (line 54) | interface Position { type WindowSize (line 59) | interface WindowSize { function clampNumber (line 64) | function clampNumber(value: number, min: number, max: number): number { function getWindowSize (line 68) | function getWindowSize(): WindowSize { function getCenterPosition (line 75) | function getCenterPosition(windowSize: WindowSize): Position { function clampPositionToWindow (line 82) | function clampPositionToWindow(position: Position, windowSize: WindowSiz... function resolveInitiatorUserId (line 91) | function resolveInitiatorUserId( function setsEqual (line 109) | function setsEqual(a: Set, b: Set) { FILE: fluxer_app/src/components/voice/IncomingCallOverlayConstants.tsx constant INCOMING_CALL_OVERLAY_HEIGHT (line 20) | const INCOMING_CALL_OVERLAY_HEIGHT = 240; constant INCOMING_CALL_OVERLAY_OFFSET (line 21) | const INCOMING_CALL_OVERLAY_OFFSET = 12; constant INCOMING_CALL_OVERLAY_STORAGE_KEY (line 22) | const INCOMING_CALL_OVERLAY_STORAGE_KEY = 'incoming_call_overlay_position'; constant INCOMING_CALL_OVERLAY_WIDTH (line 23) | const INCOMING_CALL_OVERLAY_WIDTH = 320; FILE: fluxer_app/src/components/voice/IncomingCallPortal.tsx function createPortalRoot (line 25) | function createPortalRoot(): HTMLElement | null { function ensureIncomingCallPortalRoot (line 39) | function ensureIncomingCallPortalRoot(): HTMLElement | null { function useIncomingCallPortalRoot (line 43) | function useIncomingCallPortalRoot(): HTMLElement | null { FILE: fluxer_app/src/components/voice/IncomingCallUI.tsx type Position (line 43) | interface Position { type DragState (line 48) | interface DragState { type DragListeners (line 58) | interface DragListeners { constant CARD_MOTION (line 63) | const CARD_MOTION = { constant DRAG_START_THRESHOLD (line 70) | const DRAG_START_THRESHOLD = 6; constant DRAG_START_THRESHOLD_SQ (line 71) | const DRAG_START_THRESHOLD_SQ = DRAG_START_THRESHOLD ** 2; function clamp (line 73) | function clamp(value: number, min: number, max: number): number { function clampPosition (line 77) | function clampPosition(x: number, y: number, maxX: number, maxY: number)... function getViewportWidth (line 84) | function getViewportWidth(): number { function getViewportHeight (line 88) | function getViewportHeight(): number { function resolveMaxDimension (line 92) | function resolveMaxDimension(value: number | undefined, viewport: number... type IncomingCallUIProps (line 97) | interface IncomingCallUIProps { FILE: fluxer_app/src/components/voice/OwnStreamPreviewState.tsx type OwnStreamHiddenStateOptions (line 28) | interface OwnStreamHiddenStateOptions { type OwnStreamHiddenState (line 35) | interface OwnStreamHiddenState { function getOwnStreamHiddenState (line 40) | function getOwnStreamHiddenState({ type OwnScreenSharePreviewStateOptions (line 52) | interface OwnScreenSharePreviewStateOptions { type OwnScreenSharePreviewState (line 59) | interface OwnScreenSharePreviewState { function useOwnScreenSharePreviewState (line 66) | function useOwnScreenSharePreviewState({ function useWindowFocus (line 119) | function useWindowFocus(): boolean { FILE: fluxer_app/src/components/voice/PiPOverlay.tsx constant PIP_ASPECT_RATIO (line 69) | const PIP_ASPECT_RATIO = 16 / 9; constant PIP_MAX_WIDTH (line 70) | const PIP_MAX_WIDTH = 720; constant PIP_MIN_WIDTH (line 71) | const PIP_MIN_WIDTH = 240; constant EDGE_PADDING (line 72) | const EDGE_PADDING = 20; constant FLING_TIME_SECONDS (line 74) | const FLING_TIME_SECONDS = 0.25; constant STRONG_FLING_VELOCITY (line 75) | const STRONG_FLING_VELOCITY = 550; constant MIN_AXIS_VELOCITY (line 76) | const MIN_AXIS_VELOCITY = 180; type Corner (line 78) | type Corner = 'top-left' | 'top-right' | 'bottom-right' | 'bottom-left'; type CornerPosition (line 80) | interface CornerPosition { type DragBounds (line 85) | interface DragBounds { type ResizeListeners (line 92) | interface ResizeListeners { type ResizeEdge (line 97) | type ResizeEdge = 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'to... type ResizeState (line 99) | interface ResizeState { constant SNAP_SPRING (line 109) | const SNAP_SPRING: SpringOptions = { constant INTERACTION_SPRING (line 116) | const INTERACTION_SPRING: SpringOptions = { function clamp (line 123) | function clamp(value: number, min: number, max: number): number { function getPiPHeight (line 127) | function getPiPHeight(width: number): number { function getViewportMaxWidth (line 131) | function getViewportMaxWidth(viewportWidth: number, viewportHeight: numb... function getViewportMinWidth (line 137) | function getViewportMinWidth(viewportMaxWidth: number): number { function clampPiPWidth (line 141) | function clampPiPWidth(value: number, viewportWidth: number, viewportHei... function getDragBounds (line 147) | function getDragBounds(viewportWidth: number, viewportHeight: number, pi... function getCornerPositions (line 159) | function getCornerPositions( function pickCornerOnRelease (line 175) | function pickCornerOnRelease( function useFindTrackRef (line 229) | function useFindTrackRef(content: PiPContent | null, room: Room): TrackR... type PiPOverlayInnerProps (line 287) | interface PiPOverlayInnerProps { FILE: fluxer_app/src/components/voice/SignalStrengthIcon.tsx type Props (line 25) | interface Props { constant ARC_COUNT (line 33) | const ARC_COUNT = 4; constant LOADING_STEP_MS (line 34) | const LOADING_STEP_MS = 280; function useInterval (line 36) | function useInterval(enabled: boolean, callback: () => void, delayMs: nu... type LatencyLoadingState (line 44) | interface LatencyLoadingState { type LatencyValueState (line 48) | interface LatencyValueState { type LatencyState (line 54) | type LatencyState = LatencyLoadingState | LatencyValueState; function getLatencyState (line 56) | function getLatencyState(latency: number | null, thresholds: [number, nu... function SignalStrengthIcon (line 73) | function SignalStrengthIcon({ FILE: fluxer_app/src/components/voice/StreamFocusHeaderInfo.tsx type StreamFocusHeaderInfoProps (line 30) | interface StreamFocusHeaderInfoProps { function StreamFocusHeaderInfo (line 40) | function StreamFocusHeaderInfo({ FILE: fluxer_app/src/components/voice/StreamInfoPill.tsx type ResolutionHeight (line 27) | type ResolutionHeight = 480 | 720 | 1080 | 1440 | 2160; constant RESOLUTION_HEIGHTS (line 29) | const RESOLUTION_HEIGHTS: Array = [480, 720, 1080, 144... type StreamInfoPillTone (line 31) | type StreamInfoPillTone = 'default' | 'voice_tile'; function getClosestResolutionHeight (line 33) | function getClosestResolutionHeight(height: number) { type StreamInfoPillProps (line 48) | interface StreamInfoPillProps { function StreamInfoPill (line 55) | function StreamInfoPill({info, className, showLiveBadge = true, tone = '... FILE: fluxer_app/src/components/voice/StreamKeys.tsx type ParsedStreamKey (line 20) | interface ParsedStreamKey { function getStreamKey (line 26) | function getStreamKey( function parseStreamKey (line 36) | function parseStreamKey(streamKey: string): ParsedStreamKey | null { FILE: fluxer_app/src/components/voice/StreamSpectatorsPopout.tsx type StreamSpectatorsPopoutProps (line 51) | interface StreamSpectatorsPopoutProps { constant FLOATING_INITIAL (line 60) | const FLOATING_INITIAL = {opacity: 0, scale: 0.98}; constant FLOATING_INITIAL_REDUCED (line 61) | const FLOATING_INITIAL_REDUCED = {opacity: 1, scale: 1}; constant FLOATING_ANIMATE (line 62) | const FLOATING_ANIMATE = {opacity: 1, scale: 1}; constant FLOATING_EXIT (line 63) | const FLOATING_EXIT = {opacity: 0, scale: 0.98}; constant FLOATING_EXIT_REDUCED (line 64) | const FLOATING_EXIT_REDUCED = {opacity: 1, scale: 1}; constant FLOATING_TRANSITION (line 65) | const FLOATING_TRANSITION = { constant FLOATING_TRANSITION_REDUCED (line 69) | const FLOATING_TRANSITION_REDUCED = {duration: 0}; type SpectatorRowProps (line 206) | interface SpectatorRowProps { FILE: fluxer_app/src/components/voice/StreamWatchHoverCard.tsx type StreamWatchHoverCardProps (line 30) | interface StreamWatchHoverCardProps { FILE: fluxer_app/src/components/voice/StreamWatchHoverPopout.tsx type StreamWatchHoverPopoutProps (line 57) | interface StreamWatchHoverPopoutProps extends HTMLAttributes { constant FLOATING_INITIAL (line 65) | const FLOATING_INITIAL = {opacity: 0, scale: 0.98}; constant FLOATING_INITIAL_REDUCED (line 66) | const FLOATING_INITIAL_REDUCED = {opacity: 1, scale: 1}; constant FLOATING_ANIMATE (line 67) | const FLOATING_ANIMATE = {opacity: 1, scale: 1}; constant FLOATING_EXIT (line 68) | const FLOATING_EXIT = {opacity: 0, scale: 0.98}; constant FLOATING_EXIT_REDUCED (line 69) | const FLOATING_EXIT_REDUCED = {opacity: 1, scale: 1}; constant FLOATING_TRANSITION (line 70) | const FLOATING_TRANSITION: Transition = { constant FLOATING_TRANSITION_REDUCED (line 74) | const FLOATING_TRANSITION_REDUCED: Transition = {duration: 0}; constant FLOATING_PLACEMENT (line 75) | const FLOATING_PLACEMENT: Placement = 'right'; FILE: fluxer_app/src/components/voice/VoiceCallFullscreenFeatureFlag.tsx constant VOICE_CALL_FULLSCREEN_ENABLED (line 20) | const VOICE_CALL_FULLSCREEN_ENABLED = true; FILE: fluxer_app/src/components/voice/VoiceCallLayoutContent.tsx type LayoutMode (line 43) | type LayoutMode = 'grid' | 'focus'; type VoiceCallLayoutContentProps (line 45) | interface VoiceCallLayoutContentProps { type FocusLayoutStyle (line 58) | interface FocusLayoutStyle extends React.CSSProperties { type FocusMainStyle (line 66) | interface FocusMainStyle extends React.CSSProperties { constant COMPACT_FOCUS_STYLE (line 70) | const COMPACT_FOCUS_STYLE: FocusLayoutStyle = { constant DEFAULT_FOCUS_MAIN_ASPECT_RATIO (line 77) | const DEFAULT_FOCUS_MAIN_ASPECT_RATIO = 16 / 9; constant FOCUS_MAIN_VISIBLE_THRESHOLD (line 78) | const FOCUS_MAIN_VISIBLE_THRESHOLD = 0.35; function computeExpandedMainMaxHeight (line 190) | function computeExpandedMainMaxHeight(): boolean { function scheduleRemeasurePasses (line 233) | function scheduleRemeasurePasses() { FILE: fluxer_app/src/components/voice/VoiceCallView.tsx constant VOICE_HUD_IDLE_TIMEOUT_MS (line 85) | const VOICE_HUD_IDLE_TIMEOUT_MS = 3000; type VoiceCallViewProps (line 87) | interface VoiceCallViewProps { function useConnectionStateText (line 92) | function useConnectionStateText(connectionState: ConnectionState) { function hasValidRoomForVoiceCallView (line 543) | function hasValidRoomForVoiceCallView(channel: ChannelRecord): boolean { FILE: fluxer_app/src/components/voice/VoiceConnectionStatus.tsx constant SCREEN_SHARE_PRESETS (line 84) | const SCREEN_SHARE_PRESETS = { type ScreenShareResolution (line 91) | type ScreenShareResolution = keyof typeof SCREEN_SHARE_PRESETS; function resolveScreenShareFrameRate (line 93) | function resolveScreenShareFrameRate(frameRate: number): number { type ScreenShareQualityMenuContentProps (line 487) | interface ScreenShareQualityMenuContentProps { FILE: fluxer_app/src/components/voice/VoiceControlBar.tsx constant SCREEN_SHARE_PRESETS (line 87) | const SCREEN_SHARE_PRESETS = { type ScreenShareResolution (line 95) | type ScreenShareResolution = keyof typeof SCREEN_SHARE_PRESETS; function resolveScreenShareFrameRate (line 97) | function resolveScreenShareFrameRate(frameRate: number): number { type ScreenShareQualityMenuContentProps (line 104) | interface ScreenShareQualityMenuContentProps { FILE: fluxer_app/src/components/voice/VoiceGridLayout.tsx type VoiceGridLayoutProps (line 27) | interface VoiceGridLayoutProps { type GridStyle (line 35) | interface GridStyle extends React.CSSProperties { constant OVERFLOW_ENTER_HYSTERESIS_PX (line 39) | const OVERFLOW_ENTER_HYSTERESIS_PX = 2; constant OVERFLOW_EXIT_HYSTERESIS_PX (line 40) | const OVERFLOW_EXIT_HYSTERESIS_PX = 6; constant TILE_ASPECT_RATIO (line 41) | const TILE_ASPECT_RATIO = 16 / 9; function resolveOverflowWithHysteresis (line 43) | function resolveOverflowWithHysteresis(overflowDelta: number, wasOverflo... function VoiceGridLayout (line 51) | function VoiceGridLayout({ FILE: fluxer_app/src/components/voice/VoiceParticipantAvatarList.tsx type VoiceParticipantAvatarEntry (line 41) | interface VoiceParticipantAvatarEntry { function mergeVoiceParticipantEntriesByUser (line 53) | function mergeVoiceParticipantEntriesByUser( function useVoiceParticipantAvatarEntries (line 79) | function useVoiceParticipantAvatarEntries({ type VoiceParticipantPopoutRowProps (line 129) | interface VoiceParticipantPopoutRowProps { function VoiceParticipantPopoutRow (line 135) | function VoiceParticipantPopoutRow({entry, guildId, channelId}: VoicePar... type VoiceParticipantSpeakingAvatarStackProps (line 187) | interface VoiceParticipantSpeakingAvatarStackProps { type VoiceParticipantWrappedAvatarListProps (line 320) | interface VoiceParticipantWrappedAvatarListProps { FILE: fluxer_app/src/components/voice/VoiceParticipantSortUtils.tsx type VoiceParticipantSortIdentity (line 25) | interface VoiceParticipantSortIdentity { type VoiceParticipantSortSnapshotEntry (line 30) | interface VoiceParticipantSortSnapshotEntry { type VoiceParticipantSortSnapshot (line 36) | interface VoiceParticipantSortSnapshot { type VoiceParticipantSnapshotMember (line 41) | interface VoiceParticipantSnapshotMember { constant DISPLAY_NAME_COLLATOR (line 46) | const DISPLAY_NAME_COLLATOR = new Intl.Collator(undefined, { function buildSortIdentity (line 52) | function buildSortIdentity(identity: string): VoiceParticipantSortIdenti... function getUserDisplayName (line 60) | function getUserDisplayName(userId: string, guildId?: string | null, cha... function buildSnapshotFallbackDisplayName (line 67) | function buildSnapshotFallbackDisplayName(userId: string, participantKey... function getIdentityParticipantKey (line 71) | function getIdentityParticipantKey(identity: VoiceParticipantSortIdentit... function getOrCreateVoiceParticipantSortSnapshotEntry (line 75) | function getOrCreateVoiceParticipantSortSnapshotEntry( function compareVoiceParticipantSortSnapshotEntries (line 104) | function compareVoiceParticipantSortSnapshotEntries( function createVoiceParticipantSortSnapshot (line 122) | function createVoiceParticipantSortSnapshot(): VoiceParticipantSortSnaps... function syncVoiceParticipantSortSnapshot (line 129) | function syncVoiceParticipantSortSnapshot( function compareVoiceParticipantSnapshotMembers (line 153) | function compareVoiceParticipantSnapshotMembers( type SortVoiceParticipantItemsWithSnapshotArgs (line 165) | interface SortVoiceParticipantItemsWithSnapshotArgs { function sortVoiceParticipantItemsWithSnapshot (line 174) | function sortVoiceParticipantItemsWithSnapshot( function compareVoiceParticipantIdentities (line 212) | function compareVoiceParticipantIdentities( function compareVoiceParticipantsByUserAndConnection (line 236) | function compareVoiceParticipantsByUserAndConnection( function compareVoiceParticipantsByUserAndConnectionWithSnapshot (line 254) | function compareVoiceParticipantsByUserAndConnectionWithSnapshot( function compareVoiceTrackReferences (line 276) | function compareVoiceTrackReferences( function compareVoiceTrackReferencesWithSnapshot (line 292) | function compareVoiceTrackReferencesWithSnapshot( FILE: fluxer_app/src/components/voice/VoiceParticipantSpeakingUtils.tsx type ParsedVoiceParticipantIdentity (line 22) | interface ParsedVoiceParticipantIdentity { function parseVoiceParticipantIdentity (line 27) | function parseVoiceParticipantIdentity(identity: string): ParsedVoicePar... type IsVoiceParticipantActuallySpeakingArgs (line 32) | interface IsVoiceParticipantActuallySpeakingArgs { function isVoiceParticipantActuallySpeaking (line 38) | function isVoiceParticipantActuallySpeaking({ FILE: fluxer_app/src/components/voice/VoiceParticipantTile.tsx function estimateBase64Bytes (line 121) | function estimateBase64Bytes(base64: string): number { function getScaledDimensions (line 125) | function getScaledDimensions(width: number, height: number, maxDimension... function drawPreviewCanvas (line 137) | function drawPreviewCanvas( function encodePreviewBase64 (line 153) | function encodePreviewBase64(canvas: HTMLCanvasElement, quality: number)... function buildPreviewBase64FromSource (line 158) | async function buildPreviewBase64FromSource( function buildPreviewBase64FromVideo (line 188) | async function buildPreviewBase64FromVideo(videoEl: HTMLVideoElement): P... function buildPreviewBase64FromDataUrl (line 193) | async function buildPreviewBase64FromDataUrl(dataUrl: string): Promise(enabled: boolean) { function useTileContextMenuActive (line 285) | function useTileContextMenuActive(tileElRef: React.RefObject, m... function useAutoVideoSubscription (line 342) | function useAutoVideoSubscription(opts: { type ScreenShareAudioPublicationState (line 389) | interface ScreenShareAudioPublicationState { function useScreenShareAudioPublication (line 394) | function useScreenShareAudioPublication(participant: Participant, enable... function useScreenshareWatchSubscription (line 442) | function useScreenshareWatchSubscription(opts: { function useScreensharePreviewUploader (line 606) | function useScreensharePreviewUploader( FILE: fluxer_app/src/components/voice/VoiceRegionSelector.tsx type VoiceRegionSelectorProps (line 33) | interface VoiceRegionSelectorProps { type RtcRegionOption (line 39) | interface RtcRegionOption extends SelectOption { function VoiceRegionSelector (line 43) | function VoiceRegionSelector({channelId, currentRegion, compact = false}... FILE: fluxer_app/src/components/voice/VoiceSettingsMenus.tsx type VoiceAudioSettingsMenuProps (line 62) | interface VoiceAudioSettingsMenuProps { type VoiceDeviceSettingsMenuProps (line 212) | interface VoiceDeviceSettingsMenuProps { type VoiceInputSettingsMenuProps (line 299) | interface VoiceInputSettingsMenuProps { type VoiceOutputSettingsMenuProps (line 308) | interface VoiceOutputSettingsMenuProps { type VoiceCameraSettingsMenuProps (line 317) | interface VoiceCameraSettingsMenuProps { type VoiceMoreOptionsMenuProps (line 386) | interface VoiceMoreOptionsMenuProps { FILE: fluxer_app/src/components/voice/VoiceStatsOverlay.tsx type VoiceStatsOverlayProps (line 31) | interface VoiceStatsOverlayProps { type ThresholdClass (line 37) | interface ThresholdClass { type StatRowProps (line 61) | interface StatRowProps { type SectionProps (line 74) | interface SectionProps { FILE: fluxer_app/src/components/voice/usePinnedTrackRef.tsx type LayoutMode (line 25) | type LayoutMode = 'grid' | 'focus'; type UsePinnedTrackRefArgs (line 27) | interface UsePinnedTrackRefArgs { function identityOf (line 37) | function identityOf(track: TrackReferenceOrPlaceholder): string { function sortByParticipant (line 41) | function sortByParticipant( function sortByMostRecentSpeaking (line 48) | function sortByMostRecentSpeaking( function findByIdentity (line 69) | function findByIdentity( function findByIdentityAndSource (line 77) | function findByIdentityAndSource( function dedupeTracksByIdentityAndSource (line 86) | function dedupeTracksByIdentityAndSource( function usePinnedTrackRef (line 104) | function usePinnedTrackRef({ FILE: fluxer_app/src/components/voice/useStreamPreview.tsx constant PREVIEW_CACHE_MAX (line 33) | const PREVIEW_CACHE_MAX = 64; type StreamPreviewState (line 35) | interface StreamPreviewState { function useStreamPreview (line 69) | function useStreamPreview(enabled: boolean, streamKey: string): StreamPr... FILE: fluxer_app/src/components/voice/useStreamSpectators.tsx type SpectatorEntry (line 30) | interface SpectatorEntry { type StreamSpectatorsResult (line 37) | interface StreamSpectatorsResult { function useStreamSpectators (line 43) | function useStreamSpectators(streamKey: string): StreamSpectatorsResult { FILE: fluxer_app/src/components/voice/useStreamTrackInfo.tsx constant POLL_INTERVAL_MS (line 24) | const POLL_INTERVAL_MS = 2000; type StreamTrackInfo (line 26) | interface StreamTrackInfo { function useStreamTrackInfo (line 32) | function useStreamTrackInfo(trackRef: TrackReferenceOrPlaceholder | null... FILE: fluxer_app/src/components/voice/useStreamWatchState.tsx type StreamWatchState (line 30) | interface StreamWatchState { function useStreamWatchState (line 41) | function useStreamWatchState({ FILE: fluxer_app/src/components/voice/useVoiceCallAppFullscreen.tsx type UseVoiceCallAppFullscreenOptions (line 34) | interface UseVoiceCallAppFullscreenOptions { type UseVoiceCallAppFullscreenReturn (line 38) | interface UseVoiceCallAppFullscreenReturn { function getFullscreenElement (line 46) | function getFullscreenElement(): Element | null { function supportsFullscreenAPI (line 57) | function supportsFullscreenAPI(): boolean { function requestFullscreen (line 67) | async function requestFullscreen(element: HTMLElement): Promise { function exitFullscreenAPI (line 91) | async function exitFullscreenAPI(): Promise { constant VOICE_CALL_FULLSCREEN_ATTR (line 113) | const VOICE_CALL_FULLSCREEN_ATTR = 'data-voice-call-fullscreen'; function useVoiceCallAppFullscreen (line 115) | function useVoiceCallAppFullscreen(options: UseVoiceCallAppFullscreenOpt... FILE: fluxer_app/src/components/voice/useVoiceCallTracksAndLayout.tsx type UseVoiceCallTracksAndLayoutArgs (line 45) | interface UseVoiceCallTracksAndLayoutArgs { function useVoiceCallTracksAndLayout (line 49) | function useVoiceCallTracksAndLayout({channel}: UseVoiceCallTracksAndLay... FILE: fluxer_app/src/components/webhooks/WebhookListItem.tsx type ChannelOption (line 39) | interface ChannelOption { type WebhookListItemProps (line 44) | interface WebhookListItemProps { FILE: fluxer_app/src/constants/AuditLogConstants.tsx constant AUDIT_LOG_TARGET_TYPES (line 25) | const AUDIT_LOG_TARGET_TYPES = { type AuditLogTargetType (line 39) | type AuditLogTargetType = ValueOf; type AuditLogActionDefinition (line 41) | interface AuditLogActionDefinition { constant AUDIT_LOG_ACTIONS (line 47) | const AUDIT_LOG_ACTIONS: ReadonlyArray = [ function getTranslatedAuditLogActions (line 225) | function getTranslatedAuditLogActions(i18n: I18n): Array<{ constant AUDIT_LOG_TARGET_LABELS (line 236) | const AUDIT_LOG_TARGET_LABELS: Record { constant GUILD_VIOLATION_CATEGORIES_DESCRIPTORS (line 152) | const GUILD_VIOLATION_CATEGORIES_DESCRIPTORS: Array(ALL_PRESETS.... constant TIME_WINDOW_PRESETS (line 51) | const TIME_WINDOW_PRESETS: ReadonlyArray = BASE_PRESETS; constant DEFAULT_TIME_WINDOW_KEY (line 52) | const DEFAULT_TIME_WINDOW_KEY: TimeWindowKey = '24h'; constant TIME_WINDOW_LABEL_MESSAGES (line 54) | const TIME_WINDOW_LABEL_MESSAGES: Record = [ FILE: fluxer_app/src/devtools/ShowMyselfTypingHelper.tsx constant SELF_TYPING_REFRESH_MS (line 26) | const SELF_TYPING_REFRESH_MS = 5000; class ShowMyselfTypingHelper (line 28) | class ShowMyselfTypingHelper { method start (line 33) | start(): void { method stop (line 62) | stop(): void { method trigger (line 70) | private trigger(channelId: string, userId: string): void { method restartInterval (line 74) | private restartInterval(channelId: string, userId: string): void { method reset (line 82) | private reset(): void { FILE: fluxer_app/src/env.d.ts type MediaEngineStoreInstance (line 24) | type MediaEngineStoreInstance = typeof MediaEngineFacade; type NodeBufferConstructor (line 25) | type NodeBufferConstructor = typeof Buffer; type FilePickerAcceptType (line 28) | interface FilePickerAcceptType { type SaveFilePickerOptions (line 33) | interface SaveFilePickerOptions { type CompressionStream (line 40) | interface CompressionStream extends TransformStream = []; type FloatingState (line 39) | interface FloatingState { type UseAntiShiftFloatingOptions (line 45) | interface UseAntiShiftFloatingOptions { function useAntiShiftFloating (line 55) | function useAntiShiftFloating( function getInitialGuess (line 206) | function getInitialGuess(target: HTMLElement, placement: Placement, offs... FILE: fluxer_app/src/hooks/useAudioSettingsMenu.tsx type UseAudioSettingsMenuOptions (line 25) | interface UseAudioSettingsMenuOptions { type UseAudioSettingsMenuResult (line 32) | interface UseAudioSettingsMenuResult { FILE: fluxer_app/src/hooks/useAuthBackground.tsx type ImageDimensions (line 22) | interface ImageDimensions { type PatternImageLoaderResult (line 27) | interface PatternImageLoaderResult { type SplashImageLoaderResult (line 31) | interface SplashImageLoaderResult { type AuthBackgroundResult (line 36) | interface AuthBackgroundResult { function usePatternImageLoader (line 42) | function usePatternImageLoader(patternUrl: string): PatternImageLoaderRe... function useSplashImageLoader (line 56) | function useSplashImageLoader(imageUrl: string | null): SplashImageLoade... function useAuthBackground (line 89) | function useAuthBackground(splashUrl: string | null, patternUrl: string)... FILE: fluxer_app/src/hooks/useAuthForm.tsx type UseAuthFormOptions (line 29) | interface UseAuthFormOptions { type ValidationError (line 36) | interface ValidationError { type APIErrorResponse (line 41) | interface APIErrorResponse { type LinguiT (line 47) | type LinguiT = (literals: TemplateStringsArray, ...placeholders: Array { FILE: fluxer_app/src/hooks/useConnectedVoiceSession.tsx type ConnectedVoiceSession (line 27) | interface ConnectedVoiceSession { FILE: fluxer_app/src/hooks/useContextMenuHoverState.tsx function useContextMenuHoverState (line 24) | function useContextMenuHoverState(elementRef: RefObject = ['screen', 'win... constant SCREEN_SHARE_SELECTION_TIMEOUT_MS (line 34) | const SCREEN_SHARE_SELECTION_TIMEOUT_MS = 55_000; type PromptDesktopSourceSelectionOptions (line 36) | interface PromptDesktopSourceSelectionOptions { FILE: fluxer_app/src/hooks/useFluxerDocumentTitle.tsx constant TITLE_PREFIX (line 22) | const TITLE_PREFIX = 'Fluxer'; type TitlePart (line 24) | type TitlePart = string | null | undefined; type TitleInput (line 25) | type TitleInput = TitlePart | Array; type UseDocumentTitleOptions (line 27) | interface UseDocumentTitleOptions { type BadgeState (line 31) | interface BadgeState { FILE: fluxer_app/src/hooks/useForceUpdate.tsx function useForceUpdate (line 22) | function useForceUpdate() { FILE: fluxer_app/src/hooks/useForm.tsx type FormField (line 23) | interface FormField { type FormState (line 28) | interface FormState { type UseFormOptions (line 32) | interface UseFormOptions { function useForm (line 37) | function useForm({initialValues = {}, onSubmit}: UseFormOptions) { FILE: fluxer_app/src/hooks/useFormSubmit.tsx type UseFormSubmitOptions (line 27) | interface UseFormSubmitOptions { function useFormSubmit (line 33) | function useFormSubmit({form, onSubmit, defaultEr... FILE: fluxer_app/src/hooks/useHashParam.tsx function useHashParam (line 22) | function useHashParam(paramName: string): string | null { FILE: fluxer_app/src/hooks/useHover.tsx type HoverHook (line 23) | type HoverHook = [React.RefCallback, boolean]; FILE: fluxer_app/src/hooks/useInputFocusManagement.tsx function useInputFocusManagement (line 23) | function useInputFocusManagement(textare... FILE: fluxer_app/src/hooks/useInviteCountdown.tsx function useInviteCountdown (line 22) | function useInviteCountdown(expiresAt: string | null | undefined): { FILE: fluxer_app/src/hooks/useInviteRevoke.tsx function useInviteRevoke (line 26) | function useInviteRevoke() { FILE: fluxer_app/src/hooks/useListNavigation.tsx type NavigationDirection (line 23) | type NavigationDirection = 'up' | 'down' | 'home' | 'end'; type UseListNavigationOptions (line 24) | interface UseListNavigationOptions { type UseListNavigationReturn (line 31) | interface UseListNavigationReturn { FILE: fluxer_app/src/hooks/useLoginFlow.tsx type LoginCompletionMode (line 45) | type LoginCompletionMode = function useLoginCompletion (line 49) | function useLoginCompletion(mode: LoginCompletionMode) { type LoginFormControllerOptions (line 92) | interface LoginFormControllerOptions { function useLoginFormController (line 100) | function useLoginFormController({ type MfaControllerOptions (line 175) | interface MfaControllerOptions { type CodeMethod (line 182) | type CodeMethod = 'totp' | 'sms'; function useMfaController (line 184) | function useMfaController({ticket, methods, inviteCode, onLoginSuccess}:... FILE: fluxer_app/src/hooks/useMarkdownKeybinds.tsx type FormattingShortcut (line 23) | interface FormattingShortcut { constant MARKDOWN_FORMATTING_SHORTCUTS (line 28) | const MARKDOWN_FORMATTING_SHORTCUTS: ReadonlyArray = [ class MarkdownKeybindScope (line 111) | class MarkdownKeybindScope { method acquire (line 115) | acquire(): () => void { method release (line 129) | private release(): void { method disableConflictingKeybinds (line 136) | private disableConflictingKeybinds(): void { method restoreConflictingKeybinds (line 152) | private restoreConflictingKeybinds(): void { FILE: fluxer_app/src/hooks/useMasonryGridNavigation.tsx type UseMasonryGridNavigationOptions (line 23) | interface UseMasonryGridNavigationOptions { FILE: fluxer_app/src/hooks/useMediaDevices.tsx type UseMediaDevicesOptions (line 24) | interface UseMediaDevicesOptions { type RefreshOptions (line 29) | interface RefreshOptions { type UseMediaDevicesResult (line 33) | type UseMediaDevicesResult = VoiceDeviceState & { FILE: fluxer_app/src/hooks/useMediaFavorite.tsx type UseMediaFavoriteParams (line 30) | interface UseMediaFavoriteParams { type UseMediaFavoriteReturn (line 43) | interface UseMediaFavoriteReturn { function useMediaFavorite (line 49) | function useMediaFavorite({ FILE: fluxer_app/src/hooks/useMediaLoading.tsx type MediaLoadingState (line 25) | interface MediaLoadingState { function useMediaLoading (line 31) | function useMediaLoading(src: string, placeholder?: string): MediaLoadin... FILE: fluxer_app/src/hooks/useMemberListCustomStatus.tsx type UseMemberListCustomStatusOptions (line 26) | interface UseMemberListCustomStatusOptions { type CustomStatusResult (line 33) | type CustomStatusResult = CustomStatus | null | undefined; function filterExpiredStatus (line 35) | function filterExpiredStatus(status: T): T... function useMemberListCustomStatus (line 45) | function useMemberListCustomStatus({ FILE: fluxer_app/src/hooks/useMemberListPresence.tsx type UseMemberListPresenceOptions (line 28) | interface UseMemberListPresenceOptions { function resolveMemberListPresence (line 35) | function resolveMemberListPresence({ function useMemberListPresence (line 60) | function useMemberListPresence({ FILE: fluxer_app/src/hooks/useMemberListSubscription.tsx constant UNFOCUS_UNSUBSCRIBE_DELAY_MS (line 25) | const UNFOCUS_UNSUBSCRIBE_DELAY_MS = 60000; constant INITIAL_MEMBER_RANGE (line 26) | const INITIAL_MEMBER_RANGE: [number, number] = [0, 99]; type UseMemberListSubscriptionOptions (line 28) | interface UseMemberListSubscriptionOptions { type UseMemberListSubscriptionResult (line 35) | interface UseMemberListSubscriptionResult { function rangesEqual (line 40) | function rangesEqual(left: Array<[number, number]>, right: Array<[number... function normaliseRanges (line 56) | function normaliseRanges(inputRanges: Array<[number, number]>): Array<[n... function useMemberListSubscription (line 88) | function useMemberListSubscription({ FILE: fluxer_app/src/hooks/useMemberListVisible.tsx constant MIN_WIDTH_FOR_MEMBERS (line 23) | const MIN_WIDTH_FOR_MEMBERS = 1024; FILE: fluxer_app/src/hooks/useMergeRefs.tsx function useMergeRefs (line 22) | function useMergeRefs( FILE: fluxer_app/src/hooks/useMessageListKeyboardNavigation.tsx type MessageListKeyboardNavigationOptions (line 25) | interface MessageListKeyboardNavigationOptions { function useMessageListKeyboardNavigation (line 55) | function useMessageListKeyboardNavigation(options: MessageListKeyboardNa... FILE: fluxer_app/src/hooks/useMessageReactionsState.tsx type UseMessageReactionsStateOptions (line 32) | interface UseMessageReactionsStateOptions { type MessageReactionsState (line 40) | interface MessageReactionsState { function useMessageReactionsState (line 53) | function useMessageReactionsState({ FILE: fluxer_app/src/hooks/useMessageSubmission.tsx type UseMessageSubmissionOptions (line 38) | interface UseMessageSubmissionOptions { type SendMessageFunction (line 45) | type SendMessageFunction = ( FILE: fluxer_app/src/hooks/useMuteSheet.tsx type UseMuteSheetBaseParams (line 26) | interface UseMuteSheetBaseParams { type UseMuteSheetChannelParams (line 32) | interface UseMuteSheetChannelParams extends UseMuteSheetBaseParams { type UseMuteSheetGuildParams (line 39) | interface UseMuteSheetGuildParams extends UseMuteSheetBaseParams { type UseMuteSheetParams (line 44) | type UseMuteSheetParams = UseMuteSheetChannelParams | UseMuteSheetGuildP... type UseMuteSheetReturn (line 46) | interface UseMuteSheetReturn { function useMuteSheet (line 55) | function useMuteSheet(params: UseMuteSheetParams): UseMuteSheetReturn { FILE: fluxer_app/src/hooks/useNSFWMedia.tsx type NSFWMediaResult (line 23) | interface NSFWMediaResult { function useNSFWMedia (line 28) | function useNSFWMedia(nsfw: boolean | undefined, channelId: string | und... FILE: fluxer_app/src/hooks/useNativePlatform.tsx type NativePlatformState (line 32) | interface NativePlatformState { FILE: fluxer_app/src/hooks/usePendingVoiceConnection.tsx type PendingVoiceConnectionResult (line 23) | interface PendingVoiceConnectionResult { function usePendingVoiceConnection (line 30) | function usePendingVoiceConnection({ FILE: fluxer_app/src/hooks/usePopout.tsx function usePopout (line 24) | function usePopout(uniqueId: string) { FILE: fluxer_app/src/hooks/usePremiumUpsellData.tsx type UsePremiumUpsellDataResult (line 29) | interface UsePremiumUpsellDataResult { type UsePremiumUpsellDataOptions (line 35) | interface UsePremiumUpsellDataOptions { FILE: fluxer_app/src/hooks/usePresenceCustomStatus.tsx type UsePresenceCustomStatusOptions (line 26) | interface UsePresenceCustomStatusOptions { function filterExpiredStatus (line 31) | function filterExpiredStatus(status: CustomStatus | null): CustomStatus ... function usePresenceCustomStatus (line 38) | function usePresenceCustomStatus({userId, enabled = true}: UsePresenceCu... FILE: fluxer_app/src/hooks/usePressable.tsx constant PRESS_MOVEMENT_THRESHOLD (line 22) | const PRESS_MOVEMENT_THRESHOLD = 10; constant PRESS_HIGHLIGHT_DELAY_MS (line 24) | const PRESS_HIGHLIGHT_DELAY_MS = 100; constant SWIPE_VELOCITY_THRESHOLD (line 26) | const SWIPE_VELOCITY_THRESHOLD = 0.4; constant MIN_VELOCITY_SAMPLES (line 28) | const MIN_VELOCITY_SAMPLES = 2; constant MAX_VELOCITY_SAMPLE_AGE (line 30) | const MAX_VELOCITY_SAMPLE_AGE = 100; type VelocitySample (line 34) | interface VelocitySample { type UsePressableOptions (line 40) | interface UsePressableOptions { type UsePressableResult (line 46) | interface UsePressableResult { function usePressable (line 58) | function usePressable(options: UsePressableOptions | boolean = {}): UseP... FILE: fluxer_app/src/hooks/usePushSubscriptions.tsx type PushSubscriptionInfo (line 27) | interface PushSubscriptionInfo { FILE: fluxer_app/src/hooks/useReactionTooltip.tsx type ReactionTooltipState (line 27) | interface ReactionTooltipState { function useReactionTooltip (line 34) | function useReactionTooltip(hoverDelay = 500, placement: Placement = 'to... FILE: fluxer_app/src/hooks/useRoleHierarchy.tsx function useRoleHierarchy (line 25) | function useRoleHierarchy(guild: GuildRecord | null | undefined) { FILE: fluxer_app/src/hooks/useRovingFocusList.tsx constant DEFAULT_SELECTOR (line 22) | const DEFAULT_SELECTOR = [ type Orientation (line 32) | type Orientation = 'vertical' | 'horizontal' | 'both'; type UseRovingFocusOptions (line 34) | interface UseRovingFocusOptions { constant TEXT_ENTRY_INPUT_TYPES (line 43) | const TEXT_ENTRY_INPUT_TYPES = new Set(['text', 'search', 'url', 'email'... FILE: fluxer_app/src/hooks/useSearchInputAutofocus.tsx constant MODAL_KEYBOARD_SELECTOR (line 26) | const MODAL_KEYBOARD_SELECTOR = '[role="dialog"], .modal-backdrop'; type SearchInputRef (line 39) | interface SearchInputRef { FILE: fluxer_app/src/hooks/useSlowmode.tsx type SlowmodeState (line 28) | interface SlowmodeState { function useSlowmode (line 36) | function useSlowmode(channel: ChannelRecord): SlowmodeState { FILE: fluxer_app/src/hooks/useStickerAnimation.tsx type UseStickerAnimationOptions (line 24) | interface UseStickerAnimationOptions { type UseStickerAnimationResult (line 29) | interface UseStickerAnimationResult { function useStickerAnimation (line 39) | function useStickerAnimation(options: UseStickerAnimationOptions = {}): ... FILE: fluxer_app/src/hooks/useStreamWatchDoubleClick.tsx type UseStreamWatchDoubleClickOptions (line 27) | interface UseStreamWatchDoubleClickOptions { type UseStreamWatchDoubleClickResult (line 35) | interface UseStreamWatchDoubleClickResult { function useStreamWatchDoubleClick (line 40) | function useStreamWatchDoubleClick({ FILE: fluxer_app/src/hooks/useSudo.tsx function useSudo (line 25) | function useSudo() { FILE: fluxer_app/src/hooks/useSystemMessageData.tsx type SystemMessageData (line 28) | interface SystemMessageData { function useSystemMessageData (line 34) | function useSystemMessageData(message: MessageRecord): SystemMessageData { FILE: fluxer_app/src/hooks/useTextInputContextMenu.tsx function toAbstractView (line 30) | function toAbstractView(view: Window | null): AbstractView | null { constant DISALLOWED_INPUT_TYPES (line 35) | const DISALLOWED_INPUT_TYPES = new Set([ FILE: fluxer_app/src/hooks/useTextOverflow.tsx function useTextOverflow (line 22) | function useTextOverflow(ref: React.RefObject): bool... FILE: fluxer_app/src/hooks/useTextareaAutocomplete.tsx type UseTextareaAutocompleteReturn (line 76) | interface UseTextareaAutocompleteReturn { constant MEMBER_SEARCH_LIMIT (line 88) | const MEMBER_SEARCH_LIMIT = 25; type ParsedMentionQuery (line 90) | interface ParsedMentionQuery { function parseMentionQuery (line 96) | function parseMentionQuery(query: string): ParsedMentionQuery { function filterDMUsers (line 112) | function filterDMUsers( function filterGuildMembers (line 141) | function filterGuildMembers( constant SPECIAL_MENTIONS (line 177) | const SPECIAL_MENTIONS: ReadonlyArray<{type: 'mention'; kind: '@everyone... type CommandArgContext (line 182) | interface CommandArgContext { function buildCommandArgOptions (line 191) | function buildCommandArgOptions(ctx: CommandArgContext): Array/g; constant CUSTOM_EMOJI_MARKDOWN_PATTERN (line 46) | const CUSTOM_EMOJI_MARKDOWN_PATTERN = //g; type MentionType (line 47) | type MentionType = '@everyone' | '@here' | 'role'; type MentionConfirmationInfo (line 54) | interface MentionConfirmationInfo { type UseTextareaSubmitOptions (line 63) | interface UseTextareaSubmitOptions { FILE: fluxer_app/src/hooks/useThemeExists.tsx type ThemeExistsStatus (line 27) | type ThemeExistsStatus = 'loading' | 'ready' | 'error'; FILE: fluxer_app/src/hooks/useUserVoiceActivities.tsx type UserVoiceActivity (line 32) | interface UserVoiceActivity { type UserVoiceActivityAggregate (line 45) | interface UserVoiceActivityAggregate { function compareVoiceActivitiesForPrimary (line 51) | function compareVoiceActivitiesForPrimary(a: UserVoiceActivity, b: UserV... function buildAggregateKey (line 58) | function buildAggregateKey(guildId: string | null, channelId: string): s... function useUserVoiceActivities (line 62) | function useUserVoiceActivities(userId: string): ReadonlyArray { function initSentry (line 103) | function initSentry(): void { function bootstrap (line 176) | async function bootstrap(): Promise { FILE: fluxer_app/src/lib/AccountStorage.tsx function createEmptyLimitConfig (line 24) | function createEmptyLimitConfig(): LimitConfigSnapshot { constant DB_NAME (line 34) | const DB_NAME = 'FluxerAccounts'; constant DB_VERSION (line 35) | const DB_VERSION = 2; constant STORE_NAME (line 36) | const STORE_NAME = 'accounts'; type UserData (line 41) | interface UserData { type StoredAccount (line 48) | interface StoredAccount { type IdbOpenState (line 59) | type IdbOpenState = 'idle' | 'opening' | 'open' | 'failed'; constant MANAGED_KEY_EXACT (line 61) | const MANAGED_KEY_EXACT: ReadonlySet = new Set([ constant MANAGED_KEY_PREFIXES (line 71) | const MANAGED_KEY_PREFIXES: ReadonlyArray = ['mobx', 'mobx-persi... function isManagedKey (line 73) | function isManagedKey(key: string): boolean { function stableNow (line 91) | function stableNow(): number { function withTimeout (line 95) | async function withTimeout(promise: Promise, ms: number, label: st... class AccountStorage (line 110) | class AccountStorage { method enqueueStorageSwap (line 119) | private enqueueStorageSwap(fn: () => Promise): Promise { method init (line 132) | async init(): Promise { method ensureDb (line 180) | private async ensureDb(): Promise { method captureManagedStorageSnapshot (line 194) | private captureManagedStorageSnapshot(): Record { method applyManagedStorageSnapshot (line 220) | private async applyManagedStorageSnapshot(snapshot: Record): Record... method cloneUserData (line 280) | private cloneUserData(userData?: UserData): UserData | undefined { method cloneRuntimeConfig (line 288) | private cloneRuntimeConfig(instance?: RuntimeConfigSnapshot): RuntimeC... method sanitizeRecord (line 321) | private sanitizeRecord(record: StoredAccount): StoredAccount { method isDataCloneError (line 336) | private isDataCloneError(error: unknown): boolean { method isInvalidStateError (line 345) | private isInvalidStateError(error: unknown): boolean { method stashAccountData (line 354) | async stashAccountData( method restoreAccountData (line 429) | async restoreAccountData(userId: string): Promise { method getAllAccounts (line 453) | async getAllAccounts(): Promise> { method deleteAccount (line 480) | async deleteAccount(userId: string): Promise { method updateAccountUserData (line 512) | async updateAccountUserData(userId: string, userData: UserData): Promi... method updateAccountValidity (line 531) | async updateAccountValidity(userId: string, isValid: boolean): Promise... method getRecord (line 550) | private async getRecord(userId: string): Promise { method putRecord (line 581) | private async putRecord(record: StoredAccount): Promise { method updateLastActive (line 614) | private async updateLastActive(userId: string): Promise { FILE: fluxer_app/src/lib/AppStorage.tsx type EnhancedStorage (line 20) | interface EnhancedStorage { function createStorage (line 34) | function createStorage(storageType: 'local' | 'session' | 'memory' = 'lo... FILE: fluxer_app/src/lib/AutofocusUtils.tsx function shouldDisableAutofocusOnMobile (line 23) | function shouldDisableAutofocusOnMobile(): boolean { FILE: fluxer_app/src/lib/CaptchaInterceptor.tsx type CaptchaResult (line 30) | interface CaptchaResult { class CaptchaState (line 35) | class CaptchaState { method constructor (line 39) | constructor() { method setError (line 49) | setError(error: string | null) { method setIsVerifying (line 53) | setIsVerifying(isVerifying: boolean) { method reset (line 57) | reset() { class CaptchaInterceptorStore (line 63) | class CaptchaInterceptorStore { method setI18n (line 68) | setI18n(i18n: I18n) { method constructor (line 72) | constructor() { method isCaptchaError (line 78) | private isCaptchaError(response: HttpResponse): boolean { method showCaptchaModal (line 83) | private showCaptchaModal(): Promise { method intercept (line 126) | private intercept( FILE: fluxer_app/src/lib/ChannelMessages.test.tsx function clearChannelMessagesCache (line 23) | function clearChannelMessagesCache(): void { function createManyChannels (line 35) | function createManyChannels(prefix: string, count: number): void { FILE: fluxer_app/src/lib/ChannelMessages.tsx constant IS_MOBILE_CLIENT (line 34) | const IS_MOBILE_CLIENT = /Mobi|Android/i.test(navigator.userAgent); type JumpOptions (line 36) | interface JumpOptions { type LoadCompleteOptions (line 45) | interface LoadCompleteOptions { function normalizeEmbedForComparison (line 55) | function normalizeEmbedForComparison(embed: MessageEmbed): Omit { method isBoundary (line 113) | get isBoundary(): boolean { method isBoundary (line 117) | set isBoundary(value: boolean) { method clone (line 121) | clone(): MessageBufferSegment { method clear (line 129) | clear(): void { method has (line 135) | has(id: string): boolean { method get (line 139) | get(id: string): MessageRecord | undefined { method remove (line 143) | remove(id: string): void { method removeMany (line 149) | removeMany(ids: Array): void { method replace (line 159) | replace(previousId: string, next: MessageRecord): void { method update (line 170) | update(id: string, updater: (m: MessageRecord) => MessageRecord): void { method forEach (line 181) | forEach(cb: (m: MessageRecord, index: number, arr: Array, boundaryAtInsert = false): void { method takeAll (line 215) | takeAll(): Array { method take (line 222) | take(count: number): Array { class ChannelMessages (line 245) | class ChannelMessages { method forEach (line 277) | static forEach(callback: (messages: ChannelMessages, channelId: string... method get (line 283) | static get(channelId: string): ChannelMessages | undefined { method hasPresent (line 287) | static hasPresent(channelId: string): boolean { method getOrCreate (line 291) | static getOrCreate(channelId: string): ChannelMessages { method clear (line 304) | static clear(channelId: string): void { method retainChannel (line 311) | static retainChannel(channelId: string): void { method releaseRetainedChannel (line 318) | static releaseRetainedChannel(channelId: string): void { method clearCache (line 322) | static clearCache(channelId: string): void { method commit (line 331) | static commit(instance: ChannelMessages): ChannelMessages { method save (line 337) | static save(instance: ChannelMessages): void { method markTouched (line 341) | private static markTouched(channelId: string): void { method sanitizeAccessSequence (line 349) | private static sanitizeAccessSequence(): void { method evictIfNeeded (line 359) | private static evictIfNeeded(): void { method constructor (line 395) | constructor(channelId: string) { method mutate (line 401) | mutate(patch: Partial): ChannelMessages { method length (line 405) | get length(): number { method toArray (line 409) | toArray(): Array { method forEach (line 413) | forEach( method reduce (line 430) | reduce( method forAll (line 437) | forAll(callback: (m: MessageRecord, idx: number, arr: Array boolean): MessageRecord | ... method findNewest (line 451) | findNewest(predicate: (m: MessageRecord) => boolean): MessageRecord | ... method map (line 469) | map(mapper: (m: MessageRecord, idx: number, arr: Array MessageRecord): Chan... method replace (line 553) | replace(previousId: string, next: MessageRecord): ChannelMessages { method remove (line 575) | remove(id: string): ChannelMessages { method removeMany (line 584) | removeMany(ids: Array): ChannelMessages { method merge (line 597) | merge(records: Array, prepend = false, clearBuffer = fa... method reset (line 603) | reset(records: Array): ChannelMessages { method truncateTop (line 615) | truncateTop(maxCount: number, deepCopy = true): ChannelMessages { method truncateBottom (line 630) | truncateBottom(maxCount: number, deepCopy = true): ChannelMessages { method truncate (line 644) | truncate(trimBottom: boolean, trimTop: boolean): ChannelMessages { method jumpToPresent (line 658) | jumpToPresent(limit: number): ChannelMessages { method jumpToMessage (line 686) | jumpToMessage( method loadFromCache (line 707) | loadFromCache(before: boolean, limit: number): ChannelMessages { method receiveMessage (line 729) | receiveMessage(message: Message, truncateFromTop = true): ChannelMessa... method receivePushNotification (line 763) | receivePushNotification(message: Message): ChannelMessages { method loadStart (line 771) | loadStart(jump?: JumpOptions): ChannelMessages { method loadComplete (line 783) | loadComplete(options: LoadCompleteOptions): ChannelMessages { method clearAllMessages (line 829) | private clearAllMessages(): void { method mergeInto (line 834) | private mergeInto(incoming: Array, prepend = false, cle... method cloneAnd (line 865) | private cloneAnd( FILE: fluxer_app/src/lib/CloudUpload.tsx type UploadStatus (line 30) | type UploadStatus = 'pending' | 'uploading' | 'failed' | 'sending'; type UploadStage (line 32) | type UploadStage = 'idle' | 'queued' | 'uploading' | 'processing' | 'com... type CloudAttachment (line 34) | interface CloudAttachment { type MessageUpload (line 53) | interface MessageUpload { type Listener (line 67) | type Listener = () => void; type MessageUploadListener (line 68) | type MessageUploadListener = (upload: MessageUpload) => void; class CloudUploadManager (line 70) | class CloudUploadManager { method constructor (line 91) | constructor() { method destroy (line 97) | destroy(): void { method ensureTextareaSubject (line 128) | private ensureTextareaSubject(channelId: string): BehaviorSubject { method getTextareaAttachments (line 196) | getTextareaAttachments(channelId: string): Array { method subscribeToTextarea (line 200) | subscribeToTextarea(channelId: string, listener: Listener): () => void { method notifyTextareaListeners (line 221) | private notifyTextareaListeners(channelId: string): void { method getMessageUpload (line 227) | getMessageUpload(nonce: string): MessageUpload | null { method subscribeToMessageUpload (line 231) | subscribeToMessageUpload(nonce: string, listener: MessageUploadListene... method notifyMessageUploadListeners (line 254) | private notifyMessageUploadListeners(nonce: string): void { method addFiles (line 262) | async addFiles(channelId: string, files: Array): Promise { method createAndStartUploads (line 277) | async createAndStartUploads(channelId: string, files: Array): Pr... method removeAttachment (line 287) | removeAttachment(channelId: string, attachmentId: number): void { method updateAttachment (line 306) | updateAttachment(channelId: string, attachmentId: number, patch: Parti... method clearTextarea (line 323) | clearTextarea(channelId: string, preserveBlobs = false): void { method reorderAttachments (line 343) | reorderAttachments(channelId: string, newOrder: Array... method claimAttachmentsForMessage (line 351) | claimAttachmentsForMessage( method moveMessageUpload (line 392) | moveMessageUpload(oldNonce: string, newNonce: string): void { method removeMessageUpload (line 419) | removeMessageUpload(nonce: string): void { method restoreAttachmentsToTextarea (line 433) | restoreAttachmentsToTextarea(nonce: string): void { method updateSendingProgress (line 450) | updateSendingProgress(nonce: string, progressPercent: number): void { method waitForMessageUploads (line 513) | async waitForMessageUploads(nonce: string, timeoutMs = 60_000): Promis... method startSendingProgress (line 534) | startSendingProgress(nonce: string): void { method stopSendingProgress (line 552) | stopSendingProgress(_nonce: string): void {} method cancelUpload (line 554) | async cancelUpload(attachmentId: number): Promise { method createAttachments (line 603) | private async createAttachments(channelId: string, files: Array)... method getImageDimensions (line 658) | private async getImageDimensions(file: File): Promise<{width: number; ... method getVideoData (line 679) | private async getVideoData(file: File): Promise<{width: number; height... FILE: fluxer_app/src/lib/ComponentDispatch.tsx type ComponentActionType (line 23) | type ComponentActionType = type ComponentDispatchEvents (line 56) | type ComponentDispatchEvents = { class Dispatch (line 60) | class Dispatch extends EventEmitter { method safeDispatch (line 64) | safeDispatch(type: ComponentActionType, args?: unknown) { method dispatch (line 75) | dispatch(type: ComponentActionType, args?: unknown) { method dispatchToLastSubscribed (line 79) | dispatchToLastSubscribed(type: ComponentActionType, args?: unknown) { method dispatchToFirst (line 86) | dispatchToFirst(types: Array, args?: unknown) { method hasSubscribers (line 95) | hasSubscribers(type: ComponentActionType) { method _checkSavedDispatches (line 99) | private _checkSavedDispatches(type: ComponentActionType) { method subscribe (line 108) | subscribe(type: ComponentActionType, callback: (...args: Array { method emitPresenceChange (line 28) | emitPresenceChange(userId: string): void { method emitMemberListChange (line 32) | emitMemberListChange(guildId: string, listId: string, userId: string):... method subscribeToPresence (line 36) | subscribeToPresence(userId: string, callback: () => void): () => void { method subscribeToMemberList (line 46) | subscribeToMemberList(guildId: string, listId: string, userId: string,... FILE: fluxer_app/src/lib/E2EEncryption.tsx constant AES_GCM_ALGORITHM (line 24) | const AES_GCM_ALGORITHM = 'AES-GCM'; constant AES_KEY_LENGTH (line 25) | const AES_KEY_LENGTH = 256; constant IV_LENGTH (line 26) | const IV_LENGTH = 12; constant AUTH_TAG_LENGTH (line 27) | const AUTH_TAG_LENGTH = 128; type X25519KeyPair (line 29) | interface X25519KeyPair { type EncryptedPayload (line 35) | interface EncryptedPayload { function base64ToArrayBuffer (line 41) | function base64ToArrayBuffer(base64: string): ArrayBuffer { function arrayBufferToBase64 (line 50) | function arrayBufferToBase64(buffer: ArrayBuffer): string { function generateIV (line 59) | function generateIV(): Uint8Array { function generateKeyPair (line 63) | async function generateKeyPair(): Promise { function importPublicKey (line 78) | async function importPublicKey(publicKeyBase64: string): Promise void; class FocusManager (line 26) | class FocusManager { method getInstance (line 33) | static getInstance(): FocusManager { method init (line 40) | init(): void { method destroy (line 49) | destroy(): void { method subscribe (line 56) | subscribe(listener: FocusChangeListener): () => void { method notifyListeners (line 65) | private notifyListeners(focused: boolean): void { method isForeground (line 75) | private isForeground(): boolean { method isFocused (line 79) | isFocused(): boolean { FILE: fluxer_app/src/lib/GatewayCompression.tsx type CompressionType (line 22) | type CompressionType = 'none' | 'zstd-stream'; class GatewayCompression (line 23) | class GatewayCompression { method constructor (line 26) | constructor(type: CompressionType) { method decompress (line 30) | async decompress(data: ArrayBuffer): Promise { method decompressZstd (line 45) | private async decompressZstd(data: Uint8Array): Promise { method destroy (line 54) | destroy(): void {} function getPreferredCompression (line 57) | function getPreferredCompression(): CompressionType { function isCompressionSupported (line 62) | function isCompressionSupported(type: CompressionType): boolean { FILE: fluxer_app/src/lib/GatewaySocket.tsx constant GATEWAY_TIMEOUTS (line 38) | const GATEWAY_TIMEOUTS = { constant PRESERVED_RESET_STORAGE_KEYS (line 46) | const PRESERVED_RESET_STORAGE_KEYS = ['DraftStore'] as const; type GatewayState (line 54) | type GatewayState = ValueOf; type GatewayPayload (line 56) | interface GatewayPayload { type GatewaySocketProperties (line 63) | interface GatewaySocketProperties { type GatewayPresence (line 80) | interface GatewayPresence { type GatewaySocketOptions (line 87) | interface GatewaySocketOptions { type GatewayErrorData (line 97) | interface GatewayErrorData { type GatewaySocketEvents (line 102) | interface GatewaySocketEvents { class GatewaySocket (line 119) | class GatewaySocket extends EventEmitter { method constructor (line 146) | constructor( method emitDeferred (line 160) | private emitDeferred( method connect (line 180) | connect(): void { method disconnect (line 191) | disconnect(code = 1000, reason = 'Client disconnecting', resumable = f... method simulateNetworkDisconnect (line 223) | simulateNetworkDisconnect(): void { method reset (line 233) | reset(shouldReconnect = true): void { method handleNetworkStatusChange (line 255) | handleNetworkStatusChange(online: boolean): void { method updatePresence (line 269) | updatePresence( method updateVoiceState (line 288) | updateVoiceState(params: { method requestGuildMembers (line 313) | requestGuildMembers(params: { method updateGuildSubscriptions (line 336) | updateGuildSubscriptions(params: { method setToken (line 356) | setToken(token: string): void { method getState (line 360) | getState(): GatewayState { method getSessionId (line 364) | getSessionId(): string | null { method getSequence (line 368) | getSequence(): number { method isConnected (line 372) | isConnected(): boolean { method isConnecting (line 376) | isConnecting(): boolean { method openSocket (line 380) | private openSocket(): void { method teardownSocket (line 417) | private teardownSocket(): void { method extractPayload (line 475) | private async extractPayload(event: MessageEvent): Promise { method isRelayModeEnabled (line 931) | private isRelayModeEnabled(): boolean { method buildRelayGatewayUrl (line 935) | private async buildRelayGatewayUrl(targetGatewayUrl: string): Promise<... method sendPayload (line 953) | private sendPayload(payload: GatewayPayload): boolean { method updateState (line 970) | private updateState(nextState: GatewayState): void { method handleAuthFailure (line 980) | private handleAuthFailure(): void { FILE: fluxer_app/src/lib/HttpClient.tsx constant SUDO_MODE_HEADER (line 31) | const SUDO_MODE_HEADER = 'x-fluxer-sudo-mode-jwt'; type Attachment (line 33) | interface Attachment { type FormField (line 39) | interface FormField { type HttpRequestConfig (line 44) | interface HttpRequestConfig { type BodyWithoutBodyKey (line 69) | type BodyWithoutBodyKey = [T] extends [object] ? ('body' extends keyo... type HttpRequestBody (line 71) | type HttpRequestBody = BodyWithoutBodyKey; type HttpResponse (line 73) | interface HttpResponse { type RequestState (line 84) | interface RequestState { type RateLimitEntry (line 90) | interface RateLimitEntry { type InterceptorFn (line 97) | type InterceptorFn = ( type PrepareRequestInterceptor (line 106) | type PrepareRequestInterceptor = (state: RequestState) => void; type SudoHandler (line 108) | type SudoHandler = (config: HttpRequestConfig) => Promise string | null; type SudoTokenListener (line 112) | type SudoTokenListener = (token: string | null) => void; type SudoFailureHandler (line 114) | type SudoFailureHandler = (error: HttpErrorType | HttpResponse | string ... type AuthTokenProvider (line 116) | type AuthTokenProvider = () => string | null; constant RETRYABLE_STATUS_CODES (line 118) | const RETRYABLE_STATUS_CODES = new Set([502, 504, 507, 598, 599, 522, 52... class HttpClient (line 120) | class HttpClient { method constructor (line 144) | constructor() { method setInterceptors (line 156) | setInterceptors(params: {prepareRequest?: PrepareRequestInterceptor; i... method setBaseUrl (line 161) | setBaseUrl(baseUrl: string, apiVersion?: number): void { method setSudoHandler (line 168) | setSudoHandler(handler?: SudoHandler): void { method setSudoTokenProvider (line 172) | setSudoTokenProvider(provider?: SudoTokenProvider): void { method setSudoTokenListener (line 176) | setSudoTokenListener(listener?: SudoTokenListener): void { method setSudoTokenInvalidator (line 180) | setSudoTokenInvalidator(invalidator?: () => void): void { method setSudoFailureHandler (line 184) | setSudoFailureHandler(handler?: SudoFailureHandler): void { method setAuthTokenProvider (line 188) | setAuthTokenProvider(provider?: AuthTokenProvider): void { method setDefaults (line 192) | setDefaults(options: {timeout?: number; retries?: number} = {}): void { method setRelayDirectoryUrl (line 201) | setRelayDirectoryUrl(directoryUrl: string | null): void { method setTargetInstanceDomain (line 212) | setTargetInstanceDomain(domain: string | null): void { method isRelayModeEnabled (line 217) | isRelayModeEnabled(): boolean { method request (line 221) | async request(method: HttpMethod, urlOrConfig: string | H... method get (line 226) | async get(urlOrConfig: string | HttpRequestConfig): Promi... method post (line 230) | async post(urlOrConfig: string | HttpRequestConfig, data?... method put (line 234) | async put(urlOrConfig: string | HttpRequestConfig, data?:... method patch (line 238) | async patch(urlOrConfig: string | HttpRequestConfig, data... method delete (line 242) | async delete(urlOrConfig: string | HttpRequestConfig): Pr... method normalizeConfig (line 246) | private normalizeConfig(urlOrConfig: string | HttpRequestConfig, body?... method applyQueryParams (line 253) | private applyQueryParams(url: URL, query: Record(xhr: XMLHttpRequest, config: HttpRequestCo... method parseXHRHeaders (line 377) | private parseXHRHeaders(xhr: XMLHttpRequest): Record { method parseRetryAfterSeconds (line 395) | private parseRetryAfterSeconds(body: unknown): number { method parseRateLimitMessage (line 405) | private parseRateLimitMessage(body: unknown): string { method updateRateLimitEntry (line 410) | private updateRateLimitEntry(urlKey: string, response?: HttpResponse):... method releaseRateLimitedQueue (line 443) | private releaseRateLimitedQueue(urlKey: string): void { method shouldRetryStatus (line 470) | private shouldRetryStatus( method ensureBackoff (line 480) | private ensureBackoff(backoff?: ExponentialBackoff): ExponentialBackoff { method executeRequest (line 490) | private async executeRequest( method performXHRRequest (line 692) | private performXHRRequest( method executeViaRelay (line 765) | private async executeViaRelay(method: HttpMethod, config: HttpReque... method shouldUseRelay (line 828) | private shouldUseRelay(config: HttpRequestConfig): boolean { method isSudoRequiredError (line 844) | private isSudoRequiredError(error: HttpError): boolean { method buildSudoRetryConfig (line 848) | private buildSudoRetryConfig(config: HttpRequestConfig, payload: SudoV... method mergeSudoPayload (line 857) | private mergeSudoPayload( FILE: fluxer_app/src/lib/HttpError.tsx class HttpError (line 22) | class HttpError extends Error { method constructor (line 31) | constructor(params: { FILE: fluxer_app/src/lib/HttpTypes.tsx type HttpMethod (line 20) | type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; FILE: fluxer_app/src/lib/InputFocusManager.tsx type FocusableElementType (line 24) | type FocusableElementType = HTMLInputElement | HTMLTextAreaElement | HTM... class InputFocusManager (line 26) | class InputFocusManager { method getInstance (line 29) | static getInstance(): InputFocusManager { method constructor (line 36) | private constructor() {} method isFocusableElement (line 38) | private isFocusableElement(element: Element | null): element is Focusa... method isInputFocused (line 52) | isInputFocused(excludingElement?: FocusableElementType): boolean { method canFocusTextarea (line 65) | canFocusTextarea(textareaElement?: FocusableElementType): boolean { method safeFocus (line 75) | safeFocus(element: FocusableElementType, force: boolean = false): bool... function isInputFocused (line 91) | function isInputFocused(excludingElement?: FocusableElementType) { function canFocusTextarea (line 95) | function canFocusTextarea(textareaElement?: FocusableElementType) { function safeFocus (line 99) | function safeFocus(element: FocusableElementType, force?: boolean) { FILE: fluxer_app/src/lib/IsTextInputKeyEvent.tsx function isTextInputKeyEvent (line 20) | function isTextInputKeyEvent(event: KeyboardEvent): boolean { constant NAMED_KEY_PATTERN (line 47) | const NAMED_KEY_PATTERN = /^[A-Z][A-Za-z0-9]*$/; FILE: fluxer_app/src/lib/KeybindManager.tsx type CombokeysInstance (line 80) | interface CombokeysInstance { type ShortcutSource (line 87) | type ShortcutSource = 'local' | 'global'; type KeybindHandler (line 89) | type KeybindHandler = (payload: { constant NON_TEXT_INPUT_TYPES (line 95) | const NON_TEXT_INPUT_TYPES = new Set([ class KeybindManager (line 206) | class KeybindManager { method currentChannelId (line 222) | private get currentChannelId(): string | null { method currentGuildId (line 226) | private get currentGuildId(): string | null { method navigateToChannel (line 230) | private navigateToChannel(guildId: string | null, channelId: string): ... method activeKeybinds (line 249) | private get activeKeybinds(): Array { method activeGlobalKeybinds (line 253) | private get activeGlobalKeybinds(): Array { method getFirstSelectableChannelId (line 266) | private getFirstSelectableChannelId(guildId: string): string | undefin... method isAppRoute (line 272) | private isAppRoute(pathname: string): boolean { method ensureCombokeys (line 276) | private ensureCombokeys(): CombokeysInstance | null { method checkInputMonitoringPermission (line 286) | private async checkInputMonitoringPermission(): Promise { method init (line 304) | async init(i18n: I18n) { method refreshGlobalKeyHook (line 355) | private async refreshGlobalKeyHook(): Promise { method reapplyGlobalShortcuts (line 377) | async reapplyGlobalShortcuts() { method destroy (line 382) | destroy() { method startGlobalKeyHook (line 407) | async startGlobalKeyHook(): Promise { method stopGlobalKeyHook (line 435) | stopGlobalKeyHook(): void { method handleGlobalKeyEvent (line 448) | private handleGlobalKeyEvent(event: {type: 'keydown' | 'keyup'; keycod... method handleGlobalMouseEvent (line 460) | private handleGlobalMouseEvent(event: {type: 'mousedown' | 'mouseup'; ... method setPttKeybind (line 472) | setPttKeybind(keycode: number | null, mouseButton: number | null): void { method suspend (line 477) | suspend(): void { method resume (line 482) | resume(): void { method register (line 487) | register(action: KeybindCommand, handler: KeybindHandler) { method registerDefaultHandlers (line 491) | private registerDefaultHandlers(i18n: I18n) { method refreshGlobalShortcuts (line 950) | private async refreshGlobalShortcuts() { method refreshLocalShortcuts (line 1004) | private refreshLocalShortcuts() { method bindLocalShortcut (line 1012) | private bindLocalShortcut(entry: KeybindConfig & {combo: KeyCombo}) { FILE: fluxer_app/src/lib/LibFluxcore.Worker.tsx function getArrayU8FromWasm0 (line 27) | function getArrayU8FromWasm0(ptr: number, len: number): Uint8Array { function getUint8ArrayMemory0 (line 33) | function getUint8ArrayMemory0(): Uint8Array { function isLikeNone (line 40) | function isLikeNone(x: unknown): x is null | undefined { constant WASM_VECTOR_LEN (line 44) | let WASM_VECTOR_LEN = 0; function passArray8ToWasm0 (line 46) | function passArray8ToWasm0(arg: Uint8Array, malloc: (n: number, align: n... constant MAX_SAFARI_DECODE_BYTES (line 56) | const MAX_SAFARI_DECODE_BYTES = 2146435072; function decodeText (line 59) | function decodeText(ptr: number, len: number): string { function takeObject (line 69) | function takeObject(idx: number): any { function loadWasmModule (line 75) | async function loadWasmModule(wasmUrl: string): Promise { function getImports (line 101) | function getImports(): Record { function ensureLibfluxcoreReady (line 155) | async function ensureLibfluxcoreReady(): Promise { function cropAndRotateGif (line 160) | function cropAndRotateGif( FILE: fluxer_app/src/lib/LibFluxcore.tsx function loadModule (line 26) | async function loadModule(): Promise { function ensureLibfluxcoreReady (line 42) | async function ensureLibfluxcoreReady(): Promise { function detectAnimatedImage (line 46) | async function detectAnimatedImage(data: Uint8Array): Promise { function cropAndRotateGif (line 52) | function cropAndRotateGif( function cropAndRotateImage (line 66) | function cropAndRotateImage( function cropAndRotateApng (line 81) | async function cropAndRotateApng( function decompressZstdFrame (line 96) | async function decompressZstdFrame(input: Uint8Array): Promise; constant LEVEL_NAME_BY_VALUE (line 36) | const LEVEL_NAME_BY_VALUE: Record = { constant DEFAULT_STYLES (line 46) | const DEFAULT_STYLES = { class Logger (line 62) | class Logger { method constructor (line 67) | constructor(name = 'default', minLevelOverride?: LogLevel) { method refreshGlobalLogLevel (line 72) | static refreshGlobalLogLevel(): void { method create (line 76) | static create(name: string, minLevelOverride?: LogLevel): Logger { method getCurrentLogLevel (line 80) | private getCurrentLogLevel(): LogLevel { method child (line 87) | child(suffix: string): Logger { method trace (line 91) | trace(...args: Array): void { method debug (line 94) | debug(...args: Array): void { method info (line 97) | info(...args: Array): void { method warn (line 100) | warn(...args: Array): void { method error (line 103) | error(...args: Array): void { method shouldDemoteHttp404 (line 112) | private shouldDemoteHttp404(args: Array): boolean { method fatal (line 115) | fatal(...args: Array): void { method log (line 119) | private log(level: LogLevel, ...args: Array): void { method getConsoleMethod (line 141) | private getConsoleMethod(level: LogLevel): 'log' | 'debug' | 'info' | ... FILE: fluxer_app/src/lib/MediaDeviceCache.tsx type MediaDeviceCacheKind (line 20) | type MediaDeviceCacheKind = 'audio' | 'video'; type CachedDeviceEntry (line 22) | interface CachedDeviceEntry { type DeviceFetcher (line 27) | type DeviceFetcher = () => Promise>; class MediaDeviceCache (line 29) | class MediaDeviceCache { method getDevices (line 32) | async getDevices(type: MediaDeviceCacheKind, fetchDevices: DeviceFetch... method invalidate (line 43) | invalidate(type: MediaDeviceCacheKind): void { method invalidateAll (line 47) | invalidateAll(): void { method startDeviceChangeListener (line 51) | startDeviceChangeListener(): () => void { FILE: fluxer_app/src/lib/MessageQueue.tsx constant DEFAULT_MAX_SIZE (line 61) | const DEFAULT_MAX_SIZE = 5; constant DEV_MESSAGE_DELAY (line 62) | const DEV_MESSAGE_DELAY = 3000; type BaseMessagePayload (line 64) | interface BaseMessagePayload { type SendMessagePayload (line 68) | interface SendMessagePayload extends BaseMessagePayload { type EditMessagePayload (line 81) | interface EditMessagePayload extends BaseMessagePayload { type MessageQueuePayload (line 88) | type MessageQueuePayload = SendMessagePayload | EditMessagePayload; type RetryError (line 90) | interface RetryError { type ApiErrorBody (line 94) | interface ApiErrorBody { function isSendPayload (line 104) | function isSendPayload(payload: MessageQueuePayload): payload is SendMes... function isEditPayload (line 108) | function isEditPayload(payload: MessageQueuePayload): payload is EditMes... function isRateLimitError (line 112) | function isRateLimitError(error: HttpError): boolean { function isSlowmodeError (line 116) | function isSlowmodeError(error: HttpError): boolean { function isFeatureDisabledError (line 120) | function isFeatureDisabledError(error: HttpError): boolean { function isExplicitContentError (line 124) | function isExplicitContentError(error: HttpError): boolean { function isFileTooLargeError (line 128) | function isFileTooLargeError(error: HttpError): boolean { function isDMRestrictedError (line 132) | function isDMRestrictedError(error: HttpError): boolean { function getUnclaimedAccountErrorCode (line 136) | function getUnclaimedAccountErrorCode(error: HttpError): string | undefi... class MessageQueue (line 147) | class MessageQueue extends Queue { method handleSend (line 202) | private async handleSend( method applyDevDelay (line 264) | private async applyDevDelay(): Promise { method sendMessageRequest (line 271) | private async sendMessageRequest( method sendMultipartMessage (line 297) | private async sendMultipartMessage( method attemptMessageSend (line 327) | private async attemptMessageSend( method buildSendOutcome (line 345) | private buildSendOutcome( method handleSendRateLimit (line 357) | private handleSendRateLimit( method handleSendError (line 369) | private handleSendError( method restoreFailedMessage (line 408) | private restoreFailedMessage(channelId: string, nonce: string): void { method showErrorModal (line 427) | private showErrorModal(error: HttpError, channelId?: string): void { method handleRateLimitError (line 446) | private handleRateLimitError(retryAfter: number, onRetry?: () => void)... method handleEdit (line 450) | private async handleEdit( method buildEditRequestBody (line 488) | private buildEditRequestBody(content?: string, flags?: number): Messag... method handleEditRateLimit (line 502) | private handleEditRateLimit( method showEditErrorModal (line 514) | private showEditErrorModal(error: HttpError): void { method handleEditRateLimitError (line 522) | private handleEditRateLimitError(retryAfter: number, onRetry?: () => v... FILE: fluxer_app/src/lib/MobXPersistence.tsx function makePersistent (line 39) | async function makePersistent( function stopPersistent (line 72) | function stopPersistent(storageKey: string, store: object): void { FILE: fluxer_app/src/lib/MultiAccountGatewaySocket.tsx constant GATEWAY_TIMEOUTS (line 45) | const GATEWAY_TIMEOUTS = { constant MAX_ACCOUNTS (line 54) | const MAX_ACCOUNTS = 10; constant MULTIPLEXED_FRAME_PREFIX (line 55) | const MULTIPLEXED_FRAME_PREFIX = 0xfd; type RelayConnectionState (line 63) | type RelayConnectionState = ValueOf; type AccountConnectionState (line 72) | type AccountConnectionState = ValueOf; type AccountConnection (line 74) | interface AccountConnection { type GatewayErrorData (line 94) | interface GatewayErrorData { type MultiplexedFrame (line 99) | interface MultiplexedFrame { type MultiAccountGatewaySocketEvents (line 105) | interface MultiAccountGatewaySocketEvents { type MultiAccountGatewaySocketOptions (line 128) | interface MultiAccountGatewaySocketOptions { class MultiAccountGatewaySocket (line 133) | class MultiAccountGatewaySocket extends EventEmitter( method connectToRelay (line 183) | async connectToRelay(relayUrl: string): Promise { method openRelaySocket (line 199) | private async openRelaySocket(relayUrl: string): Promise { method teardownRelaySocket (line 229) | private teardownRelaySocket(): void { method handleRelayConnectionFailure (line 297) | private handleRelayConnectionFailure(): void { method scheduleRelayReconnect (line 307) | private scheduleRelayReconnect(): void { method disconnectRelay (line 326) | disconnectRelay(code = 1000, reason = 'Client disconnecting'): void { method addAccount (line 344) | async addAccount( method removeAccount (line 389) | removeAccount(accountId: string): void { method getAccount (line 409) | getAccount(accountId: string): AccountConnection | null { method getAccountsForInstance (line 413) | getAccountsForInstance(instanceDomain: string): Array { method routeFrameToAccount (line 731) | private async routeFrameToAccount(frame: MultiplexedFrame): Promise { method getAllAccounts (line 1139) | getAllAccounts(): Array { method isRelayConnected (line 1143) | isRelayConnected(): boolean { method isAccountConnected (line 1149) | isAccountConnected(accountId: string): boolean { method base64ToUint8Array (line 1154) | private base64ToUint8Array(base64: string): Uint8Array { method uint8ArrayToBase64 (line 1163) | private uint8ArrayToBase64(bytes: Uint8Array): string { method destroy (line 1171) | destroy(): void { FILE: fluxer_app/src/lib/PasswordManagerAutocomplete.tsx constant CREDENTIAL_INPUT_TYPES (line 22) | const CREDENTIAL_INPUT_TYPES = new Set(['email', 'password']); type PasswordManagerIgnoreAttributes (line 24) | interface PasswordManagerIgnoreAttributes { type InputWithPasswordManagerIgnoreAttributes (line 34) | type InputWithPasswordManagerIgnoreAttributes = React.InputHTMLAttribute... type TextareaWithPasswordManagerIgnoreAttributes (line 37) | type TextareaWithPasswordManagerIgnoreAttributes = React.TextareaHTMLAtt... constant PASSWORD_MANAGER_IGNORE_ATTRIBUTES (line 40) | const PASSWORD_MANAGER_IGNORE_ATTRIBUTES: PasswordManagerIgnoreAttribute... function shouldApplyPasswordManagerIgnoreAttributes (line 50) | function shouldApplyPasswordManagerIgnoreAttributes(type: React.HTMLInpu... FILE: fluxer_app/src/lib/PlaceholderSpecs.tsx function hashSeed (line 22) | function hashSeed(input: string): number { function createSeededRandom (line 31) | function createSeededRandom(seed: number): () => number { function generatePlaceholderSpecs (line 41) | function generatePlaceholderSpecs(options: { function usePlaceholderSpecs (line 107) | function usePlaceholderSpecs(compact: boolean, groupSpacing: number, fon... FILE: fluxer_app/src/lib/Platform.tsx type PlatformSelector (line 30) | type PlatformSelector = { function selectValue (line 38) | function selectValue(options: PlatformSelector): T | undefined { function isWebPlatform (line 67) | function isWebPlatform(): boolean { function isElectronPlatform (line 71) | function isElectronPlatform(): boolean { function getNativeLocaleIdentifier (line 75) | function getNativeLocaleIdentifier(): string | null { FILE: fluxer_app/src/lib/Queue.tsx type QueueEntry (line 22) | interface QueueEntry { type RetryInfo (line 27) | interface RetryInfo { type QueueConfig (line 31) | interface QueueConfig { method constructor (line 44) | constructor(config: QueueConfig = {}) { method enqueue (line 57) | enqueue(message: TMessage, success: (result?: TResult, error?: unknown) ... method queueLength (line 62) | get queueLength(): number { method clear (line 66) | clear(): void { method peek (line 75) | peek(): TMessage | undefined { method maybeProcessNext (line 79) | private maybeProcessNext(): void { FILE: fluxer_app/src/lib/ReadStateCleanup.tsx constant CLEANUP_INTERVAL_MS (line 31) | const CLEANUP_INTERVAL_MS = 300; function collectStaleChannels (line 38) | function collectStaleChannels(): Array { function deleteReadState (line 45) | async function deleteReadState(channelId: string): Promise { function runCleanup (line 55) | async function runCleanup(): Promise { function startReadStateCleanup (line 82) | function startReadStateCleanup(): void { FILE: fluxer_app/src/lib/RelayClient.tsx constant RELAY_CACHE_TTL_MS (line 33) | const RELAY_CACHE_TTL_MS = 5 * MS_PER_MINUTE; constant INSTANCE_KEY_CACHE_TTL_MS (line 34) | const INSTANCE_KEY_CACHE_TTL_MS = MS_PER_HOUR; constant DEFAULT_REQUEST_TIMEOUT_MS (line 35) | const DEFAULT_REQUEST_TIMEOUT_MS = 30000; type RelayInfo (line 37) | interface RelayInfo { type InstancePublicKey (line 43) | interface InstancePublicKey { type InstanceEndpoints (line 49) | interface InstanceEndpoints { type RelayRequestOptions (line 55) | interface RelayRequestOptions { type RelayResponse (line 63) | interface RelayResponse { type CachedRelay (line 70) | interface CachedRelay { type CachedInstanceInfo (line 75) | interface CachedInstanceInfo { type EncryptedRelayRequest (line 81) | interface EncryptedRelayRequest { type EncryptedRelayResponse (line 87) | interface EncryptedRelayResponse { class RelayClient (line 92) | class RelayClient { method setRelayDirectoryUrl (line 98) | setRelayDirectoryUrl(url: string): void { method selectRelay (line 104) | async selectRelay(forceRefresh = false): Promise { method getInstancePublicKey (line 140) | async getInstancePublicKey(instanceDomain: string, forceRefresh = fals... method getInstanceEndpoints (line 145) | async getInstanceEndpoints(instanceDomain: string, forceRefresh = fals... method fetchInstanceInfo (line 150) | private async fetchInstanceInfo(instanceDomain: string, forceRefresh =... method getOrCreateEphemeralKeyPair (line 214) | private async getOrCreateEphemeralKeyPair(): Promise { method rotateEphemeralKeyPair (line 222) | rotateEphemeralKeyPair(): void { method encryptedFetch (line 227) | async encryptedFetch( method get (line 319) | async get( method post (line 327) | async post( method put (line 336) | async put( method patch (line 345) | async patch( method delete (line 354) | async delete( method clearCache (line 362) | clearCache(): void { method clearInstanceInfoCache (line 369) | clearInstanceInfoCache(instanceDomain?: string): void { FILE: fluxer_app/src/lib/RemoteInstanceAuth.tsx constant STORAGE_KEY_PREFIX (line 26) | const STORAGE_KEY_PREFIX = 'federation_token_'; constant TOKEN_REFRESH_BUFFER_SECONDS (line 27) | const TOKEN_REFRESH_BUFFER_SECONDS = 300; constant DEFAULT_SCOPES (line 28) | const DEFAULT_SCOPES = 'identify guilds messages.read'; type StoredToken (line 30) | interface StoredToken { type OAuth2Config (line 38) | interface OAuth2Config { type PKCEChallenge (line 45) | interface PKCEChallenge { type PendingOAuth2Flow (line 50) | interface PendingOAuth2Flow { function base64UrlEncode (line 57) | function base64UrlEncode(buffer: ArrayBuffer): string { function generateCodeVerifier (line 66) | async function generateCodeVerifier(): Promise { function generateCodeChallenge (line 71) | async function generateCodeChallenge(verifier: string): Promise { function generatePKCEChallenge (line 78) | async function generatePKCEChallenge(): Promise { function generateState (line 84) | function generateState(): string { function getStorageKey (line 89) | function getStorageKey(instanceDomain: string): string { class RemoteInstanceAuth (line 93) | class RemoteInstanceAuth { method setClientId (line 100) | setClientId(clientId: string): void { method loadStoredTokens (line 105) | async loadStoredTokens(): Promise { method persistToken (line 122) | private persistToken(token: StoredToken): void { method removeToken (line 129) | private removeToken(instanceDomain: string): void { method getOAuth2Config (line 136) | async getOAuth2Config(instanceDomain: string, forceRefresh = false): P... method getToken (line 191) | async getToken(instanceDomain: string): Promise { method initiateOAuth2Flow (line 217) | async initiateOAuth2Flow(instanceDomain: string, redirectUri: string, ... method exchangeCode (line 248) | async exchangeCode(instanceDomain: string, code: string, state: string... method refreshToken (line 310) | async refreshToken(instanceDomain: string, refreshTokenValue: string):... method doRefreshToken (line 329) | private async doRefreshToken(instanceDomain: string, refreshTokenValue... method hasToken (line 381) | hasToken(instanceDomain: string): boolean { method revokeToken (line 385) | revokeToken(instanceDomain: string): void { method getAuthorizedInstances (line 390) | getAuthorizedInstances(): Array { method clearAllTokens (line 394) | clearAllTokens(): void { method clearCache (line 406) | clearCache(): void { FILE: fluxer_app/src/lib/ScrollManager.tsx type ScrollerRef (line 34) | type ScrollerRef = React.RefObject | React.RefObj... type DebouncedFunction (line 36) | type DebouncedFunction = T extends (...args: infer P) => infer R type AnchorData (line 44) | interface AnchorData { type ScrollerState (line 52) | interface ScrollerState { type ScrollManagerProps (line 58) | interface ScrollManagerProps { constant DEFAULT_SCROLLER_STATE (line 73) | const DEFAULT_SCROLLER_STATE: ScrollerState = { constant BOTTOM_LOCK_TOLERANCE (line 79) | const BOTTOM_LOCK_TOLERANCE = 8; type ScrollRegion (line 81) | enum ScrollRegion { function resolveJumpTargetId (line 87) | function resolveJumpTargetId(messages: ChannelMessages): string | null { class ScrollManager (line 109) | class ScrollManager { method constructor (line 145) | constructor(props: ScrollManagerProps) { method takePreUpdatePinState (line 162) | private takePreUpdatePinState(): ScrollPinResult | null { method isReady (line 168) | isReady(): boolean { method isLoading (line 172) | isLoading(): boolean { method isPinned (line 176) | isPinned(): boolean { method isJumping (line 180) | isJumping(): boolean { method isDragging (line 184) | isDragging(): boolean { method isInitialized (line 188) | isInitialized(): boolean { method isScrollLoadingDisabled (line 192) | isScrollLoadingDisabled(): boolean { method computePinState (line 198) | private computePinState(state: ScrollerState): ScrollPinResult { method getDocument (line 207) | getDocument(): Document | undefined { method getScrollerState (line 212) | getScrollerState(): ScrollerState { method isScrolledToBottom (line 216) | isScrolledToBottom(state: ScrollerState = this.getScrollerState()): bo... method getElementFromMessageId (line 221) | getElementFromMessageId(messageId: string): HTMLElement | null { method getOffsetTop (line 229) | private getOffsetTop(element: HTMLElement, container: HTMLElement): nu... method getJumpBreathingRoom (line 235) | private getJumpBreathingRoom(): number { method lockNodeTopToPadding (line 239) | private lockNodeTopToPadding(node: HTMLElement, padding: number, anima... method getAnchorData (line 281) | getAnchorData(messageId: string, scrollTop: number, clampTo?: number):... method getNewMessageBarBuffer (line 303) | getNewMessageBarBuffer(): number { method setAutomaticAnchor (line 307) | setAutomaticAnchor(anchor: AnchorData | null): void { method clearAutomaticAnchor (line 315) | clearAutomaticAnchor(): void { method findTopVisibleAnchor (line 319) | findTopVisibleAnchor(): AnchorData | null { method findLoadMoreAnchor (line 364) | findLoadMoreAnchor(isBefore: boolean): AnchorData | null { method getAnchorFixData (line 384) | getAnchorFixData(): {node: HTMLElement; fixedScrollTop: number} | null { method fixAnchorScrollPosition (line 406) | fixAnchorScrollPosition(): void { method hasAnchor (line 448) | hasAnchor(): boolean { method updateFocusAnchor (line 452) | updateFocusAnchor(messageId: string | null | undefined, scrollTop: num... method handleFocusAnchorScroll (line 465) | handleFocusAnchorScroll(scrollTop: number, offsetHeight: number): void { method updateFetchAnchor (line 469) | updateFetchAnchor(scrollTop: number, offsetHeight: number, scrollHeigh... method updateAutomaticAnchor (line 479) | updateAutomaticAnchor(scrollTop: number): void { method isHeightChange (line 492) | isHeightChange(offsetHeight: number, scrollHeight: number): boolean { method isInPlaceholderRegion (line 496) | isInPlaceholderRegion(state: ScrollerState): ScrollRegion { method getOffsetToTriggerLoading (line 511) | getOffsetToTriggerLoading(edge: 'top' | 'bottom', state: ScrollerState... method getOffsetToPreventLoading (line 525) | getOffsetToPreventLoading(edge: 'top' | 'bottom'): number { method isInScrollTriggerLoadingRegion (line 538) | isInScrollTriggerLoadingRegion(state: ScrollerState): ScrollRegion { method handleScrollSpeed (line 557) | handleScrollSpeed(state: ScrollerState): void { method loadMoreForKeyboardNavigation (line 632) | loadMoreForKeyboardNavigation(loadAfter: boolean): void { method handleLayoutResized (line 746) | handleLayoutResized(heightDelta?: number): void { method fixScrollPosition (line 783) | fixScrollPosition(offsetHeight: number, scrollHeight: number, forceAtB... method fixJumpTarget (line 827) | private fixJumpTarget(): void { method scrollToNewMessages (line 855) | scrollToNewMessages( method scrollToBelowUnreadDivider (line 907) | scrollToBelowUnreadDivider(): void { method restoreScroll (line 928) | restoreScroll(): void { method scrollTo (line 948) | scrollTo(position: number, animate = false, callback?: () => void): vo... method mergeTo (line 964) | mergeTo(position: number, callback?: () => void): void { method setScrollToBottom (line 979) | setScrollToBottom(animate = false): void { method applyLayoutShift (line 999) | applyLayoutShift(heightDelta: number): boolean { method enterEditMode (line 1029) | enterEditMode(): void { method exitEditMode (line 1033) | exitEditMode(): void { method updateStoreDimensions (line 1038) | private updateStoreDimensions(callback?: () => void): void { method focusMessage (line 1061) | focusMessage(messageId: string): void { method scrollPageUp (line 1108) | scrollPageUp(animate = false): void { method scrollPageDown (line 1112) | scrollPageDown(animate = false): void { method scrollToMessage (line 1116) | scrollToMessage(messageId: string, animate = true, previousTimestamp?:... method getSnapshotBeforeUpdate (line 1171) | getSnapshotBeforeUpdate(focusId: string | null): void { method mergePropsAndUpdate (line 1182) | mergePropsAndUpdate(nextProps: ScrollManagerProps): void { method applyPropsUpdate (line 1188) | private applyPropsUpdate(nextProps: ScrollManagerProps): void { method addAutomaticAnchorCallback (line 1286) | addAutomaticAnchorCallback( method removeAutomaticAnchorCallback (line 1298) | removeAutomaticAnchorCallback(callback: (anchor: AnchorData | null, bo... method addScrollCompleteCallback (line 1302) | addScrollCompleteCallback(callback: () => void): void { method removeScrollCompleteCallback (line 1308) | removeScrollCompleteCallback(callback: () => void): void { method cleanup (line 1312) | cleanup(): void { function useScrollManager (line 1331) | function useScrollManager(props: ScrollManagerProps): ScrollManager { FILE: fluxer_app/src/lib/SessionManager.tsx class SessionExpiredError (line 36) | class SessionExpiredError extends Error { method constructor (line 37) | constructor(message?: string) { type SessionState (line 54) | type SessionState = ValueOf; type SessionEvent (line 73) | type SessionEvent = ValueOf; type StateTransition (line 75) | interface StateTransition { constant VALID_TRANSITIONS (line 81) | const VALID_TRANSITIONS: Array = [ type Account (line 132) | interface Account { function readNullableString (line 141) | function readNullableString(value: string | null): string | null { function buildInstanceUserMeUrl (line 151) | function buildInstanceUserMeUrl(instance: RuntimeConfigSnapshot): string { class SessionManager (line 159) | class SessionManager { method constructor (line 170) | constructor() { method state (line 183) | get state(): SessionState { method token (line 187) | get token(): string | null { method userId (line 191) | get userId(): string | null { method error (line 195) | get error(): Error | null { method isIdle (line 199) | get isIdle(): boolean { method isAuthenticated (line 203) | get isAuthenticated(): boolean { method isConnected (line 211) | get isConnected(): boolean { method isConnecting (line 215) | get isConnecting(): boolean { method isSwitching (line 219) | get isSwitching(): boolean { method isLoggingOut (line 223) | get isLoggingOut(): boolean { method canSwitchAccount (line 227) | canSwitchAccount(): boolean { method isInitialized (line 231) | get isInitialized(): boolean { method accounts (line 235) | get accounts(): Array { method currentAccount (line 239) | get currentAccount(): Account | null { method canTransition (line 247) | private canTransition(event: SessionEvent): boolean { method getNextState (line 257) | private getNextState(event: SessionEvent): SessionState | null { method transition (line 267) | transition(event: SessionEvent): boolean { method setToken (line 279) | setToken(token: string | null): void { method setUserId (line 288) | setUserId(userId: string | null): void { method setError (line 297) | setError(error: Error | null): void { method nextOperationId (line 304) | private nextOperationId(): number { method runExclusive (line 308) | private async runExclusive(fn: () => Promise): Promise { method initialize (line 320) | async initialize(): Promise { method doInitialize (line 329) | private async doInitialize(): Promise { method loadStoredAccounts (line 378) | private async loadStoredAccounts(): Promise { method stashCurrentAccount (line 405) | async stashCurrentAccount(): Promise { method validateToken (line 440) | async validateToken(token: string, instance?: RuntimeConfigSnapshot): ... method markAccountInvalid (line 455) | markAccountInvalid(userId: string): void { method login (line 465) | async login(token: string, userId: string, userData?: UserData): Promi... method switchAccount (line 495) | async switchAccount(userId: string): Promise { method logout (line 581) | async logout(): Promise { method removeAccount (line 634) | async removeAccount(userId: string): Promise { method handleConnectionReady (line 646) | handleConnectionReady(): void { method handleConnectionClosed (line 652) | handleConnectionClosed(code: number): void { method handleConnectionStarted (line 666) | handleConnectionStarted(): void { method handleConnectionFailed (line 672) | handleConnectionFailed(): void { method updateAccountUserData (line 678) | updateAccountUserData(userId: string, userData: UserData): void { method reset (line 687) | reset(): void { FILE: fluxer_app/src/lib/StickerSendUtils.tsx function handleStickerSelect (line 32) | function handleStickerSelect(channelId: string, sticker: GuildStickerRec... function sendStickerMessage (line 44) | function sendStickerMessage(channelId: string, sticker: GuildStickerReco... FILE: fluxer_app/src/lib/TextareaAutosize.tsx type TextareaAutosizeProps (line 23) | interface TextareaAutosizeProps extends React.TextareaHTMLAttributes { constant EMOJI_SHORTCUT_RE (line 215) | const EMOJI_SHORTCUT_RE = (() => { FILE: fluxer_app/src/lib/Versioning.tsx constant CONTROLLER_CHANGE_TIMEOUT_MS (line 24) | const CONTROLLER_CHANGE_TIMEOUT_MS = 4_000; function activateLatestServiceWorker (line 26) | async function activateLatestServiceWorker(): Promise { function ensureLatestAssets (line 144) | async function ensureLatestAssets(options: {force?: boolean} = {}): Prom... FILE: fluxer_app/src/lib/VoiceStatsDB.tsx constant DB_NAME (line 24) | const DB_NAME = 'FluxerVoiceStats'; constant DB_VERSION (line 25) | const DB_VERSION = 1; constant STORE_NAME (line 26) | const STORE_NAME = 'stats'; type StatEntry (line 28) | interface StatEntry { constant IDB_TIMEOUT (line 34) | const IDB_TIMEOUT = 5000; class VoiceStatsDB (line 36) | class VoiceStatsDB { method init (line 41) | async init(): Promise { method set (line 88) | async set(reportId: string, bytes: number, timestamp: number): Promise... method get (line 103) | async get(reportId: string): Promise<{bytes: number; timestamp: number... method clear (line 124) | async clear(): Promise { method clearOldEntries (line 138) | async clearOldEntries(maxAgeMs: number): Promise { FILE: fluxer_app/src/lib/markdown/EmojiProviderSetup.tsx function initializeEmojiParser (line 30) | function initializeEmojiParser(): void { FILE: fluxer_app/src/lib/markdown/MarkdownTableParsingConfig.tsx constant TABLE_PARSING_ENABLED (line 20) | const TABLE_PARSING_ENABLED = false; constant TABLE_PARSING_FLAG (line 21) | const TABLE_PARSING_FLAG = 0; FILE: fluxer_app/src/lib/markdown/Plaintext.tsx type PlaintextRenderOptions (line 56) | interface PlaintextRenderOptions { function renderNodeToPlaintext (line 63) | function renderNodeToPlaintext(node: Node, options: PlaintextRenderOptio... function renderMentionToPlaintext (line 205) | function renderMentionToPlaintext(node: MentionNode, options: PlaintextR... function renderEmojiToPlaintext (line 285) | function renderEmojiToPlaintext(node: EmojiNode, options: PlaintextRende... function renderNodesToPlaintext (line 299) | function renderNodesToPlaintext(nodes: Array, options: PlaintextRe... function renderToPlaintext (line 303) | function renderToPlaintext(nodes: Array, options: PlaintextRenderO... function parseAndRenderToPlaintext (line 312) | function parseAndRenderToPlaintext( FILE: fluxer_app/src/lib/markdown/index.tsx method constructor (line 35) | constructor(props: {children: React.ReactNode}) { method getDerivedStateFromError (line 40) | static getDerivedStateFromError(error: Error) { method componentDidCatch (line 44) | override componentDidCatch(error: Error, info: React.ErrorInfo) { method render (line 48) | override render() { function parseMarkdown (line 61) | function parseMarkdown( FILE: fluxer_app/src/lib/markdown/renderers/EmojiRenderer.tsx type EmojiBottomSheetState (line 44) | interface EmojiBottomSheetState { type EmojiWithTooltipProps (line 49) | interface EmojiWithTooltipProps { FILE: fluxer_app/src/lib/markdown/renderers/LinkRenderer.tsx type JumpLinkMentionProps (line 64) | interface JumpLinkMentionProps { FILE: fluxer_app/src/lib/markdown/renderers/MentionRenderer.tsx type UserInfo (line 47) | interface UserInfo { function getUserInfo (line 52) | function getUserInfo(userId: string, channelId?: string): UserInfo { FILE: fluxer_app/src/lib/markdown/renderers/RendererTypes.tsx type MarkdownContext (line 32) | type MarkdownContext = ValueOf; type MarkdownParseOptions (line 34) | interface MarkdownParseOptions { type MarkdownRenderOptions (line 43) | interface MarkdownRenderOptions extends MarkdownParseOptions { type RendererProps (line 48) | interface RendererProps { FILE: fluxer_app/src/lib/markdown/renderers/TimestampRenderer.test.tsx function createRendererProps (line 35) | function createRendererProps(node: TimestampNode): RendererProps, options: MarkdownParseOptions): Reac... function wrapRenderedContent (line 182) | function wrapRenderedContent(content: React.ReactNode, context: Markdown... FILE: fluxer_app/src/lib/markdown/utils/DateFormatter.tsx function formatRelativeTime (line 37) | function formatRelativeTime(date: Date, i18n: I18n): string { function formatTimestamp (line 142) | function formatTimestamp(timestamp: number, style: TimestampStyle, i18n:... FILE: fluxer_app/src/lib/markdown/utils/EmojiDetector.tsx type EmojiRenderData (line 28) | interface EmojiRenderData { function getEmojiRenderData (line 35) | function getEmojiRenderData( FILE: fluxer_app/src/lib/markdown/utils/JumboDetector.tsx function shouldRenderAsJumboEmojis (line 25) | function shouldRenderAsJumboEmojis(nodes: ReadonlyArray): boolean { FILE: fluxer_app/src/lib/markdown/utils/TimestampValidation.tsx constant MILLISECONDS_PER_SECOND (line 20) | const MILLISECONDS_PER_SECOND = 1000; function getDateFromUnixTimestampSeconds (line 22) | function getDateFromUnixTimestampSeconds(timestamp: number): Date | null { FILE: fluxer_app/src/lib/router/Builder.tsx type RouteGuard (line 22) | type RouteGuard = (ctx: RouteContext) => undefined | Redirect | NotFound; type RouteBuilderConfig (line 24) | interface RouteBuilderConfig { function generateRouteId (line 36) | function generateRouteId(): string { class RouteBuilder (line 40) | class RouteBuilder { method constructor (line 46) | constructor(config: RouteBuilderConfig) { method addChildren (line 51) | addChildren(children: Array): this { method getParent (line 59) | getParent(): RouteBuilder | null { method collectRoutes (line 63) | private collectRoutes(parentId?: string): Array { method build (line 87) | build(): Array { type RootRouteConfig (line 92) | interface RootRouteConfig { function createRootRoute (line 100) | function createRootRoute(config: RootRouteConfig = {}): RouteBuilder { type CreateRouteConfig (line 108) | interface CreateRouteConfig { function createRoute (line 120) | function createRoute(config: CreateRouteCo... FILE: fluxer_app/src/lib/router/Core.tsx class RouterImpl (line 38) | class RouterImpl implements Router { method constructor (line 48) | constructor(options: RouterOptions) { method getState (line 84) | getState(): RouterState { method getRoutes (line 88) | getRoutes(): Array { method subscribe (line 92) | subscribe(listener: () => void): () => void { method destroy (line 99) | destroy(): void { method notify (line 107) | private notify() { method runInitialGuards (line 111) | private runInitialGuards(): void { method normalizeUrl (line 125) | private normalizeUrl(url: URL): URL { method resolveTo (line 136) | resolveTo(to: To, from?: URL): URL { method navigate (line 164) | async navigate(to: To, opts: NavigateOptions = {}): Promise { method preload (line 192) | async preload(to: To): Promise { method preloadKey (line 232) | private preloadKey(route: Route, url: URL): string { method handlePop (line 236) | private async handlePop(url: URL, state: unknown): Promise { method matchUrl (line 250) | private matchUrl(url: URL): Array { method transitionTo (line 315) | private async transitionTo( method handleNotFound (line 460) | private async handleNotFound(url: URL, historyState: unknown): Promise... function createRouter (line 509) | function createRouter(options: RouterOptions): Router { FILE: fluxer_app/src/lib/router/History.tsx function createBrowserHistory (line 22) | function createBrowserHistory(): HistoryAdapter { function createMemoryHistory (line 76) | function createMemoryHistory(initialHref = 'http://localhost/'): History... FILE: fluxer_app/src/lib/router/React.tsx function useRouter (line 81) | function useRouter(): Router { function useRouterState (line 87) | function useRouterState(selector: (state: RouterState) => T): T { function useLocation (line 96) | function useLocation(): URL { function useMatches (line 100) | function useMatches(): Array { function useMatch (line 104) | function useMatch(): Match | undefined { function useParams (line 109) | function useParams(): RouteParams { function useSearch (line 114) | function useSearch(): URLSearchParams { function useNavigate (line 119) | function useNavigate(): (to: To, opts?: NavigateOptions) => Promise { type LinkProps (line 124) | interface LinkProps extends Omit>; type NavigateDestination (line 23) | type NavigateDestination = type To (line 32) | type To = string | NavigateDestination; type ScrollBehavior (line 34) | type ScrollBehavior = 'preserve' | 'top'; type NavigateOptions (line 36) | interface NavigateOptions { type RouteParams (line 43) | type RouteParams = Record; type Match (line 45) | interface Match { type RouterState (line 51) | interface RouterState { type RouteContext (line 60) | interface RouteContext { type RouteComponentProps (line 70) | interface RouteComponentProps { type RouteLayoutProps (line 77) | interface RouteLayoutProps extends RouteComponentProps { type RouteConfig (line 81) | interface RouteConfig { type Route (line 94) | interface Route extends Omit { type RouterOptions (line 98) | interface RouterOptions { type Router (line 106) | interface Router { type RouterProviderProps (line 116) | interface RouterProviderProps { type HistoryLocation (line 122) | interface HistoryLocation { type HistoryAdapter (line 127) | interface HistoryAdapter { class Redirect (line 137) | class Redirect extends Error { method constructor (line 141) | constructor(to: To, options?: {replace?: boolean}) { class NotFound (line 148) | class NotFound extends Error { method constructor (line 149) | constructor(message = 'Not Found') { FILE: fluxer_app/src/lib/scroll/ScrollPosition.tsx type ScrollMetrics (line 20) | interface ScrollMetrics { type ScrollPinOptions (line 26) | interface ScrollPinOptions { type ScrollPinResult (line 34) | interface ScrollPinResult { constant DEFAULT_TOLERANCE (line 40) | const DEFAULT_TOLERANCE = 8; constant DEFAULT_STICKY_TOLERANCE (line 41) | const DEFAULT_STICKY_TOLERANCE = 64; function evaluateScrollPinning (line 43) | function evaluateScrollPinning(metrics: ScrollMetrics, options: ScrollPi... FILE: fluxer_app/src/records/AuthSessionRecord.tsx class AuthSessionRecord (line 22) | class AuthSessionRecord { method constructor (line 31) | constructor(data: AuthSessionResponse) { method toJSON (line 41) | toJSON(): AuthSessionResponse { method equals (line 50) | equals(other: AuthSessionRecord): boolean { function getLocationLabel (line 55) | function getLocationLabel(location: AuthSessionLocation | null): string ... FILE: fluxer_app/src/records/ChannelRecord.tsx class ChannelOverwriteRecord (line 28) | class ChannelOverwriteRecord { method constructor (line 34) | constructor(overwrite: ChannelOverwrite) { method withUpdates (line 41) | withUpdates(overwrite: Partial): ChannelOverwriteRec... method equals (line 50) | equals(other: ChannelOverwriteRecord): boolean { method toJSON (line 54) | toJSON(): ChannelOverwrite { type ChannelRecordOptions (line 64) | interface ChannelRecordOptions { class ChannelRecord (line 68) | class ChannelRecord { method constructor (line 96) | constructor(channel: Channel, options?: ChannelRecordOptions) { method hasFlag (line 149) | hasFlag(flag: number): boolean { method isPinned (line 153) | get isPinned(): boolean { method isPrivate (line 157) | isPrivate(): boolean { method isDM (line 165) | isDM(): boolean { method isGroupDM (line 169) | isGroupDM(): boolean { method isPersonalNotes (line 173) | isPersonalNotes(): boolean { method isGuildText (line 177) | isGuildText(): boolean { method isGuildVoice (line 181) | isGuildVoice(): boolean { method isGuildCategory (line 185) | isGuildCategory(): boolean { method isVoice (line 189) | isVoice(): boolean { method isText (line 193) | isText(): boolean { method isNSFW (line 197) | isNSFW(): boolean { method getRecipientId (line 201) | getRecipientId(): string | undefined { method createdAt (line 206) | get createdAt(): Date { method withUpdates (line 210) | withUpdates(updates: Partial): ChannelRecord { method withOverwrite (line 262) | withOverwrite(overwrite: ChannelOverwriteRecord): ChannelRecord { method equals (line 279) | equals(other: ChannelRecord): boolean { method toJSON (line 319) | toJSON(): Channel { FILE: fluxer_app/src/records/ConnectionRecord.tsx class ConnectionRecord (line 23) | class ConnectionRecord { method constructor (line 31) | constructor(connection: ConnectionResponse) { method equals (line 40) | equals(other: ConnectionRecord): boolean { method toJSON (line 51) | toJSON(): ConnectionResponse { FILE: fluxer_app/src/records/DeveloperApplicationRecord.tsx type DeveloperApplicationBot (line 20) | interface DeveloperApplicationBot { type DeveloperApplication (line 31) | interface DeveloperApplication { class DeveloperApplicationRecord (line 41) | class DeveloperApplicationRecord implements DeveloperApplication { method constructor (line 50) | constructor(application: DeveloperApplication) { method from (line 73) | static from(application: DeveloperApplication): DeveloperApplicationRe... method withUpdates (line 77) | withUpdates(updates: Partial): DeveloperApplicat... method toObject (line 86) | toObject(): DeveloperApplication { FILE: fluxer_app/src/records/FavoriteMemeRecord.tsx type FavoriteMeme (line 22) | type FavoriteMeme = Readonly<{ class FavoriteMemeRecord (line 42) | class FavoriteMemeRecord { method constructor (line 61) | constructor(meme: FavoriteMeme) { method createdAtTimestamp (line 81) | get createdAtTimestamp(): number { method createdAt (line 85) | get createdAt(): Date { method isImage (line 89) | isImage(): boolean { method isVideo (line 93) | isVideo(): boolean { method isAudio (line 97) | isAudio(): boolean { method getMediaType (line 101) | getMediaType(): 'image' | 'gifv' | 'video' | 'audio' | 'unknown' { method equals (line 109) | equals(other: FavoriteMemeRecord): boolean { method toJSON (line 131) | toJSON(): FavoriteMeme { FILE: fluxer_app/src/records/GuildEmojiRecord.tsx class GuildEmojiRecord (line 24) | class GuildEmojiRecord { method constructor (line 34) | constructor(guildId: string, data: GuildEmoji) { method withUpdates (line 48) | withUpdates(updates: Partial): GuildEmojiRecord { method equals (line 57) | equals(other: GuildEmojiRecord): boolean { method toJSON (line 67) | toJSON(): GuildEmoji { method create (line 76) | static create(guildId: string, data: GuildEmoji): GuildEmojiRecord { FILE: fluxer_app/src/records/GuildMemberRecord.tsx type GuildMemberRecordOptions (line 30) | interface GuildMemberRecordOptions { class GuildMemberRecord (line 34) | class GuildMemberRecord { method constructor (line 49) | constructor(guildId: string, guildMember: GuildMemberData, options?: G... method isAvatarUnset (line 75) | isAvatarUnset(): boolean { method isBannerUnset (line 79) | isBannerUnset(): boolean { method withUpdates (line 83) | withUpdates(updates: Partial): GuildMemberRecord { method withRoles (line 104) | withRoles(roles: Iterable): GuildMemberRecord { method getSortedRoles (line 115) | getSortedRoles(): ReadonlyArray { method getColorString (line 132) | getColorString(): string | undefined { method isCurrentUser (line 151) | isCurrentUser(): boolean { method isTimedOut (line 155) | isTimedOut(): boolean { method toJSON (line 162) | toJSON(): GuildMemberData { FILE: fluxer_app/src/records/GuildRecord.tsx type GuildRecordOptions (line 38) | interface GuildRecordOptions { type GuildInput (line 42) | type GuildInput = Guild | GuildRecord; class GuildRecord (line 44) | class GuildRecord { method constructor (line 79) | constructor(guild: GuildInput, options?: GuildRecordOptions) { method normalizeField (line 116) | private normalizeField(guild: GuildInput, snakeCase: keyof Guild, c... method normalizeFieldWithDefault (line 121) | private normalizeFieldWithDefault( method normalizeBanner (line 130) | private normalizeBanner(guild: GuildInput): string | null { method normalizeBannerWidth (line 134) | private normalizeBannerWidth(guild: GuildInput): number | null { method normalizeBannerHeight (line 138) | private normalizeBannerHeight(guild: GuildInput): number | null { method normalizeSplash (line 142) | private normalizeSplash(guild: GuildInput): string | null { method normalizeSplashWidth (line 146) | private normalizeSplashWidth(guild: GuildInput): number | null { method normalizeSplashHeight (line 150) | private normalizeSplashHeight(guild: GuildInput): number | null { method normalizeSplashCardAlignment (line 154) | private normalizeSplashCardAlignment(guild: GuildInput): GuildSplashCa... method normalizeEmbedSplash (line 161) | private normalizeEmbedSplash(guild: GuildInput): string | null { method normalizeEmbedSplashWidth (line 165) | private normalizeEmbedSplashWidth(guild: GuildInput): number | null { method normalizeEmbedSplashHeight (line 169) | private normalizeEmbedSplashHeight(guild: GuildInput): number | null { method normalizeVanityUrlCode (line 173) | private normalizeVanityUrlCode(guild: GuildInput): string | null { method normalizeOwnerId (line 177) | private normalizeOwnerId(guild: GuildInput): string { method normalizeSystemChannelId (line 181) | private normalizeSystemChannelId(guild: GuildInput): string | null { method normalizeSystemChannelFlags (line 185) | private normalizeSystemChannelFlags(guild: GuildInput): number { method normalizeRulesChannelId (line 189) | private normalizeRulesChannelId(guild: GuildInput): string | null { method normalizeAfkChannelId (line 193) | private normalizeAfkChannelId(guild: GuildInput): string | null { method normalizeAfkTimeout (line 197) | private normalizeAfkTimeout(guild: GuildInput): number { method normalizeRoles (line 201) | private normalizeRoles(guild: GuildInput): Readonly): GuildRecord { method withRoles (line 356) | withRoles(roles: Record): GuildRecord { method addRole (line 366) | addRole(role: GuildRoleRecord): GuildRecord { method removeRole (line 373) | removeRole(roleId: string): GuildRecord { method updateRole (line 378) | updateRole(role: GuildRoleRecord): GuildRecord { method getRole (line 385) | getRole(roleId: string): GuildRoleRecord | undefined { method createdAt (line 389) | get createdAt(): Date { method isOwner (line 393) | isOwner(userId?: string | null): boolean { method maxStaticEmojis (line 397) | get maxStaticEmojis(): number { method maxAnimatedEmojis (line 407) | get maxAnimatedEmojis(): number { method maxStickers (line 417) | get maxStickers(): number { method isLargeGuild (line 427) | get isLargeGuild(): boolean { method effectiveMessageNotifications (line 435) | get effectiveMessageNotifications(): number { method isNotificationOverrideActive (line 445) | get isNotificationOverrideActive(): boolean { FILE: fluxer_app/src/records/GuildRoleRecord.tsx type GuildRoleRecordOptions (line 23) | interface GuildRoleRecordOptions { class GuildRoleRecord (line 27) | class GuildRoleRecord { method constructor (line 39) | constructor(guildId: string, guildRole: GuildRole, options?: GuildRole... method effectiveHoistPosition (line 52) | get effectiveHoistPosition(): number { method withUpdates (line 56) | withUpdates(updates: Partial): GuildRoleRecord { method isEveryone (line 73) | get isEveryone(): boolean { method equals (line 77) | equals(other: GuildRoleRecord): boolean { method toJSON (line 92) | toJSON(): GuildRole { FILE: fluxer_app/src/records/GuildStickerRecord.tsx class GuildStickerRecord (line 24) | class GuildStickerRecord { method constructor (line 34) | constructor(guildId: string, data: GuildSticker) { method withUpdates (line 49) | withUpdates(updates: Partial): GuildStickerRecord { method equals (line 60) | equals(other: GuildStickerRecord): boolean { method toJSON (line 72) | toJSON(): GuildSticker { method create (line 83) | static create(guildId: string, data: GuildSticker): GuildStickerRecord { FILE: fluxer_app/src/records/MessageRecord.tsx type TransformedMessageCall (line 47) | interface TransformedMessageCall { function transformMessageCall (line 52) | function transformMessageCall(call?: MessageCall | null): TransformedMes... type MessageRecordOptions (line 92) | interface MessageRecordOptions { class MessageRecord (line 97) | class MessageRecord { method constructor (line 135) | constructor(message: Message, options?: MessageRecordOptions) { method hasFlag (line 203) | hasFlag(flag: number): boolean { method suppressEmbeds (line 207) | get suppressEmbeds(): boolean { method suppressNotifications (line 211) | get suppressNotifications(): boolean { method isSilent (line 215) | get isSilent(): boolean { method isUserMessage (line 219) | isUserMessage(): boolean { method isClientSystemMessage (line 225) | isClientSystemMessage(): boolean { method isSystemMessage (line 229) | isSystemMessage(): boolean { method isAuthor (line 233) | isAuthor(userId?: string | null): boolean { method isCurrentUserAuthor (line 237) | isCurrentUserAuthor(): boolean { method isMentioned (line 241) | isMentioned(): boolean { method isSending (line 245) | get isSending(): boolean { method isSent (line 249) | get isSent(): boolean { method hasFailed (line 253) | get hasFailed(): boolean { method isEditing (line 257) | get isEditing(): boolean { method withUpdates (line 261) | withUpdates(updates: Partial): MessageRecord { method withReaction (line 296) | withReaction(emoji: ReactionEmoji, add = true, me = false): MessageRec... method withoutReactionEmoji (line 346) | withoutReactionEmoji(emoji: ReactionEmoji): MessageRecord { method getReaction (line 352) | getReaction(emoji: ReactionEmoji): MessageReaction | undefined { method equals (line 356) | equals(other: MessageRecord): boolean { method hasRenderChanges (line 499) | static hasRenderChanges(prev: MessageRecord | undefined, next: Message... method toJSON (line 505) | toJSON(): Message { FILE: fluxer_app/src/records/ProfileRecord.tsx type ProfileMutualGuild (line 29) | interface ProfileMutualGuild { type MiniGuildMember (line 34) | type MiniGuildMember = Readonly<{ type Profile (line 39) | type Profile = Readonly<{ class ProfileRecord (line 53) | class ProfileRecord { method constructor (line 66) | constructor(profile: Profile, guildId?: string) { method withUpdates (line 80) | withUpdates(updates: Partial): ProfileRecord { method withGuildId (line 105) | withGuildId(guildId: string | null): ProfileRecord { method guild (line 109) | get guild(): GuildRecord | null { method guildMember (line 114) | get guildMember(): GuildMemberRecord | null { method getGuildMemberProfile (line 119) | getGuildMemberProfile(): Readonly | null { method getEffectiveProfile (line 123) | getEffectiveProfile(): Readonly { method equals (line 143) | equals(other: ProfileRecord): boolean { method toJSON (line 159) | toJSON(): Profile { FILE: fluxer_app/src/records/RelationshipRecord.tsx type Relationship (line 25) | type Relationship = Readonly<{ type RelationshipRecordOptions (line 33) | interface RelationshipRecordOptions { class RelationshipRecord (line 37) | class RelationshipRecord { method constructor (line 45) | constructor(relationship: Relationship, options?: RelationshipRecordOp... method user (line 59) | get user(): UserRecord { method withUpdates (line 63) | withUpdates(relationship: Relationship): RelationshipRecord { FILE: fluxer_app/src/records/SavedMessageEntryRecord.tsx type SavedMessageEntry (line 23) | interface SavedMessageEntry { type SavedMessageStatus (line 31) | type SavedMessageStatus = 'available' | 'missing_permissions'; type SavedMessageMissingEntry (line 33) | interface SavedMessageMissingEntry { class SavedMessageEntryRecord (line 39) | class SavedMessageEntryRecord { method constructor (line 46) | constructor(data: SavedMessageEntry) { method fromResponse (line 54) | static fromResponse(response: SavedMessageEntry): SavedMessageEntryRec... method toMissingEntry (line 58) | toMissingEntry(): SavedMessageMissingEntry { FILE: fluxer_app/src/records/ScheduledMessageRecord.tsx type ScheduledMessageReference (line 20) | interface ScheduledMessageReference { type ScheduledAllowedMentions (line 27) | interface ScheduledAllowedMentions { type ScheduledAttachment (line 34) | interface ScheduledAttachment { type ScheduledMessagePayload (line 42) | interface ScheduledMessagePayload { type ScheduledMessageStatus (line 55) | type ScheduledMessageStatus = 'pending' | 'invalid'; type ScheduledMessageResponse (line 57) | interface ScheduledMessageResponse { class ScheduledMessageRecord (line 70) | class ScheduledMessageRecord { method constructor (line 82) | constructor(response: ScheduledMessageResponse) { method fromResponse (line 95) | static fromResponse(response: ScheduledMessageResponse): ScheduledMess... FILE: fluxer_app/src/records/UserGuildSettingsRecord.tsx type MuteConfig (line 20) | type MuteConfig = Readonly<{ type ChannelOverride (line 25) | type ChannelOverride = Readonly<{ type UserGuildSettings (line 32) | type UserGuildSettings = Readonly<{ type UserGuildSettingsPartial (line 45) | type UserGuildSettingsPartial = Partial, options?: {clearMissingOptionalFie... method displayName (line 420) | get displayName(): string { method tag (line 424) | get tag(): string { method createdAt (line 428) | get createdAt(): Date { method traits (line 432) | get traits(): ReadonlyArray { method isPremium (line 436) | isPremium(): boolean { method maxGuilds (line 440) | get maxGuilds(): number { method maxMessageLength (line 444) | get maxMessageLength(): number { method maxAttachmentFileSize (line 448) | get maxAttachmentFileSize(): number { method maxAttachmentsPerMessage (line 452) | get maxAttachmentsPerMessage(): number { method maxBioLength (line 456) | get maxBioLength(): number { method maxBookmarks (line 460) | get maxBookmarks(): number { method maxFavoriteMemes (line 464) | get maxFavoriteMemes(): number { method maxFavoriteMemeTags (line 468) | get maxFavoriteMemeTags(): number { method maxGroupDmRecipients (line 472) | get maxGroupDmRecipients(): number { method maxPrivateChannels (line 476) | get maxPrivateChannels(): number { method maxRelationships (line 480) | get maxRelationships(): number { method resolveRuntimeLimit (line 484) | private resolveRuntimeLimit(key: LimitKey, fallback: number): number { method isStaff (line 494) | isStaff(): boolean { method isClaimed (line 498) | isClaimed(): boolean { method equals (line 502) | equals(other: UserRecord): boolean { method toJSON (line 553) | toJSON(): User { FILE: fluxer_app/src/records/WebhookRecord.tsx class WebhookRecord (line 27) | class WebhookRecord { method constructor (line 38) | constructor(webhook: Webhook) { method webhookUrl (line 51) | get webhookUrl(): string { method creator (line 55) | get creator(): UserRecord | null { method displayName (line 59) | get displayName(): string { method withUpdates (line 63) | withUpdates(updates: Partial): WebhookRecord { method toJSON (line 75) | toJSON(): Webhook { FILE: fluxer_app/src/router/RouterConstants.tsx constant AUTO_REDIRECT_EXEMPT_PATHS (line 22) | const AUTO_REDIRECT_EXEMPT_PATHS = new Set([ constant AUTO_REDIRECT_EXEMPT_PREFIXES (line 31) | const AUTO_REDIRECT_EXEMPT_PREFIXES = ['/invite/', '/gift/', '/theme/', ... FILE: fluxer_app/src/router/routes/AuthRoutes.tsx type AuthRedirectHandler (line 78) | type AuthRedirectHandler = (ctx: RouteContext) => Redirect | undefined; FILE: fluxer_app/src/service_worker/Register.tsx function registerServiceWorker (line 25) | async function registerServiceWorker(): Promise { function unregisterAllPushSubscriptions (line 171) | async function unregisterAllPushSubscriptions(): Promise { FILE: fluxer_app/src/stores/AccessibilityOverrideStore.tsx type AnimationOverrides (line 29) | type AnimationOverrides = Readonly<{ class AccessibilityOverrideStore (line 35) | class AccessibilityOverrideStore { method constructor (line 43) | constructor() { method initPersistence (line 58) | private async initPersistence(): Promise { method bindToAccessibilityStore (line 66) | private bindToAccessibilityStore(): void { method scheduleReducedMotionOverrides (line 78) | private scheduleReducedMotionOverrides(): void { method applyReducedMotionOverrides (line 94) | private applyReducedMotionOverrides(): void { method updateUserSettings (line 132) | updateUserSettings(userSettings: unknown): void { method markDirty (line 167) | markDirty(setting: keyof AnimationOverrides): void { method isOverriddenByReducedMotion (line 172) | isOverriddenByReducedMotion(setting: 'gif_auto_play' | 'animate_emoji'... method effectiveGifAutoPlay (line 188) | get effectiveGifAutoPlay(): boolean { method effectiveAnimateEmoji (line 195) | get effectiveAnimateEmoji(): boolean { method effectiveAnimateStickers (line 202) | get effectiveAnimateStickers(): number { FILE: fluxer_app/src/stores/AccessibilityStore.tsx type GuildChannelPresenceIndicatorMode (line 25) | enum GuildChannelPresenceIndicatorMode { type MediaDimensionSize (line 31) | enum MediaDimensionSize { type DMMessagePreviewMode (line 36) | enum DMMessagePreviewMode { type ChannelTypingIndicatorMode (line 42) | enum ChannelTypingIndicatorMode { type HdrDisplayMode (line 48) | enum HdrDisplayMode { type AccessibilitySettings (line 53) | interface AccessibilitySettings { class AccessibilityStore (line 112) | class AccessibilityStore { method constructor (line 170) | constructor() { method isHydrated (line 176) | get isHydrated(): boolean { method initPersistence (line 180) | private async initPersistence(): Promise { method initializeMotionDetection (line 242) | private initializeMotionDetection() { method dispose (line 254) | dispose() { method textSelectionEnabled (line 261) | get textSelectionEnabled(): boolean { method useReducedMotion (line 265) | get useReducedMotion(): boolean { method messageGroupSpacingValue (line 269) | get messageGroupSpacingValue(): number { method messageGutterValue (line 273) | get messageGutterValue(): number { method updateSettings (line 277) | updateSettings(data: Readonly>): void { method validateSettings (line 365) | private validateSettings(data: Readonly... method subscribe (line 434) | subscribe(callback: () => void): () => void { method adjustZoom (line 444) | async adjustZoom(delta: number): Promise { method applyZoom (line 449) | async applyZoom(level: number): Promise { method applyStoredZoom (line 458) | async applyStoredZoom(): Promise { FILE: fluxer_app/src/stores/AccountManager.tsx class AccountManager (line 30) | class AccountManager { method constructor (line 31) | constructor() { method shouldManagePushSubscriptions (line 46) | private shouldManagePushSubscriptions(): boolean { method currentUserId (line 50) | get currentUserId(): string | null { method accounts (line 54) | get accounts(): Map { method isSwitching (line 58) | get isSwitching(): boolean { method isLoading (line 62) | get isLoading(): boolean { method currentAccount (line 66) | get currentAccount(): Account | null { method orderedAccounts (line 70) | get orderedAccounts(): Array { method canSwitchAccounts (line 74) | get canSwitchAccounts(): boolean { method getAllAccounts (line 78) | getAllAccounts(): Array { method bootstrap (line 82) | async bootstrap(): Promise { method stashCurrentAccount (line 86) | async stashCurrentAccount(): Promise { method markAccountAsInvalid (line 90) | markAccountAsInvalid(userId: string): void { method generateTokenForAccount (line 94) | async generateTokenForAccount(userId: string): Promise<{token: string;... method switchToAccount (line 111) | async switchToAccount(userId: string): Promise { method switchToNewAccount (line 129) | async switchToNewAccount(userId: string, token: string, userData?: Use... method removeStoredAccount (line 145) | async removeStoredAccount(userId: string): Promise { method updateAccountUserData (line 149) | updateAccountUserData(userId: string, userData: UserData): void { method logout (line 153) | async logout(): Promise { FILE: fluxer_app/src/stores/AudioVolumeStore.tsx constant DEFAULT_VOLUME (line 23) | const DEFAULT_VOLUME = 1; class AudioVolumeStore (line 25) | class AudioVolumeStore { method constructor (line 30) | constructor() { method initPersistence (line 35) | private async initPersistence(): Promise { method setVolume (line 42) | setVolume(newVolume: number): void { method toggleMute (line 53) | toggleMute(): void { method setMuted (line 64) | setMuted(muted: boolean): void { method effectiveVolume (line 71) | get effectiveVolume(): number { FILE: fluxer_app/src/stores/AuthSessionStore.tsx type FetchStatus (line 24) | type FetchStatus = 'idle' | 'pending' | 'success' | 'error'; class AuthSessionStore (line 26) | class AuthSessionStore { method constructor (line 32) | constructor() { method handleConnectionOpen (line 36) | handleConnectionOpen(authSessionIdHash: string): void { method handleAuthSessionChange (line 40) | handleAuthSessionChange(authSessionIdHash: string): void { method fetchPending (line 44) | fetchPending(): void { method fetchSuccess (line 48) | fetchSuccess(authSessions: ReadonlyArray): void { method fetchError (line 53) | fetchError(): void { method logoutPending (line 57) | logoutPending(): void { method logoutSuccess (line 61) | logoutSuccess(sessionIdHashes: ReadonlyArray): void { method logoutError (line 65) | logoutError(): void { FILE: fluxer_app/src/stores/AuthenticationStore.tsx type LoginState (line 30) | type LoginState = ValueOf; type MfaMethods (line 32) | interface MfaMethods { class AuthenticationStore (line 38) | class AuthenticationStore { method constructor (line 43) | constructor() { method isInMfaState (line 55) | get isInMfaState(): boolean { method isAuthenticated (line 59) | get isAuthenticated(): boolean { method authToken (line 63) | get authToken(): string | null { method token (line 67) | get token(): string | null { method currentMfaTicket (line 71) | get currentMfaTicket(): string | null { method availableMfaMethods (line 75) | get availableMfaMethods(): MfaMethods | null { method currentUserId (line 79) | get currentUserId(): string | null { method userId (line 83) | get userId(): string | null { method setUserId (line 88) | setUserId(userId: string | null): void { method handleConnectionOpen (line 93) | handleConnectionOpen({user}: {user: UserPrivate}): void { method handleAuthSessionChange (line 99) | handleAuthSessionChange({token}: {token: string}): void { method handleConnectionClosed (line 103) | handleConnectionClosed({code}: {code: number}): void { method handleSessionStart (line 111) | handleSessionStart({token}: {token: string | null | undefined}): void { method handleMfaTicketSet (line 123) | handleMfaTicketSet({ticket, sms, totp, webauthn}: {ticket: string} & M... method handleMfaTicketClear (line 130) | handleMfaTicketClear(): void { method handleLogout (line 137) | handleLogout(options?: {skipRedirect?: boolean}): void { method fetchGatewayToken (line 147) | async fetchGatewayToken(): Promise { FILE: fluxer_app/src/stores/AutoAckStore.tsx class AutoAckStore (line 30) | class AutoAckStore { method constructor (line 42) | constructor() { method setupReactions (line 55) | private setupReactions(): void { method updateAutoAckState (line 85) | private updateAutoAckState(conditions: { method enableAutomaticAckInternal (line 114) | private enableAutomaticAckInternal(channelId: string, windowId: string... method disableAutomaticAckInternal (line 134) | private disableAutomaticAckInternal(channelId: string, windowId: strin... method isAutomaticAckEnabled (line 148) | isAutomaticAckEnabled(channelId: string): boolean { method disableForChannel (line 156) | disableForChannel(channelId: string): void { FILE: fluxer_app/src/stores/AutocompleteStore.tsx class AutocompleteStore (line 25) | class AutocompleteStore { method constructor (line 28) | constructor() { method highlightChannel (line 32) | highlightChannel(channelId: string): void { method highlightChannelClear (line 41) | highlightChannelClear(): void { FILE: fluxer_app/src/stores/CallAvailabilityStore.tsx class CallAvailabilityStore (line 22) | class CallAvailabilityStore { method constructor (line 25) | constructor() { method setCallAvailable (line 35) | setCallAvailable(channelId: string): void { method setCallUnavailable (line 41) | setCallUnavailable(channelId: string): void { method handleCallAvailability (line 47) | handleCallAvailability(channelId: string, unavailable = false): void { method totalUnavailableCalls (line 55) | get totalUnavailableCalls(): number { method isCallUnavailable (line 59) | isCallUnavailable(channelId: string): boolean { FILE: fluxer_app/src/stores/CallInitiatorStore.tsx class CallInitiatorStore (line 22) | class CallInitiatorStore { method constructor (line 25) | constructor() { method markInitiated (line 29) | markInitiated(channelId: string, recipients: ReadonlyArray): v... method getInitiatedRecipients (line 39) | getInitiatedRecipients(channelId: string): Array { method hasInitiated (line 44) | hasInitiated(channelId: string): boolean { method clearChannel (line 48) | clearChannel(channelId: string): void { FILE: fluxer_app/src/stores/CallMediaPrefsStore.tsx type CallScopedPrefs (line 22) | interface CallScopedPrefs { class CallMediaPrefsStore (line 26) | class CallMediaPrefsStore { method constructor (line 29) | constructor() { method ensure (line 33) | private ensure(callId: string): CallScopedPrefs { method isVideoDisabled (line 37) | isVideoDisabled(callId: string, identity: string): boolean { method setVideoDisabled (line 41) | setVideoDisabled(callId: string, identity: string, disabled: boolean):... method clearForCall (line 49) | clearForCall(callId: string): void { FILE: fluxer_app/src/stores/CallStateStore.tsx type CallMode (line 26) | enum CallMode { type CallLayout (line 32) | enum CallLayout { type GatewayCallData (line 38) | interface GatewayCallData { type Call (line 46) | interface Call { class CallStateStore (line 55) | class CallStateStore { method constructor (line 59) | constructor() { method getCall (line 76) | getCall(channelId: string): Call | undefined { method getActiveCalls (line 80) | getActiveCalls(): Array { method hasActiveCall (line 84) | hasActiveCall(channelId: string): boolean { method isCallActive (line 92) | isCallActive(channelId: string, messageId?: string): boolean { method getCallLayout (line 99) | getCallLayout(channelId: string): CallLayout { method getMessageId (line 108) | getMessageId(channelId: string): string | null { method getParticipants (line 113) | getParticipants(channelId: string): Array { method clearPendingRinging (line 120) | clearPendingRinging(channelId: string, userIds?: Array): void { method isUserPendingRinging (line 154) | isUserPendingRinging(channelId: string, userId?: string | null): boole... method handleCallCreate (line 160) | handleCallCreate(data: {channelId: string; call?: GatewayCallData}): v... method handleCallUpdate (line 186) | handleCallUpdate(data: GatewayCallData): void { method normalizeUserIds (line 219) | private normalizeUserIds(userIds?: Array): Array { method extractParticipantsFromVoiceStates (line 225) | private extractParticipantsFromVoiceStates(voiceStates?: Array): ... method isCallSnapshotEqual (line 248) | private isCallSnapshotEqual(a: Call, b: Call): boolean { method areArraysEqual (line 259) | private areArraysEqual(a: Array, b: Array): boolean { method areSetsEqual (line 267) | private areSetsEqual(a: Set, b: Set): boolean { method syncCallRinging (line 275) | private syncCallRinging(channelId: string, ringSet?: Set): void { method handleCallDelete (line 289) | handleCallDelete(data: {channelId: string}): void { method handleCallLayoutUpdate (line 294) | handleCallLayoutUpdate(channelId: string, layout: CallLayout): void { method handleCallParticipants (line 300) | handleCallParticipants(channelId: string, participants: Array)... FILE: fluxer_app/src/stores/ChannelDisplayNameStore.tsx type ChannelSnapshot (line 27) | interface ChannelSnapshot { class ChannelDisplayNameStore (line 35) | class ChannelDisplayNameStore { method constructor (line 40) | constructor() { method setI18n (line 66) | setI18n(i18n: I18n): void { method getDisplayName (line 70) | getDisplayName(channelId: string): string | undefined { method clear (line 74) | clear(): void { method syncChannel (line 79) | syncChannel(channel: ChannelSnapshot): void { method removeChannel (line 90) | removeChannel(channelId: string): void { method recomputeAll (line 95) | private recomputeAll(): void { method recomputeChannel (line 101) | private recomputeChannel(snapshot: ChannelSnapshot): void { method shouldTrackChannel (line 106) | private shouldTrackChannel(snapshot: ChannelSnapshot): boolean { method computeGroupDMDisplayName (line 114) | private computeGroupDMDisplayName(snapshot: ChannelSnapshot): string { method getBaseName (line 159) | private getBaseName(user: UserRecord, snapshot: ChannelSnapshot): stri... method getUserDisplayName (line 164) | private getUserDisplayName(snapshot: ChannelSnapshot, userId: string):... FILE: fluxer_app/src/stores/ChannelPinsStore.tsx type ChannelPinEntry (line 27) | interface ChannelPinEntry { type ChannelPinState (line 32) | interface ChannelPinState { class ChannelPinsStore (line 40) | class ChannelPinsStore { method constructor (line 44) | constructor() { method isFetched (line 48) | isFetched(channelId: string): boolean { method getPins (line 52) | getPins(channelId: string): ReadonlyArray { method getHasMore (line 56) | getHasMore(channelId: string): boolean { method getIsLoading (line 60) | getIsLoading(channelId: string): boolean { method getOldestPinnedAt (line 64) | getOldestPinnedAt(channelId: string): string | undefined { method getLastPinnedMessageId (line 72) | getLastPinnedMessageId(channelId: string): string | undefined { method handleFetchPending (line 80) | handleFetchPending(channelId: string): void { method handleChannelPinsFetchSuccess (line 88) | handleChannelPinsFetchSuccess( method handleChannelPinsFetchError (line 117) | handleChannelPinsFetchError(channelId: string): void { method handleChannelDelete (line 125) | handleChannelDelete(channel: Channel): void { method handleChannelPinsUpdate (line 132) | handleChannelPinsUpdate(channelId: string, lastPinTimestamp: string | ... method handleMessageUpdate (line 148) | handleMessageUpdate(message: Message): void { method handleMessageDelete (line 187) | handleMessageDelete(channelId: string, messageId: string): void { method updateMessageInChannel (line 201) | private updateMessageInChannel( method handleMessageReactionAdd (line 223) | handleMessageReactionAdd(channelId: string, messageId: string, userId:... method handleMessageReactionRemove (line 229) | handleMessageReactionRemove(channelId: string, messageId: string, user... method handleMessageReactionRemoveAll (line 235) | handleMessageReactionRemoveAll(channelId: string, messageId: string): ... method handleMessageReactionRemoveEmoji (line 239) | handleMessageReactionRemoveEmoji(channelId: string, messageId: string,... method createDefaultState (line 243) | private createDefaultState(): ChannelPinState { FILE: fluxer_app/src/stores/ChannelSearchStore.tsx class ChannelSearchContext (line 29) | class ChannelSearchContext { method constructor (line 43) | constructor() { class ChannelSearchStore (line 48) | class ChannelSearchStore { method constructor (line 51) | constructor() { method getContext (line 57) | getContext(contextId: string): ChannelSearchContext { method setSearchInput (line 66) | setSearchInput(contextId: string, query: string, segments: Array { method allChannels (line 62) | get allChannels(): ReadonlyArray { method dmChannels (line 66) | get dmChannels(): ReadonlyArray { method getChannel (line 74) | getChannel(channelId: string): ChannelRecord | undefined { method getGuildChannels (line 78) | getGuildChannels(guildId: string): ReadonlyArray { method getPrivateChannels (line 82) | getPrivateChannels(): ReadonlyArray { method removeChannelOptimistically (line 89) | removeChannelOptimistically(channelId: string): void { method rollbackChannelDeletion (line 105) | rollbackChannelDeletion(channelId: string): void { method clearOptimisticallyRemovedChannel (line 116) | clearOptimisticallyRemovedChannel(channelId: string): void { method setChannel (line 121) | private setChannel(channel: ChannelRecord | Channel): void { method handleConnectionOpen (line 128) | handleConnectionOpen({channels}: {channels: ReadonlyArray}): ... method handleGuildCreate (line 165) | handleGuildCreate(guild: GuildReadyData): void { method handleGuildDelete (line 176) | handleGuildDelete({guildId}: {guildId: string}): void { method handleChannelCreate (line 185) | handleChannelCreate({channel}: {channel: Channel}): void { method handleChannelUpdateBulk (line 190) | handleChannelUpdateBulk({channels}: {channels: Array}): void { method handleChannelPinsUpdate (line 197) | handleChannelPinsUpdate({channelId, lastPinTimestamp}: {channelId: str... method handleChannelRecipientAdd (line 212) | handleChannelRecipientAdd({channelId, user}: {channelId: string; user:... method handleChannelRecipientRemove (line 228) | handleChannelRecipientRemove({channelId, user}: {channelId: string; us... method handleChannelDelete (line 258) | handleChannelDelete({channel}: {channel: Channel}): void { method handleMessageCreate (line 286) | handleMessageCreate({message}: {message: Message}): void { method handleGuildRoleDelete (line 301) | handleGuildRoleDelete({guildId, roleId}: {guildId: string; roleId: str... FILE: fluxer_app/src/stores/CompactVoiceCallHeightStore.tsx type CompactVoiceCallHeightState (line 23) | interface CompactVoiceCallHeightState { constant COMPACT_VOICE_CALL_HEIGHT_STORAGE_KEY (line 28) | const COMPACT_VOICE_CALL_HEIGHT_STORAGE_KEY = 'compact_voice_call_heights'; constant COMPACT_VOICE_CALL_HEIGHT_MIN (line 29) | const COMPACT_VOICE_CALL_HEIGHT_MIN = 320; constant COMPACT_VOICE_CALL_HEIGHT_MAX (line 30) | const COMPACT_VOICE_CALL_HEIGHT_MAX = 1049; function isRecord (line 32) | function isRecord(value: unknown): value is Record { function clampCompactVoiceCallHeight (line 36) | function clampCompactVoiceCallHeight(value: number): number { function parseCompactVoiceCallHeight (line 40) | function parseCompactVoiceCallHeight(value: unknown): number | null { function parseHeightMap (line 47) | function parseHeightMap(value: unknown): Record { function getInitialState (line 63) | function getInitialState(): CompactVoiceCallHeightState { class CompactVoiceCallHeightStore (line 78) | class CompactVoiceCallHeightStore { method constructor (line 82) | constructor() { method getStartingHeight (line 89) | getStartingHeight(heightKey: string): number | null { method setHeightForKey (line 93) | setHeightForKey(heightKey: string, height: number): number { method persist (line 104) | private persist(): void { FILE: fluxer_app/src/stores/CompactVoiceCallPiPPositionStore.tsx type CompactVoiceCallPiPPositionState (line 23) | interface CompactVoiceCallPiPPositionState { constant COMPACT_VOICE_CALL_PIP_POSITION_KEY (line 28) | const COMPACT_VOICE_CALL_PIP_POSITION_KEY = 'compact_voice_call_pip_posi... constant DEFAULT_COMPACT_PIP_POSITION (line 29) | const DEFAULT_COMPACT_PIP_POSITION: CompactVoiceCallPiPPositionState = { function clampNormalizedValue (line 34) | function clampNormalizedValue(value: unknown, fallback: number): number { function parseCompactVoiceCallPiPPosition (line 41) | function parseCompactVoiceCallPiPPosition(value: unknown): CompactVoiceC... class CompactVoiceCallPiPPositionStore (line 52) | class CompactVoiceCallPiPPositionStore { method constructor (line 56) | constructor() { method getPosition (line 65) | getPosition(): CompactVoiceCallPiPPositionState { method setPosition (line 72) | setPosition(position: CompactVoiceCallPiPPositionState): void { FILE: fluxer_app/src/stores/ContextMenuStore.tsx type FocusableContextMenuTarget (line 26) | interface FocusableContextMenuTarget { type ContextMenuTargetElement (line 34) | type ContextMenuTargetElement = HTMLElement | FocusableContextMenuTarget; function isContextMenuNodeTarget (line 36) | function isContextMenuNodeTarget(target: ContextMenuTargetElement | null... type ContextMenuTarget (line 43) | interface ContextMenuTarget { type ContextMenuConfig (line 49) | interface ContextMenuConfig { type ContextMenu (line 57) | interface ContextMenu { type FocusRestoreState (line 64) | interface FocusRestoreState { class ContextMenuStore (line 69) | class ContextMenuStore { method constructor (line 73) | constructor() { method open (line 77) | open(contextMenu: ContextMenu): void { method close (line 87) | close(): void { method restoreFocus (line 105) | private restoreFocus(target: ContextMenuTargetElement | null, resumeKe... FILE: fluxer_app/src/stores/CountryCodeStore.tsx class CountryCodeStore (line 25) | class CountryCodeStore { method constructor (line 28) | constructor() { method setCountryCode (line 32) | setCountryCode(countryCode: string): void { FILE: fluxer_app/src/stores/DeveloperModeStore.tsx constant UNLOCK_TAP_THRESHOLD (line 25) | const UNLOCK_TAP_THRESHOLD = 7; constant MAX_TAP_INTERVAL_MS (line 26) | const MAX_TAP_INTERVAL_MS = 1200; class DeveloperModeStore (line 28) | class DeveloperModeStore { method constructor (line 34) | constructor() { method initPersistence (line 39) | private async initPersistence(): Promise { method isDeveloper (line 43) | get isDeveloper(): boolean { method resetTaps (line 51) | private resetTaps(): void { method registerBuildTap (line 56) | registerBuildTap(): boolean { FILE: fluxer_app/src/stores/DeveloperOptionsStore.tsx type DeveloperOptionsState (line 24) | type DeveloperOptionsState = Readonly<{ type MutableDeveloperOptionsState (line 96) | type MutableDeveloperOptionsState = { class DeveloperOptionsStore (line 100) | class DeveloperOptionsStore implements DeveloperOptionsState { method constructor (line 173) | constructor() { method initPersistence (line 178) | private async initPersistence(): Promise { method updateOption (line 239) | updateOption { method reset (line 88) | reset(): void { FILE: fluxer_app/src/stores/DismissedUpsellStore.tsx class DismissedUpsellStore (line 23) | class DismissedUpsellStore { method constructor (line 26) | constructor() { method initPersistence (line 31) | private async initPersistence(): Promise { method dismissPickerPremiumUpsell (line 35) | dismissPickerPremiumUpsell(): void { FILE: fluxer_app/src/stores/DraftStore.tsx class DraftStore (line 23) | class DraftStore { method constructor (line 26) | constructor() { method initPersistence (line 31) | private async initPersistence(): Promise { method createDraft (line 36) | createDraft(channelId: string, content: string): void { method deleteDraft (line 48) | deleteDraft(channelId: string): void { method deleteChannelDraft (line 58) | deleteChannelDraft(channelId: string): void { method getDraft (line 62) | getDraft(channelId: string): string { method cleanupEmptyDrafts (line 67) | cleanupEmptyDrafts(): void { method getAllDrafts (line 71) | getAllDrafts(): ReadonlyArray<[string, string]> { method hasDraft (line 75) | hasDraft(channelId: string): boolean { method getDraftCount (line 79) | getDraftCount(): number { FILE: fluxer_app/src/stores/EmojiPickerStore.tsx type EmojiUsageEntry (line 28) | type EmojiUsageEntry = Readonly<{ constant MAX_FRECENT_EMOJIS (line 33) | const MAX_FRECENT_EMOJIS = 42; constant FRECENCY_TIME_DECAY_HOURS (line 34) | const FRECENCY_TIME_DECAY_HOURS = 24 * 7; constant DEFAULT_QUICK_EMOJIS (line 36) | const DEFAULT_QUICK_EMOJIS = [ class EmojiPickerStore (line 43) | class EmojiPickerStore { method constructor (line 48) | constructor() { method initPersistence (line 53) | private async initPersistence(): Promise { method trackEmojiUsage (line 57) | trackEmojiUsage(emojiKey: string): void { method toggleFavorite (line 70) | toggleFavorite(emojiKey: string): void { method toggleCategory (line 84) | toggleCategory(category: string): void { method isFavorite (line 98) | isFavorite(emoji: FlatEmoji): boolean { method isCategoryCollapsed (line 102) | isCategoryCollapsed(categoryId: string): boolean { method getFrecencyScore (line 106) | private getFrecencyScore(entry: EmojiUsageEntry): number { method getFrecentEmojis (line 113) | getFrecentEmojis(allEmojis: ReadonlyArray, limit: number = ... method getFavoriteEmojis (line 130) | getFavoriteEmojis(allEmojis: ReadonlyArray): Array, count: num... method getEmojiKey (line 168) | private getEmojiKey(emoji: FlatEmoji): string { method trackEmoji (line 175) | trackEmoji(emoji: FlatEmoji): void { FILE: fluxer_app/src/stores/EmojiStickerLayoutStore.tsx type EmojiLayout (line 23) | type EmojiLayout = 'list' | 'grid'; type StickerViewMode (line 24) | type StickerViewMode = 'cozy' | 'compact'; class EmojiStickerLayoutStore (line 26) | class EmojiStickerLayoutStore { method constructor (line 30) | constructor() { method initPersistence (line 35) | private async initPersistence(): Promise { method getEmojiLayout (line 39) | getEmojiLayout(): EmojiLayout { method setEmojiLayout (line 43) | setEmojiLayout(layout: EmojiLayout): void { method getStickerViewMode (line 47) | getStickerViewMode(): StickerViewMode { method setStickerViewMode (line 51) | setStickerViewMode(mode: StickerViewMode): void { FILE: fluxer_app/src/stores/EmojiStore.test.tsx function createGuildBase (line 26) | function createGuildBase(guildId: string): Guild { function createGuildReadyData (line 39) | function createGuildReadyData(guildId: string, emojis: ReadonlyArray { method getCustomEmoji (line 81) | getCustomEmoji(): ReadonlyMap { method getByName (line 86) | getByName(disambiguatedEmojiName: string): FlatEmoji | undefined { method getById (line 91) | getById(emojiId: string): FlatEmoji | undefined { method nameMatchesChain (line 96) | nameMatchesChain(testName: (name: string) => boolean): ReadonlyArray):... method getGuildEmojis (line 230) | getGuildEmojis(guildId: string): ReadonlyArray { class EmojiStore (line 237) | class EmojiStore { method constructor (line 240) | constructor() { method initPersistence (line 245) | private async initPersistence(): Promise { method categories (line 250) | get categories(): ReadonlyArray { method getGuildEmoji (line 254) | getGuildEmoji(guildId: string): ReadonlyArray { method getEmojiById (line 258) | getEmojiById(emojiId: string): FlatEmoji | undefined { method getDisambiguatedEmojiContext (line 262) | getDisambiguatedEmojiContext(guildId?: string | null): EmojiDisambigua... method getEmojiMarkdown (line 266) | getEmojiMarkdown(emoji: FlatEmoji): string { method filterExternal (line 279) | filterExternal( method getAllEmojis (line 291) | getAllEmojis(channel: ChannelRecord | null): ReadonlyArray { method search (line 295) | search(channel: ChannelRecord | null, query: string, count = 0): Reado... method setSkinTone (line 342) | setSkinTone(skinTone: string): void { method handleConnectionOpen (line 347) | handleConnectionOpen({guilds}: {guilds: ReadonlyArray}... method handleGuildUpdate (line 356) | handleGuildUpdate({guild}: {guild: Guild | GuildReadyData}): void { method handleGuildEmojiUpdated (line 367) | handleGuildEmojiUpdated({guildId, emojis}: {guildId: string; emojis: R... method handleGuildDelete (line 374) | handleGuildDelete({guildId}: {guildId: string}): void { FILE: fluxer_app/src/stores/ExpressionPickerStore.tsx class ExpressionPickerStore (line 23) | class ExpressionPickerStore { method constructor (line 28) | constructor() { method open (line 32) | open(channelId: string, tab?: ExpressionPickerTabType): void { method close (line 42) | close(): void { method toggle (line 50) | toggle(channelId: string, tab: ExpressionPickerTabType): void { method setTab (line 62) | setTab(tab: ExpressionPickerTabType): void { FILE: fluxer_app/src/stores/FavoriteMemeStore.tsx class FavoriteMemeStore (line 23) | class FavoriteMemeStore { method constructor (line 27) | constructor() { method loadFavoriteMemes (line 31) | loadFavoriteMemes(favoriteMemes: ReadonlyArray): void { method reset (line 36) | reset(): void { method createMeme (line 41) | createMeme(meme: FavoriteMeme): void { method updateMeme (line 45) | updateMeme(meme: FavoriteMeme): void { method deleteMeme (line 56) | deleteMeme(memeId: string): void { method getAllMemes (line 60) | getAllMemes(): ReadonlyArray { method getMeme (line 64) | getMeme(memeId: string): FavoriteMemeRecord | undefined { FILE: fluxer_app/src/stores/FavoritesStore.tsx type FavoriteChannel (line 25) | interface FavoriteChannel { type FavoriteCategory (line 33) | interface FavoriteCategory { class FavoritesStore (line 39) | class FavoritesStore { method constructor (line 46) | constructor() { method initPersistence (line 51) | private async initPersistence(): Promise { method hasAnyFavorites (line 61) | get hasAnyFavorites(): boolean { method sortedCategories (line 65) | get sortedCategories(): ReadonlyArray { method sortedChannels (line 69) | get sortedChannels(): ReadonlyArray { method getChannel (line 73) | getChannel(channelId: string): FavoriteChannel | undefined { method getCategory (line 77) | getCategory(categoryId: string): FavoriteCategory | undefined { method getChannelsInCategory (line 81) | getChannelsInCategory(categoryId: string | null): ReadonlyArray, guildId: string, parentId: stri... method removeChannel (line 142) | removeChannel(channelId: string): void { method setChannelNickname (line 150) | setChannelNickname(channelId: string, nickname: string | null): void { method moveChannel (line 157) | moveChannel(channelId: string, newParentId: string | null, newIndexInC... method createCategory (line 189) | createCategory(name: string): string { method renameCategory (line 196) | renameCategory(categoryId: string, name: string): void { method removeCategory (line 203) | removeCategory(categoryId: string): void { method toggleCategoryCollapsed (line 219) | toggleCategoryCollapsed(categoryId: string): void { method setHideMutedChannels (line 227) | setHideMutedChannels(value: boolean): void { method toggleMuted (line 231) | toggleMuted(): void { method reorderChannels (line 235) | private reorderChannels(): void { method reorderCategories (line 242) | private reorderCategories(): void { FILE: fluxer_app/src/stores/FriendsTabStore.tsx class FriendsTabStore (line 23) | class FriendsTabStore { method constructor (line 26) | constructor() { method setTab (line 30) | setTab(tab: FriendsTab): void { method consumeTab (line 34) | consumeTab(): FriendsTab | null { FILE: fluxer_app/src/stores/GeoIPStore.tsx type GeoIPData (line 22) | interface GeoIPData { class GeoIPStore (line 31) | class GeoIPStore { method constructor (line 41) | constructor() { method fetchGeoData (line 45) | async fetchGeoData(): Promise { method isBlocked (line 80) | isBlocked(): boolean { FILE: fluxer_app/src/stores/GiftStore.tsx type GiftState (line 24) | interface GiftState { class GiftStore (line 31) | class GiftStore { method constructor (line 35) | constructor() { method markAsRedeemed (line 46) | markAsRedeemed(code: string): void { method markAsInvalid (line 60) | markAsInvalid(code: string): void { method fetchGift (line 69) | async fetchGift(code: string): Promise { FILE: fluxer_app/src/stores/GuildAvailabilityStore.tsx class GuildAvailabilityStore (line 23) | class GuildAvailabilityStore { method constructor (line 26) | constructor() { method setGuildAvailable (line 36) | setGuildAvailable(guildId: string): void { method setGuildUnavailable (line 42) | setGuildUnavailable(guildId: string): void { method handleGuildAvailability (line 48) | handleGuildAvailability(guildId: string, unavailable = false): void { method loadUnavailableGuilds (line 56) | loadUnavailableGuilds(guilds: ReadonlyArray): void { method totalUnavailableGuilds (line 62) | get totalUnavailableGuilds(): number { FILE: fluxer_app/src/stores/GuildExpressionTabCache.tsx type EmojiUpdateListener (line 28) | type EmojiUpdateListener = (emojis: ReadonlyArray) =... type StickerUpdateListener (line 29) | type StickerUpdateListener = (stickers: ReadonlyArray(items: ReadonlyArray): ReadonlyArray { function notifyListeners (line 41) | function notifyListeners( function setCache (line 53) | function setCache( function seedGuildEmojiCache (line 67) | function seedGuildEmojiCache(guildId: string, emojis: ReadonlyArray { method isExpanded (line 35) | isExpanded(folderId: number): boolean { method toggleExpanded (line 39) | toggleExpanded(folderId: number): void { FILE: fluxer_app/src/stores/GuildListStore.tsx type OrganizedItem (line 28) | type OrganizedItem = class GuildListStore (line 32) | class GuildListStore { method constructor (line 35) | constructor() { method handleConnectionOpen (line 40) | handleConnectionOpen(guilds: ReadonlyArray): void { method handleGuild (line 54) | handleGuild(guild: Guild | GuildReadyData): void { method handleGuildDelete (line 76) | handleGuildDelete(guildId: string, unavailable?: boolean): void { method sortGuilds (line 96) | sortGuilds(): void { method getOrganizedGuildList (line 100) | getOrganizedGuildList(): Array { method sortGuildArray (line 126) | private sortGuildArray(guilds: ReadonlyArray): ReadonlyAr... FILE: fluxer_app/src/stores/GuildMemberLayoutStore.tsx type GuildMemberViewMode (line 23) | type GuildMemberViewMode = 'table' | 'grid'; class GuildMemberLayoutStore (line 25) | class GuildMemberLayoutStore { method constructor (line 28) | constructor() { method initPersistence (line 33) | private async initPersistence(): Promise { method getViewMode (line 37) | getViewMode(): GuildMemberViewMode { method setViewMode (line 41) | setViewMode(mode: GuildMemberViewMode): void { FILE: fluxer_app/src/stores/GuildMemberStore.tsx type Members (line 26) | type Members = Record; type PendingMemberRequest (line 28) | interface PendingMemberRequest { constant MEMBER_REQUEST_TIMEOUT (line 36) | const MEMBER_REQUEST_TIMEOUT = 30000; constant MEMBER_NONCE_LENGTH (line 37) | const MEMBER_NONCE_LENGTH = 32; constant MEMBER_NONCE_CHARS (line 38) | const MEMBER_NONCE_CHARS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR... function generateMemberNonce (line 40) | function generateMemberNonce(): string { class GuildMemberStore (line 49) | class GuildMemberStore { method constructor (line 54) | constructor() { method getMember (line 58) | getMember(guildId: string, userId?: string | null): GuildMemberRecord ... method isUserTimedOut (line 65) | isUserTimedOut(guildId: string | null, userId?: string | null): boolean { method getMembers (line 74) | getMembers(guildId: string): Array { method getMemberCount (line 78) | getMemberCount(guildId: string): number { method handleConnectionOpen (line 82) | handleConnectionOpen(guilds: Array): void { method handleGuildCreate (line 89) | handleGuildCreate(guild: GuildReadyData): void { method handleGuildDelete (line 104) | handleGuildDelete(guildId: string): void { method handleMemberAdd (line 108) | handleMemberAdd(guildId: string, member: GuildMemberData): void { method handleMemberRemove (line 118) | handleMemberRemove(guildId: string, userId: string): void { method handleGuildRoleDelete (line 132) | handleGuildRoleDelete(guildId: string, roleId: string): void { method handleMembersChunk (line 161) | handleMembersChunk(params: { method fetchMembers (line 201) | async fetchMembers( method ensureMembersLoaded (line 258) | async ensureMembersLoaded(guildId: string, userIds: Array): Pr... method isGuildFullyLoaded (line 267) | isGuildFullyLoaded(guildId: string): boolean { FILE: fluxer_app/src/stores/GuildNSFWAgreeStore.tsx type NSFWGateReason (line 29) | enum NSFWGateReason { type NSFWGateContext (line 36) | interface NSFWGateContext { class GuildNSFWAgreeStore (line 41) | class GuildNSFWAgreeStore { method constructor (line 45) | constructor() { method initPersistence (line 50) | private async initPersistence(): Promise { method agreeToChannel (line 54) | agreeToChannel(channelId: string): void { method agreeToGuild (line 60) | agreeToGuild(guildId: string): void { method reset (line 66) | reset(): void { method hasAgreedToChannel (line 71) | hasAgreedToChannel(channelId: string): boolean { method hasAgreedToGuild (line 75) | hasAgreedToGuild(guildId: string): boolean { method resolveContext (line 79) | private resolveContext(context: NSFWGateContext): { method isGatedContent (line 98) | isGatedContent(context: NSFWGateContext): boolean { method getGateReason (line 103) | getGateReason(context: NSFWGateContext): NSFWGateReason { method shouldShowGate (line 156) | shouldShowGate(context: NSFWGateContext): boolean { FILE: fluxer_app/src/stores/GuildReadStateStore.tsx constant PRIVATE_CHANNEL_SENTINEL (line 30) | const PRIVATE_CHANNEL_SENTINEL = ME; constant CAN_READ_PERMISSIONS (line 31) | const CAN_READ_PERMISSIONS = Permissions.VIEW_CHANNEL; class GuildReadState (line 33) | class GuildReadState { method incrementSentinel (line 40) | incrementSentinel(): void { method reset (line 44) | reset(): void { method clone (line 51) | clone(): GuildReadState { function canContributeToGuildUnread (line 62) | function canContributeToGuildUnread( class GuildReadStateStore (line 98) | class GuildReadStateStore { method constructor (line 104) | constructor() { method installReadStateReaction (line 116) | private installReadStateReaction(): void { method version (line 159) | get version(): number { method getOrCreate (line 163) | private getOrCreate(guildId: string | null): GuildReadState { method notifyChange (line 173) | private notifyChange(): void { method incrementSentinel (line 177) | private incrementSentinel(guildId: string | null): void { method recomputeChannels (line 183) | private recomputeChannels(guildId: string | null, channelIds: Array void): () => void { FILE: fluxer_app/src/stores/GuildSettingsModalStore.tsx type NavigationHandler (line 23) | interface NavigationHandler { class GuildSettingsModalStore (line 28) | class GuildSettingsModalStore { method constructor (line 31) | constructor() { method register (line 35) | register(handler: NavigationHandler): void { method unregister (line 39) | unregister(guildId: string): void { method isOpen (line 45) | isOpen(guildId?: string): boolean { method navigateToTab (line 51) | navigateToTab(guildId: string, tab: GuildSettingsTabType): boolean { FILE: fluxer_app/src/stores/GuildStore.tsx class GuildStore (line 29) | class GuildStore { method constructor (line 32) | constructor() { method getGuild (line 36) | getGuild(guildId: string): GuildRecord | undefined { method getGuildIds (line 40) | getGuildIds(): Array { method getGuildRoles (line 44) | getGuildRoles(guildId: string, includeEveryone = false): Array { method getOwnedGuilds (line 56) | getOwnedGuilds(userId: string): Array { method handleConnectionOpen (line 60) | handleConnectionOpen({guilds}: {guilds: Array}): void { method handleGuildCreate (line 74) | handleGuildCreate(guild: GuildReadyData): void { method handleGuildUpdate (line 82) | handleGuildUpdate(guild: Guild): void { method handleGuildDelete (line 94) | handleGuildDelete({guildId, unavailable}: {guildId: string; unavailabl... method updateGuildWithRoles (line 108) | private updateGuildWithRoles( method handleGuildRoleCreate (line 124) | handleGuildRoleCreate({guildId, role}: {guildId: string; role: GuildRo... method handleGuildRoleDelete (line 131) | handleGuildRoleDelete({guildId, roleId}: {guildId: string; roleId: str... method handleGuildRoleUpdate (line 137) | handleGuildRoleUpdate({guildId, role}: {guildId: string; role: GuildRo... method handleGuildRoleUpdateBulk (line 144) | handleGuildRoleUpdateBulk({guildId, roles}: {guildId: string; roles: A... FILE: fluxer_app/src/stores/GuildVerificationStore.tsx constant FIVE_MINUTES_MS (line 28) | const FIVE_MINUTES_MS = 5 * 60 * 1000; constant TEN_MINUTES_MS (line 29) | const TEN_MINUTES_MS = 10 * 60 * 1000; type VerificationFailureReason (line 41) | type VerificationFailureReason = ValueOf; type VerificationStatus (line 43) | interface VerificationStatus { class GuildVerificationStore (line 49) | class GuildVerificationStore { method constructor (line 53) | constructor() { method handleConnectionOpen (line 57) | handleConnectionOpen(): void { method handleGuildCreate (line 61) | handleGuildCreate(guild: {id: string}): void { method handleGuildUpdate (line 65) | handleGuildUpdate(guild: {id: string}): void { method handleGuildDelete (line 69) | handleGuildDelete(guildId: string): void { method handleGuildMemberUpdate (line 81) | handleGuildMemberUpdate(guildId: string): void { method handleUserUpdate (line 85) | handleUserUpdate(): void { method recomputeAll (line 89) | private recomputeAll(): void { method recomputeGuild (line 114) | private recomputeGuild(guildId: string): void { method computeVerificationStatus (line 143) | private computeVerificationStatus(guild: GuildRecord): VerificationSta... method canAccessGuild (line 218) | canAccessGuild(guildId: string): boolean { method getVerificationStatus (line 223) | getVerificationStatus(guildId: string): VerificationStatus | null { method getFailureReason (line 227) | getFailureReason(guildId: string): VerificationFailureReason | null { method getTimeRemaining (line 231) | getTimeRemaining(guildId: string): number | null { FILE: fluxer_app/src/stores/IdleStore.tsx constant IDLE_DURATION_MS (line 24) | const IDLE_DURATION_MS = 1000 * (IS_DEV ? 10 : 60 * 10); constant IDLE_CHECK_INTERVAL_MS (line 26) | const IDLE_CHECK_INTERVAL_MS = Math.floor(IDLE_DURATION_MS * 0.25); class IdleStore (line 28) | class IdleStore { method constructor (line 35) | constructor() { method startIdleCheck (line 40) | private startIdleCheck(): void { method destroy (line 48) | destroy(): void { method recordActivity (line 55) | recordActivity(): void { method markBackground (line 63) | markBackground(): void { method isIdle (line 68) | isIdle(): boolean { method getIdleSince (line 72) | getIdleSince(): number { method updateIdleState (line 76) | private updateIdleState(): void { FILE: fluxer_app/src/stores/InboxStore.tsx type InboxTab (line 26) | type InboxTab = 'bookmarks' | 'mentions' | 'scheduled' | 'unreadChannels'; class InboxStore (line 28) | class InboxStore { method constructor (line 31) | constructor() { method initPersistence (line 36) | private async initPersistence(): Promise { method setTab (line 40) | setTab(tab: InboxTab): void { method getSelectedTab (line 47) | getSelectedTab(): InboxTab { FILE: fluxer_app/src/stores/InitializationStore.tsx type InitializationState (line 30) | type InitializationState = ValueOf; class InitializationStore (line 32) | class InitializationStore { method constructor (line 37) | constructor() { method isLoading (line 41) | get isLoading(): boolean { method isConnecting (line 45) | get isConnecting(): boolean { method isReady (line 49) | get isReady(): boolean { method hasError (line 53) | get hasError(): boolean { method canNavigateToProtectedRoutes (line 57) | get canNavigateToProtectedRoutes(): boolean { method setLoading (line 62) | setLoading(): void { method setConnecting (line 69) | setConnecting(): void { method setReady (line 76) | setReady(payload: unknown): void { method setError (line 83) | setError(error: string): void { method reset (line 90) | reset(): void { FILE: fluxer_app/src/stores/InputMonitoringPromptsStore.tsx class InputMonitoringPromptsStore (line 23) | class InputMonitoringPromptsStore { method constructor (line 28) | constructor() { method initPersistence (line 33) | private async initPersistence(): Promise { method shouldShowInputMonitoringCTA (line 37) | shouldShowInputMonitoringCTA(): boolean { method markShownThisSession (line 41) | markShownThisSession(): void { method dismissInputMonitoringCTA (line 45) | dismissInputMonitoringCTA(): void { method resetInputMonitoringCTA (line 50) | resetInputMonitoringCTA(): void { FILE: fluxer_app/src/stores/InstanceConfigStore.tsx constant CONFIG_REFRESH_INTERVAL_MS (line 37) | const CONFIG_REFRESH_INTERVAL_MS = 30 * MS_PER_MINUTE; constant CONFIG_STALE_THRESHOLD_MS (line 38) | const CONFIG_STALE_THRESHOLD_MS = MS_PER_HOUR; type FederationConfig (line 40) | interface FederationConfig { type InstancePublicKey (line 45) | interface InstancePublicKey { type OAuth2Config (line 51) | interface OAuth2Config { type InstanceConfig (line 58) | interface InstanceConfig { type InstanceDiscoveryResponse (line 75) | interface InstanceDiscoveryResponse { class InstanceConfigStore (line 90) | class InstanceConfigStore { method constructor (line 97) | constructor() { method startPeriodicRefresh (line 102) | private startPeriodicRefresh(): void { method stopPeriodicRefresh (line 114) | stopPeriodicRefresh(): void { method fetchInstanceConfig (line 121) | async fetchInstanceConfig(domain: string, forceRefresh = false): Promi... method doFetchInstanceConfig (line 148) | private async doFetchInstanceConfig(domain: string): Promise { method onGatewayReady (line 274) | async onGatewayReady(domain: string): Promise { method clearInstanceConfig (line 283) | clearInstanceConfig(domain: string): void { method clearAllConfigs (line 289) | clearAllConfigs(): void { method isConfigStale (line 294) | private isConfigStale(config: InstanceConfig): boolean { method processLimitsFromApi (line 298) | private processLimitsFromApi(limits: LimitConfigSnapshot | LimitConfig... method createEmptyLimitConfig (line 310) | private createEmptyLimitConfig(): LimitConfigSnapshot { FILE: fluxer_app/src/stores/InviteStore.tsx type FetchStatus (line 25) | type FetchStatus = 'idle' | 'pending' | 'success' | 'error'; type InviteState (line 27) | interface InviteState { function upsertInviteByCode (line 33) | function upsertInviteByCode(list: Array, invite: Invite): Array<... function mergeInvitesByCode (line 41) | function mergeInvitesByCode(existing: Array, incoming: Array { method getChannelInvites (line 68) | getChannelInvites(channelId: string): Array | null { method getChannelInvitesFetchStatus (line 72) | getChannelInvitesFetchStatus(channelId: string): FetchStatus { method getGuildInvites (line 76) | getGuildInvites(guildId: string): Array | null { method getGuildInvitesFetchStatus (line 80) | getGuildInvitesFetchStatus(guildId: string): FetchStatus { FILE: fluxer_app/src/stores/KeybindStore.tsx type KeybindCommand (line 25) | type KeybindCommand = type KeyCombo (line 84) | interface KeyCombo { type KeybindConfig (line 96) | interface KeybindConfig { constant TRANSMIT_MODES (line 108) | const TRANSMIT_MODES = ['voice_activity', 'push_to_talk'] as const; type TransmitMode (line 109) | type TransmitMode = (typeof TRANSMIT_MODES)[number]; constant DEFAULT_RELEASE_DELAY_MS (line 111) | const DEFAULT_RELEASE_DELAY_MS = 20; constant MIN_RELEASE_DELAY_MS (line 112) | const MIN_RELEASE_DELAY_MS = 20; constant MAX_RELEASE_DELAY_MS (line 113) | const MAX_RELEASE_DELAY_MS = 2000; constant LATCH_TAP_THRESHOLD_MS (line 114) | const LATCH_TAP_THRESHOLD_MS = 200; type KeybindState (line 541) | type KeybindState = Record; class KeybindStore (line 543) | class KeybindStore { method constructor (line 556) | constructor() { method setI18n (line 567) | setI18n(i18n: I18n): void { method getAll (line 575) | getAll(): Array { method getByAction (line 586) | getByAction(action: KeybindCommand): KeybindConfig & {combo: KeyCombo} { method setKeybind (line 600) | setKeybind(action: KeybindCommand, combo: KeyCombo): void { method toggleGlobal (line 606) | toggleGlobal(action: KeybindCommand, enabled: boolean): void { method resetToDefaults (line 613) | resetToDefaults(): void { method setTransmitMode (line 626) | setTransmitMode(mode: TransmitMode): void { method isPushToTalkEnabled (line 632) | isPushToTalkEnabled(): boolean { method setPushToTalkHeld (line 636) | setPushToTalkHeld(held: boolean): void { method isPushToTalkMuted (line 642) | isPushToTalkMuted(userMuted: boolean): boolean { method hasPushToTalkKeybind (line 649) | hasPushToTalkKeybind(): boolean { method isPushToTalkEffective (line 654) | isPushToTalkEffective(): boolean { method setPushToTalkReleaseDelay (line 658) | setPushToTalkReleaseDelay(delayMs: number): void { method setPushToTalkLatching (line 666) | setPushToTalkLatching(enabled: boolean): void { method handlePushToTalkPress (line 673) | handlePushToTalkPress(nowMs: number = Date.now()): boolean { method handlePushToTalkRelease (line 690) | handlePushToTalkRelease(nowMs: number = Date.now()): boolean { method isPushToTalkLatched (line 706) | isPushToTalkLatched(): boolean { method resetPushToTalkState (line 710) | resetPushToTalkState(): void { function getDefaultKeybind (line 721) | function getDefaultKeybind(action: KeybindCommand, i18n: I18n): KeyCombo... FILE: fluxer_app/src/stores/KeyboardModeStore.tsx class KeyboardModeStore (line 28) | class KeyboardModeStore { method constructor (line 32) | constructor() { method enterKeyboardMode (line 37) | enterKeyboardMode(showIntro = true): void { method exitKeyboardMode (line 53) | exitKeyboardMode(): void { method dismissIntro (line 64) | dismissIntro(): void { FILE: fluxer_app/src/stores/LayerManager.tsx type LayerType (line 24) | type LayerType = 'modal' | 'popout' | 'contextmenu'; type Layer (line 26) | interface Layer { class LayerManager (line 33) | class LayerManager { method init (line 37) | init() { method destroy (line 44) | destroy() { method addLayer (line 76) | addLayer(type: LayerType, key: string | PopoutKey, onClose?: () => voi... method removeLayer (line 87) | removeLayer(type: LayerType, key: string | PopoutKey) { method getTopLayer (line 91) | private getTopLayer(): Layer | undefined { method hasLayers (line 95) | hasLayers(): boolean { method isTopLayer (line 99) | isTopLayer(type: LayerType, key: string | PopoutKey): boolean { method hasType (line 104) | hasType(type: LayerType): boolean { method isTopType (line 108) | isTopType(type: LayerType): boolean { method closeAll (line 113) | closeAll(): void { FILE: fluxer_app/src/stores/LimitOverrideStore.tsx class LimitOverrideStore (line 24) | class LimitOverrideStore { method constructor (line 27) | constructor() { method initPersistence (line 32) | private async initPersistence(): Promise { method getOverride (line 36) | getOverride(key: LimitKey): number | null { method getAllOverrides (line 43) | getAllOverrides(): Partial> { method hasOverrides (line 47) | hasOverrides(): boolean { method setOverride (line 51) | setOverride(key: LimitKey, value: number | null): void { method clearOverride (line 61) | clearOverride(key: LimitKey): void { method clearAll (line 65) | clearAll(): void { FILE: fluxer_app/src/stores/LocalPresenceStore.tsx type Presence (line 29) | type Presence = Readonly<{ class LocalPresenceStore (line 37) | class LocalPresenceStore { method constructor (line 48) | constructor() { method updatePresence (line 57) | updatePresence(): void { method getStatus (line 73) | getStatus(): StatusType { method getPresence (line 77) | getPresence(): Presence { method presenceFingerprint (line 87) | get presenceFingerprint(): string { method computeAfk (line 91) | private computeAfk(idleSince: number, isMobile: boolean): boolean { FILE: fluxer_app/src/stores/LocalVoiceStateStore.tsx class LocalVoiceStateStore (line 30) | class LocalVoiceStateStore { method constructor (line 53) | constructor() { method initPersistence (line 91) | private async initPersistence(): Promise { method dispose (line 102) | dispose(): void { method initializePermissionSync (line 107) | private async initializePermissionSync(): Promise { method initializeDevicePermissionSync (line 166) | private initializeDevicePermissionSync(): void { method handleDevicePermissionStatus (line 173) | private handleDevicePermissionStatus(status: VoiceDeviceState['permiss... method enforcePermissionMuteIfNeeded (line 186) | private enforcePermissionMuteIfNeeded(): void { method applyPermissionMute (line 198) | private applyPermissionMute(): void { method applyPermissionGrant (line 214) | private async applyPermissionGrant(): Promise { method notifyServerOfPermissionMute (line 225) | private notifyServerOfPermissionMute(): void { method getSelfMute (line 242) | getSelfMute(): boolean { method ensurePermissionMute (line 246) | ensurePermissionMute(): void { method getSelfDeaf (line 250) | getSelfDeaf(): boolean { method getSelfVideo (line 254) | getSelfVideo(): boolean { method getSelfStream (line 258) | getSelfStream(): boolean { method getSelfStreamAudio (line 262) | getSelfStreamAudio(): boolean { method getSelfStreamAudioMute (line 266) | getSelfStreamAudioMute(): boolean { method getViewerStreamKeys (line 270) | getViewerStreamKeys(): Array { method updateViewerStreamKeys (line 274) | updateViewerStreamKeys(keys: Array): void { method addViewerStreamKey (line 280) | addViewerStreamKey(key: string): void { method removeViewerStreamKey (line 287) | removeViewerStreamKey(key: string): void { method hasViewerStreamKey (line 293) | hasViewerStreamKey(key: string): boolean { method getNoiseSuppressionEnabled (line 297) | getNoiseSuppressionEnabled(): boolean { method getHasUserSetMute (line 301) | getHasUserSetMute(): boolean { method getHasUserSetDeaf (line 305) | getHasUserSetDeaf(): boolean { method toggleSelfMute (line 309) | toggleSelfMute(): void { method toggleSelfDeaf (line 350) | toggleSelfDeaf(): void { method toggleSelfVideo (line 375) | toggleSelfVideo(): void { method toggleSelfStream (line 382) | toggleSelfStream(): void { method toggleSelfStreamAudio (line 389) | toggleSelfStreamAudio(): void { method toggleSelfStreamAudioMute (line 396) | toggleSelfStreamAudioMute(): void { method toggleNoiseSuppression (line 403) | toggleNoiseSuppression(): void { method updateSelfMute (line 410) | updateSelfMute(muted: boolean): void { method updateSelfDeaf (line 426) | updateSelfDeaf(deafened: boolean): void { method updateSelfVideo (line 436) | updateSelfVideo(video: boolean): void { method updateSelfStream (line 443) | updateSelfStream(streaming: boolean): void { method updateSelfStreamAudio (line 450) | updateSelfStreamAudio(enabled: boolean): void { method updateSelfStreamAudioMute (line 457) | updateSelfStreamAudioMute(muted: boolean): void { method resetUserPreferences (line 464) | resetUserPreferences(): void { FILE: fluxer_app/src/stores/LocationStore.tsx type MobileLayoutState (line 23) | interface MobileLayoutState { class LocationStore (line 28) | class LocationStore { method constructor (line 33) | constructor() { method initPersistence (line 38) | private async initPersistence(): Promise { method getLastLocation (line 43) | getLastLocation(): string | null { method getLastMobileLayoutState (line 47) | getLastMobileLayoutState(): MobileLayoutState | null { method saveLocation (line 51) | saveLocation(location: string): void { method saveMobileLayoutState (line 57) | saveMobileLayoutState(mobileLayoutState: MobileLayoutState): void { method saveLocationAndMobileState (line 61) | saveLocationAndMobileState(location: string, mobileLayoutState: Mobile... method clearLastLocation (line 66) | clearLastLocation(): void { FILE: fluxer_app/src/stores/MediaPermissionStore.tsx class MediaPermissionStore (line 27) | class MediaPermissionStore { method constructor (line 36) | constructor() { method initializePermissionState (line 41) | private async initializePermissionState(): Promise { method tryInitializeNativePermissions (line 101) | private async tryInitializeNativePermissions(): Promise { method markMicrophoneExplicitlyDenied (line 130) | markMicrophoneExplicitlyDenied(): void { method markCameraExplicitlyDenied (line 136) | markCameraExplicitlyDenied(): void { method markScreenRecordingExplicitlyDenied (line 142) | markScreenRecordingExplicitlyDenied(): void { method clearMicrophoneDenial (line 148) | clearMicrophoneDenial(): void { method clearCameraDenial (line 153) | clearCameraDenial(): void { method clearScreenRecordingDenial (line 158) | clearScreenRecordingDenial(): void { method updateMicrophonePermissionGranted (line 163) | updateMicrophonePermissionGranted(): void { method updateCameraPermissionGranted (line 170) | updateCameraPermissionGranted(): void { method updateScreenRecordingPermissionGranted (line 177) | updateScreenRecordingPermissionGranted(): void { method reset (line 183) | reset(): void { method isInitialized (line 194) | isInitialized(): boolean { method isMicrophoneExplicitlyDenied (line 198) | isMicrophoneExplicitlyDenied(): boolean { method isCameraExplicitlyDenied (line 202) | isCameraExplicitlyDenied(): boolean { method isScreenRecordingExplicitlyDenied (line 206) | isScreenRecordingExplicitlyDenied(): boolean { method isMicrophoneGranted (line 210) | isMicrophoneGranted(): boolean { method isCameraGranted (line 214) | isCameraGranted(): boolean { method isScreenRecordingGranted (line 218) | isScreenRecordingGranted(): boolean { method getMicrophonePermissionState (line 222) | getMicrophonePermissionState(): PermissionState | null { method getCameraPermissionState (line 226) | getCameraPermissionState(): PermissionState | null { method getScreenRecordingPermissionState (line 230) | getScreenRecordingPermissionState(): PermissionState | null { method addChangeListener (line 234) | addChangeListener(callback: () => void): () => void { FILE: fluxer_app/src/stores/MediaViewerStore.tsx type MediaViewerItem (line 23) | type MediaViewerItem = Readonly<{ class MediaViewerStore (line 42) | class MediaViewerStore { method constructor (line 50) | constructor() { method open (line 54) | open( method close (line 69) | close(): void { method navigate (line 78) | navigate(index: number): void { method getCurrentItem (line 86) | getCurrentItem(): MediaViewerItem | undefined { method canNavigatePrevious (line 93) | canNavigatePrevious(): boolean { method canNavigateNext (line 97) | canNavigateNext(): boolean { FILE: fluxer_app/src/stores/MemberListStore.tsx class MemberListStore (line 28) | class MemberListStore { method constructor (line 31) | constructor() { method initPersistence (line 36) | private async initPersistence(): Promise { method toggleMembers (line 40) | toggleMembers(): void { method subscribe (line 45) | subscribe(callback: () => void): () => void { FILE: fluxer_app/src/stores/MemberPresenceSubscriptionStore.tsx constant MEMBER_SUBSCRIPTION_MAX_SIZE (line 23) | const MEMBER_SUBSCRIPTION_MAX_SIZE = 100; constant MEMBER_SUBSCRIPTION_TTL_MS (line 24) | const MEMBER_SUBSCRIPTION_TTL_MS = 5 * 60 * 1000; constant MEMBER_SUBSCRIPTION_SYNC_DEBOUNCE_MS (line 25) | const MEMBER_SUBSCRIPTION_SYNC_DEBOUNCE_MS = 500; constant MEMBER_SUBSCRIPTION_PRUNE_INTERVAL_MS (line 26) | const MEMBER_SUBSCRIPTION_PRUNE_INTERVAL_MS = 30 * 1000; type LRUEntry (line 28) | interface LRUEntry { class MemberPresenceSubscriptionStore (line 33) | class MemberPresenceSubscriptionStore { method constructor (line 42) | constructor() { method startPruneInterval (line 57) | private startPruneInterval(): void { method getGuildSubscriptions (line 67) | private getGuildSubscriptions(guildId: string): Map { method touchMember (line 76) | touchMember(guildId: string, userId: string): void { method unsubscribe (line 91) | unsubscribe(guildId: string, userId: string): void { method setActiveGuild (line 104) | setActiveGuild(guildId: string): void { method getSubscribedMembers (line 120) | getSubscribedMembers(guildId: string): Array { method clearGuild (line 129) | clearGuild(guildId: string): void { method clearAll (line 144) | clearAll(): void { method bumpVersion (line 178) | private bumpVersion(): void { method enforceMaxSize (line 184) | private enforceMaxSize(guildId: string): void { method pruneExpiredEntries (line 203) | private pruneExpiredEntries(): void { method scheduleSyncToGateway (line 235) | private scheduleSyncToGateway(guildId: string): void { method flushPendingSyncs (line 248) | private flushPendingSyncs(): void { method syncActiveFlagImmediate (line 257) | private syncActiveFlagImmediate(guildId: string, active: boolean): void { method syncToGatewayImmediate (line 267) | private syncToGatewayImmediate(guildId: string): void { FILE: fluxer_app/src/stores/MemberSearchStore.tsx type MemberSearchActionTypes (line 30) | enum MemberSearchActionTypes { type MemberSearchWorkerMessageTypes (line 37) | enum MemberSearchWorkerMessageTypes { type MemberSearchFilters (line 44) | interface MemberSearchFilters { type TransformedMember (line 49) | interface TransformedMember { type QueryBlacklist (line 60) | type QueryBlacklist = Set; type QueryWhitelist (line 61) | type QueryWhitelist = Set; type QueryBoosters (line 62) | type QueryBoosters = Record; type QueryData (line 64) | interface QueryData { type WorkerMessage (line 73) | interface WorkerMessage { type MemberResultsMessage (line 79) | interface MemberResultsMessage extends WorkerMessage { type UpdateMembersMessage (line 85) | interface UpdateMembersMessage extends WorkerMessage { type QuerySetMessage (line 90) | interface QuerySetMessage extends WorkerMessage { type QueryClearMessage (line 96) | interface QueryClearMessage extends WorkerMessage { constant DEFAULT_LIMIT (line 101) | const DEFAULT_LIMIT = 10; function updateMembers (line 105) | function updateMembers(members: Array): void { function isFriendRelationship (line 121) | function isFriendRelationship(userId: string): boolean { function applyFriendFlag (line 126) | function applyFriendFlag(member: TransformedMember): void { function getTransformedMember (line 130) | function getTransformedMember(memberRecord: GuildMemberRecord, guildId?:... function updateMembersList (line 153) | function updateMembersList(members: Array, guildId?: ... class SearchContext (line 166) | class SearchContext { method constructor (line 174) | constructor(callback: (results: Array) => void, lim... method destroy (line 204) | destroy(): void { method clearQuery (line 211) | clearQuery(): void { method setQuery (line 223) | setQuery( method _setNextQuery (line 246) | private _setNextQuery(): void { class MemberSearchStore (line 264) | class MemberSearchStore { method constructor (line 269) | constructor() { method initialize (line 273) | initialize(): void { method sendInitialMembers (line 291) | private sendInitialMembers(): void { method handleConnectionOpen (line 308) | handleConnectionOpen(): void { method handleLogout (line 316) | handleLogout(): void { method handleGuildCreate (line 321) | handleGuildCreate(guildId: string): void { method handleGuildDelete (line 329) | handleGuildDelete(guildId: string): void { method handleMemberAdd (line 345) | handleMemberAdd(guildId: string, memberId: string): void { method handleMemberUpdate (line 357) | handleMemberUpdate(guildId: string, memberId: string): void { method handleMembersChunk (line 369) | handleMembersChunk(guildId: string, members: Array)... method handleUserUpdate (line 376) | handleUserUpdate(userId: string): void { method handleFriendshipChange (line 397) | handleFriendshipChange(userId: string, isFriend: boolean): void { method getSearchContext (line 408) | getSearchContext( method terminate (line 419) | private terminate(): void { method cleanup (line 426) | cleanup(): void { method fetchMembersInBackground (line 432) | async fetchMembersInBackground(query: string, guildIds: Array,... method fetchFromGuild (line 478) | private async fetchFromGuild(guild: GuildRecord, query: string): Promi... FILE: fluxer_app/src/stores/MemberSidebarStore.test.tsx constant DEFAULT_JOINED_AT (line 31) | const DEFAULT_JOINED_AT = '2026-02-01T00:00:00.000Z'; function createUser (line 33) | function createUser(userId: string, username: string): UserPartialRespon... function createMember (line 45) | function createMember(_guildId: string, userId: string, username: string... function seedMembers (line 61) | function seedMembers(guildId: string, members: Array<{id: string; name: ... function createGuild (line 67) | function createGuild(guildId: string, disabledOperations = 0): GuildReco... FILE: fluxer_app/src/stores/MemberSidebarStore.tsx type MemberListGroup (line 40) | interface MemberListGroup { type MemberListItem (line 45) | interface MemberListItem { type MemberListState (line 50) | interface MemberListState { type MemberListRow (line 61) | interface MemberListRow { type MemberListOperation (line 68) | interface MemberListOperation { constant MEMBER_LIST_TTL_MS (line 88) | const MEMBER_LIST_TTL_MS = 5 * 60 * 1000; constant MEMBER_LIST_PRUNE_INTERVAL_MS (line 89) | const MEMBER_LIST_PRUNE_INTERVAL_MS = 30 * 1000; function areRangesEqual (line 91) | function areRangesEqual(left?: Array<[number, number]>, right?: Array<[n... class MemberSidebarStore (line 110) | class MemberSidebarStore { method constructor (line 118) | constructor() { method handleSessionInvalidated (line 123) | handleSessionInvalidated(): void { method handleGuildDelete (line 130) | handleGuildDelete(guildId: string): void { method handleGuildCreate (line 145) | handleGuildCreate(guildId: string): void { method handleListUpdate (line 160) | handleListUpdate(params: { method convertRow (line 394) | private convertRow(rawItem: { method convertItem (line 419) | private convertItem(guildId: string, userId: string): MemberListItem |... method extractPresenceFromRow (line 432) | private extractPresenceFromRow(row: MemberListRow): StatusType | null { method normalizeStatus (line 440) | private normalizeStatus(status: string): StatusType { method subscribeToChannel (line 453) | subscribeToChannel(guildId: string, channelId: string, ranges: Array<[... method unsubscribeFromChannel (line 495) | unsubscribeFromChannel(guildId: string, channelId: string): void { method getSubscribedRanges (line 516) | getSubscribedRanges(guildId: string, channelId: string): Array<[number... method getVisibleItems (line 521) | getVisibleItems(guildId: string, listId: string, range: [number, numbe... method getList (line 541) | getList(guildId: string, listId: string): MemberListState | undefined { method getMemberCount (line 546) | getMemberCount(guildId: string, listId: string): number { method getOnlineCount (line 551) | getOnlineCount(guildId: string, listId: string): number { method getPresence (line 556) | getPresence(guildId: string, listId: string, userId: string): StatusTy... method getCustomStatus (line 565) | getCustomStatus(guildId: string, listId: string, userId: string): Cust... method isMemberListUpdatesDisabled (line 577) | private isMemberListUpdatesDisabled(guildId: string): boolean { method touchList (line 585) | private touchList(guildId: string, listId: string): void { method resolveListKey (line 593) | private resolveListKey(guildId: string, listIdOrChannelId: string): st... method registerChannelListId (line 598) | private registerChannelListId(guildId: string, channelId: string, list... method startPruneInterval (line 613) | private startPruneInterval(): void { method pruneExpiredLists (line 620) | private pruneExpiredLists(): void { FILE: fluxer_app/src/stores/MemesPickerStore.tsx type MemeUsageEntry (line 26) | type MemeUsageEntry = Readonly<{ constant MAX_FRECENT_MEMES (line 31) | const MAX_FRECENT_MEMES = 21; constant FRECENCY_TIME_DECAY_HOURS (line 32) | const FRECENCY_TIME_DECAY_HOURS = 24 * 7; class MemesPickerStore (line 36) | class MemesPickerStore { method constructor (line 41) | constructor() { method initPersistence (line 46) | private async initPersistence(): Promise { method trackMemeUsage (line 50) | trackMemeUsage(memeKey: string): void { method toggleFavorite (line 61) | toggleFavorite(memeKey: string): void { method toggleCategory (line 75) | toggleCategory(category: string): void { method isFavorite (line 89) | isFavorite(meme: FavoriteMemeRecord): boolean { method isCategoryCollapsed (line 93) | isCategoryCollapsed(categoryId: string): boolean { method getFrecencyScore (line 97) | private getFrecencyScore(entry: MemeUsageEntry): number { method getFrecentMemes (line 104) | getFrecentMemes( method getFavoriteMemes (line 124) | getFavoriteMemes(allMemes: ReadonlyArray): Array void): () => void { FILE: fluxer_app/src/stores/MessageFocusStore.tsx class MessageFocusStore (line 25) | class MessageFocusStore { method constructor (line 31) | constructor() { method focusMessage (line 41) | focusMessage(channelId: string, messageId: string, message?: MessageRe... method blurMessage (line 58) | blurMessage(channelId: string, messageId: string): void { method holdContextFocus (line 68) | holdContextFocus(channelId: string, messageId: string, message?: Messa... method releaseContextFocus (line 76) | releaseContextFocus(channelId: string, messageId: string): void { method clearFocusedMessageIfMatches (line 82) | clearFocusedMessageIfMatches(channelId: string, messageId: string): vo... method clearFocus (line 88) | clearFocus(): void { method getFocusedMessage (line 95) | getFocusedMessage(): MessageRecord | null { FILE: fluxer_app/src/stores/MessageReactionsStore.tsx type ReactionUsers (line 26) | type ReactionUsers = Record; type FetchStatus (line 28) | type FetchStatus = 'idle' | 'pending' | 'success' | 'error'; type Reaction (line 30) | interface Reaction { type ReactionMap (line 35) | type ReactionMap = Record; class MessageReactionsStore (line 42) | class MessageReactionsStore { method constructor (line 45) | constructor() { method getReactionEntry (line 49) | getReactionEntry(messageId: string, emoji: ReactionEmoji): Reaction | ... method getReactions (line 54) | getReactions(messageId: string, emoji: ReactionEmoji): ReadonlyArray... method handleFetchError (line 147) | handleFetchError(messageId: string, emoji: ReactionEmoji): void { FILE: fluxer_app/src/stores/MessageReferenceStore.tsx type MessageReferenceState (line 39) | type MessageReferenceState = ValueOf; class MessageReferenceStore (line 41) | class MessageReferenceStore { method constructor (line 47) | constructor() { method getKey (line 51) | private getKey(channelId: string, messageId: string): string { method addReference (line 55) | private addReference(refChannelId: string, refMessageId: string, refer... method removeReference (line 66) | private removeReference(refChannelId: string, refMessageId: string, re... method handleMessageCreate (line 79) | handleMessageCreate(message: Message, _optimistic: boolean): void { method handleMessageDelete (line 92) | handleMessageDelete(channelId: string, messageId: string): void { method handleMessageDeleteBulk (line 104) | handleMessageDeleteBulk(channelId: string, messageIds: Array):... method handleMessagesFetchSuccess (line 118) | handleMessagesFetchSuccess(channelId: string, messages: Array... method handleChannelDelete (line 155) | handleChannelDelete(channelId: string): void { method handleConnectionOpen (line 159) | handleConnectionOpen(): void { method handleMessageUpdate (line 166) | handleMessageUpdate(message: Message): void { method fetchMissingMessages (line 190) | private fetchMissingMessages(refs: Array<{channelId: string; messageId... method handleMessageFetchSuccess (line 223) | private handleMessageFetchSuccess(channelId: string, messageId: string... method handleMessageFetchError (line 229) | private handleMessageFetchError(channelId: string, messageId: string, ... method cleanupChannelMessages (line 240) | private cleanupChannelMessages(channelId: string): void { method getMessage (line 268) | getMessage(channelId: string, messageId: string): MessageRecord | null { method getMessageReference (line 278) | getMessageReference( FILE: fluxer_app/src/stores/MessageReplyStore.tsx type MessageReplyState (line 24) | type MessageReplyState = Readonly<{ class MessageReplyStore (line 29) | class MessageReplyStore { method constructor (line 33) | constructor() { method isReplying (line 37) | isReplying(channelId: string, messageId: string): boolean { method isHighlight (line 41) | isHighlight(messageId: string): boolean { method startReply (line 45) | startReply(channelId: string, messageId: string, mentioning: boolean):... method setMentioning (line 60) | setMentioning(channelId: string, mentioning: boolean): void { method stopReply (line 75) | stopReply(channelId: string): void { method highlightMessage (line 80) | highlightMessage(messageId: string): void { method clearHighlight (line 84) | clearHighlight(): void { method getReplyingMessage (line 88) | getReplyingMessage(channelId: string): MessageReplyState | null { FILE: fluxer_app/src/stores/MessageStore.tsx type GuildMemberUpdateAction (line 42) | interface GuildMemberUpdateAction { type PresenceUpdateAction (line 48) | interface PresenceUpdateAction { type PendingMessageJump (line 53) | interface PendingMessageJump { class MessageStore (line 58) | class MessageStore { method constructor (line 63) | constructor() { method version (line 67) | get version(): number { method notifyChange (line 72) | private notifyChange(): void { method getMessages (line 76) | getMessages(channelId: string): ChannelMessages { method getCachedMessages (line 80) | getCachedMessages(channelId: string): ChannelMessages | undefined { method getMessage (line 84) | getMessage(channelId: string, messageId: string): MessageRecord | unde... method getLastEditableMessage (line 88) | getLastEditableMessage(channelId: string): MessageRecord | undefined { method jumpedMessageId (line 94) | jumpedMessageId(channelId: string): string | null | undefined { method hasPresent (line 99) | hasPresent(channelId: string): boolean { method handleConnectionClosed (line 105) | handleConnectionClosed(): boolean { method handleSessionInvalidated (line 120) | handleSessionInvalidated(): boolean { method handleResumed (line 134) | handleResumed(): boolean { method handleConnectionOpen (line 143) | handleConnectionOpen(): boolean { method startChannelHydration (line 184) | private startChannelHydration(channelId: string, options: {forceScroll... method handleChannelSelect (line 200) | handleChannelSelect(action: {guildId?: string; channelId?: string | nu... method handleGuildUnavailable (line 257) | handleGuildUnavailable(guildId: string, unavailable: boolean): boolean { method handleGuildCreate (line 291) | handleGuildCreate(action: {guild: {id: string}}): boolean { method handleLoadMessages (line 320) | handleLoadMessages(action: {channelId: string; jump?: JumpOptions}): b... method handleTruncateMessages (line 328) | handleTruncateMessages(action: {channelId: string; truncateBottom?: bo... method handleLoadMessagesSuccessCached (line 339) | handleLoadMessagesSuccessCached(action: { method handleLoadMessagesSuccess (line 368) | handleLoadMessagesSuccess(action: { method handleLoadMessagesFailure (line 393) | handleLoadMessagesFailure(action: {channelId: string}): boolean { method handleLoadMessagesBlocked (line 401) | handleLoadMessagesBlocked(action: {channelId: string}): boolean { method handleIncomingMessage (line 412) | handleIncomingMessage(action: {channelId: string; message: Message}): ... method handleSendFailed (line 427) | handleSendFailed(action: {channelId: string; nonce: string}): boolean { method handleSendRetry (line 438) | handleSendRetry(action: {channelId: string; messageId: string}): boole... method handleMessageDelete (line 449) | handleMessageDelete(action: {id: string; channelId: string}): boolean { method handleMessageDeleteBulk (line 470) | handleMessageDeleteBulk(action: {ids: Array; channelId: string... method handleMessageUpdate (line 488) | handleMessageUpdate(action: {message: Message}): boolean { method handleUserUpdate (line 508) | handleUserUpdate(action: {user: {id: string}}): boolean { method handleGuildMemberUpdate (line 537) | handleGuildMemberUpdate(action: GuildMemberUpdateAction): boolean { method handlePresenceUpdate (line 569) | handlePresenceUpdate(action: PresenceUpdateAction): boolean { method handleCleanup (line 605) | handleCleanup(): boolean { method handleRelationshipUpdate (line 617) | handleRelationshipUpdate(): boolean { method handleMessageReveal (line 631) | handleMessageReveal(action: {channelId: string; messageId: string | nu... method handleClearJumpTarget (line 639) | handleClearJumpTarget(action: {channelId: string}): boolean { method handleReaction (line 650) | handleReaction(action: { method handleRemoveAllReactions (line 678) | handleRemoveAllReactions(action: {channelId: string; messageId: string... method handleRemoveReactionEmoji (line 689) | handleRemoveReactionEmoji(action: {channelId: string; messageId: strin... method handleMessagePreload (line 700) | handleMessagePreload(action: {messages: Record}): ... method handleOptimisticEdit (line 723) | handleOptimisticEdit(action: { method handleEditRollback (line 754) | handleEditRollback(action: { method subscribe (line 777) | subscribe(callback: () => void): () => void { FILE: fluxer_app/src/stores/MobileLayoutStore.tsx constant MOBILE_ENABLE_BREAKPOINT (line 25) | const MOBILE_ENABLE_BREAKPOINT = 640; constant MOBILE_DISABLE_BREAKPOINT (line 26) | const MOBILE_DISABLE_BREAKPOINT = 768; class MobileLayoutStore (line 37) | class MobileLayoutStore { method constructor (line 42) | constructor() { method initPersistence (line 48) | private async initPersistence(): Promise { method initWindowSync (line 52) | private initWindowSync(): void { method isEnabled (line 62) | isEnabled() { method handleWindowSizeChange (line 66) | private handleWindowSizeChange(): void { method updateState (line 83) | updateState(data: {navExpanded?: boolean; chatExpanded?: boolean}): vo... method isMobileLayout (line 107) | isMobileLayout(): boolean { method platformMobileDetected (line 111) | get platformMobileDetected(): boolean { method isNavExpanded (line 115) | isNavExpanded(): boolean { method isChatExpanded (line 119) | isChatExpanded(): boolean { FILE: fluxer_app/src/stores/MockIncomingCallStore.tsx type MockIncomingCallData (line 24) | interface MockIncomingCallData { class MockIncomingCallStore (line 29) | class MockIncomingCallStore { method constructor (line 32) | constructor() { method setMockCall (line 36) | setMockCall(data: MockIncomingCallData): void { method clearMockCall (line 40) | clearMockCall(): void { method isMockCall (line 44) | isMockCall(channelId: string): boolean { FILE: fluxer_app/src/stores/ModalStore.tsx type KeyboardModeStateResolver (line 28) | type KeyboardModeStateResolver = () => boolean; type KeyboardModeRestoreCallback (line 29) | type KeyboardModeRestoreCallback = (showIntro: boolean) => void; function registerKeyboardModeStateResolver (line 34) | function registerKeyboardModeStateResolver(resolver: KeyboardModeStateRe... function registerKeyboardModeRestoreCallback (line 38) | function registerKeyboardModeRestoreCallback(callback: KeyboardModeResto... constant BASE_Z_INDEX (line 42) | const BASE_Z_INDEX = 10000; constant Z_INDEX_INCREMENT (line 43) | const Z_INDEX_INCREMENT = 2; function getZIndexForStack (line 45) | function getZIndexForStack(stackIndex: number): number { function getBackdropZIndexForStack (line 49) | function getBackdropZIndexForStack(stackIndex: number): number { type Modal (line 53) | interface Modal { type ModalWithStackInfo (line 61) | interface ModalWithStackInfo extends Modal { type PushOptions (line 68) | interface PushOptions { class ModalStore (line 72) | class ModalStore { method constructor (line 76) | constructor() { method push (line 80) | push(modal: ModalRender, key: string | number, options: PushOptions = ... method getModalSignature (line 96) | private getModalSignature(modal: Modal): string { method checkAlternatingStackPattern (line 106) | private checkAlternatingStackPattern(): void { method update (line 126) | update(key: string | number, updater: (currentModal: ModalRender) => M... method pop (line 138) | pop(key?: string | number): void { method popAll (line 159) | popAll(): void { method popByType (line 167) | popByType(component: React.ComponentType): void { method orderedModals (line 182) | get orderedModals(): Array { method getModal (line 200) | getModal(): Modal | undefined { method hasModalOpen (line 204) | hasModalOpen(): boolean { method hasModal (line 208) | hasModal(key: string): boolean { method hasModalOfType (line 212) | hasModalOfType(component: React.ComponentType): boolean { method getActiveElement (line 216) | private getActiveElement(): HTMLElement | null { method scheduleFocus (line 221) | private scheduleFocus(target: HTMLElement | null, keyboardModeEnabled:... FILE: fluxer_app/src/stores/NagbarStore.tsx type NagbarSettings (line 23) | interface NagbarSettings { type NagbarToggleKey (line 75) | type NagbarToggleKey = Exclude< class NagbarStore (line 80) | class NagbarStore implements NagbarSettings { method constructor (line 132) | constructor() { method initPersistence (line 137) | private async initPersistence(): Promise { method getIosInstallDismissed (line 156) | getIosInstallDismissed(): boolean { method getPwaInstallDismissed (line 160) | getPwaInstallDismissed(): boolean { method getPushNotificationDismissed (line 164) | getPushNotificationDismissed(): boolean { method getForceOffline (line 168) | getForceOffline(): boolean { method getForceEmailVerification (line 172) | getForceEmailVerification(): boolean { method getForceIOSInstall (line 176) | getForceIOSInstall(): boolean { method getForcePWAInstall (line 180) | getForcePWAInstall(): boolean { method getForcePushNotification (line 184) | getForcePushNotification(): boolean { method getForceUnclaimedAccount (line 188) | getForceUnclaimedAccount(): boolean { method getInvitesDisabledDismissed (line 192) | getInvitesDisabledDismissed(guildId: string): boolean { method getForceInvitesDisabled (line 196) | getForceInvitesDisabled(): boolean { method getForceHideOffline (line 200) | getForceHideOffline(): boolean { method getForceHideEmailVerification (line 204) | getForceHideEmailVerification(): boolean { method getForceHideIOSInstall (line 208) | getForceHideIOSInstall(): boolean { method getForceHidePWAInstall (line 212) | getForceHidePWAInstall(): boolean { method getForceHidePushNotification (line 216) | getForceHidePushNotification(): boolean { method getForceHideUnclaimedAccount (line 220) | getForceHideUnclaimedAccount(): boolean { method getForceHideDesktopNotification (line 224) | getForceHideDesktopNotification(): boolean { method getForceHideInvitesDisabled (line 228) | getForceHideInvitesDisabled(): boolean { method getForceHidePremiumGracePeriod (line 232) | getForceHidePremiumGracePeriod(): boolean { method getForceHidePremiumExpired (line 236) | getForceHidePremiumExpired(): boolean { method getForceHidePremiumOnboarding (line 240) | getForceHidePremiumOnboarding(): boolean { method getForceHideGiftInventory (line 244) | getForceHideGiftInventory(): boolean { method getForceHideUpdateAvailable (line 248) | getForceHideUpdateAvailable(): boolean { method getForceGuildMembershipCta (line 252) | getForceGuildMembershipCta(): boolean { method getForceHideGuildMembershipCta (line 256) | getForceHideGuildMembershipCta(): boolean { method hasPendingBulkDeletionDismissed (line 260) | hasPendingBulkDeletionDismissed(scheduleKey: string | null): boolean { method markClaimAccountModalShown (line 268) | markClaimAccountModalShown(): void { method resetClaimAccountModalShown (line 272) | resetClaimAccountModalShown(): void { method dismiss (line 276) | dismiss(nagbarType: NagbarToggleKey): void { method dismissPendingBulkDeletion (line 280) | dismissPendingBulkDeletion(scheduleKey: string): void { method dismissInvitesDisabled (line 287) | dismissInvitesDisabled(guildId: string): void { method clearPendingBulkDeletionDismissed (line 294) | clearPendingBulkDeletionDismissed(scheduleKey: string): void { method reset (line 299) | reset(nagbarType: NagbarToggleKey): void { method setFlag (line 303) | setFlag(key: NagbarToggleKey, value: boolean): void { method resetInvitesDisabled (line 307) | resetInvitesDisabled(guildId: string): void { method resetAll (line 312) | resetAll(): void { method handleGuildUpdate (line 366) | handleGuildUpdate(action: { FILE: fluxer_app/src/stores/NativePermissionStore.tsx class NativePermissionStore (line 27) | class NativePermissionStore { method constructor (line 33) | constructor() { method initialize (line 38) | private async initialize(): Promise { method initialized (line 62) | get initialized(): boolean { method isDesktop (line 66) | get isDesktop(): boolean { method isMacOS (line 70) | get isMacOS(): boolean { method isNativeMacDesktop (line 74) | get isNativeMacDesktop(): boolean { method platform (line 78) | get platform(): NativePlatform { method inputMonitoringStatus (line 82) | get inputMonitoringStatus(): NativePermissionResult { method isInputMonitoringGranted (line 86) | get isInputMonitoringGranted(): boolean { method shouldShowInputMonitoringBanner (line 90) | get shouldShowInputMonitoringBanner(): boolean { method recheckInputMonitoring (line 94) | async recheckInputMonitoring(): Promise { method setInputMonitoringStatus (line 109) | setInputMonitoringStatus(status: NativePermissionResult): void { FILE: fluxer_app/src/stores/NativeWindowStateStore.tsx class NativeWindowStateStore (line 24) | class NativeWindowStateStore { method constructor (line 29) | constructor() { method setRememberSizeAndPosition (line 38) | setRememberSizeAndPosition(enabled: boolean): void { method setRememberMaximized (line 43) | setRememberMaximized(enabled: boolean): void { method setRememberFullscreen (line 48) | setRememberFullscreen(enabled: boolean): void { method saveWithCurrentFlags (line 53) | private async saveWithCurrentFlags(): Promise { FILE: fluxer_app/src/stores/NavigationSideEffectsStore.tsx class NavigationSideEffectsStore (line 28) | class NavigationSideEffectsStore { method initialize (line 33) | initialize(): void { method handleRouteChange (line 49) | private handleRouteChange(guildId: string | null, channelId: string | ... method destroy (line 66) | destroy(): void { FILE: fluxer_app/src/stores/NavigationStore.tsx type NavigationMode (line 27) | type NavigationMode = 'push' | 'replace'; class NavigationStore (line 31) | class NavigationStore { method constructor (line 39) | constructor() { method initialize (line 44) | initialize(router: Router): void { method updateFromRouter (line 54) | private updateFromRouter(): void { method pathname (line 74) | get pathname(): string { method search (line 78) | get search(): string { method hash (line 82) | get hash(): string { method context (line 86) | get context(): 'dm' | 'favorites' | 'guild' { method navigateToGuild (line 93) | navigateToGuild(guildId: string, channelId?: string, messageId?: strin... method navigateToDM (line 99) | navigateToDM(channelId?: string, messageId?: string, mode: NavigationM... method navigateToFavorites (line 105) | navigateToFavorites(channelId?: string, messageId?: string, mode: Navi... method clearMessageIdForChannel (line 111) | clearMessageIdForChannel(channelId: string, mode: NavigationMode = 're... method buildChannelPath (line 130) | buildChannelPath(guildId: string | null | undefined, channelId: string... method buildMessagePath (line 140) | buildMessagePath(guildId: string | null | undefined, channelId: string... method buildGuildPath (line 150) | private buildGuildPath(guildId: string, channelId?: string, messageId?... method buildDMPath (line 157) | private buildDMPath(channelId?: string, messageId?: string): string { method buildFavoritesPath (line 167) | private buildFavoritesPath(channelId?: string, messageId?: string): st... method applyNavigation (line 177) | private applyNavigation(path: string, mode: NavigationMode): void { method destroy (line 185) | destroy(): void { FILE: fluxer_app/src/stores/NewDeviceMonitoringStore.tsx type DeviceType (line 36) | type DeviceType = 'input' | 'output'; type PendingDevicePrompt (line 38) | interface PendingDevicePrompt { class NewDeviceMonitoringStore (line 44) | class NewDeviceMonitoringStore { method constructor (line 58) | constructor() { method setI18n (line 62) | setI18n(i18n: I18n): void { method startMonitoring (line 66) | private startMonitoring(): void { method start (line 71) | async start(): Promise { method handleDeviceStateChange (line 88) | private handleDeviceStateChange(state: VoiceDeviceState): void { method processNextPrompt (line 158) | private processNextPrompt(): void { method showNewDeviceModal (line 174) | private showNewDeviceModal(prompt: PendingDevicePrompt): void { method onModalClosed (line 233) | private onModalClosed(): void { method addToIgnored (line 238) | private addToIgnored(deviceId: string): void { method clearIgnoredDevices (line 247) | clearIgnoredDevices(): void { method removeFromIgnored (line 252) | removeFromIgnored(deviceId: string): void { method getIgnoredDeviceIds (line 260) | getIgnoredDeviceIds(): ReadonlyArray { method setSuppressAlerts (line 264) | setSuppressAlerts(suppress: boolean): void { method showTestModal (line 269) | showTestModal(): void { method dispose (line 277) | dispose(): void { FILE: fluxer_app/src/stores/NotificationStore.tsx type TTSNotificationMode (line 63) | enum TTSNotificationMode { constant MAX_PER_CHANNEL (line 69) | const MAX_PER_CHANNEL = 5; constant CACHE_SIZE (line 70) | const CACHE_SIZE = 500; type TrackedNotification (line 72) | interface TrackedNotification { method track (line 80) | track(channelId: string, notification: TrackedNotification): void { method clearChannel (line 100) | clearChannel(channelId: string): void { type NotificationData (line 118) | type NotificationData = Readonly<{ class NotificationStore (line 124) | class NotificationStore { method constructor (line 134) | constructor() { method setI18n (line 173) | setI18n(i18n: I18n): void { method initPersistence (line 177) | private async initPersistence(): Promise { method cleanup (line 187) | private cleanup(): void { method getUnreadMessageBadgeEnabled (line 195) | getUnreadMessageBadgeEnabled(): boolean { method getBrowserNotificationsEnabled (line 199) | getBrowserNotificationsEnabled(): boolean { method getTTSNotificationMode (line 203) | getTTSNotificationMode(): TTSNotificationMode { method setTTSNotificationMode (line 207) | setTTSNotificationMode(mode: TTSNotificationMode): void { method isFocused (line 211) | isFocused(): boolean { method isMessageMentionLike (line 215) | private isMessageMentionLike(channel: ChannelRecord, message: MessageR... method shouldNotifyBasedOnSettings (line 227) | private shouldNotifyBasedOnSettings( method validateNotificationData (line 250) | private validateNotificationData(message: Message): NotificationData |... method markNotified (line 295) | private markNotified(key: string): void { method showNotification (line 302) | private async showNotification(data: NotificationData): Promise { method handleMessageCreate (line 402) | handleMessageCreate({message}: {message: Message}): boolean { method handleNotificationPermissionGranted (line 412) | handleNotificationPermissionGranted(): void { method handleNotificationPermissionDenied (line 419) | handleNotificationPermissionDenied(): void { method refreshPermission (line 426) | async refreshPermission(): Promise { method handleNotificationSoundToggle (line 442) | handleNotificationSoundToggle(enabled: boolean): void { method handleWindowFocus (line 446) | handleWindowFocus({focused}: {focused: boolean}): void { method handleChannelSelect (line 456) | handleChannelSelect({channelId}: {channelId?: string | null}): void { method handleMessageAck (line 462) | handleMessageAck({channelId}: {channelId: string}): void { method handleMessageDelete (line 466) | handleMessageDelete({channelId}: {channelId: string}): void { method handleRelationshipNotification (line 470) | handleRelationshipNotification( FILE: fluxer_app/src/stores/OverlayStackStore.tsx constant BASE_Z_INDEX (line 22) | const BASE_Z_INDEX = 10000; constant Z_INDEX_INCREMENT (line 23) | const Z_INDEX_INCREMENT = 10; class OverlayStackStore (line 25) | class OverlayStackStore { method constructor (line 29) | constructor() { method acquire (line 33) | acquire(): number { method release (line 40) | release(): void { method peek (line 48) | peek(): number { method reset (line 52) | reset(): void { FILE: fluxer_app/src/stores/PackStore.tsx type FetchStatus (line 24) | type FetchStatus = 'idle' | 'pending' | 'success' | 'error'; class PackStore (line 26) | class PackStore { method constructor (line 31) | constructor() { method fetch (line 35) | async fetch(): Promise { method refresh (line 58) | async refresh(): Promise { method createPack (line 62) | async createPack(type: 'emoji' | 'sticker', name: string, description?... method updatePack (line 67) | async updatePack(packId: string, data: {name?: string; description?: s... method deletePack (line 72) | async deletePack(packId: string): Promise { method installPack (line 77) | async installPack(packId: string): Promise { method uninstallPack (line 82) | async uninstallPack(packId: string): Promise { FILE: fluxer_app/src/stores/ParticipantVolumeStore.tsx function composeVolumePercent (line 46) | function composeVolumePercent(...volumeParts: Array): number { class ParticipantVolumeStore (line 53) | class ParticipantVolumeStore { method constructor (line 58) | constructor() { method initPersistence (line 71) | private async initPersistence(): Promise { method setVolume (line 75) | setVolume(userId: string, volume: number): void { method setLocalMute (line 84) | setLocalMute(userId: string, muted: boolean): void { method setConnectionVolume (line 92) | setConnectionVolume(connectionId: string, volume: number): void { method getVolume (line 109) | getVolume(userId: string): number { method getConnectionVolume (line 113) | getConnectionVolume(connectionId: string | null): number { method isLocalMuted (line 125) | isLocalMuted(userId: string): boolean { method resetUserSettings (line 129) | resetUserSettings(userId: string): void { method applySettingsToRoom (line 139) | applySettingsToRoom(room: Room | null, selfDeaf: boolean): void { method applySettingsToParticipant (line 147) | applySettingsToParticipant(participant: RemoteParticipant, selfDeaf: b... FILE: fluxer_app/src/stores/PermissionLayoutStore.tsx type PermissionLayoutMode (line 23) | enum PermissionLayoutMode { type PermissionGridMode (line 28) | enum PermissionGridMode { class PermissionLayoutStore (line 33) | class PermissionLayoutStore { method constructor (line 37) | constructor() { method initPersistence (line 42) | private async initPersistence(): Promise { method isComfy (line 46) | get isComfy(): boolean { method isDense (line 50) | get isDense(): boolean { method isGrid (line 54) | get isGrid(): boolean { method setLayoutMode (line 58) | setLayoutMode(mode: PermissionLayoutMode): void { method setGridMode (line 62) | setGridMode(mode: PermissionGridMode): void { method toggleLayoutMode (line 66) | toggleLayoutMode(): void { method toggleGridMode (line 70) | toggleGridMode(): void { FILE: fluxer_app/src/stores/PermissionStore.tsx class PermissionStore (line 39) | class PermissionStore { method constructor (line 45) | constructor() { method getChannelPermissions (line 49) | getChannelPermissions(channelId: string): bigint | undefined { method getGuildPermissions (line 53) | getGuildPermissions(guildId: string): bigint | undefined { method getGuildVersion (line 57) | getGuildVersion(guildId: string): number | undefined { method version (line 61) | get version(): number { method can (line 65) | can(permission: bigint, context: Channel | Guild | GuildRecord | {chan... method canManageUser (line 81) | canManageUser(permission: bigint, otherUser: UserRecord | UserId, guil... method handleConnectionOpen (line 101) | handleConnectionOpen(): void { method handleConnectionClose (line 105) | handleConnectionClose(): void { method handleGuild (line 112) | handleGuild(): void { method handleGuildMemberUpdate (line 116) | handleGuildMemberUpdate(userId: string): void { method handleUserUpdate (line 123) | handleUserUpdate(userId: string): void { method handleChannelUpdate (line 127) | handleChannelUpdate(channelId: string): void { method handleChannelDelete (line 143) | handleChannelDelete(channelId: string, guildId?: string): void { method handleGuildRole (line 148) | handleGuildRole(guildId: string): void { method rebuildPermissions (line 169) | private rebuildPermissions(): void { method bumpGlobalVersion (line 208) | private bumpGlobalVersion(): void { method bumpGuildVersion (line 212) | private bumpGuildVersion(guildId?: string | null): void { method subscribe (line 219) | subscribe(callback: () => void): () => void { FILE: fluxer_app/src/stores/PiPStore.tsx type PiPContentType (line 23) | type PiPContentType = 'stream' | 'camera'; type PiPCorner (line 24) | type PiPCorner = 'top-left' | 'top-right' | 'bottom-right' | 'bottom-left'; constant PIP_DEFAULT_WIDTH (line 25) | const PIP_DEFAULT_WIDTH = 320; type PiPContent (line 27) | interface PiPContent { constant PIP_CORNER_STORAGE_KEY (line 36) | const PIP_CORNER_STORAGE_KEY = 'pip_corner'; constant PIP_WIDTH_STORAGE_KEY (line 37) | const PIP_WIDTH_STORAGE_KEY = 'pip_width'; constant PIP_CORNERS (line 38) | const PIP_CORNERS: ReadonlyArray = ['top-left', 'top-right', ... function isPiPCorner (line 40) | function isPiPCorner(value: string | null): value is PiPCorner { function parsePiPWidth (line 45) | function parsePiPWidth(value: string | null): number | null { class PiPStore (line 52) | class PiPStore { method constructor (line 61) | constructor() { method open (line 73) | open(content: PiPContent): void { method close (line 80) | close(): void { method showFocusedTileMirror (line 87) | showFocusedTileMirror(content: PiPContent, corner: PiPCorner = 'top-ri... method hideFocusedTileMirror (line 94) | hideFocusedTileMirror(): void { method setSessionDisable (line 101) | setSessionDisable(value: boolean): void { method setCorner (line 107) | setCorner(corner: PiPCorner): void { method setWidth (line 114) | setWidth(width: number): void { method getContent (line 121) | getContent(): PiPContent | null { method getActiveContent (line 125) | getActiveContent(): PiPContent | null { method getIsOpen (line 129) | getIsOpen(): boolean { method getHasActiveOverlay (line 133) | getHasActiveOverlay(): boolean { method getCorner (line 137) | getCorner(): PiPCorner { method getEffectiveCorner (line 141) | getEffectiveCorner(): PiPCorner { method getSessionDisable (line 145) | getSessionDisable(): boolean { method getWidth (line 149) | getWidth(): number { FILE: fluxer_app/src/stores/PopoutStore.tsx type FocusRestoreMeta (line 27) | interface FocusRestoreMeta { class PopoutStore (line 32) | class PopoutStore { method constructor (line 36) | constructor() { method open (line 40) | open(popout: Popout): void { method close (line 67) | close(key?: string | number): void { method closeAll (line 107) | closeAll(): void { method reposition (line 119) | reposition(key: PopoutKey): void { method isOpen (line 135) | isOpen(key: PopoutKey): boolean { method hasDependents (line 139) | hasDependents(key: PopoutKey): boolean { method getPopouts (line 146) | getPopouts(): Array { method getParentPopoutChain (line 150) | private getParentPopoutChain(dependsOnKey: string): Record... method handleGuildMemberAdd (line 149) | handleGuildMemberAdd(guildId: string, userId: string): void { method handleGuildMemberRemove (line 163) | handleGuildMemberRemove(guildId: string, userId: string): void { method handleGuildMemberUpdate (line 181) | handleGuildMemberUpdate(guildId: string, userId: string): void { method handleConnectionOpen (line 201) | handleConnectionOpen(user: UserPrivate, guilds: Array,... method handleGuildCreate (line 234) | handleGuildCreate(guild: GuildReadyData): void { method handleGuildDelete (line 269) | handleGuildDelete(guildId: string): void { method handlePresenceUpdate (line 294) | handlePresenceUpdate(presence: Presence): void { method handleReadyPresence (line 356) | private handleReadyPresence(presence: Presence, initialGuildIds?: Set<... method indexGuildMembers (line 389) | private indexGuildMembers( method syncLocalPresence (line 415) | private syncLocalPresence(): void { method buildMeContextUserIds (line 444) | private buildMeContextUserIds(currentUserId: string): Set { method resyncExternalStatusListeners (line 468) | private resyncExternalStatusListeners(): void { method notifyStatusListeners (line 474) | private notifyStatusListeners(userId: string, status: StatusType, isMo... method updateStatusFromPresence (line 489) | private updateStatusFromPresence(userId: string, presence: FlattenedPr... method evictPresence (line 503) | private evictPresence(userId: string): void { FILE: fluxer_app/src/stores/PrivacyPreferencesStore.tsx class PrivacyPreferencesStore (line 23) | class PrivacyPreferencesStore { method constructor (line 27) | constructor() { method initPersistence (line 32) | private async initPersistence(): Promise { method getDisableStreamPreviews (line 36) | getDisableStreamPreviews(): boolean { method getShowActiveNow (line 40) | getShowActiveNow(): boolean { method setDisableStreamPreviews (line 44) | setDisableStreamPreviews(value: boolean): void { method setShowActiveNow (line 48) | setShowActiveNow(value: boolean): void { FILE: fluxer_app/src/stores/QuickSwitcherStore.tsx constant MAX_GENERAL_RESULTS (line 66) | const MAX_GENERAL_RESULTS = 5; constant MAX_QUERY_MODE_RESULTS (line 67) | const MAX_QUERY_MODE_RESULTS = 20; constant MAX_RECENT_RESULTS (line 68) | const MAX_RECENT_RESULTS = 8; constant MAX_UNREAD_RESULTS (line 69) | const MAX_UNREAD_RESULTS = 8; constant UNREAD_SORT_WEIGHT_BOOST (line 70) | const UNREAD_SORT_WEIGHT_BOOST = DAYS_PER_WEEK * MS_PER_DAY; constant QUICK_SWITCHER_MODAL_KEY (line 71) | const QUICK_SWITCHER_MODAL_KEY = 'quick_switcher'; constant MEMBER_SEARCH_LIMIT (line 72) | const MEMBER_SEARCH_LIMIT = 25; type QuickSwitcherQueryMode (line 74) | type QuickSwitcherQueryMode = type ComputeResultsForQueryResult (line 84) | interface ComputeResultsForQueryResult { type HeaderResult (line 90) | interface HeaderResult { type UserResult (line 96) | interface UserResult { type GroupDMResult (line 106) | interface GroupDMResult { type TextChannelResult (line 115) | interface TextChannelResult { type VoiceChannelResult (line 125) | interface VoiceChannelResult { type GuildResult (line 135) | interface GuildResult { type VirtualGuildResult (line 143) | interface VirtualGuildResult { type SettingsResult (line 151) | interface SettingsResult { type QuickActionResult (line 160) | interface QuickActionResult { type LinkResult (line 168) | interface LinkResult { type QuickSwitcherResult (line 176) | type QuickSwitcherResult = type QuickSwitcherExecutableResult (line 188) | type QuickSwitcherExecutableResult = Exclude { type UserCandidate (line 199) | interface UserCandidate extends CandidateBase { method getSelectedResult (line 305) | getSelectedResult(): QuickSwitcherExecutableResult | null { method findNextSelectableIndex (line 316) | findNextSelectableIndex(direction: 'up' | 'down', startIndex?: number)... method show (line 336) | show(): void { method pushModal (line 358) | private pushModal(): void { method hide (line 366) | hide(): void { method search (line 394) | search(query: string): void { method triggerMemberSearchIfNeeded (line 408) | private triggerMemberSearchIfNeeded(query: string, queryMode: QuickSwi... method select (line 477) | select(selectedIndex: number): void { method recomputeIfOpen (line 500) | recomputeIfOpen(): void { method computeResultsForQuery (line 511) | private computeResultsForQuery(query: string): ComputeResultsForQueryR... method getQueryMode (line 566) | private getQueryMode(query: string): QuickSwitcherQueryMode | null { method buildCandidateSets (line 583) | private buildCandidateSets(): CandidateSets { method getExcludedChannelIds (line 956) | private getExcludedChannelIds(): Set { method getCurrentChannelId (line 972) | private getCurrentChannelId(): string | null { method generateDefaultResults (line 976) | private generateDefaultResults(sets: CandidateSets): Array(candidates: Array, sea... method sortCandidatesByWeight (line 1189) | private sortCandidatesByWeight(candidates: Array<... method createResultFromChannel (line 1198) | private createResultFromChannel( method candidateToResult (line 1232) | private candidateToResult(candidate: Candidate, viewContext?: string):... method createHeaderResult (line 1315) | private createHeaderResult(id: string, title: string): HeaderResult { method getHeaderTitle (line 1319) | private getHeaderTitle(type: QuickSwitcherResultType): string { method getFirstSelectableIndex (line 1362) | private getFirstSelectableIndex(results: ReadonlyArray): GuildM... function createGuildChannel (line 69) | function createGuildChannel(): Channel { function createIncomingMessage (line 80) | function createIncomingMessage(mentionRoles: Array): Message { FILE: fluxer_app/src/stores/ReadStateStore.tsx constant CAN_READ_PERMISSIONS (line 43) | const CAN_READ_PERMISSIONS = Permissions.VIEW_CHANNEL; constant OLD_MESSAGE_AGE_THRESHOLD (line 44) | const OLD_MESSAGE_AGE_THRESHOLD = 7 * MS_PER_DAY; constant RECENT_MESSAGE_THRESHOLD (line 45) | const RECENT_MESSAGE_THRESHOLD = 3 * MS_PER_DAY; type GatewayReadState (line 47) | interface GatewayReadState { type ChannelPayload (line 54) | interface ChannelPayload { function parseTimestamp (line 62) | function parseTimestamp(timestamp?: string | null): number { class ReadStateEntry (line 68) | class ReadStateEntry { method constructor (line 103) | constructor(channelId: string) { method now (line 108) | private get now(): number { method guildId (line 112) | get guildId(): string | null { method lastMessageId (line 117) | get lastMessageId(): string | null { method lastMessageId (line 121) | set lastMessageId(messageId: string | null) { method lastMessageTimestamp (line 126) | get lastMessageTimestamp(): number { method ackMessageId (line 130) | get ackMessageId(): string | null { method ackMessageId (line 134) | set ackMessageId(messageId: string | null) { method oldestUnreadMessageId (line 139) | get oldestUnreadMessageId(): string | null { method oldestUnreadMessageId (line 143) | set oldestUnreadMessageId(messageId: string | null) { method stickyUnreadMessageId (line 148) | get stickyUnreadMessageId(): string | null { method stickyUnreadMessageId (line 152) | set stickyUnreadMessageId(messageId: string | null) { method visualUnreadMessageId (line 156) | get visualUnreadMessageId(): string | null { method clearStickyUnread (line 160) | clearStickyUnread(): void { method unreadCount (line 164) | get unreadCount(): number { method unreadCount (line 168) | set unreadCount(count: number) { method mentionCount (line 172) | get mentionCount(): number { method mentionCount (line 176) | set mentionCount(count: number) { method oldestUnreadTimestamp (line 180) | get oldestUnreadTimestamp(): number { method ackTimestamp (line 184) | get ackTimestamp(): number { method computeAckTimestamp (line 194) | private computeAckTimestamp(): void { method isPrivate (line 219) | get isPrivate(): boolean { method canTrackUnreads (line 224) | canTrackUnreads(): boolean { method canBeUnread (line 233) | canBeUnread(): boolean { method canHaveMentions (line 251) | canHaveMentions(): boolean { method hasUnread (line 272) | hasUnread(): boolean { method hasMentions (line 288) | hasMentions(): boolean { method hasUnreadOrMentions (line 292) | hasUnreadOrMentions(): boolean { method hasRecentlyVisitedAndRead (line 296) | hasRecentlyVisitedAndRead(now = this.now): boolean { method getGuildChannelUnreadState (line 304) | getGuildChannelUnreadState( method rebuild (line 342) | rebuild(ackMessageId?: string | null, {recomputeMentions = false}: {re... method shouldMentionFor (line 395) | shouldMentionFor(message: MessageRecord | Message, userId: string, isP... method computeMentionCountAfterAck (line 435) | computeMentionCountAfterAck(messageId: string): number { method ackPins (line 463) | ackPins(timestamp?: string | null): boolean { method clearOutgoingAck (line 483) | clearOutgoingAck(): void { method shouldAck (line 491) | private shouldAck(force: boolean, local: boolean, isExplicitUserAction... method ack (line 507) | ack(options: { method sendAck (line 579) | private async sendAck(): Promise { method dispose (line 593) | dispose(): void { class ReadStateStore (line 598) | class ReadStateStore { method setMentionCount (line 602) | private setMentionCount(state: ReadStateEntry, mentionCount: number): ... method constructor (line 617) | constructor() { method version (line 621) | get version(): number { method notifyChange (line 626) | private notifyChange(channelId?: string, {global = false}: {global?: b... method consumePendingChanges (line 639) | consumePendingChanges(): { method get (line 661) | get(channelId: string): ReadStateEntry { method getIfExists (line 670) | getIfExists(channelId: string): ReadStateEntry | undefined { method clear (line 674) | clear(channelId: string): boolean { method clearAll (line 688) | clearAll(): void { method mentionChannelIds (line 697) | get mentionChannelIds(): Array { method isAutomaticAckEnabled (line 710) | isAutomaticAckEnabled(channelId: string): boolean { method getUnreadCount (line 714) | getUnreadCount(channelId: string): number { method getMentionCount (line 719) | getMentionCount(channelId: string): number { method getManualAckMentionCount (line 724) | getManualAckMentionCount(channelId: string, messageId: string): number { method hasUnread (line 729) | hasUnread(channelId: string): boolean { method hasUnreadOrMentions (line 734) | hasUnreadOrMentions(channelId: string): boolean { method ackMessageId (line 739) | ackMessageId(channelId: string): string | null { method lastMessageId (line 744) | lastMessageId(channelId: string): string | null { method getOldestUnreadMessageId (line 749) | getOldestUnreadMessageId(channelId: string): string | null { method getVisualUnreadMessageId (line 754) | getVisualUnreadMessageId(channelId: string): string | null { method getChannelIds (line 759) | getChannelIds(): Array { method clearStickyUnread (line 763) | clearStickyUnread(channelId: string): void { method hasUnreadPins (line 771) | hasUnreadPins(channelId: string): boolean { method ackPins (line 776) | ackPins(channelId: string): void { method handleConnectionOpen (line 783) | handleConnectionOpen(action: {readState: Array; chan... method handleGuildCreate (line 819) | handleGuildCreate(action: {guild: {id: string; channels?: ReadonlyArra... method handleLoadMessages (line 833) | handleLoadMessages(action: {channelId: string; isAfter?: boolean; mess... method handleIncomingMessage (line 853) | handleIncomingMessage(action: {channelId: string; message: Message}): ... method handleMessageDelete (line 894) | handleMessageDelete(action: {channelId: string}): void { method handleChannelCreate (line 900) | handleChannelCreate(action: {channel: ChannelPayload}): void { method handleChannelDelete (line 927) | handleChannelDelete(action: {channel: {id: string}}): void { method handleChannelAck (line 931) | handleChannelAck(action: {channelId: string; messageId?: string; immed... method handleChannelAckWithStickyUnread (line 942) | handleChannelAckWithStickyUnread(action: {channelId: string}): void { method handleChannelPinsAck (line 968) | handleChannelPinsAck(action: {channelId: string; timestamp?: string}):... method handleChannelPinsUpdate (line 974) | handleChannelPinsUpdate(action: {channelId: string; lastPinTimestamp: ... method handleMessageAck (line 984) | handleMessageAck(action: {channelId: string; messageId: string; mentio... method handleClearManualAck (line 1016) | handleClearManualAck(action: {channelId: string}): void { method subscribe (line 1024) | subscribe(callback: () => void): () => void { FILE: fluxer_app/src/stores/RecentMentionsStore.tsx type MentionFilters (line 32) | interface MentionFilters { class RecentMentionsStore (line 38) | class RecentMentionsStore { method constructor (line 49) | constructor() { method initPersistence (line 54) | private async initPersistence(): Promise { method getFilters (line 58) | getFilters(): MentionFilters { method getHasMore (line 62) | getHasMore(): boolean { method getIsLoadingMore (line 66) | getIsLoadingMore(): boolean { method getAccessibleMentions (line 70) | getAccessibleMentions(): ReadonlyArray { method isMessageAccessible (line 74) | private isMessageAccessible(message: MessageRecord): boolean { method handleConnectionOpen (line 100) | handleConnectionOpen(): void { method handleFetchPending (line 104) | handleFetchPending(): void { method handleRecentMentionsFetchSuccess (line 108) | handleRecentMentionsFetchSuccess(messages: ReadonlyArray): vo... method handleRecentMentionsFetchError (line 123) | handleRecentMentionsFetchError(): void { method updateFilters (line 127) | updateFilters(filters: Partial): void { method filterMessages (line 132) | private filterMessages(messages: ReadonlyArray): ReadonlyArra... method handleChannelDelete (line 141) | handleChannelDelete(channel: Channel): void { method handleGuildDelete (line 145) | handleGuildDelete(guildId: string): void { method handleMessageUpdate (line 152) | handleMessageUpdate(message: Message): void { method handleMessageDelete (line 159) | handleMessageDelete(messageId: string): void { method handleMessageCreate (line 163) | handleMessageCreate(message: Message): void { method updateMessageWithReaction (line 179) | private updateMessageWithReaction(messageId: string, updater: (message... method handleMessageReactionAdd (line 186) | handleMessageReactionAdd(messageId: string, userId: string, emoji: Rea... method handleMessageReactionRemove (line 192) | handleMessageReactionRemove(messageId: string, userId: string, emoji: ... method handleMessageReactionRemoveAll (line 198) | handleMessageReactionRemoveAll(messageId: string): void { method handleMessageReactionRemoveEmoji (line 202) | handleMessageReactionRemoveEmoji(messageId: string, emoji: ReactionEmo... FILE: fluxer_app/src/stores/RelationshipStore.tsx class RelationshipStore (line 24) | class RelationshipStore { method constructor (line 27) | constructor() { method loadRelationships (line 31) | loadRelationships(relationships: ReadonlyArray): void { method updateRelationship (line 41) | updateRelationship(relationship: Relationship): void { method removeRelationship (line 57) | removeRelationship(relationshipId: string): void { method getRelationship (line 62) | getRelationship(relationshipId: string): RelationshipRecord | undefined { method getRelationships (line 66) | getRelationships(): ReadonlyArray { method isBlocked (line 70) | isBlocked(userId: string): boolean { FILE: fluxer_app/src/stores/RtcRegionsStore.tsx class RtcRegionsStore (line 25) | class RtcRegionsStore { method constructor (line 28) | constructor() { method setRegions (line 32) | setRegions(regions: Array): void { method getRegions (line 37) | getRegions(): Array { FILE: fluxer_app/src/stores/RuntimeConfigStore.tsx type InstanceFeatures (line 31) | interface InstanceFeatures { type InstanceSsoConfig (line 39) | interface InstanceSsoConfig { type InstanceEndpoints (line 46) | interface InstanceEndpoints { type InstanceCaptcha (line 60) | interface InstanceCaptcha { type InstancePush (line 66) | interface InstancePush { type InstanceAppPublic (line 70) | interface InstanceAppPublic { type GifProvider (line 74) | type GifProvider = 'klipy' | 'tenor'; type InstanceDiscoveryResponse (line 76) | interface InstanceDiscoveryResponse { type RuntimeConfigSnapshot (line 88) | interface RuntimeConfigSnapshot { type InitState (line 112) | type InitState = 'initializing' | 'ready' | 'error'; class RuntimeConfigStore (line 114) | class RuntimeConfigStore { method relayModeEnabled (line 158) | get relayModeEnabled(): boolean { method constructor (line 162) | constructor() { method updateTargetInstanceDomain (line 195) | private updateTargetInstanceDomain(endpoint: string): void { method initialize (line 204) | private async initialize(): Promise { method waitForInit (line 251) | waitForInit(): Promise { method initialized (line 255) | get initialized(): boolean { method initError (line 259) | get initError(): Error | null { method applySnapshot (line 263) | applySnapshot(snapshot: RuntimeConfigSnapshot): void { method getSnapshot (line 292) | getSnapshot(): RuntimeConfigSnapshot { method createEmptyLimitConfig (line 317) | private createEmptyLimitConfig(): LimitConfigSnapshot { method cloneLimits (line 325) | private cloneLimits(limits: LimitConfigSnapshot): LimitConfigSnapshot { method normalizeLimits (line 329) | private normalizeLimits(limits?: LimitConfigSnapshot): LimitConfigSnap... method processLimitsFromApi (line 338) | private processLimitsFromApi(limits: LimitConfigSnapshot | LimitConfig... method withSnapshot (line 348) | async withSnapshot(snapshot: RuntimeConfigSnapshot, fn: () => Promi... method resetToDefaults (line 359) | async resetToDefaults(): Promise { method connectToEndpoint (line 363) | async connectToEndpoint(input: string): Promise { method buildWellKnownUrl (line 384) | private buildWellKnownUrl(apiEndpoint: string): string { method normalizeEndpoint (line 394) | private normalizeEndpoint(input: string): string { method updateFromInstance (line 416) | private updateFromInstance(instance: InstanceDiscoveryResponse): void { method assertCodeVersion (line 454) | private assertCodeVersion(instanceVersion: number): void { method webAppBaseUrl (line 462) | get webAppBaseUrl(): string { method isSelfHosted (line 478) | isSelfHosted(): boolean { method marketingHost (line 482) | get marketingHost(): string { method inviteHost (line 490) | get inviteHost(): string { method giftHost (line 498) | get giftHost(): string { method inviteUrlBase (line 506) | get inviteUrlBase(): string { method giftUrlBase (line 516) | get giftUrlBase(): string { method localInstanceDomain (line 526) | get localInstanceDomain(): string { function describeApiEndpoint (line 536) | function describeApiEndpoint(endpoint: string): string { FILE: fluxer_app/src/stores/RuntimeCrashStore.tsx function toError (line 25) | function toError(error: unknown): Error { class RuntimeCrashStore (line 37) | class RuntimeCrashStore { method constructor (line 40) | constructor() { method triggerFatalCrash (line 44) | triggerFatalCrash(error: unknown): Error { method reset (line 55) | reset(): void { FILE: fluxer_app/src/stores/SavedMessagesStore.tsx class SavedMessagesStore (line 28) | class SavedMessagesStore { method constructor (line 33) | constructor() { method isSaved (line 37) | isSaved(messageId: string): boolean { method getMissingEntries (line 44) | getMissingEntries(): Array { method fetchSuccess (line 48) | fetchSuccess(entries: ReadonlyArray): void { method fetchError (line 59) | fetchError(): void { method handleChannelDelete (line 65) | handleChannelDelete(channel: Channel): void { method handleMessageUpdate (line 70) | handleMessageUpdate(message: Message): void { method handleMessageDelete (line 81) | handleMessageDelete(messageId: string): void { method handleMessageCreate (line 86) | handleMessageCreate(message: Message): void { method updateMessageWithReaction (line 91) | private updateMessageWithReaction(messageId: string, updater: (message... method handleMessageReactionAdd (line 102) | handleMessageReactionAdd(messageId: string, userId: string, emoji: Rea... method handleMessageReactionRemove (line 108) | handleMessageReactionRemove(messageId: string, userId: string, emoji: ... method handleMessageReactionRemoveAll (line 114) | handleMessageReactionRemoveAll(messageId: string): void { method handleMessageReactionRemoveEmoji (line 118) | handleMessageReactionRemoveEmoji(messageId: string, emoji: ReactionEmo... FILE: fluxer_app/src/stores/ScheduledMessageEditorStore.tsx type ScheduledMessageEditState (line 23) | interface ScheduledMessageEditState { class ScheduledMessageEditorStore (line 31) | class ScheduledMessageEditorStore { method constructor (line 34) | constructor() { method startEditing (line 38) | startEditing(record: ScheduledMessageRecord): void { method stopEditing (line 48) | stopEditing(): void { method isEditingChannel (line 52) | isEditingChannel(channelId: string): boolean { method getEditingState (line 56) | getEditingState(): ScheduledMessageEditState | null { FILE: fluxer_app/src/stores/ScheduledMessagesStore.tsx class ScheduledMessagesStore (line 23) | class ScheduledMessagesStore { method constructor (line 28) | constructor() { method hasScheduledMessages (line 32) | get hasScheduledMessages(): boolean { method fetchStart (line 36) | fetchStart(): void { method fetchSuccess (line 40) | fetchSuccess(messages: Array): void { method fetchError (line 46) | fetchError(): void { method upsert (line 52) | upsert(message: ScheduledMessageRecord): void { method remove (line 63) | remove(messageId: string): void { function sortScheduledMessages (line 68) | function sortScheduledMessages(messages: Array):... FILE: fluxer_app/src/stores/SearchHistoryStore.tsx type SearchHistoryEntry (line 24) | interface SearchHistoryEntry { class SearchHistoryStoreImpl (line 30) | class SearchHistoryStoreImpl { method constructor (line 33) | constructor() { method getEntries (line 38) | private getEntries(channelId?: string): Array { method recent (line 43) | recent(channelId?: string): ReadonlyArray { method search (line 47) | search(term: string, channelId?: string): ReadonlyArray { method setupNavigationReaction (line 53) | private setupNavigationReaction(): void { method normalizeGuildId (line 69) | private normalizeGuildId(guildId: string | null | undefined): string |... method getCurrentGuildId (line 75) | private getCurrentGuildId(): string | null { method currentChannelId (line 79) | get currentChannelId(): string | null { method migrateRecentVisits (line 86) | private migrateRecentVisits(): void { method getSortedRecentVisits (line 93) | private getSortedRecentVisits(): Array { method recentChannels (line 97) | get recentChannels(): ReadonlyArray { method recentChannelVisits (line 103) | get recentChannelVisits(): ReadonlyArray<{channelId: string; guildId: ... method selectChannel (line 110) | selectChannel(guildId?: string, channelId?: string | null): void { method updateRecentVisit (line 123) | private updateRecentVisit(guildId: string, channelId: string): void { method pruneRecentVisits (line 140) | private pruneRecentVisits(): void { method deselectChannel (line 151) | deselectChannel(): void { method clearGuildSelection (line 159) | clearGuildSelection(guildId: string): void { method handleChannelDelete (line 166) | handleChannelDelete(channel: Channel): void { method removeGuildSelection (line 177) | private removeGuildSelection(guildId: string): void { method getValidatedFavoritesChannel (line 182) | getValidatedFavoritesChannel(): string | null { FILE: fluxer_app/src/stores/SelectedGuildStore.tsx constant FAVORITES_ROUTE_ID (line 25) | const FAVORITES_ROUTE_ID = '@favorites'; class SelectedGuildStore (line 27) | class SelectedGuildStore { method constructor (line 35) | constructor() { method initPersistence (line 41) | private async initPersistence(): Promise { method setupNavigationReaction (line 46) | private setupNavigationReaction(): void { method normalizeGuildFromNavigation (line 64) | private normalizeGuildFromNavigation(guildId: string | null): string |... method selectGuild (line 72) | selectGuild(guildId: string, _forceSync = false): void { method syncCurrentGuild (line 81) | syncCurrentGuild(): void { method deselectGuild (line 86) | deselectGuild(): void { method applyNavigationGuild (line 90) | private applyNavigationGuild(guildId: string): void { method setGuild (line 94) | private setGuild(guildId: string, options?: {forceNonce?: boolean}): v... method clearSelection (line 108) | private clearSelection(): void { method bumpNonce (line 118) | private bumpNonce(): void { FILE: fluxer_app/src/stores/SettingsSidebarStore.tsx class SettingsSidebarStore (line 23) | class SettingsSidebarStore { method constructor (line 29) | constructor() { method hasOverride (line 33) | get hasOverride(): boolean { method setOverride (line 37) | setOverride(ownerId: string, content: React.ReactNode, options?: {defa... method updateOverride (line 44) | updateOverride(ownerId: string, content: React.ReactNode): void { method clearOverride (line 49) | clearOverride(ownerId?: string): void { method dismissOverride (line 57) | dismissOverride(ownerId?: string): void { method setUseOverride (line 64) | setUseOverride(value: boolean): void { method activateOverride (line 75) | activateOverride(ownerId?: string): void { method isDismissed (line 82) | isDismissed(ownerId?: string): boolean { FILE: fluxer_app/src/stores/SlowmodeStore.tsx class SlowmodeStore (line 23) | class SlowmodeStore { method constructor (line 26) | constructor() { method initPersistence (line 31) | private async initPersistence(): Promise { method recordMessageSend (line 35) | recordMessageSend(channelId: string): void { method updateSlowmodeTimestamp (line 42) | updateSlowmodeTimestamp(channelId: string, timestamp: number): void { method deleteChannel (line 53) | deleteChannel(channelId: string): void { method getLastSendTimestamp (line 62) | getLastSendTimestamp(channelId: string): number | null { method getSlowmodeRemaining (line 66) | getSlowmodeRemaining(channelId: string, rateLimitPerUser: number): num... FILE: fluxer_app/src/stores/SoundStore.tsx type SoundSettings (line 26) | interface SoundSettings { class SoundStore (line 31) | class SoundStore { method constructor (line 45) | constructor() { method initPersistence (line 63) | private async initPersistence(): Promise { method playSound (line 67) | playSound(sound: SoundType, loop = false): void { method stopSound (line 111) | stopSound(sound: SoundType): void { method stopAllSounds (line 121) | stopAllSounds(): void { method startIncomingRing (line 130) | startIncomingRing(): void { method stopIncomingRing (line 141) | stopIncomingRing(): void { method isSoundEnabled (line 146) | private isSoundEnabled(soundType: SoundType): boolean { method toggleEnabled (line 150) | toggleEnabled(): void { method updateSettings (line 160) | updateSettings(settings: {allSoundsDisabled?: boolean; soundType?: Sou... method setVolume (line 189) | setVolume(volume: number): void { method getSoundEnabled (line 193) | getSoundEnabled(): boolean { method getSoundSettings (line 197) | getSoundSettings(): SoundSettings { method isSoundTypeEnabled (line 201) | isSoundTypeEnabled(soundType: SoundType): boolean { method getVolume (line 205) | getVolume(): number { method isIncomingCallActive (line 209) | isIncomingCallActive(): boolean { method isPlayingSound (line 213) | isPlayingSound(sound: SoundType): boolean { method bumpLoopToken (line 217) | private bumpLoopToken(sound: SoundType): number { method getLoopToken (line 223) | private getLoopToken(sound: SoundType): number { method queuePendingLoopSound (line 227) | private queuePendingLoopSound(sound: SoundType): void { method clearPendingLoopSound (line 235) | private clearPendingLoopSound(sound: SoundType): void { method clearPendingLoopSounds (line 241) | private clearPendingLoopSounds(): void { method attachUnlockListeners (line 246) | private attachUnlockListeners(): void { method detachUnlockListenersIfIdle (line 255) | private detachUnlockListenersIfIdle(): void { method detachUnlockListeners (line 262) | private detachUnlockListeners(): void { method handleAutoplayUnlock (line 271) | private handleAutoplayUnlock(): void { method retryPendingLoopSounds (line 275) | private retryPendingLoopSounds(): void { FILE: fluxer_app/src/stores/SpellcheckStore.tsx constant STORAGE_KEY (line 24) | const STORAGE_KEY = 'SpellcheckStore'; class SpellcheckStore (line 26) | class SpellcheckStore { method constructor (line 33) | constructor() { method initialize (line 38) | private async initialize(): Promise { method attachElectronListener (line 48) | private attachElectronListener(): void { method refreshAvailableLanguages (line 60) | async refreshAvailableLanguages(): Promise { method pushToElectron (line 69) | async pushToElectron(): Promise { method setEnabled (line 80) | setEnabled(enabled: boolean): void { method setLanguages (line 85) | setLanguages(languages: Array): void { FILE: fluxer_app/src/stores/StatusExpiryStore.tsx class StatusExpiryStore (line 28) | class StatusExpiryStore { method constructor (line 33) | constructor() { method activeExpiresAt (line 56) | get activeExpiresAt(): number | null { method activeFallbackStatus (line 64) | get activeFallbackStatus(): StatusType { method setActiveStatusExpiry (line 83) | setActiveStatusExpiry({ method clearStatusExpiry (line 115) | clearStatusExpiry(): void { method handleActiveUserChange (line 122) | handleActiveUserChange(userId: string | null): void { method scheduleTimer (line 127) | private scheduleTimer(): void { method handleExpiry (line 149) | private async handleExpiry(): Promise { FILE: fluxer_app/src/stores/StickerPickerStore.tsx type StickerUsageEntry (line 26) | type StickerUsageEntry = Readonly<{ constant MAX_FRECENT_STICKERS (line 31) | const MAX_FRECENT_STICKERS = 21; constant FRECENCY_TIME_DECAY_HOURS (line 32) | const FRECENCY_TIME_DECAY_HOURS = 24 * 7; class StickerPickerStore (line 36) | class StickerPickerStore { method constructor (line 41) | constructor() { method initPersistence (line 46) | private async initPersistence(): Promise { method trackStickerUsage (line 50) | trackStickerUsage(stickerKey: string): void { method toggleFavorite (line 61) | toggleFavorite(stickerKey: string): void { method toggleCategory (line 75) | toggleCategory(category: string): void { method isFavorite (line 89) | isFavorite(sticker: GuildStickerRecord): boolean { method isCategoryCollapsed (line 93) | isCategoryCollapsed(categoryId: string): boolean { method getFrecencyScore (line 97) | private getFrecencyScore(entry: StickerUsageEntry): number { method getFrecentStickers (line 104) | getFrecentStickers( method getFavoriteStickers (line 125) | getFavoriteStickers(allStickers: ReadonlyArray): A... method getFrecencyScoreForSticker (line 137) | getFrecencyScoreForSticker(sticker: GuildStickerRecord): number { method getStickerKey (line 142) | private getStickerKey(sticker: GuildStickerRecord): string { FILE: fluxer_app/src/stores/StickerStore.tsx type GuildStickerContext (line 30) | interface GuildStickerContext { type GuildStickersPayload (line 34) | interface GuildStickersPayload { class StickerStore (line 39) | class StickerStore { method constructor (line 43) | constructor() { method getGuildStickers (line 47) | getGuildStickers(guildId: string): ReadonlyArray { method getSticker (line 51) | getSticker(guildId: string, stickerId: string): GuildStickerRecord | n... method getStickerById (line 55) | getStickerById(stickerId: string): GuildStickerRecord | null { method getAllStickers (line 59) | getAllStickers(): ReadonlyArray { method search (line 67) | search(guildId: string | null, searchTerm: string): ReadonlyArray): void { method handleGuildUpdate (line 139) | handleGuildUpdate(guild: GuildStickersPayload): void { method handleGuildStickersUpdate (line 147) | handleGuildStickersUpdate(guildId: string, stickers: ReadonlyArray): R... FILE: fluxer_app/src/stores/StreamAudioPrefsStore.tsx type StreamAudioPrefsEntry (line 28) | interface StreamAudioPrefsEntry { class StreamAudioPrefsStore (line 34) | class StreamAudioPrefsStore { method constructor (line 38) | constructor() { method initPersistence (line 48) | private async initPersistence(): Promise { method hasEntry (line 52) | hasEntry(streamKey: string): boolean { method getVolume (line 56) | getVolume(streamKey: string): number { method isMuted (line 60) | isMuted(streamKey: string): boolean { method setVolume (line 64) | setVolume(streamKey: string, volume: number): void { method setMuted (line 83) | setMuted(streamKey: string, muted: boolean): void { method touchStream (line 101) | touchStream(streamKey: string): void { method startPruneInterval (line 116) | private startPruneInterval(): void { method pruneExpiredEntries (line 126) | private pruneExpiredEntries(): void { FILE: fluxer_app/src/stores/SudoPromptStore.tsx type SudoRequestContext (line 32) | interface SudoRequestContext { type SudoVerificationMethod (line 36) | enum SudoVerificationMethod { function isAbortError (line 43) | function isAbortError(error: unknown): boolean { constant SUDO_MODAL_KEY (line 53) | const SUDO_MODAL_KEY = 'sudo-verification-modal'; class SudoPromptStore (line 55) | class SudoPromptStore { method constructor (line 75) | constructor() { method init (line 79) | init(): void { method requestVerification (line 85) | requestVerification(context: SudoRequestContext = {method: 'POST', url... method pushModal (line 97) | private pushModal(): void { method handleSudoRequest (line 104) | private async handleSudoRequest(config: HttpRequestConfig): Promise { method submit (line 147) | submit(payload: SudoVerificationPayload): void { method reject (line 159) | reject(reason?: unknown): void { method handleTokenReceived (line 166) | handleTokenReceived(_token: string | null): void { method cleanup (line 189) | private cleanup(): void { FILE: fluxer_app/src/stores/SudoStore.tsx class SudoStore (line 24) | class SudoStore { method constructor (line 28) | constructor() { method init (line 32) | init(): void { method hasValidTokenFlag (line 45) | get hasValidTokenFlag(): boolean { method setToken (line 56) | setToken(token: string): void { method clearToken (line 61) | clearToken(): void { method hasValidToken (line 66) | hasValidToken(): boolean { FILE: fluxer_app/src/stores/TextualPreviewStore.tsx class TextualPreviewStore (line 23) | class TextualPreviewStore { method constructor (line 26) | constructor() { method toggleWrapText (line 31) | toggleWrapText(): void { FILE: fluxer_app/src/stores/ThemeStore.tsx type ExplicitTheme (line 25) | type ExplicitTheme = typeof ThemeTypes.DARK | typeof ThemeTypes.LIGHT | ... constant EXPLICIT_THEMES (line 26) | const EXPLICIT_THEMES = new Set([ThemeTypes.DARK, ThemeTypes.LIG... constant VALID_THEMES (line 27) | const VALID_THEMES = new Set(Object.values(ThemeTypes)); constant STORAGE_KEY (line 28) | const STORAGE_KEY = 'theme'; function isExplicitTheme (line 30) | function isExplicitTheme(theme: string | null | undefined): theme is Exp... function isValidTheme (line 34) | function isValidTheme(theme: string | null | undefined): theme is ThemeT... function loadThemeFromLocalStorage (line 38) | function loadThemeFromLocalStorage(): ExplicitTheme | null { function persistThemeToLocalStorage (line 47) | function persistThemeToLocalStorage(theme: string): void { class ThemeStore (line 55) | class ThemeStore { method constructor (line 68) | constructor() { method isHydrated (line 74) | get isHydrated(): boolean { method themePreference (line 78) | get themePreference(): ThemeType { method effectiveTheme (line 82) | get effectiveTheme(): ExplicitTheme { method setTheme (line 97) | setTheme(theme: ThemeType): void { method setSyncAcrossDevices (line 115) | setSyncAcrossDevices(sync: boolean): void { method updateServerTheme (line 130) | updateServerTheme(theme: string | null | undefined): void { method initSystemThemeDetection (line 135) | private initSystemThemeDetection(): void { method initPersistence (line 148) | private async initPersistence(): Promise { method destroy (line 162) | destroy(): void { FILE: fluxer_app/src/stores/ToastStore.tsx type ToastEntry (line 26) | interface ToastEntry { class ToastStore (line 31) | class ToastStore { method constructor (line 34) | constructor() { method createToast (line 44) | createToast(data: ToastProps): string { method destroyToast (line 51) | destroyToast(id: string): void { method success (line 58) | success(message: string): string { method error (line 62) | error(message: string): string { method getCurrentToast (line 66) | getCurrentToast() { method hasToast (line 70) | hasToast(id: string): boolean { method getToast (line 74) | getToast(id: string): ToastProps | undefined { FILE: fluxer_app/src/stores/TransientPresenceStore.tsx constant PRESENCE_TTL_MS (line 25) | const PRESENCE_TTL_MS = 5 * 60 * 1000; constant CLEANUP_INTERVAL_MS (line 26) | const CLEANUP_INTERVAL_MS = 60 * 1000; type TransientPresence (line 28) | interface TransientPresence { class TransientPresenceStoreClass (line 33) | class TransientPresenceStoreClass { method constructor (line 37) | constructor() { method startCleanup (line 42) | private startCleanup(): void { method pruneStale (line 49) | private pruneStale(): void { method updatePresence (line 60) | updatePresence(userId: string, status: StatusType): void { method updatePresences (line 67) | updatePresences(presences: Array<{userId: string; status: StatusType}>... method getStatus (line 76) | getStatus(userId: string): StatusType { method getTransientStatus (line 90) | getTransientStatus(userId: string): StatusType | null { method hasTransientPresence (line 98) | hasTransientPresence(userId: string): boolean { method clear (line 103) | clear(): void { method cleanup (line 107) | cleanup(): void { FILE: fluxer_app/src/stores/TrustedDomainStore.tsx constant IMPLICITLY_TRUSTED_DOMAINS (line 23) | const IMPLICITLY_TRUSTED_DOMAINS = [ constant TRUSTED_DOMAINS_LOCALSTORAGE_KEY (line 32) | const TRUSTED_DOMAINS_LOCALSTORAGE_KEY = 'TrustedDomainStore'; class TrustedDomainStore (line 34) | class TrustedDomainStore { method constructor (line 37) | constructor() { method trustedDomains (line 41) | get trustedDomains(): ReadonlyArray { method trustAllDomains (line 45) | get trustAllDomains(): boolean { method checkAndMigrateLegacyData (line 49) | async checkAndMigrateLegacyData(): Promise { method addTrustedDomain (line 67) | async addTrustedDomain(domain: string): Promise { method removeTrustedDomain (line 78) | async removeTrustedDomain(domain: string): Promise { method clearAllTrustedDomains (line 87) | async clearAllTrustedDomains(): Promise { method setTrustAllDomains (line 91) | async setTrustAllDomains(trustAll: boolean): Promise { method isTrustedDomain (line 99) | isTrustedDomain(hostname: string): boolean { method matchesDomainPattern (line 112) | private matchesDomainPattern(hostname: string, pattern: string): boole... method getTrustedDomains (line 120) | getTrustedDomains(): ReadonlyArray { method getTrustedDomainsCount (line 124) | getTrustedDomainsCount(): number { FILE: fluxer_app/src/stores/TypingStore.tsx type TypingUser (line 23) | type TypingUser = Readonly<{ constant TYPING_TIMEOUT (line 28) | const TYPING_TIMEOUT = 10_000; class TypingStore (line 30) | class TypingStore { method constructor (line 33) | constructor() { method getTypingUsers (line 37) | getTypingUsers(channelId: string): ReadonlyArray { method isTyping (line 41) | isTyping(channelId: string, userId: string): boolean { method getCount (line 45) | getCount(channelId: string): number { method reset (line 50) | reset(): void { method startTyping (line 56) | startTyping(channelId: string, userId: string): void { method stopTyping (line 75) | stopTyping(channelId: string, userId: string): void { method stopTypingOnMessageCreate (line 90) | stopTypingOnMessageCreate(message: Message): void { method scheduleClear (line 94) | private scheduleClear(channelId: string, userId: string): NodeJS.Timeo... method clearAllTimeouts (line 98) | private clearAllTimeouts(): void { FILE: fluxer_app/src/stores/UnreadChannelsStore.tsx class UnreadChannelsStore (line 23) | class UnreadChannelsStore { method constructor (line 26) | constructor() { method initPersistence (line 31) | private async initPersistence(): Promise { method isCollapsed (line 35) | isCollapsed(channelId: string): boolean { method setCollapsed (line 39) | setCollapsed(channelId: string, collapsed: boolean): void { method toggleCollapsed (line 49) | toggleCollapsed(channelId: string): void { FILE: fluxer_app/src/stores/UnsavedChangesStore.tsx type TabData (line 22) | interface TabData { class UnsavedChangesStore (line 28) | class UnsavedChangesStore { method constructor (line 33) | constructor() { method setUnsavedChanges (line 37) | setUnsavedChanges(tabId: string, hasChanges: boolean): void { method triggerFlash (line 44) | triggerFlash(tabId: string): void { method clearUnsavedChanges (line 51) | clearUnsavedChanges(tabId: string): void { method setTabData (line 58) | setTabData(tabId: string, data: TabData): void { method hasUnsavedChanges (line 65) | hasUnsavedChanges(tabId: string): boolean { method getFlashTrigger (line 69) | getFlashTrigger(tabId: string): number { method getTabData (line 73) | getTabData(tabId: string): TabData { FILE: fluxer_app/src/stores/UpdaterStore.tsx constant CHECK_INTERVAL_MS (line 29) | const CHECK_INTERVAL_MS = 30 * 60 * 1000; constant MIN_CHECK_INTERVAL_MS (line 30) | const MIN_CHECK_INTERVAL_MS = 60 * 1000; constant VERSION_ENDPOINT (line 31) | const VERSION_ENDPOINT = '/version.json'; constant CURRENT_BUILD_SHA (line 32) | const CURRENT_BUILD_SHA = Config.PUBLIC_BUILD_SHA ?? null; constant ALLOWED_WEB_UPDATE_HOSTS (line 33) | const ALLOWED_WEB_UPDATE_HOSTS = new Set(['web.fluxer.app', 'web.canary.... type UpdaterState (line 35) | type UpdaterState = 'idle' | 'checking' | 'available'; type UpdateType (line 37) | type UpdateType = 'native' | 'web' | 'both' | null; type NativeUpdateInfo (line 39) | interface NativeUpdateInfo { type WebUpdateInfo (line 45) | interface WebUpdateInfo { type UpdateInfo (line 51) | interface UpdateInfo { class UpdaterStoreImpl (line 56) | class UpdaterStoreImpl { method constructor (line 73) | constructor() { method hasUpdate (line 80) | get hasUpdate(): boolean { method nativeUpdatePending (line 84) | get nativeUpdatePending(): boolean { method nativeUpdateReady (line 88) | get nativeUpdateReady(): boolean { method state (line 92) | get state(): UpdaterState { method isChecking (line 98) | get isChecking(): boolean { method displayVersion (line 102) | get displayVersion(): string | null { method refreshUpdateType (line 115) | private refreshUpdateType(): void { method bootstrap (line 130) | private async bootstrap(): Promise { method bootstrapNative (line 138) | private async bootstrapNative(): Promise { method subscribeToNativeEvents (line 152) | private subscribeToNativeEvents(): void { method handleNativeEvent (line 161) | private handleNativeEvent(event: UpdaterEvent): void { method startBackgroundChecks (line 232) | private startBackgroundChecks(): void { method shouldThrottle (line 252) | private shouldThrottle(force: boolean): boolean { method shouldRunNativeCheck (line 258) | private shouldRunNativeCheck(): boolean { method checkForUpdates (line 262) | async checkForUpdates(force = false): Promise { method checkNativeUpdate (line 301) | private async checkNativeUpdate(context: 'user' | 'background'): Promi... method checkWebUpdate (line 314) | private async checkWebUpdate(): Promise<{available: boolean; sha: stri... method applyUpdate (line 343) | async applyUpdate(): Promise { method reset (line 361) | reset(): void { method dispose (line 375) | dispose(): void { FILE: fluxer_app/src/stores/UserConnectionStore.tsx class UserConnectionStore (line 25) | class UserConnectionStore { method constructor (line 29) | constructor() { method setConnections (line 33) | setConnections(connections: ReadonlyArray): void { method addConnection (line 41) | addConnection(connection: ConnectionResponse): void { method updateConnection (line 45) | updateConnection(id: string, data: Partial): void { method removeConnection (line 56) | removeConnection(id: string): void { method getConnections (line 60) | getConnections(): ReadonlyArray { method getConnection (line 64) | getConnection(id: string): ConnectionRecord | undefined { method hasConnectionByTypeAndName (line 68) | hasConnectionByTypeAndName(type: ConnectionType, name: string): boolean { method reset (line 78) | reset(): void { FILE: fluxer_app/src/stores/UserGuildSettingsStore.tsx constant PRIVATE_CHANNEL_SENTINEL (line 29) | const PRIVATE_CHANNEL_SENTINEL: string = ME; type ChannelOverride (line 34) | interface ChannelOverride { type GuildSettings (line 45) | interface GuildSettings { type GatewayGuildSettings (line 62) | interface GatewayGuildSettings { constant DEFAULT_GUILD_SETTINGS (line 79) | const DEFAULT_GUILD_SETTINGS: Omit = { function parseEndTime (line 100) | function parseEndTime(end_time?: string): number | null { function isMuted (line 106) | function isMuted(config: {muted?: boolean; mute_config?: {end_time?: str... class UserGuildSettingsStore (line 114) | class UserGuildSettingsStore { method constructor (line 123) | constructor() { method version (line 135) | get version(): number { method storageKeyFor (line 139) | private storageKeyFor(guildId: string | null): string { method notifyChange (line 143) | private notifyChange(): void { method markGuildUpdated (line 147) | private markGuildUpdated(guildId: string | null): void { method getDefaultSettings (line 151) | private getDefaultSettings(guildId: string): GuildSettings { method getGuildSettings (line 161) | getGuildSettings(guildId: string | null): GuildSettings { method getSettings (line 171) | getSettings(guildId: string | null): GuildSettings { method normalizeOverride (line 175) | private normalizeOverride(channelId: string, override?: Partial { method getStoredGuildMessageNotifications (line 410) | getStoredGuildMessageNotifications(guildId: string): number { method getChannelOverrides (line 414) | getChannelOverrides(guildId: string | null): Record { method isChannelCollapsed (line 453) | isChannelCollapsed(guildId: string | null, channelId: string): boolean { method resolvedMessageNotifications (line 457) | resolvedMessageNotifications(channel: {id: string; guildId?: string; p... method resolveUnreadSetting (line 471) | resolveUnreadSetting(channel: {id: string; guildId?: string; parentId?... method allowNoMessages (line 476) | allowNoMessages(channel: {id: string; guildId?: string; parentId?: str... method allowAllMessages (line 483) | allowAllMessages(channel: {id: string; guildId?: string; parentId?: st... method handleConnectionOpen (line 490) | handleConnectionOpen(userGuildSettings: Array): ... method handleGuildSettingsUpdate (line 502) | handleGuildSettingsUpdate(action: {guildId: string; settings: Partial<... method handleChannelSettingsUpdate (line 506) | handleChannelSettingsUpdate(action: {guildId: string; channelId: strin... method handleBulkChannelSettingsUpdate (line 510) | handleBulkChannelSettingsUpdate(action: { method handleUserGuildSettingsUpdate (line 517) | handleUserGuildSettingsUpdate(data: GatewayGuildSettings): void { method handleGuildCreate (line 521) | handleGuildCreate(data: {id: string}): void { method consumePendingGuildUpdates (line 527) | consumePendingGuildUpdates(): Array { method subscribe (line 534) | subscribe(callback: () => void): () => void { FILE: fluxer_app/src/stores/UserNoteStore.tsx class UserNoteStore (line 25) | class UserNoteStore { method constructor (line 28) | constructor() { method loadNotes (line 32) | loadNotes(notes: Record): void { method updateUserNote (line 37) | updateUserNote(userId: string, note: string): void { method clearNote (line 51) | clearNote(userId: string): void { method getUserNote (line 55) | getUserNote(userId: string): string { method hasNote (line 59) | hasNote(userId: string): boolean { FILE: fluxer_app/src/stores/UserPinnedDMStore.tsx class UserPinnedDMStore (line 25) | class UserPinnedDMStore { method constructor (line 28) | constructor() { method setPinnedDMs (line 32) | setPinnedDMs(pinnedDMs: Array): void { method isPinned (line 37) | isPinned(channelId: string): boolean { method getPinIndex (line 41) | getPinIndex(channelId: string): number { method pinnedDMs (line 45) | get pinnedDMs() { FILE: fluxer_app/src/stores/UserProfileMobileStore.tsx type UserProfileMobileState (line 24) | interface UserProfileMobileState { class UserProfileMobileStore (line 30) | class UserProfileMobileStore { method constructor (line 36) | constructor() { method isOpen (line 40) | get isOpen(): boolean { method open (line 44) | open(userId: string, guildId?: string, autoFocusNote?: boolean): void { method close (line 53) | close(): void { FILE: fluxer_app/src/stores/UserProfileStore.tsx type ProfilesByGuildId (line 26) | type ProfilesByGuildId = Record; constant PROFILE_TIMEOUT_MS (line 28) | const PROFILE_TIMEOUT_MS = 60_000; class UserProfileStore (line 30) | class UserProfileStore { method constructor (line 35) | constructor() { method getProfile (line 39) | getProfile(userId: string, guildId?: string): ProfileRecord | null { method handleConnectionOpen (line 43) | handleConnectionOpen(): void { method handleProfileInvalidate (line 49) | handleProfileInvalidate(userId: string, guildId?: string): void { method handleProfileCreate (line 70) | handleProfileCreate(profile: ProfileRecord): void { method handleProfilesClear (line 89) | handleProfilesClear(): void { method createTimeoutKey (line 114) | private createTimeoutKey(userId: string, guildId: string): string { method clearProfileTimeout (line 118) | private clearProfileTimeout(userId: string, guildId: string): void { method setProfileTimeout (line 129) | private setProfileTimeout(userId: string, guildId: string): void { FILE: fluxer_app/src/stores/UserSettingsStore.tsx type GuildFolder (line 43) | interface GuildFolder { type UserSettings (line 52) | interface UserSettings { function convertKeysToCamelCaseInternal (line 86) | function convertKeysToCamelCaseInternal(value: unknown): unknown { function convertKeysToCamelCase (line 102) | function convertKeysToCamelCase(obj: unknown): T { function convertKeysToSnakeCaseInternal (line 106) | function convertKeysToSnakeCaseInternal(value: unknown): unknown { function convertKeysToSnakeCase (line 122) | function convertKeysToSnakeCase(obj: unknown): T { class UserSettingsStore (line 126) | class UserSettingsStore { method constructor (line 158) | constructor() { method getFlags (line 162) | getFlags(): number { method getStatus (line 166) | getStatus(): StatusType { method getStatusResetsAt (line 170) | getStatusResetsAt(): string | null { method getStatusResetsTo (line 174) | getStatusResetsTo(): string | null { method getTimeFormat (line 178) | getTimeFormat(): number { method getGuildPositions (line 182) | getGuildPositions(): ReadonlyArray { method getLocale (line 186) | getLocale(): string { method getRestrictedGuilds (line 190) | getRestrictedGuilds(): ReadonlyArray { method getBotRestrictedGuilds (line 194) | getBotRestrictedGuilds(): ReadonlyArray { method getBotDefaultGuildsRestricted (line 198) | getBotDefaultGuildsRestricted(): boolean { method getDefaultGuildsRestricted (line 202) | getDefaultGuildsRestricted(): boolean { method getInlineAttachmentMedia (line 206) | getInlineAttachmentMedia(): boolean { method getInlineEmbedMedia (line 210) | getInlineEmbedMedia(): boolean { method getGifAutoPlay (line 214) | getGifAutoPlay(): boolean { method getRenderEmbeds (line 224) | getRenderEmbeds(): boolean { method getRenderReactions (line 228) | getRenderReactions(): boolean { method getAnimateEmoji (line 232) | getAnimateEmoji(): boolean { method getAnimateStickers (line 241) | getAnimateStickers(): number { method getRenderSpoilers (line 251) | getRenderSpoilers(): number { method getMessageDisplayCompact (line 255) | getMessageDisplayCompact(): boolean { method getFriendSourceFlags (line 262) | getFriendSourceFlags(): number { method getIncomingCallFlags (line 266) | getIncomingCallFlags(): number { method getGroupDmAddPermissionFlags (line 270) | getGroupDmAddPermissionFlags(): number { method getGuildFolders (line 274) | getGuildFolders(): ReadonlyArray { method getCustomStatus (line 278) | getCustomStatus(): CustomStatus | null { method getAfkTimeout (line 282) | getAfkTimeout(): number { method getDeveloperMode (line 286) | getDeveloperMode(): boolean { method getTrustedDomains (line 290) | getTrustedDomains(): ReadonlyArray { method trustAllDomains (line 294) | trustAllDomains(): boolean { method getDefaultHideMutedChannels (line 298) | getDefaultHideMutedChannels(): boolean { method isHydrated (line 302) | isHydrated(): boolean { method setStatus (line 307) | setStatus(status: StatusType): void { method handleConnectionOpen (line 312) | handleConnectionOpen(userSettings: unknown): void { method updateUserSettings (line 316) | updateUserSettings(userSettings: unknown, options: {hydrate?: boolean}... method snapshot (line 402) | private get snapshot(): UserSettings { method subscribe (line 439) | subscribe(callback: () => void): () => void { method saveSettings (line 457) | async saveSettings(settings: Partial): Promise { FILE: fluxer_app/src/stores/UserStore.tsx class UserStore (line 26) | class UserStore { method constructor (line 29) | constructor() { method currentUser (line 33) | get currentUser(): UserRecord | null { method currentUserId (line 41) | get currentUserId(): string | null { method usersList (line 45) | get usersList(): ReadonlyArray { method getUser (line 49) | getUser(userId: string): UserRecord | undefined { method getCurrentUser (line 53) | getCurrentUser(): UserRecord | undefined { method getUserByTag (line 57) | getUserByTag(tag: string): UserRecord | undefined { method getUsers (line 61) | getUsers(): ReadonlyArray { method handleConnectionOpen (line 66) | handleConnectionOpen(currentUser: UserPrivate): void { method handleUserUpdate (line 81) | handleUserUpdate(user: User, options?: {clearMissingOptionalFields?: b... method cacheUsers (line 90) | cacheUsers(users: Array): void { method subscribe (line 105) | subscribe(callback: () => void): () => void { FILE: fluxer_app/src/stores/VideoVolumeStore.tsx constant DEFAULT_VOLUME (line 23) | const DEFAULT_VOLUME = 1; class VideoVolumeStore (line 25) | class VideoVolumeStore { method constructor (line 30) | constructor() { method initPersistence (line 35) | private async initPersistence(): Promise { method setVolume (line 42) | setVolume(newVolume: number): void { method toggleMute (line 53) | toggleMute(): void { method setMuted (line 64) | setMuted(muted: boolean): void { method effectiveVolume (line 71) | get effectiveVolume(): number { FILE: fluxer_app/src/stores/VoiceCallLayoutStore.tsx type LayoutMode (line 23) | type LayoutMode = 'grid' | 'focus'; type PinnedParticipantSource (line 24) | type PinnedParticipantSource = Track.Source | null; class VoiceCallLayoutStore (line 26) | class VoiceCallLayoutStore { method constructor (line 32) | constructor() { method getLayoutMode (line 36) | getLayoutMode(): LayoutMode { method getPinnedParticipantIdentity (line 40) | getPinnedParticipantIdentity(): string | null { method getPinnedParticipantSource (line 44) | getPinnedParticipantSource(): PinnedParticipantSource { method setLayoutMode (line 48) | setLayoutMode(mode: LayoutMode): void { method setPinnedParticipant (line 52) | setPinnedParticipant(identity: string | null, source: PinnedParticipan... method setUserOverride (line 58) | setUserOverride(value: boolean): void { method markUserOverride (line 62) | markUserOverride(): void { method toggleLayoutMode (line 66) | toggleLayoutMode(): void { method clearPinnedParticipant (line 75) | clearPinnedParticipant(): void { method reset (line 81) | reset(): void { FILE: fluxer_app/src/stores/VoicePromptsStore.tsx class VoicePromptsStore (line 23) | class VoicePromptsStore { method constructor (line 27) | constructor() { method initPersistence (line 36) | private async initPersistence(): Promise { method getSkipHideOwnCameraConfirm (line 40) | getSkipHideOwnCameraConfirm(): boolean { method setSkipHideOwnCameraConfirm (line 44) | setSkipHideOwnCameraConfirm(value: boolean): void { method getSkipHideOwnScreenShareConfirm (line 48) | getSkipHideOwnScreenShareConfirm(): boolean { method setSkipHideOwnScreenShareConfirm (line 52) | setSkipHideOwnScreenShareConfirm(value: boolean): void { FILE: fluxer_app/src/stores/VoiceSettingsStore.tsx type BackgroundImage (line 26) | interface BackgroundImage { constant NONE_BACKGROUND_ID (line 31) | const NONE_BACKGROUND_ID = 'none'; constant BLUR_BACKGROUND_ID (line 32) | const BLUR_BACKGROUND_ID = 'blur'; type CameraResolution (line 34) | type CameraResolution = 'low' | 'medium' | 'high'; type ScreenshareResolution (line 35) | type ScreenshareResolution = 'low' | 'medium' | 'high' | 'ultra' | '4k'; type VoiceSettingsUpdate (line 37) | type VoiceSettingsUpdate = Partial<{ class VoiceSettingsStore (line 63) | class VoiceSettingsStore { method constructor (line 88) | constructor() { method initPersistence (line 121) | private async initPersistence(): Promise { method showVoiceConnectionId (line 148) | get showVoiceConnectionId(): boolean { method showVoiceConnectionId (line 152) | set showVoiceConnectionId(value: boolean) { method pauseOwnScreenSharePreviewOnUnfocus (line 156) | get pauseOwnScreenSharePreviewOnUnfocus(): boolean { method pauseOwnScreenSharePreviewOnUnfocus (line 160) | set pauseOwnScreenSharePreviewOnUnfocus(value: boolean) { method handleConnectionOpen (line 164) | handleConnectionOpen(_user: UserPrivate): void { method handleUserUpdate (line 172) | handleUserUpdate(user: Partial): void { method sanitizePremiumSettings (line 184) | private sanitizePremiumSettings(): void { method hasHigherVideoQuality (line 202) | private hasHigherVideoQuality(): boolean { method getInputDeviceId (line 215) | getInputDeviceId(): string { method getOutputDeviceId (line 219) | getOutputDeviceId(): string { method getVideoDeviceId (line 223) | getVideoDeviceId(): string { method getInputVolume (line 227) | getInputVolume(): number { method getOutputVolume (line 231) | getOutputVolume(): number { method getEchoCancellation (line 235) | getEchoCancellation(): boolean { method getNoiseSuppression (line 239) | getNoiseSuppression(): boolean { method getAutoGainControl (line 243) | getAutoGainControl(): boolean { method getCameraResolution (line 247) | getCameraResolution(): CameraResolution { method getScreenshareResolution (line 251) | getScreenshareResolution(): ScreenshareResolution { method getVideoFrameRate (line 255) | getVideoFrameRate(): number { method getBackgroundImageId (line 259) | getBackgroundImageId(): string { method getBackgroundImages (line 263) | getBackgroundImages(): ReadonlyArray { method getShowGridView (line 267) | getShowGridView(): boolean { method getShowMyOwnCamera (line 271) | getShowMyOwnCamera(): boolean { method getShowMyOwnScreenShare (line 275) | getShowMyOwnScreenShare(): boolean { method getShowNonVideoParticipants (line 279) | getShowNonVideoParticipants(): boolean { method getShowParticipantsCarousel (line 283) | getShowParticipantsCarousel(): boolean { method getShowVoiceConnectionAvatarStack (line 287) | getShowVoiceConnectionAvatarStack(): boolean { method getShowVoiceConnectionId (line 291) | getShowVoiceConnectionId(): boolean { method getDisablePictureInPicturePopout (line 295) | getDisablePictureInPicturePopout(): boolean { method getPauseOwnScreenSharePreviewOnUnfocus (line 299) | getPauseOwnScreenSharePreviewOnUnfocus(): boolean { method getScreenShareHardwareAcceleration (line 303) | getScreenShareHardwareAcceleration(): boolean { method updateSettings (line 307) | updateSettings(data: VoiceSettingsUpdate): void { method validateSettings (line 341) | private validateSettings(data: VoiceSettingsUpdate): VoiceSettingsUpda... FILE: fluxer_app/src/stores/WebhookStore.tsx type FetchStatus (line 24) | type FetchStatus = 'idle' | 'pending' | 'success' | 'error'; class WebhookStore (line 26) | class WebhookStore { method constructor (line 33) | constructor() { method getWebhook (line 37) | getWebhook(webhookId: string): WebhookRecord | null { method getChannelWebhooks (line 41) | getChannelWebhooks(channelId: string): Array | null { method getGuildWebhooks (line 47) | getGuildWebhooks(guildId: string): Array { method getChannelFetchStatus (line 51) | getChannelFetchStatus(channelId: string): FetchStatus { method getGuildFetchStatus (line 55) | getGuildFetchStatus(guildId: string): FetchStatus { method handleChannelWebhooksFetchPending (line 59) | handleChannelWebhooksFetchPending(channelId: string): void { method handleChannelWebhooksFetchSuccess (line 63) | handleChannelWebhooksFetchSuccess(channelId: string, guildId: string, ... method handleChannelWebhooksFetchError (line 88) | handleChannelWebhooksFetchError(channelId: string): void { method handleGuildWebhooksFetchPending (line 92) | handleGuildWebhooksFetchPending(guildId: string): void { method handleGuildWebhooksFetchSuccess (line 96) | handleGuildWebhooksFetchSuccess(guildId: string, webhooks: Array { method logout (line 451) | logout(): void { method handleConnectionOpen (line 471) | handleConnectionOpen(sessionId: string): void { method handleConnectionResumed (line 487) | handleConnectionResumed(): void { method handleConnectionClosed (line 502) | handleConnectionClosed(code: number): void { method markInitialGuildSynced (line 522) | private markInitialGuildSynced(sessionId: string | null): void { method handleGatewayError (line 531) | private handleGatewayError(error: GatewayErrorData): void { method handleFatalGatewaySocketError (line 536) | private handleFatalGatewaySocketError(error: Error): void { method handleGatewayDispatch (line 555) | private handleGatewayDispatch(eventType: string, data: unknown): void { FILE: fluxer_app/src/stores/gateway/handlers/Ready.tsx type ReadyPayload (line 64) | interface ReadyPayload { function handleReady (line 83) | function handleReady(data: ReadyPayload, context: GatewayHandlerContext)... FILE: fluxer_app/src/stores/gateway/handlers/Resumed.tsx function handleResumed (line 23) | function handleResumed(_context: GatewayHandlerContext): void { FILE: fluxer_app/src/stores/gateway/handlers/call/CallCreate.tsx type CallCreatePayload (line 26) | interface CallCreatePayload { function handleCallCreate (line 34) | function handleCallCreate(data: CallCreatePayload, _context: GatewayHand... FILE: fluxer_app/src/stores/gateway/handlers/call/CallDelete.tsx type CallDeletePayload (line 23) | interface CallDeletePayload { function handleCallDelete (line 27) | function handleCallDelete(data: CallDeletePayload, _context: GatewayHand... FILE: fluxer_app/src/stores/gateway/handlers/call/CallUpdate.tsx type CallUpdatePayload (line 25) | interface CallUpdatePayload { function handleCallUpdate (line 33) | function handleCallUpdate(data: CallUpdatePayload, _context: GatewayHand... FILE: fluxer_app/src/stores/gateway/handlers/channel/ChannelCreate.tsx type ChannelPayload (line 28) | interface ChannelPayload { function handleChannelCreate (line 33) | function handleChannelCreate(data: ChannelPayload, _context: GatewayHand... FILE: fluxer_app/src/stores/gateway/handlers/channel/ChannelDelete.tsx type ChannelDeletePayload (line 37) | interface ChannelDeletePayload { function handleChannelDelete (line 43) | function handleChannelDelete(data: ChannelDeletePayload, _context: Gatew... FILE: fluxer_app/src/stores/gateway/handlers/channel/ChannelPinsAck.tsx type ChannelPinsAckPayload (line 23) | interface ChannelPinsAckPayload { function handleChannelPinsAck (line 28) | function handleChannelPinsAck(data: ChannelPinsAckPayload, _context: Gat... FILE: fluxer_app/src/stores/gateway/handlers/channel/ChannelPinsUpdate.tsx type ChannelPinsUpdatePayload (line 24) | interface ChannelPinsUpdatePayload { function handleChannelPinsUpdate (line 29) | function handleChannelPinsUpdate(data: ChannelPinsUpdatePayload, _contex... FILE: fluxer_app/src/stores/gateway/handlers/channel/ChannelRecipientAdd.tsx type ChannelRecipientPayload (line 25) | interface ChannelRecipientPayload { function handleChannelRecipientAdd (line 30) | function handleChannelRecipientAdd(data: ChannelRecipientPayload, _conte... FILE: fluxer_app/src/stores/gateway/handlers/channel/ChannelRecipientRemove.tsx type ChannelRecipientPayload (line 25) | interface ChannelRecipientPayload { function handleChannelRecipientRemove (line 30) | function handleChannelRecipientRemove(data: ChannelRecipientPayload, _co... FILE: fluxer_app/src/stores/gateway/handlers/channel/ChannelUpdate.tsx type ChannelUpdatePayload (line 27) | type ChannelUpdatePayload = Partial & { function handleChannelUpdate (line 32) | function handleChannelUpdate(data: ChannelUpdatePayload, _context: Gatew... FILE: fluxer_app/src/stores/gateway/handlers/channel/ChannelUpdateBulk.tsx type ChannelUpdatePayload (line 27) | type ChannelUpdatePayload = Partial & { type ChannelUpdateBulkPayload (line 32) | interface ChannelUpdateBulkPayload { function handleChannelUpdateBulk (line 36) | function handleChannelUpdateBulk(data: ChannelUpdateBulkPayload, _contex... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildBan.tsx type GuildBanPayload (line 23) | interface GuildBanPayload { function handleGuildBan (line 28) | function handleGuildBan(_data: GuildBanPayload, _context: GatewayHandler... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildCreate.tsx function shouldTreatGuildCreateAsUnavailable (line 45) | function shouldTreatGuildCreateAsUnavailable(data: GuildReadyData): bool... function handleGuildCreate (line 55) | function handleGuildCreate(data: GuildReadyData, _context: GatewayHandle... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildDelete.tsx type GuildDeletePayload (line 42) | interface GuildDeletePayload { function handleGuildDelete (line 47) | function handleGuildDelete(data: GuildDeletePayload, _context: GatewayHa... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildEmojisUpdate.tsx type GuildEmojisUpdatePayload (line 24) | interface GuildEmojisUpdatePayload { function handleGuildEmojisUpdate (line 29) | function handleGuildEmojisUpdate(data: GuildEmojisUpdatePayload, _contex... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildMemberAdd.tsx type GuildMemberAddPayload (line 28) | interface GuildMemberAddPayload extends GuildMemberData { function handleGuildMemberAdd (line 32) | function handleGuildMemberAdd(data: GuildMemberAddPayload, _context: Gat... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildMemberListUpdate.tsx type MemberListGroup (line 28) | interface MemberListGroup { type MemberListPresence (line 33) | interface MemberListPresence { type MemberListItem (line 38) | interface MemberListItem { type MemberListOperation (line 43) | interface MemberListOperation { type GuildMemberListUpdatePayload (line 51) | interface GuildMemberListUpdatePayload { constant MAX_VALID_INDEX (line 61) | const MAX_VALID_INDEX = 100000; function isValidRange (line 63) | function isValidRange(range: [number, number] | undefined): range is [nu... function isValidIndex (line 71) | function isValidIndex(index: number | undefined): index is number { function processMemberItem (line 75) | function processMemberItem(guildId: string, item: MemberListItem): void { function handleGuildMemberListUpdate (line 86) | function handleGuildMemberListUpdate(data: GuildMemberListUpdatePayload,... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildMemberRemove.tsx type GuildMemberRemovePayload (line 26) | interface GuildMemberRemovePayload { function handleGuildMemberRemove (line 31) | function handleGuildMemberRemove(data: GuildMemberRemovePayload, _contex... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildMemberUpdate.tsx type GuildMemberUpdatePayload (line 32) | interface GuildMemberUpdatePayload extends GuildMemberData { function handleGuildMemberUpdate (line 36) | function handleGuildMemberUpdate(data: GuildMemberUpdatePayload, _contex... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildMembersChunk.tsx type GuildMembersChunkPayload (line 35) | interface GuildMembersChunkPayload { function handleGuildMembersChunk (line 45) | function handleGuildMembersChunk(data: GuildMembersChunkPayload, _contex... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildRoleCreate.tsx type GuildRoleCreatePayload (line 26) | interface GuildRoleCreatePayload { function handleGuildRoleCreate (line 31) | function handleGuildRoleCreate(data: GuildRoleCreatePayload, _context: G... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildRoleDelete.tsx type GuildRoleDeletePayload (line 27) | interface GuildRoleDeletePayload { function handleGuildRoleDelete (line 32) | function handleGuildRoleDelete(data: GuildRoleDeletePayload, _context: G... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildRoleUpdate.tsx type GuildRoleUpdatePayload (line 26) | interface GuildRoleUpdatePayload { function handleGuildRoleUpdate (line 31) | function handleGuildRoleUpdate(data: GuildRoleUpdatePayload, _context: G... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildRoleUpdateBulk.tsx type GuildRoleUpdateBulkPayload (line 26) | interface GuildRoleUpdateBulkPayload { function handleGuildRoleUpdateBulk (line 31) | function handleGuildRoleUpdateBulk(data: GuildRoleUpdateBulkPayload, _co... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildStickersUpdate.tsx type GuildStickersUpdatePayload (line 24) | interface GuildStickersUpdatePayload { function handleGuildStickersUpdate (line 29) | function handleGuildStickersUpdate(data: GuildStickersUpdatePayload, _co... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildSync.tsx function handleGuildSync (line 24) | function handleGuildSync(data: GuildReadyData, context: GatewayHandlerCo... FILE: fluxer_app/src/stores/gateway/handlers/guild/GuildUpdate.tsx function handleGuildUpdate (line 31) | function handleGuildUpdate(data: Guild, _context: GatewayHandlerContext)... FILE: fluxer_app/src/stores/gateway/handlers/guild/PassiveUpdates.tsx type PassiveUpdatesPayload (line 30) | interface PassiveUpdatesPayload { function handlePassiveUpdates (line 39) | function handlePassiveUpdates(data: PassiveUpdatesPayload, context: Gate... FILE: fluxer_app/src/stores/gateway/handlers/index.tsx type GatewayHandlerContext (line 86) | interface GatewayHandlerContext { type GatewayEventHandler (line 93) | type GatewayEventHandler = (data: unknown, context: GatewayHandlerContex... type GatewayHandlerRegistry (line 94) | type GatewayHandlerRegistry = Map; function createHandlerRegistry (line 96) | function createHandlerRegistry(): GatewayHandlerRegistry { FILE: fluxer_app/src/stores/gateway/handlers/invite/InviteCreate.tsx function handleInviteCreate (line 24) | function handleInviteCreate(data: Invite, _context: GatewayHandlerContex... FILE: fluxer_app/src/stores/gateway/handlers/invite/InviteDelete.tsx type InviteDeletePayload (line 23) | interface InviteDeletePayload { function handleInviteDelete (line 28) | function handleInviteDelete(data: InviteDeletePayload, _context: Gateway... FILE: fluxer_app/src/stores/gateway/handlers/message/MessageAck.tsx type MessageAckPayload (line 24) | interface MessageAckPayload { function handleMessageAck (line 31) | function handleMessageAck(data: MessageAckPayload, _context: GatewayHand... FILE: fluxer_app/src/stores/gateway/handlers/message/MessageCreate.tsx function handleMessageCreate (line 34) | function handleMessageCreate(data: Message, _context: GatewayHandlerCont... FILE: fluxer_app/src/stores/gateway/handlers/message/MessageDelete.tsx type MessageDeletePayload (line 30) | interface MessageDeletePayload { function handleMessageDelete (line 35) | function handleMessageDelete(data: MessageDeletePayload, _context: Gatew... FILE: fluxer_app/src/stores/gateway/handlers/message/MessageDeleteBulk.tsx type MessageDeleteBulkPayload (line 26) | interface MessageDeleteBulkPayload { function handleMessageDeleteBulk (line 31) | function handleMessageDeleteBulk(data: MessageDeleteBulkPayload, _contex... FILE: fluxer_app/src/stores/gateway/handlers/message/MessageReactionAdd.tsx type ReactionEmojiPayload (line 30) | interface ReactionEmojiPayload { type MessageReactionAddPayload (line 35) | interface MessageReactionAddPayload { function handleMessageReactionAdd (line 44) | function handleMessageReactionAdd(data: MessageReactionAddPayload, _cont... FILE: fluxer_app/src/stores/gateway/handlers/message/MessageReactionAddMany.tsx type ReactionEmojiPayload (line 30) | interface ReactionEmojiPayload { type ReactionEntry (line 35) | interface ReactionEntry { type MessageReactionAddManyPayload (line 41) | interface MessageReactionAddManyPayload { function handleMessageReactionAddMany (line 48) | function handleMessageReactionAddMany( FILE: fluxer_app/src/stores/gateway/handlers/message/MessageReactionRemove.tsx type ReactionEmojiPayload (line 30) | interface ReactionEmojiPayload { type MessageReactionRemovePayload (line 35) | interface MessageReactionRemovePayload { function handleMessageReactionRemove (line 44) | function handleMessageReactionRemove(data: MessageReactionRemovePayload,... FILE: fluxer_app/src/stores/gateway/handlers/message/MessageReactionRemoveAll.tsx type MessageReactionRemoveAllPayload (line 27) | interface MessageReactionRemoveAllPayload { function handleMessageReactionRemoveAll (line 32) | function handleMessageReactionRemoveAll( FILE: fluxer_app/src/stores/gateway/handlers/message/MessageReactionRemoveEmoji.tsx type ReactionEmojiPayload (line 28) | interface ReactionEmojiPayload { type MessageReactionRemoveEmojiPayload (line 33) | interface MessageReactionRemoveEmojiPayload { function handleMessageReactionRemoveEmoji (line 39) | function handleMessageReactionRemoveEmoji( FILE: fluxer_app/src/stores/gateway/handlers/message/MessageUpdate.tsx type MessageUpdatePayload (line 31) | interface MessageUpdatePayload { function handleMessageUpdate (line 36) | function handleMessageUpdate(data: MessageUpdatePayload, _context: Gatew... FILE: fluxer_app/src/stores/gateway/handlers/message/RecentMentionDelete.tsx type RecentMentionDeletePayload (line 23) | interface RecentMentionDeletePayload { function handleRecentMentionDelete (line 27) | function handleRecentMentionDelete(data: RecentMentionDeletePayload, _co... FILE: fluxer_app/src/stores/gateway/handlers/message/SavedMessageCreate.tsx function handleSavedMessageCreate (line 24) | function handleSavedMessageCreate(data: Message, _context: GatewayHandle... FILE: fluxer_app/src/stores/gateway/handlers/message/SavedMessageDelete.tsx type SavedMessageDeletePayload (line 23) | interface SavedMessageDeletePayload { function handleSavedMessageDelete (line 27) | function handleSavedMessageDelete(data: SavedMessageDeletePayload, _cont... FILE: fluxer_app/src/stores/gateway/handlers/message/TypingStart.tsx type TypingStartPayload (line 25) | interface TypingStartPayload { function handleTypingStart (line 32) | function handleTypingStart(data: TypingStartPayload, _context: GatewayHa... FILE: fluxer_app/src/stores/gateway/handlers/misc/FavoriteMemeCreate.tsx function handleFavoriteMemeCreate (line 24) | function handleFavoriteMemeCreate(data: FavoriteMeme, _context: GatewayH... FILE: fluxer_app/src/stores/gateway/handlers/misc/FavoriteMemeDelete.tsx type FavoriteMemeDeletePayload (line 23) | interface FavoriteMemeDeletePayload { function handleFavoriteMemeDelete (line 27) | function handleFavoriteMemeDelete(data: FavoriteMemeDeletePayload, _cont... FILE: fluxer_app/src/stores/gateway/handlers/misc/FavoriteMemeUpdate.tsx function handleFavoriteMemeUpdate (line 24) | function handleFavoriteMemeUpdate(data: FavoriteMeme, _context: GatewayH... FILE: fluxer_app/src/stores/gateway/handlers/misc/WebhooksUpdate.tsx type WebhooksUpdatePayload (line 23) | interface WebhooksUpdatePayload { function handleWebhooksUpdate (line 28) | function handleWebhooksUpdate(data: WebhooksUpdatePayload, _context: Gat... FILE: fluxer_app/src/stores/gateway/handlers/presence/PresenceUpdate.tsx function handlePresenceUpdate (line 24) | function handlePresenceUpdate(data: PresenceRecord, _context: GatewayHan... FILE: fluxer_app/src/stores/gateway/handlers/presence/PresenceUpdateBulk.tsx type PresenceUpdateBulkPayload (line 24) | interface PresenceUpdateBulkPayload { function handlePresenceUpdateBulk (line 29) | function handlePresenceUpdateBulk(data: PresenceUpdateBulkPayload, _cont... FILE: fluxer_app/src/stores/gateway/handlers/relationship/RelationshipAdd.tsx type RelationshipPayload (line 29) | interface RelationshipPayload { function handleRelationshipAdd (line 34) | function handleRelationshipAdd(data: RelationshipPayload, _context: Gate... FILE: fluxer_app/src/stores/gateway/handlers/relationship/RelationshipRemove.tsx type RelationshipRemovePayload (line 26) | interface RelationshipRemovePayload { function handleRelationshipRemove (line 30) | function handleRelationshipRemove(data: RelationshipRemovePayload, _cont... FILE: fluxer_app/src/stores/gateway/handlers/relationship/RelationshipUpdate.tsx type RelationshipPayload (line 29) | interface RelationshipPayload { function handleRelationshipUpdate (line 34) | function handleRelationshipUpdate(data: RelationshipPayload, _context: G... FILE: fluxer_app/src/stores/gateway/handlers/user/AuthSessionChange.tsx type AuthSessionChangePayload (line 23) | interface AuthSessionChangePayload { function handleAuthSessionChange (line 28) | function handleAuthSessionChange(data: AuthSessionChangePayload, context... FILE: fluxer_app/src/stores/gateway/handlers/user/UserConnectionsUpdate.tsx function handleUserConnectionsUpdate (line 24) | function handleUserConnectionsUpdate( FILE: fluxer_app/src/stores/gateway/handlers/user/UserGuildSettingsUpdate.tsx function handleUserGuildSettingsUpdate (line 24) | function handleUserGuildSettingsUpdate(data: GatewayGuildSettings, _cont... FILE: fluxer_app/src/stores/gateway/handlers/user/UserNoteUpdate.tsx type UserNoteUpdatePayload (line 23) | interface UserNoteUpdatePayload { function handleUserNoteUpdate (line 28) | function handleUserNoteUpdate(data: UserNoteUpdatePayload, _context: Gat... FILE: fluxer_app/src/stores/gateway/handlers/user/UserPinnedDmsUpdate.tsx function handleUserPinnedDmsUpdate (line 23) | function handleUserPinnedDmsUpdate(data: ReadonlyArray, _context... FILE: fluxer_app/src/stores/gateway/handlers/user/UserSettingsUpdate.tsx type UserSettingsPayload (line 24) | interface UserSettingsPayload { function handleUserSettingsUpdate (line 33) | function handleUserSettingsUpdate(data: UserSettingsPayload, _context: G... FILE: fluxer_app/src/stores/gateway/handlers/user/UserUpdate.tsx type UserUpdatePayload (line 29) | interface UserUpdatePayload { function handleUserUpdate (line 37) | function handleUserUpdate(data: UserUpdatePayload, _context: GatewayHand... FILE: fluxer_app/src/stores/gateway/handlers/voice/VoiceServerUpdate.tsx type VoiceServerUpdatePayload (line 23) | interface VoiceServerUpdatePayload { function handleVoiceServerUpdate (line 31) | function handleVoiceServerUpdate(data: VoiceServerUpdatePayload, _contex... FILE: fluxer_app/src/stores/gateway/handlers/voice/VoiceStateUpdate.tsx type VoiceStateUpdatePayload (line 26) | interface VoiceStateUpdatePayload { function handleVoiceStateUpdate (line 41) | function handleVoiceStateUpdate(data: VoiceStateUpdatePayload, _context:... FILE: fluxer_app/src/stores/voice/MediaEngineFacade.tsx constant AFK_CHECK_INTERVAL_MS (line 72) | const AFK_CHECK_INTERVAL_MS = 10000; constant DEFERRED_DISCONNECT_TIMEOUT_MS (line 73) | const DEFERRED_DISCONNECT_TIMEOUT_MS = 5000; class MediaEngineFacade (line 75) | class MediaEngineFacade { method constructor (line 85) | constructor() { method setI18n (line 108) | setI18n(i18n: I18n): void { method room (line 112) | get room(): Room | null { method guildId (line 115) | get guildId(): string | null { method channelId (line 118) | get channelId(): string | null { method connectionId (line 121) | get connectionId(): string | null { method connected (line 124) | get connected(): boolean { method connecting (line 127) | get connecting(): boolean { method voiceServerEndpoint (line 130) | get voiceServerEndpoint(): string | null { method participants (line 134) | get participants(): Readonly { method voiceStats (line 147) | get voiceStats(): VoiceStats { method estimatedLatency (line 150) | get estimatedLatency(): number | null { method displayLatency (line 153) | get displayLatency(): number | null { method connectToVoiceChannel (line 157) | async connectToVoiceChannel(guildId: string | null, channelId: string)... method connectDirectly (line 230) | private connectDirectly(guildId: string | null, channelId: string): vo... method disconnectFromVoiceChannel (line 245) | async disconnectFromVoiceChannel(reason: 'user' | 'error' | 'server' =... method disconnectForChannelMove (line 276) | private disconnectForChannelMove(reason: 'user' | 'server'): void { method scheduleDeferredServerDisconnect (line 304) | private scheduleDeferredServerDisconnect(connectionId: string): void { method cancelPendingServerDisconnect (line 322) | private cancelPendingServerDisconnect(): void { method handleVoiceServerUpdate (line 333) | handleVoiceServerUpdate(raw: VoiceServerUpdateData): void { method handleConnectionOpen (line 421) | handleConnectionOpen(guilds: Array): void { method handleGuildCreate (line 424) | handleGuildCreate(guild: GuildReadyData): void { method handleGuildDelete (line 427) | handleGuildDelete(guildId: string): void { method handlePassiveVoiceStates (line 433) | handlePassiveVoiceStates(guildId: string, voiceStates: Array { method toggleScreenShareFromKeybind (line 653) | async toggleScreenShareFromKeybind(): Promise { method startTracking (line 657) | private startTracking(roomOverride?: Room | null): void { method stopTracking (line 673) | private stopTracking(): void { method startAfkTracking (line 681) | private startAfkTracking(): void { method stopAfkTracking (line 698) | private stopAfkTracking(): void { method playSpectatorSounds (line 705) | private playSpectatorSounds(oldStreamKeys: Array, newStreamKey... method disconnectRemoteDevice (line 732) | disconnectRemoteDevice(guildId: string, connectionId: string): void { method disconnectAllRemoteDevices (line 736) | disconnectAllRemoteDevices(devices: ReadonlyArray<{guildId: string; co... method moveToAfkChannel (line 742) | async moveToAfkChannel(): Promise { method getLastConnectedChannel (line 751) | getLastConnectedChannel(): {guildId: string; channelId: string} | null { method getShouldReconnect (line 754) | getShouldReconnect(): boolean { method markReconnectionAttempted (line 757) | markReconnectionAttempted(): void { method handleLogout (line 761) | async handleLogout(): Promise { method handleGatewayError (line 785) | handleGatewayError(error: GatewayErrorData): void { method cleanup (line 847) | cleanup(): void { method reset (line 864) | reset(): void { method restoreLocalMediaState (line 879) | private async restoreLocalMediaState(): Promise { method navigateToVoiceChannel (line 901) | private navigateToVoiceChannel(guildId: string | null, channelId: stri... method clearViewerStreamKeys (line 906) | private clearViewerStreamKeys(): void { FILE: fluxer_app/src/stores/voice/ScreenShareSubscriptionManager.tsx type ScreenShareSubscriptionState (line 28) | interface ScreenShareSubscriptionState { class ScreenShareSubscriptionManager (line 43) | class ScreenShareSubscriptionManager { method constructor (line 52) | constructor() { method setRoom (line 56) | setRoom(room: Room | null): void { method cleanup (line 60) | cleanup(): void { method subscribe (line 69) | subscribe( method unsubscribe (line 136) | unsubscribe(participantIdentity: string): void { method setContext (line 169) | setContext(participantIdentity: string, context: 'focused' | 'carousel... method isSubscribed (line 209) | isSubscribed(participantIdentity: string): boolean { method getContext (line 213) | getContext(participantIdentity: string): 'focused' | 'carousel' | 'hid... method findScreenSharePublication (line 217) | private findScreenSharePublication(participant: RemoteParticipant): Re... method applyQuality (line 226) | private applyQuality(publication: RemoteTrackPublication, quality: Vid... method getQualityForContext (line 236) | private getQualityForContext(context: 'focused' | 'carousel' | 'hidden... method createObserver (line 247) | private createObserver(participantIdentity: string, element: HTMLEleme... method updateObserver (line 285) | private updateObserver(participantIdentity: string, element: HTMLEleme... FILE: fluxer_app/src/stores/voice/VideoSubscriptionManager.tsx type VideoSubscriptionState (line 28) | interface VideoSubscriptionState { class VideoSubscriptionManager (line 42) | class VideoSubscriptionManager { method constructor (line 51) | constructor() { method setRoom (line 55) | setRoom(room: Room | null): void { method cleanup (line 59) | cleanup(): void { method subscribe (line 68) | subscribe(participantIdentity: string, element: HTMLElement | null, in... method unsubscribe (line 119) | unsubscribe(participantIdentity: string): void { method setEnabled (line 152) | setEnabled(participantIdentity: string, enabled: boolean): void { method setQuality (line 184) | setQuality(participantIdentity: string, quality: VideoQualityLevel): v... method isSubscribed (line 212) | isSubscribed(participantIdentity: string): boolean { method getQuality (line 216) | getQuality(participantIdentity: string): VideoQualityLevel | null { method findCameraPublication (line 220) | private findCameraPublication(participant: RemoteParticipant): RemoteT... method applyQuality (line 229) | private applyQuality(publication: RemoteTrackPublication, quality: Vid... method createObserver (line 239) | private createObserver(participantIdentity: string, element: HTMLEleme... method updateObserver (line 260) | private updateObserver(participantIdentity: string, element: HTMLEleme... FILE: fluxer_app/src/stores/voice/VoiceAudioManager.tsx function applyLocalAudioPreferencesForUser (line 34) | function applyLocalAudioPreferencesForUser(userId: string, room: Room | ... function applyAllLocalAudioPreferences (line 52) | function applyAllLocalAudioPreferences(room: Room | null): void { function applyPushToTalkHold (line 62) | function applyPushToTalkHold( function handlePushToTalkModeChange (line 80) | function handlePushToTalkModeChange( function getMuteReason (line 99) | function getMuteReason(voiceState: VoiceState | null): 'guild' | 'push_t... function applyLocalMuteState (line 109) | function applyLocalMuteState( FILE: fluxer_app/src/stores/voice/VoiceChannelConnector.tsx function checkChannelLimit (line 35) | function checkChannelLimit(guildId: string | null, channelId: string): b... function checkMultipleConnections (line 55) | function checkMultipleConnections( function sendVoiceStateConnect (line 99) | function sendVoiceStateConnect(guildId: string | null, channelId: string... function sendVoiceStateDisconnect (line 120) | function sendVoiceStateDisconnect(guildId: string | null, connectionId: ... function syncVoiceStateToServer (line 139) | function syncVoiceStateToServer( FILE: fluxer_app/src/stores/voice/VoiceConnectionManager.tsx constant VOICE_SERVER_TIMEOUT_MS (line 31) | const VOICE_SERVER_TIMEOUT_MS = 5000; type VoiceServerUpdateData (line 33) | interface VoiceServerUpdateData { type VoiceConnectionState (line 41) | interface VoiceConnectionState { class VoiceConnectionManager (line 63) | class VoiceConnectionManager { method constructor (line 70) | constructor() { method room (line 74) | get room(): Room | null { method guildId (line 78) | get guildId(): string | null { method channelId (line 82) | get channelId(): string | null { method connected (line 86) | get connected(): boolean { method connecting (line 90) | get connecting(): boolean { method reconnecting (line 94) | get reconnecting(): boolean { method connectionId (line 98) | get connectionId(): string | null { method voiceServerEndpoint (line 102) | get voiceServerEndpoint(): string | null { method shouldAutoReconnect (line 106) | get shouldAutoReconnect(): boolean { method reconnectAttempts (line 110) | get reconnectAttempts(): number { method disconnecting (line 114) | get disconnecting(): boolean { method lastConnectedChannel (line 118) | get lastConnectedChannel(): {guildId: string; channelId: string} | null { method startConnection (line 122) | startConnection(guildId: string | null, channelId: string): void { method recoverConnectionExpectation (line 150) | recoverConnectionExpectation(guildId: string | null, channelId: string... method handleVoiceServerUpdate (line 173) | handleVoiceServerUpdate( method markConnected (line 328) | markConnected(): void { method markDisconnected (line 342) | markDisconnected(reason: 'user' | 'error' | 'server' = 'user'): void { method markReconnecting (line 354) | markReconnecting(): void { method markReconnected (line 366) | markReconnected(): void { method disconnectFromVoiceChannel (line 379) | disconnectFromVoiceChannel(reason: 'user' | 'error' | 'server' = 'user... method disconnectForChannelMove (line 404) | disconnectForChannelMove(): void { method scheduleReconnect (line 424) | scheduleReconnect(callback: () => void): boolean { method markReconnectionAttempted (line 428) | markReconnectionAttempted(): void { method resetReconnectState (line 432) | resetReconnectState(): void { method updateChannelId (line 436) | updateChannelId(channelId: string): void { method acceptServerChannelChange (line 450) | acceptServerChannelChange(channelId: string): void { method createGuardedHandler (line 462) | createGuardedHandler>( method bindConnectionEvents (line 474) | bindConnectionEvents( method resetConnectionState (line 490) | resetConnectionState(): void { method clearInFlightConnect (line 498) | clearInFlightConnect(): void { method abortConnection (line 502) | abortConnection(): void { method scheduleVoiceServerTimeout (line 517) | private scheduleVoiceServerTimeout(guildId: string | null, channelId: ... method disconnectPreviousRoom (line 535) | private disconnectPreviousRoom(previousRoom: Room | null): void { method clearVoiceServerTimeout (line 547) | private clearVoiceServerTimeout(): void { method cleanup (line 552) | cleanup(): void { FILE: fluxer_app/src/stores/voice/VoiceConnectionThrottle.tsx constant CONNECT_THROTTLE_MS (line 22) | const CONNECT_THROTTLE_MS = 1000; type ConnectionThrottleState (line 24) | interface ConnectionThrottleState { class VoiceConnectionThrottle (line 36) | class VoiceConnectionThrottle { method constructor (line 39) | constructor() { method connectAttemptId (line 43) | get connectAttemptId(): number { method inFlightConnect (line 47) | get inFlightConnect(): boolean { method shouldThrottle (line 51) | shouldThrottle(): boolean { method isLatestAttempt (line 57) | isLatestAttempt(id: number): boolean { method recordConnectRequest (line 61) | recordConnectRequest(): void { method incrementAttemptId (line 70) | incrementAttemptId(): void { method setInFlightConnect (line 79) | setInFlightConnect(value: boolean): void { method reset (line 88) | reset(): void { FILE: fluxer_app/src/stores/voice/VoiceDevicePermissionStore.tsx type DeviceListener (line 27) | type DeviceListener = (state: VoiceDeviceState) => void; class VoiceDevicePermissionStore (line 29) | class VoiceDevicePermissionStore { method constructor (line 34) | constructor() { method handleDeviceStateChange (line 47) | private handleDeviceStateChange(state: VoiceDeviceState): void { method getState (line 61) | getState(): VoiceDeviceState { method subscribe (line 65) | subscribe(listener: DeviceListener): () => void { method ensureDevices (line 73) | async ensureDevices(options: {requestPermissions?: boolean} = {}): Pro... method refreshDevices (line 79) | async refreshDevices(requestPermissions?: boolean): Promise { FILE: fluxer_app/src/stores/voice/VoiceEntranceSoundManager.tsx function playEntranceSound (line 32) | async function playEntranceSound(room: Room | null): Promise { FILE: fluxer_app/src/stores/voice/VoiceMediaEngineBridge.tsx type VoiceStatePartial (line 25) | interface VoiceStatePartial { type MediaEngineStoreAccess (line 33) | interface MediaEngineStoreAccess { function getMediaEngineStore (line 39) | function getMediaEngineStore(): MediaEngineStoreAccess | null { function syncLocalVoiceStateWithServer (line 49) | function syncLocalVoiceStateWithServer(partial: VoiceStatePartial): void { function getRoomFromMediaEngineStore (line 58) | function getRoomFromMediaEngineStore(): Room | null { function updateLocalParticipantFromRoom (line 68) | function updateLocalParticipantFromRoom(roomOverride?: Room | null): void { FILE: fluxer_app/src/stores/voice/VoiceMediaManager.tsx type SetCameraEnabledOptions (line 66) | interface SetCameraEnabledOptions { type LocalAudioTrackWithVolume (line 71) | interface LocalAudioTrackWithVolume { function isLocalAudioTrackWithVolume (line 75) | function isLocalAudioTrackWithVolume(track: unknown): track is LocalAudi... class VoiceMediaManager (line 84) | class VoiceMediaManager { method constructor (line 85) | constructor() { method isScreenSharePending (line 89) | get isScreenSharePending(): boolean { method ensureMicrophone (line 93) | async ensureMicrophone(room: Room, channelId: string): Promise { method enableMicrophone (line 147) | async enableMicrophone(room: Room, channelId: string): Promise { method disableMicrophone (line 203) | async disableMicrophone(room: Room): Promise { method setMicrophoneEnabled (line 226) | async setMicrophoneEnabled(enabled: boolean, room: Room, channelId: st... method setCameraEnabled (line 234) | async setCameraEnabled(enabled: boolean, options?: SetCameraEnabledOpt... method applyBackgroundToCamera (line 293) | private async applyBackgroundToCamera(participant: Room['localParticip... method getVideoPreset (line 307) | private getVideoPreset(resolution: string) { method toggleCameraFromKeybind (line 318) | async toggleCameraFromKeybind(): Promise { method setScreenShareEnabled (line 323) | async setScreenShareEnabled( method updateActiveScreenShareSettings (line 332) | async updateActiveScreenShareSettings( method toggleScreenShareFromKeybind (line 340) | async toggleScreenShareFromKeybind(): Promise { method playEntranceSound (line 345) | async playEntranceSound(): Promise { method resetStreamTracking (line 350) | resetStreamTracking(): void { method syncVoiceState (line 354) | syncVoiceState(partial: { method applyLocalAudioPreferencesForUser (line 364) | applyLocalAudioPreferencesForUser(userId: string, room: Room | null): ... method applyAllLocalAudioPreferences (line 368) | applyAllLocalAudioPreferences(room: Room | null): void { method applyLocalInputVolume (line 372) | applyLocalInputVolume(room: Room | null): void { method setLocalVideoDisabled (line 386) | setLocalVideoDisabled(identity: string, disabled: boolean, room: Room ... method applyPushToTalkHold (line 438) | applyPushToTalkHold(held: boolean, room: Room | null, getCurrentUserVo... method handlePushToTalkModeChange (line 442) | handlePushToTalkModeChange(room: Room | null, getCurrentUserVoiceState... method getMuteReason (line 446) | getMuteReason(voiceState: VoiceState | null): 'guild' | 'push_to_talk'... FILE: fluxer_app/src/stores/voice/VoiceMediaStateCoordinator.tsx type VoiceMediaSource (line 26) | type VoiceMediaSource = 'camera' | 'screen_share'; type VoiceMediaStateReason (line 28) | type VoiceMediaStateReason = type VoiceMediaStateOptions (line 37) | interface VoiceMediaStateOptions { class VoiceMediaStateCoordinator (line 44) | class VoiceMediaStateCoordinator { method applyCameraState (line 50) | applyCameraState(enabled: boolean, options: VoiceMediaStateOptions): v... method applyScreenShareState (line 54) | applyScreenShareState(enabled: boolean, options: VoiceMediaStateOption... method handleLocalTrackStateChange (line 58) | handleLocalTrackStateChange(source: Track.Source, isPublished: boolean... method resetLocalMediaState (line 75) | resetLocalMediaState(reason: VoiceMediaStateReason): void { method applyRequestedState (line 85) | private applyRequestedState(source: VoiceMediaSource, enabled: boolean... method updateLocalState (line 102) | private updateLocalState(source: VoiceMediaSource, enabled: boolean): ... method syncState (line 116) | private syncState(source: VoiceMediaSource, enabled: boolean): void { method canSync (line 127) | private canSync(): boolean { method mapSource (line 133) | private mapSource(source: Track.Source): VoiceMediaSource | null { method consumeSuppression (line 139) | private consumeSuppression(source: VoiceMediaSource): boolean { FILE: fluxer_app/src/stores/voice/VoiceParticipantManager.tsx type LivekitParticipantSnapshot (line 26) | type LivekitParticipantSnapshot = Readonly<{ class VoiceParticipantManager (line 107) | class VoiceParticipantManager { method constructor (line 110) | constructor() { method participants (line 114) | get participants(): Readonly): void { method getParticipantByUserIdAndConnectionId (line 188) | getParticipantByUserIdAndConnectionId( method getParticipant (line 200) | getParticipant(identity: string): LivekitParticipantSnapshot | undefin... method getLocalParticipant (line 204) | getLocalParticipant(): LivekitParticipantSnapshot | undefined { method clear (line 213) | clear(): void { method extractUserId (line 220) | extractUserId(identity: string): string | null { method extractConnectionId (line 224) | extractConnectionId(identity: string): string | null { FILE: fluxer_app/src/stores/voice/VoicePermissionManager.tsx type VoicePermissions (line 29) | interface VoicePermissions { type TrackSource (line 37) | type TrackSource = 'audio' | 'video' | 'screenShare'; type MuteReason (line 38) | type MuteReason = 'guild' | 'push_to_talk' | 'self' | null; type VoiceState (line 40) | interface VoiceState { type LocalParticipantWithScreenShare (line 54) | type LocalParticipantWithScreenShare = LocalParticipant & { constant DEFAULT_PERMISSIONS (line 62) | const DEFAULT_PERMISSIONS: VoicePermissions = { class VoicePermissionManager (line 70) | class VoicePermissionManager { method constructor (line 77) | constructor() { method syncWithPermissionStore (line 82) | syncWithPermissionStore(guildId: string, channelId: string, room: Room... method stopPermissionWatch (line 124) | private stopPermissionWatch(): void { method handlePermissionUpdate (line 132) | private handlePermissionUpdate(newPermissions: VoicePermissions): void { method handlePermissionChange (line 176) | handlePermissionChange(permission: 'speak' | 'stream' | 'video', allow... method initializeSubscriptions (line 226) | initializeSubscriptions(room: Room): void { method applyDeafen (line 260) | applyDeafen(room: Room, deafened: boolean): void { method updateSubscriptionsForPermissionChange (line 292) | updateSubscriptionsForPermissionChange(room: Room, permissions: VoiceP... method canPublishAudio (line 336) | canPublishAudio(): boolean { method canPublishVideo (line 340) | canPublishVideo(): boolean { method canPublishScreenShare (line 344) | canPublishScreenShare(): boolean { method handlePermissionRevoked (line 348) | private async handlePermissionRevoked(source: TrackSource, room: Room)... method getMuteReason (line 386) | getMuteReason(voiceState: VoiceState | null): MuteReason { method getPermissions (line 393) | getPermissions(): VoicePermissions { method setPermissions (line 397) | setPermissions(permissions: Partial): void { method getDeafened (line 413) | getDeafened(): boolean { method reset (line 417) | reset(): void { method extractUserIdFromIdentity (line 428) | extractUserIdFromIdentity(identity: string): string | null { FILE: fluxer_app/src/stores/voice/VoiceReconnectManager.tsx constant RECONNECT_WINDOW_MS (line 27) | const RECONNECT_WINDOW_MS = 30000; constant MAX_RECONNECT_ATTEMPTS (line 28) | const MAX_RECONNECT_ATTEMPTS = 5; constant RECONNECT_BASE_DELAY_MS (line 29) | const RECONNECT_BASE_DELAY_MS = 1000; constant RECONNECT_MAX_DELAY_MS (line 30) | const RECONNECT_MAX_DELAY_MS = 30000; type ReconnectState (line 32) | interface ReconnectState { class VoiceReconnectManager (line 52) | class VoiceReconnectManager { method constructor (line 56) | constructor() { method shouldAutoReconnect (line 60) | get shouldAutoReconnect(): boolean { method reconnectAttempts (line 69) | get reconnectAttempts(): number { method lastConnectedChannel (line 73) | get lastConnectedChannel(): {guildId: string; channelId: string} | null { method setLastConnectedChannel (line 84) | setLastConnectedChannel(guildId: string | null, channelId: string): vo... method setReconnectState (line 94) | setReconnectState(reason: 'user' | 'error' | 'server'): void { method scheduleReconnect (line 107) | scheduleReconnect(callback: () => void): boolean { method resetOnConnection (line 142) | resetOnConnection(): void { method markAttempted (line 154) | markAttempted(): void { method reset (line 163) | reset(): void { method clearReconnectTimer (line 170) | private clearReconnectTimer(): void { method cleanup (line 175) | cleanup(): void { FILE: fluxer_app/src/stores/voice/VoiceRoomEventBinder.tsx type RoomEventCallbacks (line 35) | interface RoomEventCallbacks { function bindRoomEvents (line 42) | function bindRoomEvents( FILE: fluxer_app/src/stores/voice/VoiceScreenShareManager.tsx function getPreferredScreenShareCodec (line 45) | function getPreferredScreenShareCodec(): VideoCodec { class VoiceScreenShareManager (line 53) | class VoiceScreenShareManager { method constructor (line 56) | constructor() { method getIsScreenSharePending (line 60) | getIsScreenSharePending(): boolean { method getLocalStreamKey (line 64) | private getLocalStreamKey(): string { method syncLocalStreamWatchState (line 76) | private syncLocalStreamWatchState(enabled: boolean): void { method setScreenShareEnabled (line 102) | async setScreenShareEnabled( method updateActiveScreenShareSettings (line 231) | async updateActiveScreenShareSettings( method toggleScreenShareFromKeybind (line 338) | async toggleScreenShareFromKeybind(room: Room | null): Promise { method resetStreamTracking (line 343) | resetStreamTracking(): void { FILE: fluxer_app/src/stores/voice/VoiceStateGatewayHandler.tsx class VoiceStateGatewayHandler (line 28) | class VoiceStateGatewayHandler { method constructor (line 29) | constructor( method handleGatewayVoiceStateUpdate (line 39) | handleGatewayVoiceStateUpdate(guildId: string | null, voiceState: Voic... method handleGatewayVoiceStateDelete (line 129) | handleGatewayVoiceStateDelete(guildId: string, userId: string): void { method handleConnectionOpen (line 152) | handleConnectionOpen(guilds: Array): void { method handleGuildCreate (line 207) | handleGuildCreate(guild: GuildReadyData): void { method handleGuildDelete (line 258) | handleGuildDelete(deletedGuildId: string): void { FILE: fluxer_app/src/stores/voice/VoiceStateManager.tsx class VoiceStateManager (line 29) | class VoiceStateManager { method constructor (line 35) | constructor() { method setVoiceStates (line 49) | private setVoiceStates(states: Record) { method handleGatewayVoiceStateUpdate (line 61) | handleGatewayVoiceStateUpdate(guildId: string | null, voiceState: Voic... method handleGatewayVoiceStateDelete (line 65) | handleGatewayVoiceStateDelete(guildId: string, userId: string): void { method handleConnectionOpen (line 69) | handleConnectionOpen(guilds: Array): void { method handleGuildCreate (line 73) | handleGuildCreate(guild: GuildReadyData): void { method handleGuildDelete (line 77) | handleGuildDelete(deletedGuildId: string): void { method getCurrentUserVoiceState (line 81) | getCurrentUserVoiceState( method getVoiceState (line 115) | getVoiceState(guildId: string | null, userId?: string, currentUserId?:... method getVoiceStateByConnectionId (line 140) | getVoiceStateByConnectionId(connectionId: string): VoiceState | null { method getAllVoiceStatesInChannel (line 144) | getAllVoiceStatesInChannel(guildId: string, channelId: string): Readon... method getAllVoiceStates (line 148) | getAllVoiceStates(): Readonly { function is_animated_image (line 24) | function is_animated_image(_data: Uint8Array): boolean { function crop_and_rotate_gif (line 28) | function crop_and_rotate_gif( function crop_and_rotate_image (line 41) | function crop_and_rotate_image( function crop_and_rotate_apng (line 55) | function crop_and_rotate_apng( function decompress_zstd_frame (line 68) | function decompress_zstd_frame(input: Uint8Array): Uint8Array { FILE: fluxer_app/src/test/Setup.tsx class MockLogger (line 53) | class MockLogger { method child (line 54) | child() { type LinguiMessage (line 157) | interface LinguiMessage { type TransProps (line 184) | interface TransProps { type PluralProps (line 195) | interface PluralProps { type SelectProps (line 212) | interface SelectProps extends Record; type PackInviteType (line 26) | type PackInviteType = typeof InviteTypes.EMOJI_PACK | typeof InviteTypes... FILE: fluxer_app/src/types/Sudo.tsx type SudoVerificationPayload (line 20) | interface SudoVerificationPayload extends Record { FILE: fluxer_app/src/types/VerificationError.tsx type VerificationErrorType (line 28) | type VerificationErrorType = ValueOf; type VerificationError (line 30) | interface VerificationError { FILE: fluxer_app/src/types/browser.d.ts type LegacyDocumentSelection (line 20) | interface LegacyDocumentSelection { type ExtendedDocument (line 29) | interface ExtendedDocument extends Document { type ExtendedHTMLElement (line 41) | interface ExtendedHTMLElement extends HTMLElement { type ExtendedHTMLVideoElement (line 47) | interface ExtendedHTMLVideoElement extends HTMLVideoElement { type ExtendedWindow (line 55) | interface ExtendedWindow extends Window { FILE: fluxer_app/src/types/dom-augmentations.d.ts type HighlightRegistry (line 20) | interface HighlightRegistry { type RTCStatsReport (line 32) | interface RTCStatsReport { FILE: fluxer_app/src/types/electron.d.ts type DesktopSource (line 22) | interface DesktopSource { type DesktopInfo (line 30) | interface DesktopInfo { type TextareaContextMenuParams (line 41) | interface TextareaContextMenuParams { type SpellcheckState (line 49) | interface SpellcheckState { type NotificationPayload (line 54) | interface NotificationPayload { type GlobalInputEvent (line 62) | interface GlobalInputEvent { type DisplayMediaRequestInfo (line 66) | interface DisplayMediaRequestInfo { type UpdaterEvent (line 73) | interface UpdaterEvent { type DownloadResult (line 81) | interface DownloadResult { type ElectronAPI (line 87) | interface ElectronAPI { FILE: fluxer_app/src/types/favico.d.ts type FavicoOptions (line 21) | interface FavicoOptions { class Favico (line 34) | class Favico { FILE: fluxer_app/src/types/gateway/GatewayGuildTypes.tsx type GuildReadyData (line 28) | type GuildReadyData = Readonly<{ FILE: fluxer_app/src/types/gateway/GatewayPresenceTypes.tsx type PresenceRecord (line 23) | interface PresenceRecord { type Presence (line 32) | type Presence = PresenceRecord; FILE: fluxer_app/src/types/gateway/GatewayVoiceTypes.tsx type VoiceState (line 22) | interface VoiceState { type CallVoiceState (line 39) | interface CallVoiceState { FILE: fluxer_app/src/types/lingui-react-macro.d.ts type LinguiMacroTagFunction (line 25) | type LinguiMacroTagFunction = { type LinguiMacro (line 30) | type LinguiMacro = LinguiMacroTagFunction & ((i18n: I18n) => LinguiMacro... FILE: fluxer_app/src/utils/AccentColorUtils.tsx type RawAccentColor (line 25) | type RawAccentColor = number | null | undefined; function getAccentColorHex (line 27) | function getAccentColorHex(rawAccentColor?: RawAccentColor): string | nu... function getAccentColor (line 35) | function getAccentColor(rawAccentColor?: RawAccentColor, fallback = DEFA... function getUserAccentColor (line 39) | function getUserAccentColor( FILE: fluxer_app/src/utils/AnimatedImageUtils.tsx constant GIF_EXT (line 22) | const GIF_EXT = '.gif'; constant WEBP_EXT (line 23) | const WEBP_EXT = '.webp'; constant PNG_EXT (line 24) | const PNG_EXT = '.png'; constant AVIF_EXT (line 25) | const AVIF_EXT = '.avif'; type AnimatedImageFormat (line 27) | type AnimatedImageFormat = 'gif' | 'webp' | 'avif' | 'apng'; function getFileExtension (line 29) | function getFileExtension(file: File): string { function isAnimatedFile (line 35) | async function isAnimatedFile(file: File): Promise { function getAnimatedFormatLabel (line 44) | function getAnimatedFormatLabel(file: File): string { function getAnimatedImageFormat (line 64) | function getAnimatedImageFormat(mime: string, ext?: string): AnimatedIma... type HandleAnimatedNonGifOptions (line 84) | interface HandleAnimatedNonGifOptions { function shouldShowAnimatedAvifConfirmation (line 92) | function shouldShowAnimatedAvifConfirmation({ FILE: fluxer_app/src/utils/ApiErrorUtils.tsx type ApiValidationError (line 22) | interface ApiValidationError { function isRecord (line 27) | function isRecord(value: unknown): value is Record { function getBody (line 31) | function getBody(error: unknown): Record | undefined { function getResponseCode (line 37) | function getResponseCode(body: unknown): string | undefined { function getResponseMessage (line 43) | function getResponseMessage(body: unknown): string | undefined { function getResponseRetryAfter (line 49) | function getResponseRetryAfter(body: unknown): number | undefined { function getApiErrorCode (line 55) | function getApiErrorCode(error: unknown): string | undefined { function getApiErrorMessage (line 59) | function getApiErrorMessage(error: unknown): string | undefined { function getApiErrorErrors (line 63) | function getApiErrorErrors(error: unknown): ReadonlyArray = { constant MIME_LANGUAGE_MAP (line 119) | const MIME_LANGUAGE_MAP: Record = { constant SUPPORTED_PREVIEW_LANGUAGES (line 146) | const SUPPORTED_PREVIEW_LANGUAGES = [ constant LANGUAGE_LABELS (line 173) | const LANGUAGE_LABELS: Record = { function isTextualAttachment (line 200) | function isTextualAttachment(attachment: MessageAttachment): boolean { function getLanguageFromAttachment (line 222) | function getLanguageFromAttachment(attachment: MessageAttachment): strin... function shouldPreviewAttachment (line 236) | function shouldPreviewAttachment(attachment: MessageAttachment): boolean { FILE: fluxer_app/src/utils/AttachmentUtils.tsx function getMaxAttachmentFileSize (line 23) | function getMaxAttachmentFileSize(): number { FILE: fluxer_app/src/utils/AutostartUtils.tsx function setAutostartEnabled (line 25) | async function setAutostartEnabled(enabled: boolean): Promise { function ensureAutostartDefaultEnabled (line 54) | async function ensureAutostartDefaultEnabled(): Promise { FILE: fluxer_app/src/utils/AvatarUtils.tsx function getDefaultAvatarPrimaryColor (line 39) | function getDefaultAvatarPrimaryColor(id: string) { type AvatarOptions (line 43) | type AvatarOptions = Pick; type BannerOptions (line 44) | type BannerOptions = Pick; type IconOptions (line 46) | interface IconOptions { type MediaURLParams (line 51) | type MediaURLParams = { type GuildMemberMediaURLParams (line 77) | type GuildMemberMediaURLParams = { function getUserAvatarURL (line 107) | function getUserAvatarURL( function getUserBannerURL (line 126) | function getUserBannerURL({id, banner}: BannerOptions, animated = false,... function getGuildIconURL (line 141) | function getGuildIconURL({id, icon}: IconOptions, animated = false) { function getGuildSplashURL (line 156) | function getGuildSplashURL({id, splash}: {id: string; splash: string | n... function getGuildDiscoverySplashURL (line 169) | function getGuildDiscoverySplashURL({id, splash}: {id: string; splash: s... function getGuildBannerURL (line 182) | function getGuildBannerURL({id, banner}: {id: string; banner: string | n... function getGuildMemberAvatarURL (line 197) | function getGuildMemberAvatarURL({ function getGuildMemberBannerURL (line 237) | function getGuildMemberBannerURL({ function getUserAvatarURLWithProxy (line 278) | function getUserAvatarURLWithProxy( function getGuildEmbedSplashURL (line 304) | function getGuildEmbedSplashURL( function getChannelIconURL (line 320) | function getChannelIconURL( function getWebhookAvatarURL (line 339) | function getWebhookAvatarURL({id, avatar}: AvatarOptions, animated = fal... function getEmojiURL (line 354) | function getEmojiURL({id, animated}: {id: string; animated?: boolean}) { type StickerSize (line 361) | type StickerSize = 160 | 320; function getStickerURL (line 363) | function getStickerURL({id, animated, size = 320}: {id: string; animated... function fileToBase64 (line 372) | function fileToBase64(file: File) { FILE: fluxer_app/src/utils/BackgroundImageDB.tsx constant DB_NAME (line 20) | const DB_NAME = 'FluxerBackgroundImages'; constant DB_VERSION (line 21) | const DB_VERSION = 1; constant STORE_NAME (line 22) | const STORE_NAME = 'background_images'; type BackgroundImageData (line 24) | interface BackgroundImageData { function openDB (line 32) | async function openDB(): Promise { function saveBackgroundImage (line 58) | async function saveBackgroundImage(id: string, blob: Blob): Promise { function deleteBackgroundImage (line 99) | async function deleteBackgroundImage(id: string): Promise { function getBackgroundImageURL (line 116) | async function getBackgroundImageURL(id: string): Promise { FILE: fluxer_app/src/utils/CSSHighlightSearch.tsx constant HIGHLIGHT_NAME (line 20) | const HIGHLIGHT_NAME = 'search-highlight'; function isHighlightAPISupported (line 21) | function isHighlightAPISupported(): boolean { function clearHighlights (line 25) | function clearHighlights(): void { function findAllTextNodes (line 30) | function findAllTextNodes(container: HTMLElement): Array { function createRangesForMatches (line 46) | function createRangesForMatches(textNodes: Array, query: string): ... function createRangesForSection (line 73) | function createRangesForSection(container: HTMLElement, query: string): ... function setHighlightRanges (line 87) | function setHighlightRanges(ranges: Array): void { FILE: fluxer_app/src/utils/CallUtils.tsx function checkAndStartCall (line 28) | async function checkAndStartCall(channelId: string, silent = false): Pro... FILE: fluxer_app/src/utils/ChannelSearchHighlight.tsx constant CHANNEL_SEARCH_HIGHLIGHT_NAME (line 22) | const CHANNEL_SEARCH_HIGHLIGHT_NAME = 'channel-search-highlight'; constant SEARCH_HIGHLIGHT_SCOPE_ATTRIBUTE (line 23) | const SEARCH_HIGHLIGHT_SCOPE_ATTRIBUTE = 'data-search-highlight-scope'; constant SEARCH_HIGHLIGHT_SCOPE_VALUE (line 24) | const SEARCH_HIGHLIGHT_SCOPE_VALUE = 'message'; function getHighlightRoots (line 26) | function getHighlightRoots(container: HTMLElement): Array { function collectHighlightTextNodes (line 36) | function collectHighlightTextNodes(container: HTMLElement): Array { function createRangesForSearchTerms (line 45) | function createRangesForSearchTerms(textNodes: Array, searchTerms:... function applyChannelSearchHighlight (line 74) | function applyChannelSearchHighlight(container: HTMLElement, searchTerms... function clearChannelSearchHighlight (line 91) | function clearChannelSearchHighlight(): void { FILE: fluxer_app/src/utils/ChannelShared.tsx type MinimalChannel (line 23) | type MinimalChannel = Pick([ChannelTypes.GUILD_TEXT,... function compareChannelPosition (line 27) | function compareChannelPosition(a: MinimalChannel, b: MinimalChannel): n... function filterViewableChannels (line 34) | function filterViewableChannels(channels: Read... function pickDefaultGuildChannelId (line 38) | function pickDefaultGuildChannelId({ FILE: fluxer_app/src/utils/ChannelUtils.tsx function compareChannels (line 39) | function compareChannels(a: ChannelRecord, b: ChannelRecord): number { function getIcon (line 43) | function getIcon(channel: {type: number; nsfw?: boolean}, props: IconPro... function getName (line 62) | function getName(channel: ChannelRecord) { function getDMDisplayName (line 105) | function getDMDisplayName(channel: ChannelRecord): string { function isSystemDmChannel (line 118) | function isSystemDmChannel(channel: ChannelRecord): boolean { FILE: fluxer_app/src/utils/ClientInfoUtils.tsx type ClientInfo (line 27) | interface ClientInfo { type NavigatorHighEntropyHints (line 41) | interface NavigatorHighEntropyHints { type NavigatorUADataLike (line 47) | type NavigatorUADataLike = NavigatorHighEntropyHints & { function normalize (line 51) | function normalize(value: T | null | undefined): T | undefined { constant ARCHITECTURE_PATTERNS (line 55) | const ARCHITECTURE_PATTERNS: ReadonlyArray<{pattern: RegExp; label: stri... function normalizeArchitectureValue (line 63) | function normalizeArchitectureValue(value: string | null | undefined): s... function getClientInfoSync (line 163) | function getClientInfoSync(): ClientInfo { function preloadClientInfo (line 174) | function preloadClientInfo(): Promise { function getDesktopContext (line 188) | async function getDesktopContext(): Promise> { function getWindowsVersionName (line 209) | function getWindowsVersionName(osVersion: string): string { function getOsContext (line 259) | async function getOsContext(): Promise> { function getClientInfo (line 295) | async function getClientInfo(): Promise { function getGatewayClientProperties (line 306) | async function getGatewayClientProperties(geo?: {latitude?: string | nul... FILE: fluxer_app/src/utils/CodeLinkUtils.tsx type CodeLinkConfig (line 23) | interface CodeLinkConfig { function createPattern (line 30) | function createPattern(config: CodeLinkConfig): RegExp { function findCodes (line 64) | function findCodes(content: string | null, config: CodeLinkConfig): Arra... function findCode (line 89) | function findCode(content: string | null, config: CodeLinkConfig): strin... FILE: fluxer_app/src/utils/ColorUtils.tsx function int2hex (line 22) | function int2hex(colorInt: number) { function int2rgba (line 29) | function int2rgba(colorInt: number, alpha?: number) { function int2rgb (line 41) | function int2rgb(colorInt: number) { function getBestContrastColor (line 51) | function getBestContrastColor(colorInt: number): 'black' | 'white' { constant AVATAR_BACKGROUND_DIM_AMOUNT (line 73) | const AVATAR_BACKGROUND_DIM_AMOUNT = 0.12; function clampChannel (line 75) | function clampChannel(value: number): number { function dimHexColor (line 79) | function dimHexColor(color: string, amount: number): string | null { function dimRgbColor (line 92) | function dimRgbColor(color: string, amount: number): string | null { function dimColor (line 104) | function dimColor(color: string, amount = AVATAR_BACKGROUND_DIM_AMOUNT):... FILE: fluxer_app/src/utils/CommandUtils.tsx constant USER_MENTION_REGEX (line 34) | const USER_MENTION_REGEX = /<@!?(\d+)>/; type ParsedCommand (line 37) | type ParsedCommand = function parseCommand (line 47) | function parseCommand(content: string): ParsedCommand { function transformWrappingCommands (line 134) | function transformWrappingCommands(content: string): string { function isCommand (line 154) | function isCommand(content: string): boolean { function createSystemMessage (line 168) | function createSystemMessage(channelId: string, content: string): Messag... function executeCommand (line 199) | async function executeCommand(command: ParsedCommand, channelId: string,... FILE: fluxer_app/src/utils/ContextMenuUtils.tsx function toAbstractView (line 33) | function toAbstractView(view: Window | null): AbstractView | null { function getSelectionText (line 38) | function getSelectionText(): string { function findUserData (line 48) | function findUserData(element: HTMLElement): {userId?: string; guildId?:... function handleContextMenu (line 66) | function handleContextMenu(e: MouseEvent): void { function getMutedText (line 156) | function getMutedText(isMuted: boolean, muteConfig?: MuteConfig): string... function getNotificationSettingsLabel (line 168) | function getNotificationSettingsLabel(currentNotificationLevel: number):... FILE: fluxer_app/src/utils/CopyLinkHandlers.tsx function useCopyLinkHandler (line 24) | function useCopyLinkHandler(text: string | null, suppressToast = true): ... FILE: fluxer_app/src/utils/CustomSoundDB.tsx constant DB_NAME (line 22) | const DB_NAME = 'FluxerCustomSounds'; constant DB_VERSION (line 23) | const DB_VERSION = 2; constant STORE_NAME (line 24) | const STORE_NAME = 'customSounds'; constant ENTRANCE_SOUND_STORE (line 25) | const ENTRANCE_SOUND_STORE = 'entranceSound'; type CustomSound (line 27) | interface CustomSound { function saveCustomSound (line 66) | async function saveCustomSound(soundType: SoundType, blob: Blob, fileNam... function getCustomSound (line 91) | async function getCustomSound(soundType: SoundType): Promise { function getAllCustomSounds (line 125) | async function getAllCustomSounds(): Promise> { constant SUPPORTED_AUDIO_FORMATS (line 142) | const SUPPORTED_AUDIO_FORMATS = ['.mp3', '.wav', '.ogg', '.m4a', '.aac',... constant SUPPORTED_MIME_TYPES (line 144) | const SUPPORTED_MIME_TYPES = [ constant MAX_FILE_SIZE (line 155) | const MAX_FILE_SIZE = 2 * 1024 * 1024; constant MAX_ENTRANCE_SOUND_DURATION (line 156) | const MAX_ENTRANCE_SOUND_DURATION = 5.2; function isValidAudioFile (line 158) | function isValidAudioFile(file: File): {valid: boolean; error?: string} { function validateAudioDuration (line 177) | function validateAudioDuration(file: File): Promise<{valid: boolean; err... type EntranceSound (line 206) | interface EntranceSound { constant ENTRANCE_SOUND_KEY (line 213) | const ENTRANCE_SOUND_KEY = 'userEntranceSound'; function saveEntranceSound (line 215) | async function saveEntranceSound(blob: Blob, fileName: string, duration:... function getEntranceSound (line 240) | async function getEntranceSound(): Promise { function deleteEntranceSound (line 257) | async function deleteEntranceSound(): Promise { FILE: fluxer_app/src/utils/DateUtils.tsx function shouldUse12HourFormat (line 37) | function shouldUse12HourFormat(locale: string): boolean { function getRelativeDateString (line 52) | function getRelativeDateString(timestamp: number | Date | string, i18n: ... function getFormattedDateTime (line 73) | function getFormattedDateTime(timestamp: number | Date | string): string { function getFormattedShortDate (line 79) | function getFormattedShortDate(timestamp: number | Date | string): string { function getFormattedTime (line 84) | function getFormattedTime(timestamp: number | Date | string): string { function getFormattedCompactDateTime (line 90) | function getFormattedCompactDateTime(timestamp: number | Date | string):... function getFormattedFullDate (line 96) | function getFormattedFullDate(timestamp: number | Date | string): string { function getFormattedDateTimeWithSeconds (line 101) | function getFormattedDateTimeWithSeconds(timestamp: number | Date | stri... FILE: fluxer_app/src/utils/DeepLinkUtils.test.tsx constant CANARY_BASE (line 23) | const CANARY_BASE = 'https://canary.fluxer.app'; constant STABLE_BASE (line 24) | const STABLE_BASE = 'https://fluxer.app'; constant CHANNEL_LINKS (line 25) | const CHANNEL_LINKS = [ constant GUILD_CHANNEL (line 35) | const GUILD_CHANNEL = `${STABLE_BASE}/channels/12345678901234567/2345678... constant GUILD_MESSAGE (line 36) | const GUILD_MESSAGE = `${STABLE_BASE}/channels/12345678901234567/2345678... FILE: fluxer_app/src/utils/DeepLinkUtils.tsx type DeepLinkTarget (line 40) | type DeepLinkTarget = function handleDeepLinkUrl (line 115) | function handleDeepLinkUrl(rawUrl: string): boolean { function handleRpcNavigation (line 122) | function handleRpcNavigation(path: string): void { function startDeepLinkHandling (line 128) | async function startDeepLinkHandling(): Promise { constant EXTRA_INTERNAL_CHANNEL_HOSTS (line 168) | const EXTRA_INTERNAL_CHANNEL_HOSTS = ['fluxer.app', 'canary.fluxer.app']; function isInternalChannelHost (line 170) | function isInternalChannelHost(host: string): boolean { function parseChannelUrl (line 181) | function parseChannelUrl(url: string): string | null { type ChannelJumpLink (line 226) | interface ChannelJumpLink { type MessageJumpLink (line 231) | interface MessageJumpLink extends ChannelJumpLink { function parseChannelJumpLink (line 241) | function parseChannelJumpLink(url: string): ChannelJumpLink | null { function parseMessageJumpLink (line 254) | function parseMessageJumpLink(url: string): MessageJumpLink | null { FILE: fluxer_app/src/utils/DesktopRpcClient.tsx constant RPC_PORT_STABLE (line 22) | const RPC_PORT_STABLE = 21863; constant RPC_PORT_CANARY (line 23) | const RPC_PORT_CANARY = 21864; constant RPC_PORTS (line 25) | const RPC_PORTS = type RpcResponse (line 28) | interface RpcResponse { type HealthResponse (line 34) | interface HealthResponse { type NavigateResponse (line 41) | interface NavigateResponse { constant HEALTH_CHECK_CACHE_MS (line 48) | const HEALTH_CHECK_CACHE_MS = 5000; function rpcFetch (line 50) | async function rpcFetch(port: number, endpoint: string, options?: Req... function checkDesktopAvailable (line 67) | async function checkDesktopAvailable(): Promise<{ function navigateInDesktop (line 95) | async function navigateInDesktop(path: string): Promise<{success: boolea... function focusDesktop (line 119) | async function focusDesktop(): Promise<{success: boolean; error?: string... function resetDesktopRpcCache (line 139) | function resetDesktopRpcCache(): void { FILE: fluxer_app/src/utils/DimensionUtils.tsx type MediaDimensions (line 22) | interface MediaDimensions { type DimensionOptions (line 27) | interface DimensionOptions { type DimensionResult (line 36) | interface DimensionResult { constant DEFAULT_OPTIONS (line 42) | const DEFAULT_OPTIONS: Required = { class MediaDimensionCalculator (line 51) | class MediaDimensionCalculator { method constructor (line 54) | constructor(options?: DimensionOptions) { method calculate (line 58) | public calculate(dimensions: MediaDimensions, options?: DimensionOptio... method calculateImage (line 73) | public calculateImage(dimensions: MediaDimensions, options?: Omit): boole... FILE: fluxer_app/src/utils/EmojiCodepointUtils.tsx function convertToCodePoints (line 20) | function convertToCodePoints(emoji: string): string { FILE: fluxer_app/src/utils/EmojiUtils.tsx constant TWEMOJI_CDN (line 25) | const TWEMOJI_CDN = 'https://fluxerstatic.com/emoji'; type TwemojiComponent (line 27) | type TwemojiComponent = FC>; function fromHexCodePoint (line 31) | function fromHexCodePoint(hex: string): string { function getTwemojiURL (line 35) | function getTwemojiURL(codePoints: string): string | null { function getEmojiURL (line 43) | function getEmojiURL(unicode: string): string | null { function getTwemojiSvg (line 47) | function getTwemojiSvg(_codePoints: string): TwemojiComponent | null { function getEmojiSvg (line 50) | function getEmojiSvg(_unicode: string): TwemojiComponent | null { FILE: fluxer_app/src/utils/ExpressionPermissionUtils.tsx type AvailabilityCheck (line 31) | interface AvailabilityCheck { function hasGlobalExpressionsEnabled (line 38) | function hasGlobalExpressionsEnabled(): boolean { function checkEmojiAvailability (line 47) | function checkEmojiAvailability(i18n: I18n, emoji: FlatEmoji, channel: C... function checkEmojiAvailabilityWithGuildFallback (line 51) | function checkEmojiAvailabilityWithGuildFallback( function checkStickerAvailability (line 139) | function checkStickerAvailability( function filterEmojisForAutocomplete (line 237) | function filterEmojisForAutocomplete( function filterStickersForAutocomplete (line 248) | function filterStickersForAutocomplete( function shouldShowEmojiPremiumUpsell (line 259) | function shouldShowEmojiPremiumUpsell(channel: ChannelRecord | null): bo... function shouldShowStickerPremiumUpsell (line 282) | function shouldShowStickerPremiumUpsell(channel: ChannelRecord | null): ... FILE: fluxer_app/src/utils/ExpressionPremiumSummary.tsx type ExpressionPremiumSummary (line 22) | interface ExpressionPremiumSummary { function getExpressionPremiumSummary (line 29) | function getExpressionPremiumSummary( function getPreviewItems (line 70) | function getPreviewItems(items: ReadonlyArray, limit: number, seed... FILE: fluxer_app/src/utils/FavoriteMemeUtils.tsx function extractKlipyName (line 26) | function extractKlipyName(url: string): string | null { function extractFilenameFromUrl (line 37) | function extractFilenameFromUrl(url: string): string | null { function deriveDefaultNameFromAttachment (line 54) | function deriveDefaultNameFromAttachment(i18n: I18n, attachment: Message... function deriveDefaultNameFromEmbedMedia (line 80) | function deriveDefaultNameFromEmbedMedia(i18n: I18n, embedMedia: EmbedMe... function isFavoritedByContentHash (line 107) | function isFavoritedByContentHash( function isFavoritedByKlipySlug (line 115) | function isFavoritedByKlipySlug( function isFavoritedByTenorSlugId (line 123) | function isFavoritedByTenorSlugId( function isFavorited (line 131) | function isFavorited( function findFavoritedMeme (line 147) | function findFavoritedMeme( FILE: fluxer_app/src/utils/FileDownloadUtils.tsx type MediaType (line 22) | type MediaType = 'image' | 'video' | 'audio' | 'file'; function downloadFile (line 24) | async function downloadFile(src: string, _type: MediaType, _providedFile... function createSaveHandler (line 29) | function createSaveHandler(src: string, type: MediaType, providedFilenam... FILE: fluxer_app/src/utils/FilePickerUtils.tsx type PickerOptions (line 20) | interface PickerOptions { function openFilePicker (line 25) | function openFilePicker({multiple = false, accept}: PickerOptions = {}):... FILE: fluxer_app/src/utils/FileUploadUtils.tsx type FileUploadResult (line 22) | interface FileUploadResult { function handleFileUpload (line 27) | async function handleFileUpload( function convertTextToFile (line 47) | async function convertTextToFile( FILE: fluxer_app/src/utils/FileUtils.tsx function formatFileSize (line 20) | function formatFileSize(bytes: number): string { FILE: fluxer_app/src/utils/FormUtils.tsx type ValidationError (line 27) | interface ValidationError { type APIErrorResponse (line 32) | interface APIErrorResponse { type HandleErrorOptions (line 38) | interface HandleErrorOptions { function collectFormPaths (line 42) | function collectFormPaths(value: unknown, prefix: string, paths: Set( FILE: fluxer_app/src/utils/ForwardedMessageUtils.tsx type ForwardedMessageContext (line 32) | interface ForwardedMessageContext { function useForwardedMessageContext (line 40) | function useForwardedMessageContext(message: MessageRecord): ForwardedMe... FILE: fluxer_app/src/utils/GeoUtils.tsx function getRegionDisplayName (line 24) | function getRegionDisplayName(i18n: I18n, countryCode?: string, regionCo... FILE: fluxer_app/src/utils/GiftCodeUtils.tsx constant GIFT_CONFIG (line 23) | const GIFT_CONFIG: CodeLinkUtils.CodeLinkConfig = { method urlBase (line 24) | get urlBase() { function findGifts (line 30) | function findGifts(content: string | null): Array { FILE: fluxer_app/src/utils/GiftUtils.tsx type GiftDurationTextConfig (line 24) | interface GiftDurationTextConfig { type GiftDurationPayload (line 30) | interface GiftDurationPayload { function formatGiftDurationText (line 34) | function formatGiftDurationText(durationMonths: number, config: GiftDura... function getPlutoniumDurationConfig (line 46) | function getPlutoniumDurationConfig(i18n: I18n): GiftDurationTextConfig { function getPremiumDurationConfig (line 57) | function getPremiumDurationConfig(i18n: I18n): GiftDurationTextConfig { function getGiftDurationText (line 68) | function getGiftDurationText(i18n: I18n, gift: Gift | GiftDurationPayloa... function getPremiumGiftDurationText (line 72) | function getPremiumGiftDurationText(i18n: I18n, gift: Gift | GiftDuratio... FILE: fluxer_app/src/utils/GroupDMColorUtils.tsx constant GROUP_DM_COLORS (line 20) | const GROUP_DM_COLORS = ['#5865F2', '#57F287', '#FEE75C', '#EB459E', '#E... function getGroupDMAccentColor (line 31) | function getGroupDMAccentColor(channelId: string): string { FILE: fluxer_app/src/utils/GroupDmUtils.tsx function getMaxGroupDmRecipients (line 31) | function getMaxGroupDmRecipients(): number { function getMaxGroupDmOtherRecipients (line 35) | function getMaxGroupDmOtherRecipients(): number { function getGroupDmRemainingSlots (line 39) | function getGroupDmRemainingSlots(channel?: ChannelRecord): number { function isGroupDmFull (line 46) | function isGroupDmFull(channel?: ChannelRecord): boolean { function getDuplicateGroupDMChannels (line 53) | function getDuplicateGroupDMChannels( FILE: fluxer_app/src/utils/GuildInitialsUtils.tsx function getInitialsLength (line 20) | function getInitialsLength(initials: string): 'short' | 'medium' | 'long' { FILE: fluxer_app/src/utils/HelpCenterUtils.tsx function getURL (line 23) | function getURL(slug: HelpCenterArticleSlug): string { FILE: fluxer_app/src/utils/ImageCacheUtils.tsx type ImageCacheEntry (line 22) | interface ImageCacheEntry { function hasImage (line 36) | function hasImage(src: string | null): boolean { function loadImage (line 40) | function loadImage(src: string | null, onLoad: () => void, onError?: () ... FILE: fluxer_app/src/utils/ImageCropUtils.tsx constant EMOJI_MAX_SIZE_FALLBACK (line 22) | const EMOJI_MAX_SIZE_FALLBACK = EMOJI_MAX_SIZE; constant STICKER_MAX_SIZE_FALLBACK (line 23) | const STICKER_MAX_SIZE_FALLBACK = STICKER_MAX_SIZE; function optimizeEmojiImage (line 25) | async function optimizeEmojiImage( function optimizeStickerImage (line 42) | async function optimizeStickerImage( function fileToBase64NoPrefix (line 50) | async function fileToBase64NoPrefix(file: File): Promise { function containToSquareBase64 (line 60) | async function containToSquareBase64( FILE: fluxer_app/src/utils/InviteUtils.tsx constant INVITE_CONFIG (line 30) | const INVITE_CONFIG: CodeLinkUtils.CodeLinkConfig = { method urlBase (line 31) | get urlBase() { function findInvites (line 37) | function findInvites(content: string | null): Array { function findInvite (line 41) | function findInvite(content: string | null): string | null { constant INVITABLE_CHANNEL_TYPES (line 45) | const INVITABLE_CHANNEL_TYPES: Set = new Set([ChannelTypes.GUILD... function getFirstInvitableChannel (line 47) | function getFirstInvitableChannel(guildId: string): string | undefined { function getInvitableChannelId (line 53) | function getInvitableChannelId(guildId: string): string | undefined { function isChannelVisibleToEveryone (line 64) | function isChannelVisibleToEveryone(channel: ChannelRecord, guild: Guild... type InviteCapability (line 72) | interface InviteCapability { function getInviteCapability (line 78) | function getInviteCapability(channelId: string | undefined, guildId: str... function canInviteToChannel (line 101) | function canInviteToChannel(channelId: string | undefined, guildId: stri... function getVanityInviteUrl (line 105) | function getVanityInviteUrl(vanityUrlCode: string): string { FILE: fluxer_app/src/utils/KeybindUtils.tsx constant CONTROL_KEY_SYMBOL (line 24) | const CONTROL_KEY_SYMBOL = '⌃'; function formatKeyCombo (line 26) | function formatKeyCombo(combo: KeyCombo): string { FILE: fluxer_app/src/utils/KeyboardUtils.tsx constant SHIFT_KEY_SYMBOL (line 22) | const SHIFT_KEY_SYMBOL = '\u21E7'; function handleStopPropagationForKeyboardActivation (line 23) | function handleStopPropagationForKeyboardActivation(e: React.KeyboardEve... function stopPropagationOnEnterSpace (line 29) | function stopPropagationOnEnterSpace(e: React.KeyboardEvent): void { FILE: fluxer_app/src/utils/KlipyUtils.tsx type KlipyPath (line 20) | interface KlipyPath { function parseKlipyPath (line 25) | function parseKlipyPath(url: string): KlipyPath | null { function extractKlipySlug (line 52) | function extractKlipySlug(url: string): string | null { function buildKlipyShareUrl (line 56) | function buildKlipyShareUrl({slug, type = 'gif'}: {slug: string; type?: ... function resolveKlipyShareUrl (line 65) | function resolveKlipyShareUrl({ function parseTitleFromUrl (line 84) | function parseTitleFromUrl(url: string): string { FILE: fluxer_app/src/utils/LinkSuppressionUtils.tsx function isLinkWrappedInAngleBrackets (line 20) | function isLinkWrappedInAngleBrackets(content: string, matchStart: numbe... FILE: fluxer_app/src/utils/LocaleUtils.tsx type LocaleInfo (line 29) | interface LocaleInfo { constant SUPPORTED_LOCALES (line 37) | const SUPPORTED_LOCALES: Array = [ constant DEFAULT_LOCALE (line 74) | const DEFAULT_LOCALE = 'en-US'; function getCurrentLocale (line 76) | function getCurrentLocale(): string { function setLocale (line 80) | function setLocale(localeCode: string): void { type TranslatedLocaleInfo (line 96) | interface TranslatedLocaleInfo { function getSortedLocales (line 104) | function getSortedLocales(): Array { FILE: fluxer_app/src/utils/MarkdownToSegmentUtils.tsx constant MARKDOWN_SEGMENT_PATTERN (line 26) | const MARKDOWN_SEGMENT_PATTERN = /<(@|#|@&)([a-zA-Z0-9]+)>|<(a)?:([^:]+)... type SegmentConversionResult (line 28) | interface SegmentConversionResult { function convertMarkdownToSegments (line 39) | function convertMarkdownToSegments(markdown: string, guildId?: string | ... function applyMarkdownSegments (line 126) | function applyMarkdownSegments( FILE: fluxer_app/src/utils/MediaDeviceRefresh.tsx type MediaDeviceRefreshType (line 26) | enum MediaDeviceRefreshType { type RefreshMediaDeviceListsOptions (line 31) | interface RefreshMediaDeviceListsOptions { function refreshMediaDeviceLists (line 35) | async function refreshMediaDeviceLists(options: RefreshMediaDeviceListsO... FILE: fluxer_app/src/utils/MediaDimensionConfig.tsx type MediaDimensionConstraints (line 25) | interface MediaDimensionConstraints extends MediaDimensions {} constant DIMENSION_PRESETS (line 27) | const DIMENSION_PRESETS = { function getAttachmentMediaDimensions (line 38) | function getAttachmentMediaDimensions(message?: MessageRecord): MediaDim... function getEmbedMediaDimensions (line 47) | function getEmbedMediaDimensions(): MediaDimensionConstraints { function getMosaicMediaDimensions (line 52) | function getMosaicMediaDimensions(message?: MessageRecord): MediaDimensi... FILE: fluxer_app/src/utils/MediaProxyUtils.tsx type MediaProxyOptions (line 20) | interface MediaProxyOptions { function appendMediaProxyParams (line 28) | function appendMediaProxyParams(url: URL, options: MediaProxyOptions): v... function buildMediaProxyURL (line 48) | function buildMediaProxyURL(originalUrl: string, options: MediaProxyOpti... function stripMediaProxyParams (line 56) | function stripMediaProxyParams(proxyURL: string): string { FILE: fluxer_app/src/utils/MediaViewerItemUtils.tsx function determineMediaType (line 24) | function determineMediaType(attachment: MessageAttachment): 'audio' | 'v... function attachmentToViewerItem (line 40) | function attachmentToViewerItem( type AttachmentsToViewerItemsOptions (line 63) | interface AttachmentsToViewerItemsOptions { function attachmentsToViewerItems (line 68) | function attachmentsToViewerItems( function findViewerItemIndex (line 82) | function findViewerItemIndex(items: ReadonlyArray, atta... FILE: fluxer_app/src/utils/MemberListLayout.tsx type MemberListGroupSnapshot (line 20) | interface MemberListGroupSnapshot { type MemberListGroupLayout (line 25) | interface MemberListGroupLayout { type RowSeekDirection (line 34) | type RowSeekDirection = 'backward' | 'forward'; function buildMemberListLayout (line 36) | function buildMemberListLayout(groups: ReadonlyArray, guildId: string)... function getHighestHoistedRole (line 60) | function getHighestHoistedRole(member: GuildMemberRecord, guild: GuildRe... function groupMembersByRole (line 82) | function groupMembersByRole(members: Array, guild: Gu... function getOnlineWithoutHoistedRole (line 116) | function getOnlineWithoutHoistedRole(members: Array, ... function getMemberGroups (line 123) | function getMemberGroups(guild: GuildRecord, channel: ChannelRecord): Ar... function sortUsersByDisplayName (line 159) | function sortUsersByDisplayName(users: Array): Array): Array... FILE: fluxer_app/src/utils/MessageComponentUtils.tsx function getMessageComponent (line 35) | function getMessageComponent( FILE: fluxer_app/src/utils/MessageGroupingUtils.test.tsx type MessageFixtureOptions (line 28) | interface MessageFixtureOptions { function createRawMessage (line 39) | function createRawMessage(options: MessageFixtureOptions): Message { function createMessageRecord (line 72) | function createMessageRecord(options: MessageFixtureOptions): MessageRec... function createChannelRecord (line 76) | function createChannelRecord(channelId: string): ChannelRecord { FILE: fluxer_app/src/utils/MessageGroupingUtils.tsx type ChannelStreamType (line 37) | type ChannelStreamType = ValueOf; type ChannelStreamItem (line 39) | interface ChannelStreamItem { constant MESSAGE_GROUP_TIMEOUT (line 53) | const MESSAGE_GROUP_TIMEOUT = 7 * 60 * 1000; function isNewMessageGroup (line 55) | function isNewMessageGroup( function getCollapsedGroupType (line 124) | function getCollapsedGroupType( function createChannelStream (line 135) | function createChannelStream(props: { FILE: fluxer_app/src/utils/MessageLinkUtils.tsx type BuildMessageLinkOptions (line 23) | interface BuildMessageLinkOptions { constant DEFAULT_PROTOCOL (line 30) | const DEFAULT_PROTOCOL = 'https:'; type BuildChannelLinkOptions (line 32) | interface BuildChannelLinkOptions { function buildMessageJumpLink (line 50) | function buildMessageJumpLink({ function buildChannelLink (line 62) | function buildChannelLink({guildId, channelId, includeProtocol = true}: ... FILE: fluxer_app/src/utils/MessageNavigator.tsx type MessageJumpOptions (line 26) | interface MessageJumpOptions { function goToMessage (line 34) | function goToMessage(channelId: string, messageId: string, options?: Mes... function parseMessagePath (line 58) | function parseMessagePath(path: string): {channelId: string; messageId: ... FILE: fluxer_app/src/utils/MessageRequestUtils.tsx constant DEFAULT_ALLOWED_MENTIONS (line 27) | const DEFAULT_ALLOWED_MENTIONS: AllowedMentions = {replied_user: true}; type ApiAttachmentMetadata (line 29) | interface ApiAttachmentMetadata { type MessageCreateRequest (line 39) | interface MessageCreateRequest { type MessageEditRequest (line 51) | interface MessageEditRequest { type MessageCreatePayload (line 57) | interface MessageCreatePayload { type NormalizedMessageContent (line 69) | interface NormalizedMessageContent { function normalizeMessageContent (line 74) | function normalizeMessageContent(content: string, favoriteMemeId?: strin... function buildMessageCreateRequest (line 80) | function buildMessageCreateRequest(payload: MessageCreatePayload): Messa... FILE: fluxer_app/src/utils/MessageSelectionCopyUtils.test.tsx type MessageRowDefinition (line 23) | interface MessageRowDefinition { function createRootElement (line 206) | function createRootElement(): HTMLElement { function createMessageRow (line 212) | function createMessageRow(definition: MessageRowDefinition): HTMLElement { function selectRange (line 255) | function selectRange(initialiseRange: (range: Range) => void): void { FILE: fluxer_app/src/utils/MessageSelectionCopyUtils.tsx constant RANGE_START_TO_START (line 20) | const RANGE_START_TO_START = 0; constant RANGE_END_TO_END (line 21) | const RANGE_END_TO_END = 2; type MessageSelectionCopyOptions (line 23) | interface MessageSelectionCopyOptions { type PreparedRowText (line 29) | interface PreparedRowText { type HeaderInfo (line 34) | interface HeaderInfo { function buildMessageSelectionCopyText (line 40) | function buildMessageSelectionCopyText(options: MessageSelectionCopyOpti... function isSelectionInsideRoot (line 68) | function isSelectionInsideRoot(selection: Selection | null, rootElement:... function getSelectionRange (line 82) | function getSelectionRange(selection: Selection | null): Range | null { function getSelectedMessageRows (line 95) | function getSelectedMessageRows(rootElement: HTMLElement, selectionRange... function rangeIntersectsNode (line 100) | function rangeIntersectsNode(range: Range, node: Node): boolean { function prepareRowText (line 108) | function prepareRowText( function getResolvedMessagePlaintext (line 142) | function getResolvedMessagePlaintext( function getRowSelectionRange (line 160) | function getRowSelectionRange(row: HTMLElement, selectionRange: Range): ... function isEntireRowSelected (line 181) | function isEntireRowSelected(row: HTMLElement, rowSelectionRange: Range)... function sanitiseCopiedText (line 191) | function sanitiseCopiedText(text: string): string { function isGroupStartRow (line 198) | function isGroupStartRow(row: HTMLElement): boolean { function getHeaderInfo (line 202) | function getHeaderInfo(row: HTMLElement): HeaderInfo | null { function getTextContentWithoutAriaHidden (line 227) | function getTextContentWithoutAriaHidden(element: HTMLElement): string { function findHeaderElement (line 251) | function findHeaderElement(row: HTMLElement): HTMLElement | null { function removeHeaderPrefix (line 262) | function removeHeaderPrefix(rowText: string, headerInfo: HeaderInfo): st... function lineContainsHeader (line 298) | function lineContainsHeader(line: string, username: string, timestamp: s... function lineContainsTimestamp (line 302) | function lineContainsTimestamp(line: string, timestamp: string): boolean { function createHeaderPrefixPattern (line 307) | function createHeaderPrefixPattern(username: string, timestamp: string):... function removeInlineHeaderPrefix (line 313) | function removeInlineHeaderPrefix(line: string, username: string, timest... function removeTimestampLinePrefix (line 320) | function removeTimestampLinePrefix(line: string, timestamp: string): str... function stripLeadingHeaderSeparator (line 326) | function stripLeadingHeaderSeparator(value: string): string { function escapeRegExp (line 330) | function escapeRegExp(value: string): string { function collapseWhitespace (line 334) | function collapseWhitespace(value: string): string { function normaliseLineEndings (line 338) | function normaliseLineEndings(value: string): string { function joinPreparedRows (line 342) | function joinPreparedRows(rows: Array): string { FILE: fluxer_app/src/utils/MessageSubmitUtils.tsx type MessageSubmitData (line 31) | interface MessageSubmitData { type UploadingAttachment (line 42) | interface UploadingAttachment { function createUploadingAttachments (line 53) | function createUploadingAttachments( function createOptimisticMessage (line 77) | function createOptimisticMessage( function prepareMessageReference (line 105) | function prepareMessageReference( function claimMessageAttachments (line 112) | function claimMessageAttachments( FILE: fluxer_app/src/utils/MessageUtils.tsx function isMentioned (line 30) | function isMentioned(user: UserRecord, message: MessageRecord): boolean { FILE: fluxer_app/src/utils/MfaUtils.tsx constant TOTP_ALPHABET (line 20) | const TOTP_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'; function generateTotpSecret (line 46) | function generateTotpSecret() { function encodeTotpSecret (line 50) | function encodeTotpSecret(secret: string) { function encodeTotpSecretAsURL (line 54) | function encodeTotpSecretAsURL(accountName: string, secret: string, issu... FILE: fluxer_app/src/utils/MobileExperience.tsx function isMobileExperienceEnabled (line 22) | function isMobileExperienceEnabled(): boolean { FILE: fluxer_app/src/utils/MobileNavigation.tsx type Navigator (line 23) | interface Navigator { function computeBasePath (line 38) | function computeBasePath(url: string): string | null { function navigateToWithMobileHistory (line 50) | function navigateToWithMobileHistory(url: string, isMobile: boolean, nav... FILE: fluxer_app/src/utils/NativePermissions.tsx type PermissionKind (line 22) | type PermissionKind = 'microphone' | 'camera' | 'screen' | 'accessibilit... type NativePermissionResult (line 24) | type NativePermissionResult = 'granted' | 'denied' | 'not-determined' | ... constant CACHE_DURATION (line 34) | const CACHE_DURATION = 1000; function getCachedPermission (line 36) | function getCachedPermission(kind: PermissionKind): NativePermissionResu... function checkNativePermission (line 53) | async function checkNativePermission(kind: PermissionKind): Promise { function isNativeMacOS (line 75) | function isNativeMacOS(platform?: NativePlatform) { function isNativeWindows (line 78) | function isNativeWindows(platform?: NativePlatform) { function isNativeLinux (line 81) | function isNativeLinux(platform?: NativePlatform) { function supportsDesktopScreenShareAudioCapture (line 85) | function supportsDesktopScreenShareAudioCapture(): boolean { function openExternalUrl (line 107) | async function openExternalUrl(url: string, target: string = '_blank') { function attachExternalLinkInterceptor (line 121) | function attachExternalLinkInterceptor() { function downloadWithNative (line 145) | async function downloadWithNative(options: { FILE: fluxer_app/src/utils/NicknameUtils.tsx function getNickname (line 26) | function getNickname(user: UserRecord, guildId?: string, channelId?: str... FILE: fluxer_app/src/utils/NotificationUtils.tsx function ensureDesktopNotificationClickHandler (line 34) | function ensureDesktopNotificationClickHandler(): void { function hasNotification (line 49) | function hasNotification(): boolean { function isGranted (line 54) | async function isGranted(): Promise { function playNotificationSoundIfEnabled (line 59) | function playNotificationSoundIfEnabled(): void { type PermissionResult (line 64) | type PermissionResult = 'granted' | 'denied' | 'unsupported'; function requestPermission (line 89) | async function requestPermission(i18n: I18n): Promise { type NotificationResult (line 121) | interface NotificationResult { function showNotification (line 201) | async function showNotification({ function closeNativeNotification (line 256) | function closeNativeNotification(id: string): void { function closeNativeNotifications (line 263) | function closeNativeNotifications(ids: Array): void { FILE: fluxer_app/src/utils/PasteSegmentUtils.tsx constant MARKDOWN_MENTION_PATTERN (line 22) | const MARKDOWN_MENTION_PATTERN = /<(@|#|@&)([a-zA-Z0-9]+)>/g; constant EMOJI_MARKDOWN_PATTERN (line 24) | const EMOJI_MARKDOWN_PATTERN = /<(a)?:([^:]+):([a-zA-Z0-9]+)>/g; type PastedSegmentInfo (line 26) | interface PastedSegmentInfo { type LookupFunctions (line 35) | interface LookupFunctions { function detectPastedSegments (line 42) | function detectPastedSegments( FILE: fluxer_app/src/utils/PermissionUtils.tsx constant NONE (line 37) | const NONE = 0n; type PermissionOverwrite (line 39) | interface PermissionOverwrite { type Role (line 46) | interface Role { type PermissionSpec (line 52) | interface PermissionSpec { function calculateElevatedPermissions (line 61) | function calculateElevatedPermissions(permissions: bigint, guild: Guild,... function computePermissions (line 75) | function computePermissions( function isRoleHigher (line 187) | function isRoleHigher(guild: Guild, userId: string, a: Role | null, b: R... function getHighestRole (line 201) | function getHighestRole(guild: Guild, userId: string): Role | null { function can (line 220) | function can( function generateGuildGeneralPermissionSpec (line 230) | function generateGuildGeneralPermissionSpec(i18n: I18n): PermissionSpec { function generateGuildTextPermissionSpec (line 302) | function generateGuildTextPermissionSpec(i18n: I18n): PermissionSpec { function generateGuildModerationPermissionSpec (line 364) | function generateGuildModerationPermissionSpec(i18n: I18n): PermissionSp... function generateGuildAccessPermissionSpec (line 377) | function generateGuildAccessPermissionSpec(i18n: I18n): PermissionSpec { function generateGuildVoicePermissionSpec (line 384) | function generateGuildVoicePermissionSpec(i18n: I18n): PermissionSpec { function generateChannelGeneralPermissionSpec (line 430) | function generateChannelGeneralPermissionSpec(i18n: I18n): PermissionSpec { function generateChannelAccessPermissionSpec (line 457) | function generateChannelAccessPermissionSpec(i18n: I18n): PermissionSpec { function generateChannelTextPermissionSpec (line 464) | function generateChannelTextPermissionSpec(i18n: I18n): PermissionSpec { function generateChannelVoicePermissionSpec (line 499) | function generateChannelVoicePermissionSpec(i18n: I18n): PermissionSpec { function generatePermissionSpec (line 524) | function generatePermissionSpec(i18n: I18n): Array { type BotPermissionOption (line 534) | interface BotPermissionOption { function getAllBotPermissions (line 539) | function getAllBotPermissions(i18n: I18n): Array { function getPermissionLabel (line 561) | function getPermissionLabel(i18n: I18n, permission: bigint): string | nu... function formatPermissionLabel (line 566) | function formatPermissionLabel(i18n: I18n, permission: bigint, preferCha... function formatBotPermissionsQuery (line 573) | function formatBotPermissionsQuery(permissions: Array): string { FILE: fluxer_app/src/utils/PlaceholderUtils.tsx function getChannelPlaceholder (line 27) | function getChannelPlaceholder(channelName: string, prefix: string, maxL... function getDMPlaceholder (line 37) | function getDMPlaceholder(username: string, prefix: string, maxLength: n... FILE: fluxer_app/src/utils/Positioning.tsx function getAdaptivePadding (line 20) | function getAdaptivePadding(): number { FILE: fluxer_app/src/utils/PremiumUtils.tsx function shouldShowPremiumFeatures (line 22) | function shouldShowPremiumFeatures(): boolean { FILE: fluxer_app/src/utils/PricingUtils.tsx type PricingTier (line 20) | enum PricingTier { type Currency (line 25) | enum Currency { constant EEA_COUNTRIES (line 30) | const EEA_COUNTRIES = [ function getCurrency (line 63) | function getCurrency(countryCode: string | null): Currency { function isEEACountry (line 68) | function isEEACountry(countryCode: string): boolean { function getPrice (line 72) | function getPrice(tier: PricingTier, currency: Currency): number { function formatPrice (line 87) | function formatPrice(price: number, currency: Currency): string { function getFormattedPrice (line 96) | function getFormattedPrice(tier: PricingTier, countryCode: string | null... FILE: fluxer_app/src/utils/ProfileDisplayUtils.tsx type ProfileDisplayContext (line 31) | interface ProfileDisplayContext { type ProfilePreviewOverrides (line 39) | interface ProfilePreviewOverrides { function getProfileAvatarUrl (line 48) | function getProfileAvatarUrl( function getProfileBannerUrl (line 84) | function getProfileBannerUrl( function getProfileAvatarUrls (line 138) | function getProfileAvatarUrls( FILE: fluxer_app/src/utils/ProfileUtils.tsx type BadgeSettings (line 24) | interface BadgeSettings { function computeVisiblePremiumData (line 31) | function computeVisiblePremiumData(user: UserRecord, previewBadgeSetting... function createMockProfile (line 91) | function createMockProfile( FILE: fluxer_app/src/utils/PwaUtils.tsx type NavigatorWithStandalone (line 22) | interface NavigatorWithStandalone extends Navigator { function isStandalonePwa (line 26) | function isStandalonePwa(): boolean { function isMobileOrTablet (line 34) | function isMobileOrTablet(): boolean { function isPwaOnMobileOrTablet (line 38) | function isPwaOnMobileOrTablet(): boolean { function isInstalledPwa (line 42) | function isInstalledPwa(): boolean { FILE: fluxer_app/src/utils/React.tsx constant FORWARD_REF_TYPE (line 22) | const FORWARD_REF_TYPE = Symbol.for('react.forward_ref'); constant MEMO_TYPE (line 23) | const MEMO_TYPE = Symbol.for('react.memo'); type ReactComponentType (line 25) | interface ReactComponentType { type ReactMemoType (line 31) | interface ReactMemoType { function typeSupportsRef (line 36) | function typeSupportsRef(type: unknown): boolean { function elementSupportsRef (line 62) | function elementSupportsRef(element: React.ReactElement | null | undefin... FILE: fluxer_app/src/utils/ReactionUtils.tsx type ReactionEmoji (line 35) | interface ReactionEmoji { function getReactionTooltip (line 42) | function getReactionTooltip(message: MessageRecord, emoji: ReactionEmoji) { function toReactionEmoji (line 92) | function toReactionEmoji(emoji: UnicodeEmoji | ReactionEmoji): ReactionE... function emojiEquals (line 99) | function emojiEquals(reactionEmoji: ReactionEmoji, emoji: UnicodeEmoji |... function getReactionKey (line 105) | function getReactionKey(messageId: string, emoji: ReactionEmoji) { function getEmojiName (line 109) | function getEmojiName(emoji: ReactionEmoji): string { function getEmojiNameWithColons (line 113) | function getEmojiNameWithColons(emoji: ReactionEmoji): string { function useEmojiURL (line 118) | function useEmojiURL({ FILE: fluxer_app/src/utils/ReducedMotionAnimation.tsx type MotionTarget (line 22) | type MotionTarget = Record; type MotionAnimation (line 24) | interface MotionAnimation { function getReducedMotionProps (line 36) | function getReducedMotionProps(animation: MotionAnimation, prefersReduce... constant TOOLTIP_MOTION (line 48) | const TOOLTIP_MOTION: MotionAnimation = { constant FADE_MOTION (line 58) | const FADE_MOTION: MotionAnimation = { FILE: fluxer_app/src/utils/RegexUtils.tsx function escapeRegex (line 20) | function escapeRegex(str: string) { FILE: fluxer_app/src/utils/RelationshipActionUtils.tsx function getSendFriendRequestErrorMessage (line 33) | function getSendFriendRequestErrorMessage( function canSendFriendRequest (line 57) | function canSendFriendRequest(userId: string, isBot: boolean): boolean { function sendFriendRequest (line 74) | async function sendFriendRequest(i18n: I18n, userId: string): Promise { function showRemoveFriendConfirmation (line 115) | function showRemoveFriendConfirmation(i18n: I18n, user: UserRecord): void { function blockUser (line 131) | async function blockUser(i18n: I18n, userId: string): Promise { function showBlockUserConfirmation (line 141) | function showBlockUserConfirmation(i18n: I18n, user: UserRecord): void { function unblockUser (line 159) | async function unblockUser(i18n: I18n, userId: string): Promise { function showUnblockUserConfirmation (line 169) | function showUnblockUserConfirmation(i18n: I18n, user: UserRecord): void { function ignoreFriendRequest (line 185) | async function ignoreFriendRequest(i18n: I18n, userId: string): Promise<... FILE: fluxer_app/src/utils/ReplaceCommandUtils.tsx constant REPLACE_REGEX (line 20) | const REPLACE_REGEX = /^s\/(.+?)\/(.*?)(?:\/(g)?)?$/; type ReplaceCommand (line 22) | interface ReplaceCommand { function escapeRegExp (line 28) | function escapeRegExp(str: string): string { function parseReplaceCommand (line 32) | function parseReplaceCommand(content: string): ReplaceCommand | null { function executeReplaceCommand (line 50) | function executeReplaceCommand(text: string, command: ReplaceCommand): s... function isReplaceCommand (line 56) | function isReplaceCommand(content: string): boolean { FILE: fluxer_app/src/utils/RouterUtils.tsx function transitionTo (line 28) | function transitionTo(path: string) { function replaceWith (line 37) | function replaceWith(path: string) { function getHistory (line 46) | function getHistory() { FILE: fluxer_app/src/utils/ScreenShareUtils.tsx function executeScreenShareOperation (line 49) | async function executeScreenShareOperation( FILE: fluxer_app/src/utils/ScrollbarDragState.tsx function beginScrollbarDrag (line 46) | function beginScrollbarDrag() { function endScrollbarDrag (line 52) | function endScrollbarDrag() { function endScrollbarDragDeferred (line 57) | function endScrollbarDragDeferred() { function isScrollbarDragActive (line 66) | function isScrollbarDragActive() { FILE: fluxer_app/src/utils/SearchQueryParser.tsx type ParserContext (line 27) | interface ParserContext { type SearchHints (line 32) | interface SearchHints { type ParsedToken (line 37) | interface ParsedToken { constant KNOWN_KEYS (line 47) | const KNOWN_KEYS = new Set([ constant USER_TAG_RE (line 82) | const USER_TAG_RE = /^([A-Za-z0-9_]+)#(\d{4})$/; type HasFilter (line 86) | type HasFilter = NonNullable[number]; constant HAS_FILTERS (line 87) | const HAS_FILTERS: ReadonlySet = new Set([ type AuthorTypeFilter (line 100) | type AuthorTypeFilter = NonNullable[n... constant AUTHOR_FILTERS (line 101) | const AUTHOR_FILTERS: ReadonlySet = new Set(['user', '... type EmbedTypeFilter (line 104) | type EmbedTypeFilter = NonNullable[num... constant EMBED_TYPE_FILTERS (line 105) | const EMBED_TYPE_FILTERS: ReadonlySet = new Set(['image... type SortField (line 108) | type SortField = NonNullable; constant SORT_FIELDS (line 109) | const SORT_FIELDS: ReadonlySet = new Set(['timestamp', 'relev... type SortDirection (line 112) | type SortDirection = NonNullable; constant SORT_ORDERS (line 113) | const SORT_ORDERS: ReadonlySet = new Set(['asc', 'desc']); type SearchScope (line 116) | type SearchScope = NonNullable; constant SEARCH_SCOPES (line 117) | const SEARCH_SCOPES: ReadonlySet = new Set([ function tokenize (line 127) | function tokenize(query: string): {tokens: Array; content: ... constant CURRENT_USER_TOKENS (line 283) | const CURRENT_USER_TOKENS = new Set(['@me']); type ParseContext (line 313) | interface ParseContext { function parseCompactDateTime (line 319) | function parseCompactDateTime(input: string, now: DateTime = DateTime.lo... function parseQuery (line 369) | function parseQuery(query: string, hints?: SearchHints, ctx?: ParseConte... FILE: fluxer_app/src/utils/SearchQueryTokenizer.tsx constant FILTER_PREFIX_REGEX (line 20) | const FILTER_PREFIX_REGEX = /^[a-zA-Z_]+:/; function tokenizeSearchQuery (line 60) | function tokenizeSearchQuery(query: string): Array { FILE: fluxer_app/src/utils/SearchSegmentManager.tsx type SearchSegmentType (line 20) | type SearchSegmentType = 'user' | 'channel'; type SearchSegment (line 21) | interface SearchSegment { class SearchSegmentManager (line 30) | class SearchSegmentManager { method getSegments (line 33) | getSegments(): Array { method setSegments (line 37) | setSegments(segments: Array): void { method clear (line 41) | clear(): void { method getSegmentAt (line 45) | getSegmentAt(position: number): SearchSegment | null { method updateSegmentsForTextChange (line 49) | updateSegmentsForTextChange(changeStart: number, changeEnd: number, re... method insertSegment (line 67) | insertSegment( method replaceWithSegment (line 104) | replaceWithSegment( method detectChange (line 144) | static detectChange( FILE: fluxer_app/src/utils/SearchUtils.tsx type SearchOption (line 29) | interface SearchOption { type SearchValueOption (line 36) | interface SearchValueOption { type MessageSearchScope (line 43) | type MessageSearchScope = 'current' | 'all_dms' | 'open_dms' | 'all' | '... type MessageSearchParams (line 45) | interface MessageSearchParams { type ApiMessageSearchResponse (line 94) | interface ApiMessageSearchResponse { type MessageSearchResponse (line 101) | interface MessageSearchResponse { type IndexingResponse (line 108) | interface IndexingResponse { type SearchResult (line 113) | type SearchResult = MessageSearchResponse | IndexingResponse; type MessageSearchApiParams (line 115) | type MessageSearchApiParams = Record { function toApiParams (line 347) | function toApiParams(params: MessageSearchParams, extraParams?: MessageS... function parseSearchQueryWithSegments (line 396) | function parseSearchQueryWithSegments(query: string, _segments: Array, query: string):... function isCommandRequiringUserMention (line 153) | function isCommandRequiringUserMention(commandName: string): boolean { function getCommandInsertionText (line 157) | function getCommandInsertionText(command: Command): string { FILE: fluxer_app/src/utils/SoundLabels.tsx function getSoundLabels (line 24) | function getSoundLabels(i18n: I18n): Record { FILE: fluxer_app/src/utils/SoundUtils.tsx constant MAX_EFFECTIVE_VOLUME (line 42) | const MAX_EFFECTIVE_VOLUME = 0.4; constant MASTER_HEADROOM (line 43) | const MASTER_HEADROOM = 0.8; constant MIN_GAIN (line 45) | const MIN_GAIN = 0.0001; constant DEFAULT_FADE_DURATION (line 46) | const DEFAULT_FADE_DURATION = 0.08; type SoundType (line 67) | type SoundType = ValueOf; constant SOUND_FILES (line 69) | const SOUND_FILES: Record = { type AudioInstance (line 88) | interface AudioInstance { function playSound (line 201) | async function playSound( function clearCustomSoundCache (line 283) | function clearCustomSoundCache(type?: SoundType): void { function stopSound (line 299) | async function stopSound(type: SoundType): Promise { function stopAllSounds (line 318) | async function stopAllSounds(): Promise { FILE: fluxer_app/src/utils/SpoilerUtils.tsx constant SPOILER_REGEX (line 27) | const SPOILER_REGEX = /\|\|([\s\S]*?)\|\|/g; constant URL_REGEX (line 28) | const URL_REGEX = /https?:\/\/[^\s<>"']+/gi; function normalizeUrl (line 30) | function normalizeUrl(url: string): string | null { function extractSpoileredUrls (line 47) | function extractSpoileredUrls(content: string | null | undefined): Set { method setSegments (line 36) | setSegments(segments: Array): void { method clear (line 40) | clear(): void { method displayToActual (line 44) | displayToActual(displayText: string): string { method displayToActualSubstring (line 53) | displayToActualSubstring(displayText: string, start: number, end: numb... method updateSegmentsForTextChange (line 69) | updateSegmentsForTextChange( method insertSegment (line 91) | insertSegment( method detectChange (line 124) | static detectChange( FILE: fluxer_app/src/utils/TextareaStateManager.tsx type AutocompleteMatch (line 22) | interface AutocompleteMatch { constant MENTION_REGEX (line 29) | const MENTION_REGEX = /(^|\s)@(\S*)$/; constant CHANNEL_REGEX (line 30) | const CHANNEL_REGEX = /(^|\s)#(\S*)$/; constant EMOJI_REGEX (line 31) | const EMOJI_REGEX = /(^|\s):([^\s]{2,})$/; constant COMMAND_REGEX (line 32) | const COMMAND_REGEX = /(^|\s)\/$/; class TextareaStateManager (line 34) | class TextareaStateManager { method constructor (line 39) | constructor() { method getText (line 43) | getText(): string { method setText (line 47) | setText(text: string): void { method getCursorPosition (line 51) | getCursorPosition(): number { method setCursorPosition (line 55) | setCursorPosition(position: number): void { method getSegmentManager (line 59) | getSegmentManager(): TextareaSegmentManager { method clear (line 63) | clear(): void { method handleTextChange (line 69) | handleTextChange(newText: string): void { method getTextUpToCursor (line 75) | getTextUpToCursor(): string { method detectAutocompleteMatch (line 79) | detectAutocompleteMatch(): AutocompleteMatch | null { method insertAutocompleteSegment (line 125) | insertAutocompleteSegment( method insertPlainText (line 160) | insertPlainText(match: AutocompleteMatch, text: string): {newText: str... method insertSegmentAtCursor (line 176) | insertSegmentAtCursor( method getActualContent (line 200) | getActualContent(): string { method hasOpenCodeBlock (line 204) | hasOpenCodeBlock(): boolean { FILE: fluxer_app/src/utils/ThemeUtils.tsx constant THEME_ID_REGEX (line 25) | const THEME_ID_REGEX = '[a-zA-Z0-9-]{2,32}'; function findThemes (line 81) | function findThemes(content: string | null): Array { function findTheme (line 85) | function findTheme(content: string | null): string | null { function buildThemeCssUrl (line 90) | function buildThemeCssUrl(endpoint: string | null | undefined, themeId: ... function buildThemeCssProxyUrl (line 96) | function buildThemeCssProxyUrl(endpoint: string | null | undefined, them... FILE: fluxer_app/src/utils/TtsSpeechUtils.tsx constant DEFAULT_MAX_LENGTH (line 22) | const DEFAULT_MAX_LENGTH = 200; constant URL_PATTERN (line 23) | const URL_PATTERN = /https?:\/\/([^/\s]+)[^\s]*/g; function isSupported (line 27) | function isSupported(): boolean { function stripUrlsToDomain (line 31) | function stripUrlsToDomain(text: string): string { function truncateAtWordBoundary (line 35) | function truncateAtWordBoundary(text: string, maxLength: number): string { function normaliseText (line 50) | function normaliseText(text: string): string { function createUtterance (line 54) | function createUtterance(text: string, maxLength: number = DEFAULT_MAX_L... function speak (line 74) | function speak(utterance: SpeechSynthesisUtterance, voice: SpeechSynthes... function cancel (line 86) | function cancel(): void { function getVoices (line 94) | function getVoices(): Array { FILE: fluxer_app/src/utils/TtsTextFormatter.tsx constant USER_MENTION_PATTERN (line 27) | const USER_MENTION_PATTERN = /<@!?(\d+)>/g; constant ROLE_MENTION_PATTERN (line 28) | const ROLE_MENTION_PATTERN = /<@&(\d+)>/g; constant CHANNEL_MENTION_PATTERN (line 29) | const CHANNEL_MENTION_PATTERN = /<#(\d+)>/g; constant CUSTOM_EMOJI_PATTERN (line 30) | const CUSTOM_EMOJI_PATTERN = //g; constant SPOILER_PATTERN (line 31) | const SPOILER_PATTERN = /\|\|[^|]+\|\|/g; constant SLASH_COMMAND_PATTERN (line 32) | const SLASH_COMMAND_PATTERN = /<\/([^:]+):\d+>/g; constant TIMESTAMP_PATTERN (line 33) | const TIMESTAMP_PATTERN = //g; constant CODE_BLOCK_PATTERN (line 34) | const CODE_BLOCK_PATTERN = /```[\s\S]*?```/g; constant INLINE_CODE_PATTERN (line 35) | const INLINE_CODE_PATTERN = /`([^`\n]+)`/g; constant MASKED_LINK_PATTERN (line 36) | const MASKED_LINK_PATTERN = /\[([^\]]+)\]\([^)]+\)/g; constant BOLD_ITALIC_PATTERN (line 37) | const BOLD_ITALIC_PATTERN = /\*{3}(.+?)\*{3}/g; constant BOLD_PATTERN (line 38) | const BOLD_PATTERN = /\*{2}(.+?)\*{2}/g; constant UNDERLINE_PATTERN (line 39) | const UNDERLINE_PATTERN = /__(.+?)__/g; constant STRIKETHROUGH_PATTERN (line 40) | const STRIKETHROUGH_PATTERN = /~~(.+?)~~/g; constant ITALIC_PATTERN (line 41) | const ITALIC_PATTERN = /\*(.+?)\*/g; constant BLOCKQUOTE_PATTERN (line 42) | const BLOCKQUOTE_PATTERN = /^>\s?/gm; constant HEADER_PATTERN (line 43) | const HEADER_PATTERN = /^(?:-#|#{1,3})\s+/gm; function formatUserMention (line 45) | function formatUserMention(userId: string, guildId: string | null, i18n:... function formatRoleMention (line 54) | function formatRoleMention(roleId: string, guildId: string | null, i18n:... function formatChannelMention (line 68) | function formatChannelMention(channelId: string, i18n: I18n): string { function formatTimestampForTts (line 73) | function formatTimestampForTts(timestamp: number, style: string | undefi... function formatMessageForTts (line 113) | function formatMessageForTts( FILE: fluxer_app/src/utils/TtsUtils.tsx constant MAX_RECENT_MESSAGES (line 44) | const MAX_RECENT_MESSAGES = 10; constant MAX_TEXT_LENGTH (line 45) | const MAX_TEXT_LENGTH = 200; function setI18n (line 55) | function setI18n(instance: I18n): void { function showUnsupportedModal (line 59) | function showUnsupportedModal(): void { function pickPreferredVoice (line 64) | function pickPreferredVoice(candidates: Array): Sp... function findVoiceForLocale (line 71) | function findVoiceForLocale(locale: string): SpeechSynthesisVoice | null { function refreshVoices (line 92) | function refreshVoices(): void { function stopSpeaking (line 97) | function stopSpeaking(): void { function addRecentMessageId (line 103) | function addRecentMessageId(messageId: string): void { function hasRecentlySpoken (line 107) | function hasRecentlySpoken(messageId: string): boolean { type SpeakTextOptions (line 111) | interface SpeakTextOptions { function speakText (line 120) | function speakText(options: SpeakTextOptions): void { function speakMessage (line 167) | function speakMessage(content: string): void { function isUserMessageType (line 181) | function isUserMessageType(type: number): boolean { function describeNonTextContent (line 185) | function describeNonTextContent(message: Message, localI18n: I18n): stri... function shouldSpeakMessage (line 202) | function shouldSpeakMessage(message: Message): boolean { function handleIncomingTtsMessage (line 225) | function handleIncomingTtsMessage(message: Message): void { function handleMessageDelete (line 314) | function handleMessageDelete(channelId: string, messageId: string): void { function handleChannelSelect (line 320) | function handleChannelSelect(channelId: string | null): void { function init (line 326) | function init(): void { function dispose (line 354) | function dispose(): void { function isSupported (line 375) | function isSupported(): boolean { function isSpeaking (line 379) | function isSpeaking(): boolean { function hasVoices (line 383) | function hasVoices(): boolean { type SpeakOptions (line 387) | interface SpeakOptions { function speak (line 392) | function speak(text: string, options?: SpeakOptions): void { function stop (line 401) | function stop(): void { FILE: fluxer_app/src/utils/TypingUtils.tsx class TypingManager (line 24) | class TypingManager { method typing (line 30) | typing(channelId: string): void { method clear (line 57) | clear(channelId: string): void { method shouldReturn (line 76) | private shouldReturn(channelId: string): boolean { method updateStateForTyping (line 80) | private updateStateForTyping(channelId: string): void { method sendTyping (line 88) | private sendTyping(channelId: string): void { method resetState (line 93) | private resetState(channelId: string): void { FILE: fluxer_app/src/utils/UiohookKeycodes.tsx function jsKeyToUiohookKeycode (line 320) | function jsKeyToUiohookKeycode(keyNameOrCode: string | undefined): numbe... FILE: fluxer_app/src/utils/UrlUtils.tsx type QueryParamPrimitive (line 23) | type QueryParamPrimitive = string | number | boolean; type QueryParamValue (line 24) | type QueryParamValue = QueryParamPrimitive | null | undefined; constant ABSOLUTE_URL_PATTERN (line 26) | const ABSOLUTE_URL_PATTERN = /^[a-zA-Z][a-zA-Z\d+\-.]*:/; function applyQueryParams (line 28) | function applyQueryParams(url: URL, query: Record): boole... type PermissionStatus (line 47) | type PermissionStatus = 'idle' | 'loading' | 'granted' | 'denied'; type VoiceDeviceState (line 49) | interface VoiceDeviceState { type Listener (line 56) | type Listener = (state: VoiceDeviceState) => void; class VoiceDeviceManager (line 68) | class VoiceDeviceManager { method constructor (line 80) | constructor() { method getState (line 86) | public getState(): VoiceDeviceState { method subscribe (line 90) | public subscribe(listener: Listener): () => void { method ensureDevices (line 98) | public async ensureDevices(options: {requestPermissions?: boolean} = {... method enumerateDevices (line 140) | private async enumerateDevices(requestPermissions: boolean): Promise) { FILE: fluxer_app/src/utils/VoiceMessageRecordingUtils.tsx type VoiceWaveformResult (line 22) | interface VoiceWaveformResult { constant WAVEFORM_MAX_POINTS (line 28) | const WAVEFORM_MAX_POINTS = 256; constant WAVEFORM_SAMPLE_INTERVAL_SECONDS (line 29) | const WAVEFORM_SAMPLE_INTERVAL_SECONDS = 0.1; function buildWaveformBytes (line 31) | function buildWaveformBytes( function computeVoiceWaveform (line 73) | async function computeVoiceWaveform(blob: Blob): Promise { function performRegistration (line 50) | async function performRegistration( function performAuthentication (line 65) | async function performAuthentication( FILE: fluxer_app/src/utils/WebhookUtils.tsx function generateWebhookName (line 22) | function generateWebhookName(): string { FILE: fluxer_app/src/utils/WindowStateUtils.tsx type StateFlags (line 20) | enum StateFlags { function saveCurrentWindowState (line 30) | async function saveCurrentWindowState(_flags: StateFlags = StateFlags.AL... function buildStateFlags (line 32) | function buildStateFlags(_options: { FILE: fluxer_app/src/utils/__tests__/SearchQueryParser.test.tsx constant CURRENT_USER_ID (line 26) | const CURRENT_USER_ID = 'current-user-id'; constant CURRENT_USER (line 27) | const CURRENT_USER: User = { FILE: fluxer_app/src/utils/accounts/AccountSwitcherModalUtils.tsx type AccountSwitcherLogic (line 45) | interface AccountSwitcherLogic { function buildAccountLogoutUrl (line 65) | function buildAccountLogoutUrl(account: Account): string { function useAccountSwitcherLogic (line 73) | function useAccountSwitcherLogic(): AccountSwitcherLogic { type OpenSignOutConfirmOptions (line 176) | interface OpenSignOutConfirmOptions { function openSignOutConfirm (line 184) | function openSignOutConfirm({ type OpenAccountContextMenuOptions (line 223) | interface OpenAccountContextMenuOptions { function openAccountContextMenu (line 233) | function openAccountContextMenu( FILE: fluxer_app/src/utils/alerts/VoiceConnectionConfirmModalUtils.tsx type VoiceConnectionConfirmModalCallbacks (line 26) | interface VoiceConnectionConfirmModalCallbacks { type VoiceConnectionConfirmModalProps (line 32) | interface VoiceConnectionConfirmModalProps extends VoiceConnectionConfir... type VoiceConnectionConfirmModalLogicState (line 37) | interface VoiceConnectionConfirmModalLogicState { function useVoiceConnectionConfirmModalLogic (line 44) | function useVoiceConnectionConfirmModalLogic({ FILE: fluxer_app/src/utils/errors/ScreenRecordingPermissionDeniedError.tsx class ScreenRecordingPermissionDeniedError (line 20) | class ScreenRecordingPermissionDeniedError extends Error { method constructor (line 23) | constructor(message = 'Screen recording permission denied') { FILE: fluxer_app/src/utils/friends/FriendsListUtils.tsx type FriendGroup (line 44) | interface FriendGroup { type FriendsListContentProps (line 49) | interface FriendsListContentProps { FILE: fluxer_app/src/utils/invite/GroupDmInviteCounts.tsx type GroupDmInviteCounts (line 23) | interface GroupDmInviteCounts { function getGroupDmInviteCounts (line 28) | function getGroupDmInviteCounts(params: { FILE: fluxer_app/src/utils/invite/GuildInviteActionState.tsx type GuildInviteActionState (line 34) | interface GuildInviteActionState { type GuildInvitePrimaryAction (line 43) | enum GuildInvitePrimaryAction { function getGuildInviteActionState (line 49) | function getGuildInviteActionState(params: { function getGuildInvitePrimaryAction (line 73) | function getGuildInvitePrimaryAction(state: GuildInviteActionState): Gui... function isGuildInviteActionDisabled (line 83) | function isGuildInviteActionDisabled(state: GuildInviteActionState): boo... FILE: fluxer_app/src/utils/limits/GlobalLimits.tsx constant FALLBACKS (line 23) | const FALLBACKS = { class GlobalLimitsClass (line 29) | class GlobalLimitsClass { method getEmojiMaxSize (line 30) | getEmojiMaxSize(): number { method getStickerMaxSize (line 37) | getStickerMaxSize(): number { method getAvatarMaxSize (line 44) | getAvatarMaxSize(): number { method get (line 51) | get(key: LimitKey, fallback: number): number { FILE: fluxer_app/src/utils/limits/LimitContext.tsx type LimitContextInput (line 26) | interface LimitContextInput { type LimitMatchContext (line 32) | interface LimitMatchContext { class LimitContextClass (line 37) | class LimitContextClass { method current (line 38) | current(): LimitMatchContext { method build (line 42) | build(options: LimitContextInput = {}): LimitMatchContext { method _getGuildFeatures (line 71) | private _getGuildFeatures(guildIdOverride?: string | null): Iterable = []): LimitMatchContext { FILE: fluxer_app/src/utils/limits/LimitResolverAdapter.tsx type LimitResolveOptions (line 29) | interface LimitResolveOptions { class LimitResolverClass (line 36) | class LimitResolverClass { method resolve (line 37) | resolve(options: LimitResolveOptions): number { method getSnapshotForInstance (line 55) | private getSnapshotForInstance(instanceDomain?: string): LimitConfigSn... method resolveMultiple (line 65) | resolveMultiple( method resolvePremium (line 98) | resolvePremium(key: LimitKey, fallback: number): number { method resolveFree (line 106) | resolveFree(key: LimitKey, fallback: number): number { FILE: fluxer_app/src/utils/limits/LimitUtils.tsx function isToggleActive (line 22) | function isToggleActive(limitValue: number): boolean { function isLimitToggleEnabled (line 26) | function isLimitToggleEnabled(limits: Partial>,... FILE: fluxer_app/src/utils/limits/UserLimits.tsx constant FALLBACKS (line 26) | const FALLBACKS = { class LimitsClass (line 44) | class LimitsClass { method getCurrentUser (line 45) | private getCurrentUser(): UserRecord | undefined { method getMaxGuilds (line 49) | getMaxGuilds(): number { method getMaxMessageLength (line 55) | getMaxMessageLength(): number { method getMaxAttachmentsPerMessage (line 61) | getMaxAttachmentsPerMessage(): number { method getMaxAttachmentFileSize (line 67) | getMaxAttachmentFileSize(): number { method getMaxBioLength (line 73) | getMaxBioLength(): number { method getMaxBookmarks (line 79) | getMaxBookmarks(): number { method getMaxFavoriteMemes (line 85) | getMaxFavoriteMemes(): number { method getMaxFavoriteMemeTags (line 91) | getMaxFavoriteMemeTags(): number { method getMaxRelationships (line 97) | getMaxRelationships(): number { method getMaxGroupDmRecipients (line 103) | getMaxGroupDmRecipients(): number { method getMaxPrivateChannels (line 109) | getMaxPrivateChannels(): number { method getPremiumValue (line 118) | getPremiumValue(key: LimitKey, fallback: number): number { method getFreeValue (line 122) | getFreeValue(key: LimitKey, fallback: number): number { method getMultiple (line 126) | getMultiple(keys: Array, fallbacks: Partial { FILE: fluxer_app/src/utils/modals/ChannelDeleteModalUtils.tsx type ChannelDeleteModalProps (line 26) | interface ChannelDeleteModalProps { function deleteChannel (line 30) | async function deleteChannel(channelId: string): Promise { function getChannelDeleteInfo (line 43) | function getChannelDeleteInfo(channelId: string) { FILE: fluxer_app/src/utils/modals/ChannelSettingsModalUtils.tsx type ChannelSettingsModalProps (line 27) | interface ChannelSettingsModalProps { function getAvailableTabs (line 32) | function getAvailableTabs(i18n: I18n, channelId: string): Array) { FILE: fluxer_app/src/utils/modals/ChannelTopicModalUtils.tsx type ChannelTopicModalProps (line 22) | interface ChannelTopicModalProps { function getChannelTopicInfo (line 26) | function getChannelTopicInfo(channelId: string) { FILE: fluxer_app/src/utils/modals/CreateDMModalUtils.tsx type CreateDMModalProps (line 51) | interface CreateDMModalProps { type CreateDMModalLogicState (line 59) | interface CreateDMModalLogicState { type CreateDMModalLogicActions (line 68) | interface CreateDMModalLogicActions { function useCreateDMModalLogic (line 75) | function useCreateDMModalLogic( FILE: fluxer_app/src/utils/modals/ModalUtils.tsx type ModalSize (line 37) | type ModalSize = 'medium' | 'small' | 'large' | 'xlarge' | 'fullscreen'; type LabelSource (line 38) | type LabelSource = 'header' | 'screen-reader'; type ModalStackContextValue (line 40) | interface ModalStackContextValue { type ModalTransitionPreset (line 54) | type ModalTransitionPreset = 'default' | 'instant'; type ModalProps (line 56) | interface ModalProps { type ModalContextValue (line 68) | interface ModalContextValue { type ModalLogicState (line 73) | interface ModalLogicState { function useModalLogic (line 89) | function useModalLogic({ type HeaderProps (line 207) | interface HeaderProps { type HeaderLogicState (line 217) | interface HeaderLogicState { function useHeaderLogic (line 222) | function useHeaderLogic({ type ScreenReaderLabelProps (line 251) | interface ScreenReaderLabelProps { type ScreenReaderLabelLogicState (line 256) | interface ScreenReaderLabelLogicState { function useScreenReaderLabelLogic (line 260) | function useScreenReaderLabelLogic({ FILE: fluxer_app/src/utils/modals/PremiumModalUtils.tsx type PremiumModalProps (line 22) | interface PremiumModalProps { type PremiumModalLogicState (line 26) | interface PremiumModalLogicState { function usePremiumModalLogic (line 30) | function usePremiumModalLogic({defaultGiftMode = false}: PremiumModalPro... FILE: fluxer_app/src/utils/modals/ScreenShareSettingsModalUtils.tsx type ScreenShareSettingsModalSharedProps (line 35) | interface ScreenShareSettingsModalSharedProps { type ResolutionOption (line 43) | interface ResolutionOption { type FramerateOption (line 49) | interface FramerateOption { constant BASE_RESOLUTION_OPTIONS (line 55) | const BASE_RESOLUTION_OPTIONS: Array... constant BASE_FRAMERATE_OPTIONS (line 63) | const BASE_FRAMERATE_OPTIONS: Array> = [ constant PREMIUM_RESOLUTION_VALUES (line 70) | const PREMIUM_RESOLUTION_VALUES: Set = new Se... constant PREMIUM_FRAMERATE_VALUES (line 71) | const PREMIUM_FRAMERATE_VALUES: Set = new Set([60]); function useScreenShareSettingsModal (line 87) | function useScreenShareSettingsModal({onStartShare}: ScreenShareSettings... FILE: fluxer_app/src/utils/modals/SettingsModalLayoutUtils.tsx type SettingsModalLayoutProps (line 23) | interface SettingsModalLayoutProps { type SidebarCategoryContextValue (line 27) | interface SidebarCategoryContextValue { type SidebarTablistContextValue (line 31) | interface SidebarTablistContextValue { type SettingsModalSidebarItemProps (line 35) | interface SettingsModalSidebarItemProps { type SettingsModalSidebarItemLogicState (line 48) | interface SettingsModalSidebarItemLogicState { function useWidescreenMode (line 53) | function useWidescreenMode(): boolean { constant TABLIST_SELECTOR (line 71) | const TABLIST_SELECTOR = '[data-settings-tablist]'; constant TAB_SELECTOR (line 72) | const TAB_SELECTOR = '[data-settings-tab="true"]'; function useSettingsModalSidebarItemLogic (line 96) | function useSettingsModalSidebarItemLogic({ function useTrafficLightsVisibility (line 166) | function useTrafficLightsVisibility(fullscreen: boolean, isWidescreenMod... FILE: fluxer_app/src/utils/modals/guild_tabs/GuildAuditLogTabUtils.tsx type BasicRecord (line 38) | interface BasicRecord { type ChangeShapeWithUnknowns (line 42) | interface ChangeShapeWithUnknowns { function isBasicRecord (line 48) | function isBasicRecord(value: unknown): value is BasicRecord { function toChangeShape (line 52) | function toChangeShape(raw: AuditLogChange): ChangeShapeWithUnknowns { function safeScalarString (line 60) | function safeScalarString(value: unknown, i18n: I18n): string | null { function looksLikeSnowflake (line 68) | function looksLikeSnowflake(s: string): boolean { function isEmptyString (line 72) | function isEmptyString(value: unknown): value is string { function resolveIdToName (line 76) | function resolveIdToName(id: string, guildId: string): string | null { function getTargetType (line 136) | function getTargetType(actionType: AuditLogActionType): AuditLogTargetTy... function shouldSuppressDetailsForAction (line 173) | function shouldSuppressDetailsForAction(actionType: AuditLogActionType):... function shouldHideChangeKey (line 177) | function shouldHideChangeKey(targetType: AuditLogTargetType, changeKey: ... function getActionKind (line 210) | function getActionKind(actionType: AuditLogActionType): AuditLogActionKi... function normalizeChanges (line 216) | function normalizeChanges(changes?: Array | null): Array... function getChannelTypeLabel (line 220) | function getChannelTypeLabel(value: unknown, i18n: I18n): string | null { function getRtcRegionLabel (line 243) | function getRtcRegionLabel(value: unknown, i18n: I18n): string | null { function getSplashAlignmentLabel (line 250) | function getSplashAlignmentLabel(value: unknown, i18n: I18n): string | n... function getFeatureDiff (line 290) | function getFeatureDiff(oldValue: unknown, newValue: unknown): {added: A... function getFeatureLabel (line 298) | function getFeatureLabel(feature: string, i18n: I18n): string | null { type FlagLabel (line 303) | interface FlagLabel { function getOperationDiff (line 328) | function getOperationDiff( function getSystemChannelFlagDiff (line 340) | function getSystemChannelFlagDiff( function formatDateStringValue (line 359) | function formatDateStringValue(value: unknown): string | null { function formatAccentColor (line 363) | function formatAccentColor(value: unknown): string | null { constant ALL_PERMISSION_FLAGS (line 370) | const ALL_PERMISSION_FLAGS: Array = Object.values(Permissions); type PermissionDiff (line 385) | interface PermissionDiff { function getPermissionDiff (line 390) | function getPermissionDiff(oldValue: unknown, newValue: unknown): Permis... type DurationParts (line 411) | interface DurationParts { function secondsToDurationParts (line 418) | function secondsToDurationParts(totalSeconds: number): DurationParts { FILE: fluxer_app/src/utils/modals/guild_tabs/GuildOverviewTabUtils.tsx type FormInputs (line 37) | interface FormInputs { constant GUILD_OVERVIEW_TAB_ID (line 54) | const GUILD_OVERVIEW_TAB_ID = 'overview'; type AfkTimeoutOptionRaw (line 55) | interface AfkTimeoutOptionRaw { type SelectOption (line 68) | interface SelectOption { function useGuildOverviewData (line 73) | function useGuildOverviewData(guildId: string) { function openMessageHistoryThresholdSettings (line 278) | function openMessageHistoryThresholdSettings(guildId: string): void { FILE: fluxer_app/src/utils/quick_switcher/QuickSwitcherModalUtils.tsx type QuickSwitcherSection (line 65) | interface QuickSwitcherSection { type QuickSwitcherSharedProps (line 70) | interface QuickSwitcherSharedProps { type QuickSwitcherMobileTabProps (line 81) | interface QuickSwitcherMobileTabProps { function getQuickSwitcherTabs (line 88) | function getQuickSwitcherTabs(i18n: I18n): Array): Array { type MfaCodeMethod (line 104) | type MfaCodeMethod = 'sms' | 'totp'; function loginWithMfaCode (line 106) | async function loginWithMfaCode({ function sendMfaSms (line 125) | async function sendMfaSms(ticket: string): Promise { function getWebAuthnMfaOptions (line 129) | async function getWebAuthnMfaOptions(ticket: string): Promise { type PasswordResetResult (line 225) | type PasswordResetResult = function resetPassword (line 229) | async function resetPassword(token: string, password: string): Promise { function pollIpAuthorization (line 267) | async function pollIpAuthorization( function initiateDesktopHandoff (line 273) | async function initiateDesktopHandoff() { function completeDesktopHandoff (line 277) | async function completeDesktopHandoff(params: {code: string; token: stri... FILE: fluxer_app/src/workers/AnimatedImageCrop.Worker.tsx type StaticImageFormat (line 29) | type StaticImageFormat = 'webp' | 'avif' | 'apng' | 'png' | 'jpeg'; type AnimatedImageFormat (line 30) | type AnimatedImageFormat = 'gif' | StaticImageFormat; function getStaticFormatHint (line 32) | function getStaticFormatHint(format: StaticImageFormat): string { type CropAnimatedImageMessageType (line 52) | enum CropAnimatedImageMessageType { type CropAnimatedImageStartMessage (line 60) | interface CropAnimatedImageStartMessage { type CropAnimatedImageCompleteMessage (line 73) | interface CropAnimatedImageCompleteMessage { type CropAnimatedImageErrorMessage (line 78) | interface CropAnimatedImageErrorMessage { type ProcessBatchMessage (line 83) | interface ProcessBatchMessage { type ProcessBatchCompleteMessage (line 90) | interface ProcessBatchCompleteMessage { type IncomingMessage (line 96) | type IncomingMessage = CropAnimatedImageStartMessage | ProcessBatchMessage; function handleCropStart (line 115) | async function handleCropStart(msg: CropAnimatedImageStartMessage): Prom... function handleProcessBatch (line 198) | async function handleProcessBatch(msg: ProcessBatchMessage): Promise): Array { method processBatchWithWorker (line 147) | private async processBatchWithWorker( method processFrameWithWorker (line 185) | private processFrameWithWorker( method processSingleFrame (line 270) | private async processSingleFrame( method getWorkerCount (line 281) | getWorkerCount(): number { method getBusyWorkerCount (line 285) | getBusyWorkerCount(): number { method isIdle (line 289) | isIdle(): boolean { method terminate (line 293) | terminate(): void { method restart (line 315) | restart(): void { FILE: fluxer_app/src/workers/MemberSearch.Worker.tsx type MessageTypes (line 20) | enum MessageTypes { type TransformedUser (line 27) | interface TransformedUser { type SearchResult (line 38) | interface SearchResult { type SearchFilters (line 46) | interface SearchFilters { type SearchQuery (line 51) | interface SearchQuery { type WorkerMessage (line 60) | interface WorkerMessage { type UpdateUsersPayload (line 66) | interface UpdateUsersPayload { constant SCORE_EXACT_PREFIX (line 74) | const SCORE_EXACT_PREFIX = 10; constant SCORE_CONTAINS (line 75) | const SCORE_CONTAINS = 5; constant SCORE_FUZZY (line 76) | const SCORE_FUZZY = 1; constant FRIEND_KEY (line 78) | const FRIEND_KEY = 'isFriend'; constant BOT_KEY (line 79) | const BOT_KEY = 'isBot'; constant USERNAME_KEY (line 80) | const USERNAME_KEY = 'username'; constant IGNORED_KEYS (line 81) | const IGNORED_KEYS = new Set([BOT_KEY, FRIEND_KEY, USERNAME_KEY, 'guildI... function escapeRegex (line 83) | function escapeRegex(text: string): string { function fuzzyMatch (line 87) | function fuzzyMatch(needle: string, haystack: string): boolean { function sortByMatchScore (line 104) | function sortByMatchScore(a: SearchResult, b: SearchResult): number { function shouldIncludeUser (line 115) | function shouldIncludeUser( function calculateScore (line 136) | function calculateScore(baseScore: number, booster?: number): number { function postSearchResults (line 140) | function postSearchResults(uuid: string, results: Array): ... function executeSearch (line 156) | function executeSearch(uuid: string, searchQuery: SearchQuery): void { function updateUsers (line 230) | function updateUsers(users: Array): void { function setQuery (line 310) | function setQuery(uuid: string, query: SearchQuery): void { function clearQuery (line 315) | function clearQuery(uuid: string): void { function debouncedExecuteSearches (line 322) | function debouncedExecuteSearches(): void { FILE: fluxer_app_proxy/src/Config.tsx type Config (line 38) | type Config = typeof Config; FILE: fluxer_app_proxy/src/Logger.tsx type Logger (line 23) | type Logger = FluxerLogger; FILE: fluxer_app_proxy/src/index.tsx function main (line 33) | async function main(): Promise { FILE: fluxer_desktop/scripts/build.mjs constant ROOT_DIR (line 24) | const ROOT_DIR = path.resolve(import.meta.dirname, '..'); constant SRC_DIR (line 25) | const SRC_DIR = path.join(ROOT_DIR, 'src'); constant DIST_DIR (line 26) | const DIST_DIR = path.join(ROOT_DIR, 'dist'); method setup (line 43) | setup(build) { function buildMain (line 68) | async function buildMain() { function buildPreload (line 93) | async function buildPreload() { function build (line 115) | async function build() { FILE: fluxer_desktop/scripts/set-build-channel.mjs constant ROOT_DIR (line 23) | const ROOT_DIR = path.resolve(import.meta.dirname, '..'); constant BUILD_CHANNEL_FILE (line 24) | const BUILD_CHANNEL_FILE = path.join(ROOT_DIR, 'src', 'common', 'BuildCh... FILE: fluxer_desktop/src/common/BrandedTypes.tsx type LanguageCode (line 21) | type LanguageCode = string & {readonly __brand: typeof LanguageCodeBrand}; FILE: fluxer_desktop/src/common/BuildChannel.tsx type BuildChannel (line 20) | type BuildChannel = 'stable' | 'canary'; constant BUILD_CHANNEL (line 21) | const BUILD_CHANNEL = 'stable' as BuildChannel; constant IS_CANARY (line 22) | const IS_CANARY = BUILD_CHANNEL === 'canary'; constant CHANNEL_DISPLAY_NAME (line 23) | const CHANNEL_DISPLAY_NAME = BUILD_CHANNEL; FILE: fluxer_desktop/src/common/Constants.tsx constant APP_PROTOCOL (line 20) | const APP_PROTOCOL = 'fluxer'; constant STABLE_APP_URL (line 21) | const STABLE_APP_URL = 'https://web.fluxer.app'; constant CANARY_APP_URL (line 22) | const CANARY_APP_URL = 'https://web.canary.fluxer.app'; constant DEFAULT_WINDOW_WIDTH (line 23) | const DEFAULT_WINDOW_WIDTH = 1280; constant DEFAULT_WINDOW_HEIGHT (line 24) | const DEFAULT_WINDOW_HEIGHT = 800; constant MIN_WINDOW_WIDTH (line 25) | const MIN_WINDOW_WIDTH = 800; constant MIN_WINDOW_HEIGHT (line 26) | const MIN_WINDOW_HEIGHT = 600; FILE: fluxer_desktop/src/common/DesktopConfig.tsx constant CONFIG_FILE_NAME (line 26) | const CONFIG_FILE_NAME = 'settings.json'; type DesktopConfig (line 28) | interface DesktopConfig { function saveDesktopConfig (line 35) | function saveDesktopConfig(): void { function loadDesktopConfig (line 49) | function loadDesktopConfig(userDataPath: string): void { function getAppUrl (line 62) | function getAppUrl(): string { function getCustomAppUrl (line 69) | function getCustomAppUrl(): string | null { function setCustomAppUrl (line 73) | function setCustomAppUrl(appUrl: string | null): void { FILE: fluxer_desktop/src/common/Logger.tsx function createChildLogger (line 33) | function createChildLogger(componentName: string): typeof Logger { FILE: fluxer_desktop/src/common/Types.tsx type DesktopInfo (line 27) | interface DesktopInfo { type UpdaterContext (line 38) | type UpdaterContext = 'user' | 'background' | 'focus'; type UpdaterEvent (line 40) | type UpdaterEvent = type DownloadFileOptions (line 55) | interface DownloadFileOptions { type DownloadFileResult (line 60) | interface DownloadFileResult { type SwitchInstanceUrlOptions (line 66) | interface SwitchInstanceUrlOptions { type GlobalShortcutOptions (line 71) | interface GlobalShortcutOptions { type MediaAccessType (line 76) | type MediaAccessType = 'microphone' | 'camera' | 'screen'; type MediaAccessStatus (line 77) | type MediaAccessStatus = 'granted' | 'denied' | 'not-determined' | 'rest... type DesktopSource (line 79) | interface DesktopSource { type DisplayMediaRequestInfo (line 87) | interface DisplayMediaRequestInfo { type NotificationOptions (line 94) | interface NotificationOptions { type NotificationResult (line 101) | interface NotificationResult { type ElectronAPI (line 105) | interface ElectronAPI { type GlobalKeyHookRegisterOptions (line 204) | interface GlobalKeyHookRegisterOptions { type GlobalKeyEvent (line 214) | interface GlobalKeyEvent { type GlobalMouseEvent (line 224) | interface GlobalMouseEvent { type GlobalKeybindTriggeredEvent (line 229) | interface GlobalKeybindTriggeredEvent { type SpellcheckState (line 234) | interface SpellcheckState { type TextareaContextMenuParams (line 239) | interface TextareaContextMenuParams { type Window (line 255) | interface Window { FILE: fluxer_desktop/src/common/UserDataPath.tsx type UserDataPaths (line 24) | interface UserDataPaths { type ChannelStorageDirectoryMap (line 30) | interface ChannelStorageDirectoryMap { function resolveUserDataPaths (line 40) | function resolveUserDataPaths(channel: BuildChannel): {directoryName: st... function configureUserDataPath (line 51) | function configureUserDataPath(): UserDataPaths { FILE: fluxer_desktop/src/main/Autostart.tsx constant AUTOSTART_INITIALIZED_FILE (line 26) | const AUTOSTART_INITIALIZED_FILE = 'autostart-initialized'; function getInitializedFilePath (line 28) | function getInitializedFilePath(): string { function isInitialized (line 32) | function isInitialized(): boolean { function markInitialized (line 40) | function markInitialized(): void { type AutoLaunchConfig (line 50) | interface AutoLaunchConfig { function getAutoLaunchConfig (line 57) | function getAutoLaunchConfig(): AutoLaunchConfig { function enableAutostart (line 69) | async function enableAutostart(): Promise { function disableAutostart (line 80) | async function disableAutostart(): Promise { function isAutostartEnabled (line 92) | async function isAutostartEnabled(): Promise { function registerAutostartHandlers (line 103) | function registerAutostartHandlers(): void { FILE: fluxer_desktop/src/main/DeepLinks.tsx function initializeDeepLinks (line 26) | function initializeDeepLinks(): void { function handleOpenUrl (line 47) | function handleOpenUrl(url: string): void { function handleSecondInstance (line 58) | function handleSecondInstance(argv: Array): void { FILE: fluxer_desktop/src/main/GlobalKeyHook.tsx type KeybindRegistration (line 29) | interface KeybindRegistration { function keycodeToKeyName (line 46) | function keycodeToKeyName(keycode: number): string { function handleKeyEvent (line 136) | function handleKeyEvent(event: UiohookKeyboardEvent, type: 'keydown' | '... function handleMouseEvent (line 177) | function handleMouseEvent(event: UiohookMouseEvent, type: 'mousedown' | ... function startHook (line 198) | async function startHook(): Promise { constant INPUT_MONITORING_PERMISSION (line 216) | const INPUT_MONITORING_PERMISSION = 'input-monitoring'; constant INPUT_MONITORING_STATUS_ALLOWLIST (line 217) | const INPUT_MONITORING_STATUS_ALLOWLIST = new Set(['authorized', 'not-de... function getInputMonitoringStatus (line 219) | function getInputMonitoringStatus(): string | null { function checkInputMonitoringAccess (line 241) | async function checkInputMonitoringAccess(): Promise { function stopHook (line 263) | function stopHook(): void { function registerGlobalKeyHookHandlers (line 274) | function registerGlobalKeyHookHandlers(): void { function cleanupGlobalKeyHook (line 328) | function cleanupGlobalKeyHook(): void { FILE: fluxer_desktop/src/main/IpcHandlers.tsx function normalizeInstanceOrigin (line 84) | function normalizeInstanceOrigin(rawUrl: string): string { function isValidWellKnownPayload (line 109) | function isValidWellKnownPayload(payload: unknown): boolean { function assertValidFluxerInstance (line 128) | async function assertValidFluxerInstance(instanceOrigin: string): Promis... type ActiveNotification (line 158) | interface ActiveNotification { function parseCredentialResponse (line 206) | function parseCredentialResponse(credential: PublicKeyCredential): T { constant MAC_APP_IDENTIFIER_SEARCH (line 327) | const MAC_APP_IDENTIFIER_SEARCH = 'application identifier'; type PasskeyProvider (line 378) | interface PasskeyProvider { function createPasskeyProvider (line 386) | function createPasskeyProvider(): PasskeyProvider { function createNativePasskeyProvider (line 394) | function createNativePasskeyProvider(): PasskeyProvider { function createMacPasskeyProvider (line 410) | function createMacPasskeyProvider(addon: WebAuthnMacAddon): PasskeyProvi... function loadMacWebAuthnAddon (line 463) | function loadMacWebAuthnAddon(): WebAuthnMacAddon | null { function registerIpcHandlers (line 481) | function registerIpcHandlers(): void { function downloadToBuffer (line 846) | function downloadToBuffer(url: string): Promise { function downloadFile (line 873) | function downloadFile(url: string, destPath: string): Promise { function cleanupIpcHandlers (line 911) | function cleanupIpcHandlers(): void { FILE: fluxer_desktop/src/main/Menu.tsx function createApplicationMenu (line 24) | function createApplicationMenu(): void { FILE: fluxer_desktop/src/main/RpcServer.tsx constant RPC_PORT (line 28) | const RPC_PORT = BUILD_CHANNEL === 'canary' ? 21864 : 21863; constant ALLOWED_ORIGINS (line 30) | const ALLOWED_ORIGINS = [STABLE_APP_URL, CANARY_APP_URL]; type RpcRequest (line 48) | interface RpcRequest { type RpcResponse (line 53) | interface RpcResponse { FILE: fluxer_desktop/src/main/Spellcheck.tsx type SpellcheckState (line 24) | interface SpellcheckState { type RendererSpellcheckState (line 29) | interface RendererSpellcheckState { FILE: fluxer_desktop/src/main/Updater.tsx type UpdaterContext (line 26) | type UpdaterContext = 'user' | 'background' | 'focus'; type UpdaterEvent (line 27) | type UpdaterEvent = function send (line 36) | function send(win: BrowserWindow | null, event: UpdaterEvent) { function registerUpdater (line 40) | function registerUpdater(getMainWindow: () => BrowserWindow | null) { FILE: fluxer_desktop/src/main/Window.tsx constant VISIBILITY_MARGIN (line 42) | const VISIBILITY_MARGIN = 32; constant POPOUT_NAMESPACE (line 59) | const POPOUT_NAMESPACE = 'fluxer_'; function getOrigin (line 61) | function getOrigin(url?: string): string | null { function isTrustedOrigin (line 71) | function isTrustedOrigin(url?: string): boolean { function getSanitizedPath (line 86) | function getSanitizedPath(rawUrl: string): string | null { type WindowBounds (line 95) | interface WindowBounds { type PendingDisplayMediaRequest (line 107) | interface PendingDisplayMediaRequest { constant DESKTOP_SOURCE_CACHE_TTL_MS (line 114) | const DESKTOP_SOURCE_CACHE_TTL_MS = 60_000; function normaliseDesktopSourceId (line 118) | function normaliseDesktopSourceId(sourceId: string): string { function resolveSelectedDesktopSource (line 126) | function resolveSelectedDesktopSource( function setupDisplayMediaHandler (line 160) | function setupDisplayMediaHandler(session: Electron.Session, webContents... function registerDisplayMediaHandlers (line 215) | function registerDisplayMediaHandlers(): void { function getWindowStateFile (line 339) | function getWindowStateFile(): string { type Bounds (line 347) | interface Bounds { function boundsIntersect (line 354) | function boundsIntersect(a: Bounds, b: Bounds): boolean { function findVisibleDisplay (line 366) | function findVisibleDisplay(displays: Array, bounds: B... function ensureWindowOnScreen (line 378) | function ensureWindowOnScreen(window: BrowserWindow): void { function loadWindowBounds (line 396) | function loadWindowBounds(): Partial | null { function saveWindowBounds (line 419) | function saveWindowBounds(): void { function getMainWindow (line 440) | function getMainWindow(): BrowserWindow | null { function createWindow (line 444) | function createWindow(): BrowserWindow { function showWindow (line 693) | function showWindow(): void { function hideWindow (line 738) | function hideWindow(): void { function setQuitting (line 744) | function setQuitting(quitting: boolean): void { FILE: fluxer_desktop/src/main/WindowsBadge.tsx function isSupported (line 30) | function isSupported(): boolean { function ensureInitialized (line 34) | function ensureInitialized(): void { function getOverlayIconData (line 54) | function getOverlayIconData(count: number): {index: number | null; descr... function applyOverlay (line 77) | function applyOverlay(win: BrowserWindow | null, count: number, force: b... function setWindowsBadgeOverlay (line 99) | function setWindowsBadgeOverlay(win: BrowserWindow | null, count: number... function refreshWindowsBadgeOverlay (line 108) | function refreshWindowsBadgeOverlay(win: BrowserWindow | null): void { FILE: fluxer_devops/livekitctl/cmd/bootstrap.go function init (line 70) | func init() { function runBootstrap (line 100) | func runBootstrap(cmd *cobra.Command, args []string) { FILE: fluxer_devops/livekitctl/cmd/logs.go function init (line 40) | func init() { function runLogs (line 49) | func runLogs(cmd *cobra.Command, args []string) { FILE: fluxer_devops/livekitctl/cmd/restart.go function init (line 36) | func init() { function runRestart (line 40) | func runRestart(cmd *cobra.Command, args []string) { FILE: fluxer_devops/livekitctl/cmd/root.go function Execute (line 37) | func Execute() error { function init (line 41) | func init() { function exitOnError (line 45) | func exitOnError(err error) { FILE: fluxer_devops/livekitctl/cmd/status.go function init (line 35) | func init() { function runStatus (line 39) | func runStatus(cmd *cobra.Command, args []string) { FILE: fluxer_devops/livekitctl/cmd/webhook.go function init (line 72) | func init() { function runWebhookList (line 88) | func runWebhookList(cmd *cobra.Command, args []string) { function runWebhookAdd (line 99) | func runWebhookAdd(cmd *cobra.Command, args []string) { function runWebhookRemove (line 116) | func runWebhookRemove(cmd *cobra.Command, args []string) { function runWebhookSet (line 133) | func runWebhookSet(cmd *cobra.Command, args []string) { function applyAndRestart (line 153) | func applyAndRestart(st *state.BootstrapState) error { FILE: fluxer_devops/livekitctl/internal/configgen/configgen.go function GenerateLiveKitYAML (line 33) | func GenerateLiveKitYAML(st *state.BootstrapState, sec *secrets.Secrets,... function GenerateKVConf (line 101) | func GenerateKVConf(sec *secrets.Secrets, bindHost string, port int, dat... function GenerateCoTURNConf (line 121) | func GenerateCoTURNConf(st *state.BootstrapState, sec *secrets.Secrets, ... function GenerateLiveKitUnit (line 154) | func GenerateLiveKitUnit(st *state.BootstrapState) string { function GenerateCaddyJSON (line 185) | func GenerateCaddyJSON(st *state.BootstrapState) string { function GenerateCaddyUnit (line 290) | func GenerateCaddyUnit(st *state.BootstrapState) string { function GenerateCoTURNUnit (line 313) | func GenerateCoTURNUnit(st *state.BootstrapState) string { function GenerateKVUnit (line 333) | func GenerateKVUnit(st *state.BootstrapState, kvBin string) string { type WriteAllConfigsParams (line 353) | type WriteAllConfigsParams struct function WriteAllConfigs (line 361) | func WriteAllConfigs(params WriteAllConfigsParams) error { FILE: fluxer_devops/livekitctl/internal/constants/constants.go constant DefaultLiveKitVersion (line 23) | DefaultLiveKitVersion = "v1.9.11" constant DefaultXcaddyVersion (line 24) | DefaultXcaddyVersion = "v0.4.5" constant DefaultCaddyVersion (line 25) | DefaultCaddyVersion = "v2.10.2" constant DefaultCaddyL4Version (line 26) | DefaultCaddyL4Version = "master" type Ports (line 29) | type Ports struct function DefaultPorts (line 41) | func DefaultPorts() Ports { FILE: fluxer_devops/livekitctl/internal/dnswait/dnswait.go function ResolveA (line 27) | func ResolveA(host string) []string { function ResolveAAAA (line 41) | func ResolveAAAA(host string) []string { function contains (line 55) | func contains(slice []string, item string) bool { function WaitForDNS (line 64) | func WaitForDNS(livekitDomain, turnDomain, publicIPv4, publicIPv6 string... FILE: fluxer_devops/livekitctl/internal/download/download.go type DownloadResult (line 36) | type DownloadResult struct function httpGet (line 41) | func httpGet(url string, timeoutS int) ([]byte, error) { function httpHeadOK (line 62) | func httpHeadOK(url string, timeoutS int) bool { function parseSHA256File (line 79) | func parseSHA256File(text string) string { function DownloadWithOptionalSHA256 (line 100) | func DownloadWithOptionalSHA256(url, dest string, timeoutS, retries int)... FILE: fluxer_devops/livekitctl/internal/errors/errors.go type LiveKitCtlError (line 24) | type LiveKitCtlError struct method Error (line 29) | func (e *LiveKitCtlError) Error() string { method Unwrap (line 36) | func (e *LiveKitCtlError) Unwrap() error { type CmdError (line 40) | type CmdError struct function NewCmdError (line 44) | func NewCmdError(msg string, err error) *CmdError { type ValidationError (line 48) | type ValidationError struct function NewValidationError (line 52) | func NewValidationError(msg string) *ValidationError { type PlatformError (line 56) | type PlatformError struct function NewPlatformError (line 60) | func NewPlatformError(msg string) *PlatformError { function NewPlatformErrorf (line 64) | func NewPlatformErrorf(format string, args ...interface{}) *PlatformError { FILE: fluxer_devops/livekitctl/internal/firewall/firewall.go type FirewallTool (line 29) | type FirewallTool struct function DetectFirewallTool (line 33) | func DetectFirewallTool() FirewallTool { function ConfigureFirewall (line 43) | func ConfigureFirewall(tool FirewallTool, ports constants.Ports, enable ... FILE: fluxer_devops/livekitctl/internal/install/install.go function DetectArchLinuxRelease (line 39) | func DetectArchLinuxRelease() (string, error) { function LiveKitReleaseURL (line 52) | func LiveKitReleaseURL(tag, arch string) string { function EnsureUsers (line 57) | func EnsureUsers() error { function ensureSystemUser (line 67) | func ensureSystemUser(name, home string) error { function InstallBasePackages (line 82) | func InstallBasePackages(pm *platform.PackageManager) error { function InstallKVBinary (line 163) | func InstallKVBinary(pm *platform.PackageManager) (string, error) { function InstallLiveKitBinary (line 226) | func InstallLiveKitBinary(tag, installDir, arch string) (string, error) { function extractTarGz (line 288) | func extractTarGz(tarGzPath, destDir string) error { function EnsureCaddyWithL4 (line 337) | func EnsureCaddyWithL4(stagingDir, caddyVersion, caddyL4Version, xcaddyV... function DefaultVersions (line 402) | func DefaultVersions() (string, string, string, string) { FILE: fluxer_devops/livekitctl/internal/netutil/netutil.go function DetectPublicIP (line 30) | func DetectPublicIP(family string) string { function HasGlobalIPv6 (line 74) | func HasGlobalIPv6() bool { function PrimaryPrivateIPv4 (line 97) | func PrimaryPrivateIPv4() string { function IsPrivateIPv4 (line 112) | func IsPrivateIPv4(ipStr string) bool { FILE: fluxer_devops/livekitctl/internal/ops/ops.go function secretsPath (line 39) | func secretsPath(st *state.BootstrapState) string { function LoadSecrets (line 43) | func LoadSecrets(st *state.BootstrapState) (*secrets.Secrets, error) { function SaveSecrets (line 54) | func SaveSecrets(st *state.BootstrapState, sec *secrets.Secrets) error { function StatePathDefault (line 58) | func StatePathDefault() string { function EnsureLinuxRoot (line 62) | func EnsureLinuxRoot() error { function ApplyConfigAndRestart (line 69) | func ApplyConfigAndRestart(st *state.BootstrapState, kvBin, publicIPv4, ... function OpStatus (line 105) | func OpStatus(st *state.BootstrapState) string { function OpLogs (line 118) | func OpLogs(st *state.BootstrapState, service string, lines int) string { function OpRestart (line 126) | func OpRestart(services []string) error { function WebhookList (line 137) | func WebhookList(st *state.BootstrapState) []string { function WebhookAdd (line 141) | func WebhookAdd(st *state.BootstrapState, url string, allowHTTP bool) (b... function WebhookRemove (line 159) | func WebhookRemove(st *state.BootstrapState, url string) (bool, error) { function WebhookSet (line 179) | func WebhookSet(st *state.BootstrapState, urls []string, allowHTTP bool)... function RunBasicHealthChecks (line 200) | func RunBasicHealthChecks(st *state.BootstrapState) string { function EnsureStateLoadedOrFail (line 219) | func EnsureStateLoadedOrFail(path string) (*state.BootstrapState, error) { function ConfigureFirewallFromState (line 234) | func ConfigureFirewallFromState(st *state.BootstrapState) (string, error) { function DetectPublicIPsOrFail (line 245) | func DetectPublicIPsOrFail() (string, string, string, error) { function ReadLinesFile (line 261) | func ReadLinesFile(path string) ([]string, error) { function StopConflictingServices (line 278) | func StopConflictingServices() { FILE: fluxer_devops/livekitctl/internal/platform/platform.go function IsLinux (line 33) | func IsLinux() bool { function RequireRoot (line 37) | func RequireRoot() error { function ReadOSRelease (line 44) | func ReadOSRelease() map[string]string { type PlatformInfo (line 66) | type PlatformInfo struct function DetectPlatform (line 72) | func DetectPlatform() PlatformInfo { type PackageManager (line 81) | type PackageManager struct method Install (line 107) | func (pm *PackageManager) Install(pkgs []string) error { function DetectPackageManager (line 85) | func DetectPackageManager() *PackageManager { type ServiceManager (line 144) | type ServiceManager struct method IsSystemd (line 155) | func (sm *ServiceManager) IsSystemd() bool { method DaemonReload (line 159) | func (sm *ServiceManager) DaemonReload() { method Enable (line 165) | func (sm *ServiceManager) Enable(name string) { method Disable (line 171) | func (sm *ServiceManager) Disable(name string) { method Restart (line 177) | func (sm *ServiceManager) Restart(name string) { method Start (line 183) | func (sm *ServiceManager) Start(name string) { method Stop (line 189) | func (sm *ServiceManager) Stop(name string) { method Status (line 195) | func (sm *ServiceManager) Status(name string) string { method Logs (line 206) | func (sm *ServiceManager) Logs(name string, lines int) string { function DetectServiceManager (line 148) | func DetectServiceManager() *ServiceManager { FILE: fluxer_devops/livekitctl/internal/secrets/secrets.go function RandomTokenURLSafe (line 31) | func RandomTokenURLSafe(nbytes int) string { function RandomTokenHex (line 39) | func RandomTokenHex(nbytes int) string { function SafeAPIKey (line 47) | func SafeAPIKey(prefix string, nbytes int) string { type Secrets (line 51) | type Secrets struct function GenerateBlueskyOAuthRSAKey (line 61) | func GenerateBlueskyOAuthRSAKey() (string, error) { function GenerateNewSecrets (line 76) | func GenerateNewSecrets() *Secrets { FILE: fluxer_devops/livekitctl/internal/state/state.go type Versions (line 31) | type Versions struct type Domains (line 38) | type Domains struct type Paths (line 43) | type Paths struct function DefaultPaths (line 58) | func DefaultPaths() Paths { type KVConfig (line 75) | type KVConfig struct type FirewallConfig (line 80) | type FirewallConfig struct type BootstrapState (line 85) | type BootstrapState struct method Touch (line 147) | func (st *BootstrapState) Touch() { type NewStateParams (line 99) | type NewStateParams struct function NewState (line 110) | func NewState(params NewStateParams) *BootstrapState { function LoadState (line 151) | func LoadState(path string) (*BootstrapState, error) { function SaveState (line 168) | func SaveState(st *BootstrapState) error { FILE: fluxer_devops/livekitctl/internal/util/util.go function Log (line 37) | func Log(msg string) { function Logf (line 41) | func Logf(format string, args ...interface{}) { function Which (line 45) | func Which(binName string) string { type RunOptions (line 53) | type RunOptions struct type RunResult (line 60) | type RunResult struct function Run (line 65) | func Run(cmd []string, opts RunOptions) (*RunResult, error) { function RunSimple (line 112) | func RunSimple(cmd []string) error { function RunCapture (line 117) | func RunCapture(cmd []string) (string, error) { function RunCaptureNoCheck (line 125) | func RunCaptureNoCheck(cmd []string) (string, int) { function AtomicWriteText (line 133) | func AtomicWriteText(path string, content string, mode os.FileMode, uid,... function ReadJSON (line 175) | func ReadJSON(path string, v interface{}) error { function WriteJSON (line 186) | func WriteJSON(path string, v interface{}, mode os.FileMode, uid, gid in... function NowRFC3339 (line 195) | func NowRFC3339() string { function EnsureDir (line 199) | func EnsureDir(path string, mode os.FileMode, uid, gid int) error { type UserGroup (line 214) | type UserGroup struct function LookupUserGroup (line 219) | func LookupUserGroup(username string) *UserGroup { function FileExists (line 238) | func FileExists(path string) bool { function CopyFile (line 243) | func CopyFile(src, dst string) error { FILE: fluxer_devops/livekitctl/internal/validate/validate.go function RequireDomain (line 33) | func RequireDomain(name, field string) (string, error) { function RequireEmail (line 59) | func RequireEmail(email string) (string, error) { function NormaliseVersionTag (line 71) | func NormaliseVersionTag(v string) (string, error) { function RequireWebhookURL (line 88) | func RequireWebhookURL(urlStr string, allowHTTP bool) (string, error) { FILE: fluxer_devops/livekitctl/main.go function main (line 28) | func main() { FILE: fluxer_docs/scripts/check_broken_links.mjs function slugify (line 30) | function slugify(str) { function buildValidUrlMap (line 43) | async function buildValidUrlMap(openapiPath) { function extractLinks (line 80) | function extractLinks(content) { function findMdxFiles (line 96) | async function findMdxFiles(dir, files = []) { function main (line 109) | async function main() { FILE: fluxer_docs/scripts/generate_config.mjs function buildDefMap (line 24) | function buildDefMap(schema) { function formatType (line 28) | function formatType(propSchema, defs) { function formatFieldName (line 73) | function formatFieldName(name, isRequired) { function buildDescription (line 80) | function buildDescription(propSchema) { function renderPropertyTable (line 93) | function renderPropertyTable(properties, requiredSet, defs) { function renderConditionalNote (line 116) | function renderConditionalNote(schema) { function renderJsonExample (line 175) | function renderJsonExample(_sectionPath, properties, requiredSet, _defs) { function renderDefinition (line 237) | function renderDefinition(defName, defSchema, defs, jsonPath) { function renderNestedDefinitions (line 262) | function renderNestedDefinitions(_defName, defSchema, defs, parentPath, ... function renderTableOfContents (line 297) | function renderTableOfContents(schema, _defs) { function renderRootProperties (line 335) | function renderRootProperties(schema, defs) { function renderMdx (line 349) | function renderMdx(schema) { function main (line 396) | async function main() { FILE: fluxer_docs/scripts/generate_error_codes.mjs function renderErrorCodeTable (line 27) | function renderErrorCodeTable(codes, descriptions) { function main (line 41) | async function main() { FILE: fluxer_docs/scripts/generate_gateway.mjs constant SCHEMA_TO_RESOURCE (line 29) | const SCHEMA_TO_RESOURCE = { constant GATEWAY_LOCAL_SCHEMAS (line 53) | const GATEWAY_LOCAL_SCHEMAS = new Set([ function normalisePathPattern (line 250) | function normalisePathPattern(path) { function slugify (line 259) | function slugify(str) { function buildEndpointMap (line 274) | function buildEndpointMap(openapi) { function endpointToLink (line 318) | function endpointToLink(endpoint, endpointMap) { function loadEventSchemas (line 348) | async function loadEventSchemas(schemasDir) { function getSchemaLink (line 369) | function getSchemaLink(schemaName) { function formatTypeRef (line 388) | function formatTypeRef(typeInfo) { function renderScopeBadge (line 428) | function renderScopeBadge(scope) { function renderPayloadTable (line 441) | function renderPayloadTable(payload, required = []) { function renderDispatchedBy (line 479) | function renderDispatchedBy(dispatchedBy, endpointMap) { function renderEventSection (line 508) | function renderEventSection(schema, endpointMap) { function renderOpcodesTable (line 550) | function renderOpcodesTable(opcodes) { function renderCloseCodesTable (line 565) | function renderCloseCodesTable(closeCodes) { function renderEventsQuickReferenceTable (line 580) | function renderEventsQuickReferenceTable(schemas) { function main (line 598) | async function main() { FILE: fluxer_docs/scripts/generate_media_proxy.mjs constant MEDIA_PROXY_BASE_URL (line 24) | const MEDIA_PROXY_BASE_URL = 'https://fluxerusercontent.com'; constant MEDIA_PROXY_URLS (line 30) | const MEDIA_PROXY_URLS = { constant ENUMS (line 43) | const ENUMS = { constant SCHEMAS (line 81) | const SCHEMAS = { function renderSchemaSection (line 234) | function renderSchemaSection(name, schema) { function renderEndpointsMdx (line 259) | function renderEndpointsMdx() { function generateOpenApiSpec (line 416) | function generateOpenApiSpec() { function main (line 1042) | async function main() { FILE: fluxer_docs/scripts/generate_permissions.mjs function toHex (line 109) | function toHex(value) { function renderPermissionsTable (line 116) | function renderPermissionsTable(permissions, descriptions) { function main (line 130) | async function main() { FILE: fluxer_docs/scripts/generate_resources.mjs constant TAG_TO_FILE (line 27) | const TAG_TO_FILE = { constant SCHEMA_PREFIX_TO_FILE (line 56) | const SCHEMA_PREFIX_TO_FILE = [ function getFileFromSchemaPrefix (line 148) | function getFileFromSchemaPrefix(schemaName) { constant JSON_PRIMITIVE_TYPES (line 157) | const JSON_PRIMITIVE_TYPES = new Set(['string', 'number', 'integer', 'bo... function isNullType (line 159) | function isNullType(schema) { function isNullableAnyOf (line 163) | function isNullableAnyOf(anyOf) { function getNonNullSchemaFromAnyOf (line 169) | function getNonNullSchemaFromAnyOf(anyOf) { function isPrimitiveType (line 174) | function isPrimitiveType(schema) { function isGeneralObject (line 179) | function isGeneralObject(schema) { function isArrayType (line 188) | function isArrayType(schema) { function isJsonComplexType (line 193) | function isJsonComplexType(schema) { function isJsonUnion (line 198) | function isJsonUnion(options) { function isJsonLikeComponent (line 205) | function isJsonLikeComponent(schema) { function isJsonLikeSchema (line 216) | function isJsonLikeSchema(schema) { constant ID_NAME_HINT_REGEX (line 225) | const ID_NAME_HINT_REGEX = /(?:_|^)(?:id|ids|snowflake)s?$/i; constant ID_CAMEL_HINT_REGEX (line 226) | const ID_CAMEL_HINT_REGEX = /Id(s)?$/; constant ID_DESC_HINT_REGEX (line 227) | const ID_DESC_HINT_REGEX = /\b(?:id|ids|identifier|snowflake)\b/i; function toPascalCase (line 229) | function toPascalCase(value) { function withContext (line 238) | function withContext(context = {}, overrides = {}) { function normalizeSchemaForFingerprint (line 250) | function normalizeSchemaForFingerprint(schema) { function createSchemaFingerprint (line 311) | function createSchemaFingerprint(schema) { function buildFingerprintMap (line 317) | function buildFingerprintMap(schemas) { function findLinkedSchemaName (line 329) | function findLinkedSchemaName(fingerprint, state) { function registerSyntheticSchema (line 341) | function registerSyntheticSchema(schema, state, context) { function registerEnumSchema (line 375) | function registerEnumSchema(schema, state, context) { function shouldTreatAsSnowflake (line 424) | function shouldTreatAsSnowflake(schema, context) { function formatMapType (line 437) | function formatMapType(schema, state, context) { function getBitflagTypeName (line 458) | function getBitflagTypeName(schema) { function formatType (line 471) | function formatType(schema, state, context = {}) { function escapeHtml (line 604) | function escapeHtml(value) { function renderType (line 608) | function renderType(typeInfo, options = {}) { function renderBitflagTable (line 621) | function renderBitflagTable(bitflagValues) { function formatFieldName (line 644) | function formatFieldName(name, isRequired) { function cleanEnumDescription (line 651) | function cleanEnumDescription(description) { function renderSchemaSection (line 660) | function renderSchemaSection(name, schema, state) { function discoverEnumSchemas (line 746) | function discoverEnumSchemas(schemas, state) { function buildSchemaToTagMap (line 779) | function buildSchemaToTagMap(openapi) { function buildSchemaToEndpointsMap (line 818) | function buildSchemaToEndpointsMap(openapi) { function slugify (line 866) | function slugify(str) { function getEndpointApiRefUrl (line 879) | function getEndpointApiRefUrl(endpoint) { function renderRelatedEndpoints (line 889) | function renderRelatedEndpoints(schemaName, schemaToEndpoints) { function getPrimaryTag (line 924) | function getPrimaryTag(schemaName, schemaToTags) { function groupSchemasByTag (line 942) | function groupSchemasByTag(schemas, schemaToTags) { function renderMdxForSchemas (line 972) | function renderMdxForSchemas(schemaNames, schemas, state, options = {}) { function renderOverviewMdx (line 1003) | function renderOverviewMdx(schemaGroups, allSchemaNames, state) { function main (line 1050) | async function main() { FILE: fluxer_docs/scripts/generate_scopes.mjs function renderScopesTable (line 38) | function renderScopesTable(scopes) { function main (line 50) | async function main() { FILE: fluxer_docs/scripts/shared.mjs function escapeTableText (line 27) | function escapeTableText(value) { function wrapCode (line 35) | function wrapCode(value) { function toAnchor (line 44) | function toAnchor(name) { function readJsonFile (line 51) | async function readJsonFile(filePath) { function writeFile (line 59) | async function writeFile(filePath, content) { function createFrontmatter (line 67) | function createFrontmatter(options) { function formatDefault (line 81) | function formatDefault(value) { FILE: fluxer_integration/src/gateway/GatewayClient.tsx type EventMatcher (line 33) | type EventMatcher = (data: unknown) => boolean; class GatewayClient (line 35) | class GatewayClient { method constructor (line 50) | constructor(token: string) { method connect (line 55) | async connect(): Promise { method resume (line 62) | async resume(resumeState: GatewayResumeState): Promise { method setupWebSocket (line 74) | private setupWebSocket(reject: (error: Error) => void, resumeState?: G... method handleMessage (line 112) | private handleMessage(data: string, resume?: GatewayResumeState): void { method handleHello (line 145) | private handleHello(hello: GatewayHelloPayload, resume?: GatewayResume... method handleDispatch (line 155) | private handleDispatch(payload: GatewayPayload): void { method sendIdentify (line 186) | private sendIdentify(): void { method sendResume (line 202) | private sendResume(resume: GatewayResumeState): void { method sendHeartbeat (line 213) | private sendHeartbeat(): void { method startHeartbeat (line 220) | private startHeartbeat(interval: number): void { method stopHeartbeat (line 228) | private stopHeartbeat(): void { method send (line 235) | send(payload: Omit): void { method sendVoiceStateUpdate (line 241) | sendVoiceStateUpdate( method activateGuild (line 264) | activateGuild(guildId: string): void { method waitForEvent (line 277) | waitForEvent(eventType: string, timeoutMs: number = 5000, matcher?: Ev... method waitForVoiceServerUpdate (line 320) | waitForVoiceServerUpdate( method waitForVoiceStateUpdate (line 329) | waitForVoiceStateUpdate( method assertNoEvent (line 338) | assertNoEvent(eventType: string, waitMs: number = 500): Promise { method getSessionId (line 368) | getSessionId(): string | null { method getSequence (line 372) | getSequence(): number { method getResumeState (line 376) | getResumeState(): GatewayResumeState | null { method close (line 384) | close(): void { function createGatewayClient (line 394) | async function createGatewayClient(token: string): Promise { FILE: fluxer_integration/src/gateway/GatewayGuildEvents.test.tsx type ChannelCreate (line 28) | interface ChannelCreate { type ChannelUpdate (line 35) | interface ChannelUpdate { type ChannelDelete (line 42) | interface ChannelDelete { type MessageCreate (line 47) | interface MessageCreate { FILE: fluxer_integration/src/gateway/GatewayTypes.tsx type GatewayOpcodeType (line 38) | type GatewayOpcodeType = ValueOf; type GatewayPayload (line 40) | interface GatewayPayload { type GatewayHelloPayload (line 47) | interface GatewayHelloPayload { type GatewayIdentifyPayload (line 51) | interface GatewayIdentifyPayload { type GatewayResumePayload (line 68) | interface GatewayResumePayload { type GatewayVoiceStateUpdatePayload (line 74) | interface GatewayVoiceStateUpdatePayload { type GatewayDispatch (line 84) | interface GatewayDispatch { type VoiceServerUpdate (line 90) | interface VoiceServerUpdate { type VoiceStateUpdate (line 98) | interface VoiceStateUpdate { type ReadyPayload (line 114) | interface ReadyPayload { type MessageCreatePayload (line 131) | interface MessageCreatePayload { type GatewayResumeState (line 143) | interface GatewayResumeState { FILE: fluxer_integration/src/globalSetup.tsx constant PROJECT_NAME (line 28) | const PROJECT_NAME = 'fluxer-integration'; constant API_URL (line 29) | const API_URL = 'http://localhost:18088/api/v1'; constant GATEWAY_URL (line 30) | const GATEWAY_URL = 'ws://localhost:18088/gateway'; constant HEALTH_CHECK_URL (line 31) | const HEALTH_CHECK_URL = `${API_URL}/_health`; constant MAX_WAIT_SECONDS (line 32) | const MAX_WAIT_SECONDS = 120; constant POLL_INTERVAL_MS (line 33) | const POLL_INTERVAL_MS = 2000; constant GATEWAY_OPCODE_HELLO (line 35) | const GATEWAY_OPCODE_HELLO = 10; function waitForApi (line 37) | async function waitForApi(): Promise { function probeGateway (line 58) | async function probeGateway(): Promise { function waitForGateway (line 103) | async function waitForGateway(): Promise { function startContainers (line 120) | function startContainers(): void { function showContainerLogs (line 133) | function showContainerLogs(): void { function globalSetup (line 142) | async function globalSetup(): Promise { FILE: fluxer_integration/src/globalTeardown.tsx constant PROJECT_NAME (line 27) | const PROJECT_NAME = 'fluxer-integration'; function stopContainers (line 29) | function stopContainers(): void { function globalTeardown (line 41) | async function globalTeardown(): Promise { FILE: fluxer_integration/src/helpers/AccountHelper.tsx type TestAccount (line 23) | interface TestAccount { type RegisterResponse (line 30) | interface RegisterResponse { type UsersMeResponse (line 34) | interface UsersMeResponse { function createTestAccount (line 42) | async function createTestAccount(): Promise { function ensureSessionStarted (line 76) | async function ensureSessionStarted(token: string): Promise { FILE: fluxer_integration/src/helpers/ApiClient.tsx type ApiResponse (line 22) | interface ApiResponse { class ApiClient (line 28) | class ApiClient { method constructor (line 32) | constructor() { method request (line 47) | private async request(method: string, path: string, body?: unknown,... method get (line 68) | async get(path: string, token?: string): Promise> { method post (line 72) | async post(path: string, body: unknown, token?: string): Promise(path: string, body: unknown, token?: string): Promise(path: string, token?: string): Promise> { FILE: fluxer_integration/src/helpers/GuildHelper.tsx type GuildResponse (line 22) | interface GuildResponse { type ChannelResponse (line 29) | interface ChannelResponse { function createGuild (line 36) | async function createGuild(token: string, name: string): Promise; type DirectoryConfig (line 59) | type DirectoryConfig = z.infer; constant CONFIG_PATHS (line 61) | const CONFIG_PATHS = [ constant ENV_OVERRIDE_PREFIX (line 67) | const ENV_OVERRIDE_PREFIX = 'RELAY_DIRECTORY__'; function loadConfigFile (line 69) | function loadConfigFile(): Record { function loadDirectoryConfig (line 82) | function loadDirectoryConfig(): DirectoryConfig { type Config (line 90) | type Config = typeof Config; FILE: fluxer_relay_directory/src/Logger.tsx type Logger (line 39) | type Logger = typeof Logger; FILE: fluxer_relay_directory/src/controllers/RelayController.tsx function RelayController (line 35) | function RelayController(app: Hono): void { FILE: fluxer_relay_directory/src/database/Database.tsx constant SCHEMA (line 24) | const SCHEMA = ` function createDatabase (line 45) | function createDatabase(dbPath: string): DatabaseSync { FILE: fluxer_relay_directory/src/index.tsx function loadBootstrapRelays (line 28) | function loadBootstrapRelays(repository: IRelayRepository, bootstrapRela... function main (line 66) | function main(): void { FILE: fluxer_relay_directory/src/middleware/ServiceMiddleware.tsx type RelayDirectoryEnv (line 29) | interface RelayDirectoryEnv { type ServiceMiddlewareOptions (line 37) | interface ServiceMiddlewareOptions { function initializeServices (line 45) | function initializeServices(options: ServiceMiddlewareOptions): { function getRepository (line 61) | function getRepository(): RelayRepository { FILE: fluxer_relay_directory/src/middleware/Validator.tsx type ValidationError (line 23) | interface ValidationError { type HasUndefined (line 29) | type HasUndefined = undefined extends T ? true : false; FILE: fluxer_relay_directory/src/repositories/RelayRepository.tsx type RelayInfo (line 22) | interface RelayInfo { type RelayRow (line 38) | interface RelayRow { type IRelayRepository (line 54) | interface IRelayRepository { function rowToRelayInfo (line 64) | function rowToRelayInfo(row: RelayRow): RelayInfo { class RelayRepository (line 71) | class RelayRepository implements IRelayRepository { method constructor (line 81) | constructor(db: DatabaseSync) { method loadCache (line 101) | private loadCache(): void { method getRelay (line 108) | getRelay(id: string): RelayInfo | null { method getAllRelays (line 124) | getAllRelays(): Array { method getHealthyRelays (line 128) | getHealthyRelays(): Array { method saveRelay (line 132) | saveRelay(relay: RelayInfo): void { method updateRelayHealth (line 151) | updateRelayHealth(id: string, healthy: boolean, failedChecks: number):... method updateRelayLastSeen (line 160) | updateRelayLastSeen(id: string): void { method removeRelay (line 171) | removeRelay(id: string): void { FILE: fluxer_relay_directory/src/services/GeoSelectionService.tsx constant EARTH_RADIUS_KM (line 22) | const EARTH_RADIUS_KM = 6371; type GeoLocation (line 24) | interface GeoLocation { type RelayWithDistance (line 29) | interface RelayWithDistance extends RelayInfo { type IGeoSelectionService (line 33) | interface IGeoSelectionService { class GeoSelectionService (line 39) | class GeoSelectionService implements IGeoSelectionService { method calculateDistance (line 40) | calculateDistance(from: GeoLocation, to: GeoLocation): number { method sortByProximity (line 55) | sortByProximity(relays: Array, clientLocation: GeoLocation)... method selectNearestRelays (line 69) | selectNearestRelays(relays: Array, clientLocation: GeoLocat... method toRadians (line 74) | private toRadians(degrees: number): number { FILE: fluxer_relay_directory/src/services/HealthCheckService.tsx type HealthCheckConfig (line 23) | interface HealthCheckConfig { type IHealthCheckService (line 29) | interface IHealthCheckService { class HealthCheckService (line 35) | class HealthCheckService implements IHealthCheckService { method constructor (line 41) | constructor(repository: IRelayRepository, config: HealthCheckConfig, l... method start (line 47) | start(): void { method stop (line 65) | stop(): void { method checkRelay (line 73) | async checkRelay(relay: RelayInfo): Promise { method handleFailedCheck (line 111) | private handleFailedCheck(relay: RelayInfo): void { method checkAllRelays (line 130) | private async checkAllRelays(): Promise { FILE: fluxer_relay_directory/src/services/RelayRegistryService.tsx type RegisterRelayRequest (line 24) | interface RegisterRelayRequest { type IRelayRegistryService (line 34) | interface IRelayRegistryService { class RelayRegistryService (line 43) | class RelayRegistryService implements IRelayRegistryService { method constructor (line 47) | constructor(repository: IRelayRepository, geoService: IGeoSelectionSer... method registerRelay (line 52) | registerRelay(request: RegisterRelayRequest): RelayInfo { method getRelay (line 74) | getRelay(id: string): RelayInfo | null { method getRelayStatus (line 78) | getRelayStatus(id: string): RelayInfo | null { method listRelays (line 82) | listRelays(clientLocation?: GeoLocation, limit?: number): Array { function main (line 53) | async function main(): Promise { FILE: fluxer_server/src/utils/ConfigUtils.tsx function requireValue (line 20) | function requireValue(value: T | undefined | null, name: string): T { FILE: fluxer_server/src/utils/GatewayProcessManager.tsx constant GATEWAY_STARTUP_DELAY_MS (line 26) | const GATEWAY_STARTUP_DELAY_MS = 1000; constant GATEWAY_SHUTDOWN_TIMEOUT_MS (line 27) | const GATEWAY_SHUTDOWN_TIMEOUT_MS = 2000; constant GATEWAY_PATH (line 28) | const GATEWAY_PATH = '/opt/fluxer_gateway/bin/fluxer_gateway'; constant GATEWAY_DIST_PORT (line 29) | const GATEWAY_DIST_PORT = 9100; type GatewayProcessManager (line 31) | interface GatewayProcessManager { function generateUniqueNodeName (line 37) | function generateUniqueNodeName(): string { function killStaleGatewayProcesses (line 43) | function killStaleGatewayProcesses(logger: Logger): void { function killEpmd (line 54) | function killEpmd(logger: Logger): void { function freeDistributionPort (line 65) | function freeDistributionPort(logger: Logger): void { function createGatewayProcessManager (line 76) | function createGatewayProcessManager(): GatewayProcessManager { FILE: fluxer_server/src/utils/GatewayProxy.tsx type GatewayProxy (line 27) | interface GatewayProxy { function formatHeaderValue (line 31) | function formatHeaderValue(value: string | Array | undefined): s... function createResponseHeaders (line 41) | function createResponseHeaders(res: http.IncomingMessage): string { function cleanupSockets (line 48) | function cleanupSockets(clientSocket: Socket, proxySocket?: Socket): void { function createGatewayProxy (line 57) | function createGatewayProxy(): GatewayProxy { FILE: packages/admin/src/AccessControlList.tsx function hasPermission (line 25) | function hasPermission(adminAcls: Array, requiredAcl: string): b... function hasAnyPermission (line 29) | function hasAnyPermission(adminAcls: Array, requiredAcls: Array<... FILE: packages/admin/src/AdminPackageConstants.tsx type PatchableUserFlag (line 28) | interface PatchableUserFlag { constant FLAG_STAFF (line 33) | const FLAG_STAFF: PatchableUserFlag = {name: 'STAFF', value: UserFlags.S... constant FLAG_STAFF_HIDDEN (line 34) | const FLAG_STAFF_HIDDEN: PatchableUserFlag = {name: 'STAFF_HIDDEN', valu... constant FLAG_CTP_MEMBER (line 35) | const FLAG_CTP_MEMBER: PatchableUserFlag = {name: 'CTP_MEMBER', value: U... constant FLAG_PARTNER (line 36) | const FLAG_PARTNER: PatchableUserFlag = {name: 'PARTNER', value: UserFla... constant FLAG_BUG_HUNTER (line 37) | const FLAG_BUG_HUNTER: PatchableUserFlag = {name: 'BUG_HUNTER', value: U... constant FLAG_HIGH_GLOBAL_RATE_LIMIT (line 38) | const FLAG_HIGH_GLOBAL_RATE_LIMIT: PatchableUserFlag = { constant FLAG_PREMIUM_PURCHASE_DISABLED (line 42) | const FLAG_PREMIUM_PURCHASE_DISABLED: PatchableUserFlag = { constant FLAG_PREMIUM_ENABLED_OVERRIDE (line 46) | const FLAG_PREMIUM_ENABLED_OVERRIDE: PatchableUserFlag = { constant FLAG_RATE_LIMIT_BYPASS (line 50) | const FLAG_RATE_LIMIT_BYPASS: PatchableUserFlag = { constant FLAG_REPORT_BANNED (line 54) | const FLAG_REPORT_BANNED: PatchableUserFlag = {name: 'REPORT_BANNED', va... constant FLAG_VERIFIED_NOT_UNDERAGE (line 55) | const FLAG_VERIFIED_NOT_UNDERAGE: PatchableUserFlag = { constant FLAG_USED_MOBILE_CLIENT (line 59) | const FLAG_USED_MOBILE_CLIENT: PatchableUserFlag = { constant FLAG_APP_STORE_REVIEWER (line 63) | const FLAG_APP_STORE_REVIEWER: PatchableUserFlag = { constant FLAG_DM_HISTORY_BACKFILLED (line 67) | const FLAG_DM_HISTORY_BACKFILLED: PatchableUserFlag = { constant SELF_HOSTED_PATCHABLE_FLAGS (line 72) | const SELF_HOSTED_PATCHABLE_FLAGS: Array = [ constant PATCHABLE_FLAGS (line 81) | const PATCHABLE_FLAGS: Array = [ type Flag (line 98) | interface Flag { constant SUSPICIOUS_FLAG_REQUIRE_VERIFIED_EMAIL (line 103) | const SUSPICIOUS_FLAG_REQUIRE_VERIFIED_EMAIL: Flag = { constant SUSPICIOUS_FLAG_REQUIRE_REVERIFIED_EMAIL (line 107) | const SUSPICIOUS_FLAG_REQUIRE_REVERIFIED_EMAIL: Flag = { constant SUSPICIOUS_FLAG_REQUIRE_VERIFIED_PHONE (line 111) | const SUSPICIOUS_FLAG_REQUIRE_VERIFIED_PHONE: Flag = { constant SUSPICIOUS_FLAG_REQUIRE_REVERIFIED_PHONE (line 115) | const SUSPICIOUS_FLAG_REQUIRE_REVERIFIED_PHONE: Flag = { constant SUSPICIOUS_FLAG_REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE (line 119) | const SUSPICIOUS_FLAG_REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE: Flag = { constant SUSPICIOUS_FLAG_REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE (line 123) | const SUSPICIOUS_FLAG_REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE: Flag = { constant SUSPICIOUS_FLAG_REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE (line 127) | const SUSPICIOUS_FLAG_REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE: Flag = { constant SUSPICIOUS_FLAG_REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE (line 131) | const SUSPICIOUS_FLAG_REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE: Flag... constant SUSPICIOUS_ACTIVITY_FLAGS (line 136) | const SUSPICIOUS_ACTIVITY_FLAGS: Array = [ constant DELETION_REASONS (line 147) | const DELETION_REASONS: Array<{id: number; label: string}> = [ constant TEMP_BAN_DURATIONS (line 172) | const TEMP_BAN_DURATIONS: Array<{hours: number; label: string}> = [ constant ALL_ACLS (line 184) | const ALL_ACLS = Object.values(AdminACLs); constant GUILD_FEATURES (line 186) | const GUILD_FEATURES = Object.values(GuildFeatures) as ReadonlyArray = [ constant SELF_HOSTED_GUILD_FEATURES (line 194) | const SELF_HOSTED_GUILD_FEATURES: ReadonlyArray = GUILD_FEATURES... constant DISABLED_OP_PUSH_NOTIFICATIONS (line 198) | const DISABLED_OP_PUSH_NOTIFICATIONS: Flag = { constant DISABLED_OP_EVERYONE_MENTIONS (line 202) | const DISABLED_OP_EVERYONE_MENTIONS: Flag = { constant DISABLED_OP_TYPING_EVENTS (line 206) | const DISABLED_OP_TYPING_EVENTS: Flag = {name: 'TYPING_EVENTS', value: G... constant DISABLED_OP_INSTANT_INVITES (line 207) | const DISABLED_OP_INSTANT_INVITES: Flag = {name: 'INSTANT_INVITES', valu... constant DISABLED_OP_SEND_MESSAGE (line 208) | const DISABLED_OP_SEND_MESSAGE: Flag = {name: 'SEND_MESSAGE', value: Gui... constant DISABLED_OP_REACTIONS (line 209) | const DISABLED_OP_REACTIONS: Flag = {name: 'REACTIONS', value: GuildOper... constant DISABLED_OP_MEMBER_LIST_UPDATES (line 210) | const DISABLED_OP_MEMBER_LIST_UPDATES: Flag = { constant DISABLED_OPERATIONS (line 215) | const DISABLED_OPERATIONS: Array = [ FILE: packages/admin/src/App.tsx type CreateAdminAppOptions (line 57) | interface CreateAdminAppOptions { type AdminAppResult (line 67) | interface AdminAppResult { function createAdminApp (line 72) | function createAdminApp(options: CreateAdminAppOptions): AdminAppResult { function createHttpKVProvider (line 206) | function createHttpKVProvider(config: AdminConfig, _logger: LoggerInterf... function normalizeAdminSecurityConfig (line 214) | function normalizeAdminSecurityConfig(config: AdminConfig): AdminConfig { function normalizeKVUrl (line 230) | function normalizeKVUrl(rawKvUrl: string): string { function stripLeadingBasePath (line 241) | function stripLeadingBasePath(path: string, basePath: string): string { function toRelativeStaticPath (line 248) | function toRelativeStaticPath(path: string): string { FILE: packages/admin/src/HonoJsx.d.ts type Element (line 24) | type Element = HonoJSX.Element; type IntrinsicAttributes (line 25) | interface IntrinsicAttributes extends HonoJSX.IntrinsicAttributes {} type IntrinsicElements (line 26) | interface IntrinsicElements extends HonoJSX.IntrinsicElements {} FILE: packages/admin/src/Navigation.tsx function getSections (line 27) | function getSections(): Array { function getAccessibleSections (line 211) | function getAccessibleSections(adminAcls: Array, context?: Navig... function getFirstAccessiblePath (line 239) | function getFirstAccessiblePath(adminAcls: Array, context?: Navi... FILE: packages/admin/src/Oauth2.tsx constant ADMIN_OAUTH_SCOPE (line 28) | const ADMIN_OAUTH_SCOPE = 'identify email admin'; function createAdminOAuth2Client (line 30) | function createAdminOAuth2Client(config: Config): IOAuth2Client { FILE: packages/admin/src/PublicDir.tsx function resolveAdminPublicDir (line 22) | function resolveAdminPublicDir(): string { FILE: packages/admin/src/SelfHostedOverride.tsx function getPageConfig (line 23) | function getPageConfig(c: AppContext, config: AdminConfig): AdminConfig { function isSelfHostedOverride (line 30) | function isSelfHostedOverride(c: AppContext, config: AdminConfig): boole... FILE: packages/admin/src/Session.tsx constant MAX_AGE_SECONDS (line 26) | const MAX_AGE_SECONDS = 60 * 60 * 24 * 7; type SessionData (line 28) | interface SessionData { function createSession (line 33) | function createSession(userId: string, accessToken: string, secretKey: s... function parseSession (line 37) | function parseSession(cookieValue: string, secretKey: string): Session |... FILE: packages/admin/src/api/AdminApiKeys.tsx function createApiKey (line 28) | async function createApiKey( function listApiKeys (line 38) | async function listApiKeys( function revokeApiKey (line 46) | async function revokeApiKey(config: Config, session: Session, key_id: st... FILE: packages/admin/src/api/Archives.tsx type Archive (line 34) | type Archive = z.infer; type ListArchivesResponse (line 35) | type ListArchivesResponse = z.infer; type ArchiveDownloadUrlResponse (line 36) | type ArchiveDownloadUrlResponse = z.infer; type SearchAuditLogsParams (line 32) | interface SearchAuditLogsParams { function searchAuditLogs (line 40) | async function searchAuditLogs( FILE: packages/admin/src/api/Bans.tsx type BanCheckResponse (line 34) | type BanCheckResponse = z.infer; type ListIpBansResponse (line 35) | type ListIpBansResponse = z.infer; type ListEmailBansResponse (line 36) | type ListEmailBansResponse = z.infer; type ListPhoneBansResponse (line 37) | type ListPhoneBansResponse = z.infer; function banEmail (line 39) | async function banEmail( function unbanEmail (line 49) | async function unbanEmail( function checkEmailBan (line 59) | async function checkEmailBan( function banIp (line 68) | async function banIp( function unbanIp (line 78) | async function unbanIp( function checkIpBan (line 88) | async function checkIpBan(config: Config, session: Session, ip: string):... function banPhone (line 93) | async function banPhone( function unbanPhone (line 103) | async function unbanPhone( function checkPhoneBan (line 113) | async function checkPhoneBan( function listIpBans (line 122) | async function listIpBans( function listEmailBans (line 131) | async function listEmailBans( function listPhoneBans (line 140) | async function listPhoneBans( FILE: packages/admin/src/api/Bulk.tsx type BulkOperationResponseType (line 30) | type BulkOperationResponseType = z.infer; function bulkUpdateUserFlags (line 32) | async function bulkUpdateUserFlags( function bulkUpdateGuildFeatures (line 52) | async function bulkUpdateGuildFeatures( function bulkAddGuildMembers (line 72) | async function bulkAddGuildMembers( function bulkScheduleUserDeletion (line 90) | async function bulkScheduleUserDeletion( FILE: packages/admin/src/api/Client.tsx type ApiResult (line 29) | type ApiResult = {ok: true; data: T} | {ok: false; error: ApiError}; type RequestOptions (line 30) | interface RequestOptions { class ApiClient (line 38) | class ApiClient { method constructor (line 42) | constructor(config: AdminConfig, session: Session) { method buildHeaders (line 52) | private buildHeaders(auditLogReason?: string): Record { method buildUrl (line 65) | private buildUrl(path: string, queryParams?: Record(options: RequestOptions): Promise> { method get (line 130) | async get( method post (line 141) | async post(path: string, body?: JsonValue | string, auditLogReason?... method postVoid (line 150) | async postVoid(path: string, body?: JsonValue | string, auditLogReason... method patch (line 159) | async patch(path: string, body?: JsonValue | string, auditLogReason... method patchVoid (line 168) | async patchVoid(path: string, body?: JsonValue | string, auditLogReaso... method delete (line 177) | async delete(path: string, body?: JsonValue | string, auditLogReaso... method deleteVoid (line 186) | async deleteVoid(path: string, body?: JsonValue | string, auditLogReas... method put (line 195) | async put(path: string, body?: JsonValue | string, auditLogReason?:... method putVoid (line 204) | async putVoid(path: string, body?: JsonValue | string, auditLogReason?... function createApiClient (line 214) | function createApiClient(config: AdminConfig, session: Session): ApiClie... FILE: packages/admin/src/api/Codes.tsx type CodesResponseType (line 29) | type CodesResponseType = z.infer; function generateGiftCodes (line 31) | async function generateGiftCodes( FILE: packages/admin/src/api/Discovery.tsx type DiscoveryApplicationResponseType (line 29) | type DiscoveryApplicationResponseType = z.infer { function getErrorTitle (line 140) | function getErrorTitle(error: ApiError): string { function getErrorSubtitle (line 163) | function getErrorSubtitle(error: ApiError): string { function getErrorDetails (line 186) | function getErrorDetails(error: ApiError): Array { function parseApiResponse (line 218) | async function parseApiResponse( FILE: packages/admin/src/api/GuildAssets.tsx function listGuildEmojis (line 28) | async function listGuildEmojis( function listGuildStickers (line 37) | async function listGuildStickers( FILE: packages/admin/src/api/Guilds.tsx type GuildLookupResult (line 34) | type GuildLookupResult = NonNullable... type GuildChannel (line 35) | type GuildChannel = GuildLookupResult['channels'][number]; type GuildRole (line 36) | type GuildRole = GuildLookupResult['roles'][number]; type UpdateGuildSettingsOptions (line 38) | interface UpdateGuildSettingsOptions { function lookupGuild (line 47) | async function lookupGuild( function clearGuildFields (line 60) | async function clearGuildFields( function updateGuildFeatures (line 70) | async function updateGuildFeatures( function updateGuildSettings (line 85) | async function updateGuildSettings( function updateGuildName (line 109) | async function updateGuildName( function updateGuildVanity (line 119) | async function updateGuildVanity( function transferGuildOwnership (line 133) | async function transferGuildOwnership( function reloadGuild (line 143) | async function reloadGuild(config: Config, session: Session, guildId: st... function shutdownGuild (line 148) | async function shutdownGuild(config: Config, session: Session, guildId: ... function deleteGuild (line 153) | async function deleteGuild(config: Config, session: Session, guildId: st... function forceAddUserToGuild (line 158) | async function forceAddUserToGuild( function searchGuilds (line 168) | async function searchGuilds( function listGuildMembers (line 179) | async function listGuildMembers( function banGuildMember (line 194) | async function banGuildMember( function kickGuildMember (line 204) | async function kickGuildMember( FILE: packages/admin/src/api/InstanceConfig.tsx function getInstanceConfig (line 33) | async function getInstanceConfig(config: Config, session: Session): Prom... function updateInstanceConfig (line 38) | async function updateInstanceConfig( function listSnowflakeReservations (line 47) | async function listSnowflakeReservations( function addSnowflakeReservation (line 62) | async function addSnowflakeReservation( function deleteSnowflakeReservation (line 72) | async function deleteSnowflakeReservation( FILE: packages/admin/src/api/JsonTypes.tsx type JsonPrimitive (line 23) | type JsonPrimitive = string | number | boolean | null; type JsonValue (line 24) | type JsonValue = JsonPrimitive | JsonObject | JsonArray; type JsonObject (line 25) | type JsonObject = {[key: string]: JsonValue}; type JsonArray (line 26) | type JsonArray = Array; function parseJson (line 27) | function parseJson(text: string): JsonValue | null { function isJsonObject (line 35) | function isJsonObject(value: JsonValue | null): value is JsonObject { FILE: packages/admin/src/api/LimitConfig.tsx type LimitConfigResponse (line 29) | type LimitConfigResponse = z.infer; type LimitRule (line 30) | type LimitRule = LimitConfigResponse['limit_config']['rules'][number]; function getLimitConfig (line 32) | async function getLimitConfig(config: Config, session: Session): Promise... function updateLimitConfig (line 37) | async function updateLimitConfig( function getDefaultValue (line 46) | function getDefaultValue(response: LimitConfigResponse, ruleId: string, ... function isModified (line 55) | function isModified(rule: LimitRule, limitKey: string): boolean { function getKeysByCategory (line 59) | function getKeysByCategory(response: LimitConfigResponse): Record; type MessageShredStatusResponse (line 38) | type MessageShredStatusResponse = z.infer; function listReports (line 36) | async function listReports( function resolveReport (line 53) | async function resolveReport( function searchReports (line 68) | async function searchReports( function getReportDetail (line 91) | async function getReportDetail(config: Config, session: Session, reportI... FILE: packages/admin/src/api/Search.tsx function refreshSearchIndex (line 31) | async function refreshSearchIndex( function refreshSearchIndexWithGuild (line 40) | async function refreshSearchIndexWithGuild( function getIndexRefreshStatus (line 55) | async function getIndexRefreshStatus( FILE: packages/admin/src/api/System.tsx function getGuildMemoryStats (line 32) | async function getGuildMemoryStats( function reloadAllGuilds (line 41) | async function reloadAllGuilds( function getNodeStats (line 50) | async function getNodeStats(config: Config, session: Session): Promise) { FILE: packages/admin/src/components/ui/Form/FormFieldGroup.tsx type FormFieldGroupProps (line 27) | interface FormFieldGroupProps { function FormFieldGroup (line 37) | function FormFieldGroup(props: FormFieldGroupProps) { FILE: packages/admin/src/components/ui/Form/FormRow.tsx type FormRowProps (line 26) | interface FormRowProps { function FormRow (line 47) | function FormRow(props: PropsWithChildren) { FILE: packages/admin/src/components/ui/Form/FormSection.tsx type FormSectionProps (line 26) | interface FormSectionProps { function FormSection (line 32) | function FormSection(props: PropsWithChildren) { FILE: packages/admin/src/components/ui/Grid.tsx type GridCols (line 26) | type GridCols = 1 | 2 | 3 | 4; type GridGap (line 27) | type GridGap = 'sm' | 'md' | 'lg'; type GridProps (line 29) | interface GridProps { function Grid (line 48) | function Grid({cols = 2, gap = 'md', class: className, children}: PropsW... FILE: packages/admin/src/components/ui/InlineStack.tsx type InlineStackProps (line 26) | interface InlineStackProps { function InlineStack (line 33) | function InlineStack({gap = 2, align = 'center', children, class: classN... FILE: packages/admin/src/components/ui/Input.tsx type InputSize (line 25) | type InputSize = 'sm' | 'md' | 'lg'; type InputType (line 26) | type InputType = 'text' | 'email' | 'password' | 'tel' | 'number' | 'dat... type InputProps (line 28) | interface InputProps { function toInputId (line 56) | function toInputId(name: string): string { FILE: packages/admin/src/components/ui/Layout/Box.tsx type BoxSpacing (line 26) | type BoxSpacing = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12; type BoxBackground (line 27) | type BoxBackground = 'white' | 'gray-50' | 'gray-100' | 'transparent'; type BoxBorder (line 28) | type BoxBorder = 'none' | 'gray-200' | 'gray-300'; type BoxRounded (line 29) | type BoxRounded = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'; type BoxProps (line 31) | interface BoxProps { function getPaddingClass (line 62) | function getPaddingClass(p: BoxSpacing): string { function getMarginClass (line 66) | function getMarginClass(m: BoxSpacing): string { function Box (line 70) | function Box({ FILE: packages/admin/src/components/ui/Layout/DetailPageLayout.tsx type DetailPageLayoutProps (line 26) | interface DetailPageLayoutProps { function DetailPageLayout (line 31) | function DetailPageLayout({header, tabs, children}: PropsWithChildren) { FILE: packages/admin/src/components/ui/ResourceLink.tsx type ResourceLinkProps (line 26) | interface ResourceLinkProps { FILE: packages/admin/src/components/ui/Select.tsx type SelectSize (line 25) | type SelectSize = 'sm' | 'md' | 'lg'; type SelectOption (line 27) | interface SelectOption { type SelectProps (line 33) | interface SelectProps { FILE: packages/admin/src/components/ui/Stack.tsx type StackGap (line 26) | type StackGap = 'sm' | 'md' | 'lg' | number; type StackAlign (line 27) | type StackAlign = 'start' | 'center' | 'end' | 'stretch'; type StackProps (line 29) | interface StackProps { function getGapClass (line 48) | function getGapClass(gap: StackGap): string { function Stack (line 55) | function Stack({gap = 'md', align = 'stretch', class: className, childre... FILE: packages/admin/src/components/ui/StatusBadge.tsx type StatusBadgeProps (line 26) | interface StatusBadgeProps { function StatusBadge (line 49) | function StatusBadge({status, size}: StatusBadgeProps) { FILE: packages/admin/src/components/ui/Table.tsx type TableProps (line 26) | interface TableProps { function Table (line 30) | function Table({children, className}: PropsWithChildren) { FILE: packages/admin/src/components/ui/TableBody.tsx function TableBody (line 25) | function TableBody({children}: PropsWithChildren) { FILE: packages/admin/src/components/ui/TableCell.tsx type TableCellProps (line 26) | interface TableCellProps { function TableCell (line 32) | function TableCell({align = 'left', variant = 'default', colSpan, childr... FILE: packages/admin/src/components/ui/TableContainer.tsx function TableContainer (line 25) | function TableContainer({children}: PropsWithChildren) { FILE: packages/admin/src/components/ui/TableHeader.tsx function TableHeader (line 25) | function TableHeader({children}: PropsWithChildren) { FILE: packages/admin/src/components/ui/TableHeaderCell.tsx type TableHeaderCellProps (line 26) | interface TableHeaderCellProps { function TableHeaderCell (line 30) | function TableHeaderCell({align = 'left', children}: PropsWithChildren) { type TextProps (line 65) | interface TextProps { function Text (line 94) | function Text(props: PropsWithChildren) { type LabelProps (line 102) | interface LabelProps { function Label (line 108) | function Label(props: PropsWithChildren) { type CaptionProps (line 121) | interface CaptionProps { function Caption (line 132) | function Caption(props: PropsWithChildren) { type SectionHeadingProps (line 140) | interface SectionHeadingProps { function SectionHeading (line 145) | function SectionHeading(props: PropsWithChildren) { FILE: packages/admin/src/hooks/usePaginationUrl.ts type PaginationUrlParams (line 20) | interface PaginationUrlParams { function buildPaginationUrl (line 34) | function buildPaginationUrl(page: number, params: PaginationUrlParams = ... FILE: packages/admin/src/middleware/Auth.tsx function getValidSession (line 33) | async function getValidSession(c: AppContext, configOverride?: Config): ... function redirectToAuthorize (line 44) | function redirectToAuthorize(c: AppContext, config: Config): Response { function redirectToLoginAndClearSession (line 57) | function redirectToLoginAndClearSession(c: AppContext, config: Config): ... function getFlash (line 62) | function getFlash(c: AppContext): Flash | undefined { function redirectWithFlash (line 71) | function redirectWithFlash(c: AppContext, url: string, flash: Flash): Re... function createRequireAuth (line 82) | function createRequireAuth(config: Config, assetVersion: string) { FILE: packages/admin/src/middleware/Csrf.tsx function initializeCsrf (line 30) | function initializeCsrf(secretKeyBase: string, secureCookie: boolean): v... function getCsrfProtectionOrThrow (line 38) | function getCsrfProtectionOrThrow(): CsrfProtection { function getCsrfToken (line 45) | function getCsrfToken(c: AppContext): string { function csrfMiddleware (line 49) | async function csrfMiddleware(c: AppContext, next: Next): Promise = Object.values(Htt... function createAdminErrorHandler (line 35) | function createAdminErrorHandler( function getStatus (line 71) | function getStatus(error: Error): number | null { function renderNotFound (line 76) | function renderNotFound(c: Context, homeUrl: string): Response | Promise... function renderError (line 90) | function renderError(c: Context, status: number, homeUrl: string): Respo... function isHttpStatusCode (line 105) | function isHttpStatusCode(value: number): value is HttpStatusCode { FILE: packages/admin/src/navigation/NavigationTypes.tsx type NavigationContext (line 20) | interface NavigationContext { type NavItem (line 25) | interface NavItem { type NavSection (line 33) | interface NavSection { FILE: packages/admin/src/pages/AdminApiKeysPage.tsx type AdminApiKeysPageProps (line 49) | interface AdminApiKeysPageProps { function AdminApiKeysPage (line 60) | async function AdminApiKeysPage({ function formatTimestamp (line 354) | function formatTimestamp(timestamp: string): string { FILE: packages/admin/src/pages/ArchivesPage.tsx type ArchivesPageProps (line 41) | interface ArchivesPageProps { function formatTimestampLocal (line 54) | function formatTimestampLocal(timestamp: string): string { function getStatusLabel (line 62) | function getStatusLabel(archive: Archive): string { function ArchivesPage (line 153) | async function ArchivesPage({ FILE: packages/admin/src/pages/AssetPurgePage.tsx type AssetPurgePageProps (line 44) | interface AssetPurgePageProps { function hasPermission (line 54) | function hasPermission(acls: Array, permission: string): boolean { function AssetPurgePage (line 167) | async function AssetPurgePage({ function parseAssetIds (line 206) | function parseAssetIds(input: string): Array { FILE: packages/admin/src/pages/AuditLogsPage.tsx type AuditLog (line 60) | type AuditLog = z.infer; type AuditLogsPageProps (line 62) | interface AuditLogsPageProps { type UserMap (line 75) | interface UserMap { function formatTimestampLocal (line 79) | function formatTimestampLocal(timestamp: string): string { function formatAction (line 90) | function formatAction(action: string): string { function getActionTone (line 94) | function getActionTone(action: string): ColorTone { function capitalise (line 121) | function capitalise(s: string): string { function collectUserIds (line 392) | function collectUserIds(logs: Array): Array { function AuditLogsPage (line 405) | async function AuditLogsPage({ FILE: packages/admin/src/pages/BanManagementPage.tsx type BanType (line 36) | type BanType = 'ip' | 'email' | 'phone'; type BanConfig (line 38) | interface BanConfig { function getBanConfig (line 49) | function getBanConfig(banType: BanType): BanConfig { type BanManagementPageProps (line 87) | interface BanManagementPageProps { FILE: packages/admin/src/pages/BulkActionsPage.tsx type BulkOperationResponseType (line 43) | type BulkOperationResponseType = z.infer; type GuildFeature (line 45) | interface GuildFeature { constant GUILD_FEATURES (line 49) | const GUILD_FEATURES: Array = [ constant DELETION_REASONS (line 71) | const DELETION_REASONS: Array<[number, string]> = [ type BulkActionsPageProps (line 96) | interface BulkActionsPageProps { function hasPermission (line 107) | function hasPermission(acls: Array, permission: string): boolean { constant BULK_DELETION_DAYS_SCRIPT (line 310) | const BULK_DELETION_DAYS_SCRIPT = ` function BulkActionsPage (line 388) | function BulkActionsPage({ FILE: packages/admin/src/pages/DiscoveryPage.tsx type Application (line 49) | type Application = z.infer; type StatusTabProps (line 51) | interface StatusTabProps { function StatusTabs (line 56) | function StatusTabs({currentStatus, basePath}: StatusTabProps) { function getStatusBadgeVariant (line 75) | function getStatusBadgeVariant(status: string): 'success' | 'danger' | '... function getCategoryLabel (line 90) | function getCategoryLabel(categoryId: number): string { function formatDate (line 94) | function formatDate(isoString: string): string { type DiscoveryPageProps (line 105) | interface DiscoveryPageProps { constant PROMPT_REASON_SCRIPT (line 295) | const PROMPT_REASON_SCRIPT = ` FILE: packages/admin/src/pages/GatewayPage.tsx type GatewayPageProps (line 43) | interface GatewayPageProps { function formatNumberLocal (line 54) | function formatNumberLocal(n: number): string { function formatMemory (line 58) | function formatMemory(memoryMb: number): string { function formatMemoryFromBytes (line 70) | function formatMemoryFromBytes(bytesStr: string): string { function getFirstChar (line 76) | function getFirstChar(s: string): string { function getGuildIconUrl (line 81) | function getGuildIconUrl( type ProcessMemoryStats (line 100) | type ProcessMemoryStats = GuildMemoryStatsResponse['guilds'][number]; function GatewayPage (line 238) | async function GatewayPage({ FILE: packages/admin/src/pages/GiftCodesPage.tsx constant MAX_GIFT_CODES (line 42) | const MAX_GIFT_CODES = 100; constant DEFAULT_GIFT_COUNT (line 43) | const DEFAULT_GIFT_COUNT = 10; constant GIFT_PRODUCT_OPTIONS (line 45) | const GIFT_PRODUCT_OPTIONS: Array<{value: string; label: string}> = [ type GiftCodesPageProps (line 51) | interface GiftCodesPageProps { FILE: packages/admin/src/pages/GuildDetailPage.tsx type GuildDetailPageProps (line 53) | interface GuildDetailPageProps { type Tab (line 66) | interface Tab { function canViewArchives (line 72) | function canViewArchives(adminAcls: Array): boolean { function canManageAssets (line 79) | function canManageAssets(adminAcls: Array): boolean { function getStatusText (line 83) | function getStatusText(archive: Archive): string { type RenderTabContentProps (line 248) | interface RenderTabContentProps { function renderTabContent (line 260) | async function renderTabContent({ function GuildDetailPage (line 415) | async function GuildDetailPage({ FILE: packages/admin/src/pages/GuildsPage.tsx type GuildsPageProps (line 44) | interface GuildsPageProps { function GuildsPage (line 132) | async function GuildsPage({ FILE: packages/admin/src/pages/InstanceConfigPage.tsx type LimitConfigResponse (line 61) | type LimitConfigResponse = z.infer; type InstanceConfigPageProps (line 63) | interface InstanceConfigPageProps { function InstanceConfigPage (line 72) | async function InstanceConfigPage({ FILE: packages/admin/src/pages/LimitConfigPage.tsx type LimitConfigResponse (line 46) | type LimitConfigResponse = z.infer; type LimitRule (line 47) | type LimitRule = LimitConfigResponse['limit_config']['rules'][number]; type LimitKeyMetadata (line 48) | type LimitKeyMetadata = LimitConfigResponse['metadata'][string]; constant CATEGORY_ORDER (line 50) | const CATEGORY_ORDER = ['features', 'messages', 'guilds', 'channels', 'e... function orderRulesDefaultFirst (line 52) | function orderRulesDefaultFirst(rules: Array): Array, permission: string): boolean { function createDeletionScript (line 261) | function createDeletionScript(csrfToken: string): string { function MessagesPage (line 307) | async function MessagesPage({ function handleMessagesGet (line 351) | async function handleMessagesGet( FILE: packages/admin/src/pages/ReportDetailPage.tsx type MessageContext (line 41) | interface MessageContext { type ReportDetailPageProps (line 53) | interface ReportDetailPageProps { function formatTimestampLocal (line 63) | function formatTimestampLocal(timestamp: string): string { function formatReportType (line 73) | function formatReportType(reportType: number): string { function buildMessageLookupHref (line 86) | function buildMessageLookupHref(config: Config, channelId: string, messa... function formatReportedUserLabel (line 96) | function formatReportedUserLabel(report: Report): string { function ReportDetailPage (line 436) | function ReportDetailPage({ function ReportDetailFragment (line 485) | function ReportDetailFragment({config, report}: {config: Config; report:... FILE: packages/admin/src/pages/ReportsPage.tsx constant REPORT_CATEGORY_OPTIONS (line 53) | const REPORT_CATEGORY_OPTIONS: Array<{value: string; label: string}> = [ type ReportsPageProps (line 74) | interface ReportsPageProps { function formatReportType (line 283) | function formatReportType(reportType: number): string { function getReportTypeTone (line 296) | function getReportTypeTone(reportType: number): 'info' | 'purple' | 'ora... function formatUserTag (line 309) | function formatUserTag(report: Report): string { function sortReports (line 559) | function sortReports(reports: Array, sort?: string): Array { FILE: packages/admin/src/pages/UserDetailPage.tsx type LimitConfigResponse (line 54) | type LimitConfigResponse = z.infer; type UserDetailPageProps (line 56) | interface UserDetailPageProps { function parseIntOrDefault (line 80) | function parseIntOrDefault(value: string | null | undefined, fallback: n... function parseBoolFlag (line 86) | function parseBoolFlag(value: string | null | undefined, fallback: boole... function parseDryRunSummary (line 94) | function parseDryRunSummary(params: { function isNonEmptyString (line 106) | function isNonEmptyString(value: string | null | undefined): value is st... FILE: packages/admin/src/pages/UsersPage.tsx type UsersPageProps (line 52) | interface UsersPageProps { FILE: packages/admin/src/pages/VisionarySlotsPage.tsx constant MAX_EXPAND_COUNT (line 48) | const MAX_EXPAND_COUNT = 1000; constant DEFAULT_EXPAND_COUNT (line 49) | const DEFAULT_EXPAND_COUNT = 10; type VisionarySlot (line 51) | interface VisionarySlot { type VisionarySlotsPageProps (line 56) | interface VisionarySlotsPageProps { FILE: packages/admin/src/pages/VoiceRegionsPage.tsx type VoiceRegionsPageProps (line 56) | interface VoiceRegionsPageProps { function VoiceRegionsPage (line 290) | async function VoiceRegionsPage({ FILE: packages/admin/src/pages/VoiceServersPage.tsx type VoiceServersPageProps (line 53) | interface VoiceServersPageProps { function VoiceServersPage (line 268) | async function VoiceServersPage({ FILE: packages/admin/src/pages/guild_detail/Forms.tsx type RenderFeaturesFormProps (line 34) | interface RenderFeaturesFormProps { function RenderFeaturesForm (line 42) | function RenderFeaturesForm({config, currentFeatures, guildId, csrfToken... type RenderDisabledOperationsFormProps (line 92) | interface RenderDisabledOperationsFormProps { FILE: packages/admin/src/pages/guild_detail/tabs/EmojisTab.tsx type EmojisTabProps (line 40) | interface EmojisTabProps { function EmojisTab (line 131) | async function EmojisTab({config, session, guildId, adminAcls, csrfToken... FILE: packages/admin/src/pages/guild_detail/tabs/FeaturesTab.tsx type FeaturesTabProps (line 34) | interface FeaturesTabProps { function FeaturesTab (line 42) | function FeaturesTab({config, guild, guildId, adminAcls, csrfToken}: Fea... FILE: packages/admin/src/pages/guild_detail/tabs/MembersTab.tsx type MembersTabProps (line 45) | interface MembersTabProps { function formatDate (line 55) | function formatDate(isoDate: string): string { function extractTimestamp (line 60) | function extractTimestamp(snowflakeId: string): string | null { function MembersTab (line 293) | async function MembersTab({ FILE: packages/admin/src/pages/guild_detail/tabs/ModerationTab.tsx type ModerationTabProps (line 35) | interface ModerationTabProps { function ModerationTab (line 43) | function ModerationTab({config, guild: _guild, guildId, adminAcls, csrfT... FILE: packages/admin/src/pages/guild_detail/tabs/OverviewTab.tsx function getCurrentSnowflake (line 43) | function getCurrentSnowflake(): string { function channelTypeToString (line 50) | function channelTypeToString(type: number): string { function intToHex (line 63) | function intToHex(i: number): string { function byteToHex (line 71) | function byteToHex(byte: number): string { type OverviewTabProps (line 78) | interface OverviewTabProps { function OverviewTab (line 182) | function OverviewTab({config, guild, csrfToken}: OverviewTabProps) { FILE: packages/admin/src/pages/guild_detail/tabs/SettingsTab.tsx type SettingsTabProps (line 39) | interface SettingsTabProps { function verificationLevelToString (line 47) | function verificationLevelToString(level: number): string { function mfaLevelToString (line 64) | function mfaLevelToString(level: number): string { function nsfwLevelToString (line 75) | function nsfwLevelToString(level: number): string { function contentFilterToString (line 90) | function contentFilterToString(level: number): string { function notificationLevelToString (line 103) | function notificationLevelToString(level: number): string { function SettingsTab (line 114) | function SettingsTab({config, guild, guildId, adminAcls, csrfToken}: Set... FILE: packages/admin/src/pages/guild_detail/tabs/StickersTab.tsx type StickersTabProps (line 41) | interface StickersTabProps { function stickerAnimatedLabel (line 49) | function stickerAnimatedLabel(animated: boolean): string { function StickersTab (line 136) | async function StickersTab({config, session, guildId, adminAcls, csrfTok... FILE: packages/admin/src/pages/user_detail/Forms.tsx function FlagsForm (line 43) | function FlagsForm({ function SuspiciousFlagsForm (line 72) | function SuspiciousFlagsForm({currentFlags, csrfToken}: {currentFlags: n... function AclsForm (line 91) | function AclsForm({ function TraitsForm (line 140) | function TraitsForm({ FILE: packages/admin/src/pages/user_detail/tabs/AccountTab.tsx type AccountTabProps (line 45) | interface AccountTabProps { function AccountTab (line 54) | function AccountTab({ function formatTimestamp (line 316) | function formatTimestamp(value: string): string { function formatSessionTimestamp (line 358) | function formatSessionTimestamp(value: string): string { FILE: packages/admin/src/pages/user_detail/tabs/DmHistoryTab.tsx type DmHistoryTabProps (line 33) | interface DmHistoryTabProps { function DmHistoryTab (line 42) | function DmHistoryTab({config, userId, dmChannelsResult, before, after, ... type DmHistoryPaginationProps (line 172) | interface DmHistoryPaginationProps { function buildPaginationPath (line 218) | function buildPaginationPath( function buildMessageLookupHref (line 235) | function buildMessageLookupHref(config: Config, channelId: string): stri... function formatChannelType (line 242) | function formatChannelType(channelType: number | null): string { FILE: packages/admin/src/pages/user_detail/tabs/GuildsTab.tsx type GuildsTabProps (line 35) | interface GuildsTabProps { function GuildsTab (line 46) | function GuildsTab({ type GuildsPaginationProps (line 153) | interface GuildsPaginationProps { function buildGuildsPaginationPath (line 203) | function buildGuildsPaginationPath( function buildGuildsPaginationQuery (line 214) | function buildGuildsPaginationQuery( function boolToFlag (line 233) | function boolToFlag(value: boolean): string { FILE: packages/admin/src/pages/user_detail/tabs/ModerationTab.tsx type ModerationTabProps (line 42) | interface ModerationTabProps { function ModerationTab (line 53) | function ModerationTab({ constant DELETION_DAYS_SCRIPT (line 215) | const DELETION_DAYS_SCRIPT = ` type DeleteAllMessagesSectionProps (line 250) | interface DeleteAllMessagesSectionProps { type MessageShredSectionProps (line 307) | interface MessageShredSectionProps { type MessageShredStatusSectionProps (line 364) | interface MessageShredStatusSectionProps { function formatMessageShredStatusLabel (line 461) | function formatMessageShredStatusLabel(status: string): string { function formatTimestampLocal (line 476) | function formatTimestampLocal(timestamp: string): string { constant MESSAGE_SHRED_FORM_SCRIPT (line 488) | const MESSAGE_SHRED_FORM_SCRIPT = ` FILE: packages/admin/src/pages/user_detail/tabs/OverviewTab.tsx type LimitConfigResponse (line 42) | type LimitConfigResponse = z.infer; type OverviewTabProps (line 44) | interface OverviewTabProps { function buildUserSearchHref (line 53) | function buildUserSearchHref(config: Config, value: string): string { function OverviewTab (line 57) | function OverviewTab({ type TraitsCardProps (line 337) | interface TraitsCardProps { function parseTraitDefinitions (line 410) | function parseTraitDefinitions( type ChangeLogCardProps (line 421) | interface ChangeLogCardProps { function labelForField (line 472) | function labelForField(field: string): string { function oldNewText (line 485) | function oldNewText(old_value: string | null, new_value: string | null):... function formatError (line 491) | function formatError(err: ApiError | undefined | null): string { FILE: packages/admin/src/routes/Admin.tsx function createAdminRoutes (line 33) | function createAdminRoutes({config, assetVersion, requireAuth}: RouteFac... FILE: packages/admin/src/routes/Auth.tsx function createAuthRoutes (line 33) | function createAuthRoutes({config}: RouteFactoryDeps) { FILE: packages/admin/src/routes/Bans.tsx function handleBanAction (line 35) | async function handleBanAction( function createBansRoutes (line 119) | function createBansRoutes({config, assetVersion, requireAuth}: RouteFact... FILE: packages/admin/src/routes/Codes.tsx function createCodesRoutes (line 33) | function createCodesRoutes({config, assetVersion, requireAuth}: RouteFac... FILE: packages/admin/src/routes/Discovery.tsx function createDiscoveryRoutes (line 37) | function createDiscoveryRoutes({config, assetVersion, requireAuth}: Rout... FILE: packages/admin/src/routes/Guilds.tsx function createGuildsRoutes (line 51) | function createGuildsRoutes({config, assetVersion, requireAuth}: RouteFa... FILE: packages/admin/src/routes/Messages.tsx function resolveArchiveSubjectType (line 42) | function resolveArchiveSubjectType( function createMessagesRoutes (line 68) | function createMessagesRoutes({config, assetVersion, requireAuth}: Route... FILE: packages/admin/src/routes/Reports.tsx function createReportsRoutes (line 35) | function createReportsRoutes({config, assetVersion, requireAuth}: RouteF... FILE: packages/admin/src/routes/RouteContext.tsx type RouteContext (line 26) | interface RouteContext { function getRouteContext (line 34) | function getRouteContext(c: AppContext): RouteContext { FILE: packages/admin/src/routes/RouteTypes.tsx type RequireAuthMiddleware (line 24) | type RequireAuthMiddleware = (c: AppContext, next: Next) => Promise Hono<{Variables: AppVari... FILE: packages/admin/src/routes/System.tsx function trimToUndefined (line 56) | function trimToUndefined(value: string | undefined): string | undefined { function trimToNull (line 62) | function trimToNull(value: string | undefined): string | null { function parseBooleanFlag (line 66) | function parseBooleanFlag(value: string | undefined): boolean { function parseHourValue (line 70) | function parseHourValue(value: string | undefined): number | null { function buildLimitFilters (line 76) | function buildLimitFilters(formData: ParsedBody): {filters?: {traits?: A... function redirectInvalidForm (line 89) | function redirectInvalidForm(c: AppContext, redirectUrl: string): Respon... function createSystemRoutes (line 93) | function createSystemRoutes({config, assetVersion, requireAuth}: RouteFa... FILE: packages/admin/src/routes/Users.tsx function parseCsvEntries (line 37) | function parseCsvEntries( function createUsersRoutes (line 83) | function createUsersRoutes({config, assetVersion, requireAuth}: RouteFac... FILE: packages/admin/src/routes/VisionarySlots.tsx function createVisionarySlotsRoutes (line 39) | function createVisionarySlotsRoutes({config, assetVersion, requireAuth}:... FILE: packages/admin/src/routes/Voice.tsx function createVoiceRoutes (line 45) | function createVoiceRoutes({config, assetVersion, requireAuth}: RouteFac... FILE: packages/admin/src/types/App.tsx type Session (line 28) | interface Session { type AppVariables (line 34) | interface AppVariables { type AppContext (line 43) | type AppContext = HonoContext<{Variables: AppVariables}>; FILE: packages/admin/src/types/Config.tsx type AdminConfig (line 49) | type AdminConfig = z.infer; FILE: packages/admin/src/utils/Bigint.tsx function tryParseBigInt (line 23) | function tryParseBigInt(value: string | null | undefined): bigint | null { function parseBigIntOrZero (line 32) | function parseBigIntOrZero(value: string | null | undefined): bigint { function hasBigIntFlag (line 36) | function hasBigIntFlag(flags: bigint, flag: bigint): boolean { FILE: packages/admin/src/utils/ClassNames.tsx function cn (line 25) | function cn(...inputs: Array): stri... FILE: packages/admin/src/utils/Forms.tsx type BodyPrimitive (line 25) | type BodyPrimitive = string | File; type BodyValue (line 26) | type BodyValue = BodyPrimitive | Array; type ParsedBody (line 27) | type ParsedBody = Record; function getOptionalString (line 31) | function getOptionalString(body: ParsedBody, key: string): string | unde... function getRequiredString (line 41) | function getRequiredString(body: ParsedBody, key: string): string | null { function getStringArray (line 47) | function getStringArray(body: ParsedBody, key: string): Array { function parseDelimitedStringList (line 54) | function parseDelimitedStringList(value: string | undefined): Array = T & {readonly [__brand]: TBrand}; type BrandedValue (line 23) | interface BrandedValue { type UserID (line 34) | type UserID = Brand; type GuildID (line 35) | type GuildID = Brand; type ChannelID (line 36) | type ChannelID = Brand; type MessageID (line 37) | type MessageID = Brand; type RoleID (line 38) | type RoleID = Brand; type EmojiID (line 39) | type EmojiID = Brand; type WebhookID (line 40) | type WebhookID = Brand; type AttachmentID (line 41) | type AttachmentID = Brand; type StickerID (line 42) | type StickerID = Brand; type ReportID (line 43) | type ReportID = Brand; type MemeID (line 44) | type MemeID = Brand; type ApplicationID (line 45) | type ApplicationID = Brand; type InviteCode (line 47) | type InviteCode = Brand; type VanityURLCode (line 48) | type VanityURLCode = Brand; type EmailVerificationToken (line 49) | type EmailVerificationToken = Brand; type PasswordResetToken (line 50) | type PasswordResetToken = Brand; type EmailRevertToken (line 51) | type EmailRevertToken = Brand; type IpAuthorizationToken (line 52) | type IpAuthorizationToken = Brand; type IpAuthorizationTicket (line 53) | type IpAuthorizationTicket = Brand; type MfaTicket (line 54) | type MfaTicket = Brand; type WebhookToken (line 55) | type WebhookToken = Brand; type MfaBackupCode (line 56) | type MfaBackupCode = Brand; type PhoneVerificationToken (line 57) | type PhoneVerificationToken = Brand; function createUserID (line 59) | function createUserID(id: T extends BrandedValue ? nev... function createGuildID (line 62) | function createGuildID(id: T extends BrandedValue ? ne... function createChannelID (line 65) | function createChannelID(id: T extends BrandedValue ? ... function createMessageID (line 68) | function createMessageID(id: T extends BrandedValue ? ... function createRoleID (line 71) | function createRoleID(id: T extends BrandedValue ? nev... function createEmojiID (line 74) | function createEmojiID(id: T extends BrandedValue ? ne... function createWebhookID (line 77) | function createWebhookID(id: T extends BrandedValue ? ... function createAttachmentID (line 80) | function createAttachmentID(id: T extends BrandedValue... function createStickerID (line 83) | function createStickerID(id: T extends BrandedValue ? ... function createReportID (line 86) | function createReportID(id: T extends BrandedValue ? n... function createMemeID (line 89) | function createMemeID(id: T extends BrandedValue ? nev... function createApplicationID (line 92) | function createApplicationID(id: T extends BrandedValu... function createInviteCode (line 96) | function createInviteCode(code: T extends BrandedValue... function createVanityURLCode (line 99) | function createVanityURLCode(code: T extends BrandedVa... function createEmailVerificationToken (line 102) | function createEmailVerificationToken( function createPasswordResetToken (line 107) | function createPasswordResetToken( function createEmailRevertToken (line 112) | function createEmailRevertToken(token: T extends Brand... function createIpAuthorizationToken (line 115) | function createIpAuthorizationToken( function createIpAuthorizationTicket (line 120) | function createIpAuthorizationTicket( function createMfaTicket (line 125) | function createMfaTicket(ticket: T extends BrandedValu... function createWebhookToken (line 128) | function createWebhookToken(token: T extends BrandedVa... function createMfaBackupCode (line 131) | function createMfaBackupCode(code: T extends BrandedVa... function createPhoneVerificationToken (line 134) | function createPhoneVerificationToken( function createUserIDSet (line 140) | function createUserIDSet(ids: Set): Set { function createGuildIDSet (line 143) | function createGuildIDSet(ids: Set): Set { function createRoleIDSet (line 146) | function createRoleIDSet(ids: Set): Set { function guildIdToRoleId (line 149) | function guildIdToRoleId(guildId: GuildID): RoleID { function channelIdToUserId (line 152) | function channelIdToUserId(channelId: ChannelID): UserID { function userIdToChannelId (line 155) | function userIdToChannelId(userId: UserID): ChannelID { function vanityCodeToInviteCode (line 158) | function vanityCodeToInviteCode(vanityCode: VanityURLCode): InviteCode { function channelIdToMessageId (line 161) | function channelIdToMessageId(channelId: ChannelID): MessageID { function applicationIdToUserId (line 164) | function applicationIdToUserId(applicationId: ApplicationID): UserID { FILE: packages/api/src/Config.tsx function extractHostname (line 23) | function extractHostname(url: string): string { type CsamIntegrationRaw (line 31) | interface CsamIntegrationRaw { type CsamIntegrationInput (line 52) | interface CsamIntegrationInput { function buildCsamIntegrationConfig (line 57) | function buildCsamIntegrationConfig(integrations: CsamIntegrationInput): { function buildAPIConfigFromMaster (line 102) | function buildAPIConfigFromMaster(master: MasterConfig): APIConfig { function initializeConfig (line 410) | function initializeConfig(config: APIConfig): void { function getConfig (line 417) | function getConfig(): APIConfig { function resetConfig (line 424) | function resetConfig(): void { method get (line 429) | get(_target, prop: keyof APIConfig | symbol) { method set (line 435) | set() { FILE: packages/api/src/ILogger.tsx type ILogger (line 20) | interface ILogger { FILE: packages/api/src/Logger.tsx function initializeLogger (line 24) | function initializeLogger(logger: ILogger): void { function getLogger (line 31) | function getLogger(): ILogger { function resetLogger (line 38) | function resetLogger(): void { method get (line 43) | get(_target, prop: keyof ILogger | symbol) { method set (line 53) | set() { FILE: packages/api/src/SearchFactory.tsx function createSearchProvider (line 37) | function createSearchProvider(): ISearchProvider { function getSearchProvider (line 79) | function getSearchProvider(): ISearchProvider | null { function setInjectedSearchProvider (line 83) | function setInjectedSearchProvider(provider: ISearchProvider | undefined... function getMessageSearchService (line 87) | function getMessageSearchService(): IMessageSearchService | null { function getGuildSearchService (line 91) | function getGuildSearchService(): IGuildSearchService | null { function getUserSearchService (line 95) | function getUserSearchService(): IUserSearchService | null { function getReportSearchService (line 99) | function getReportSearchService(): IReportSearchService | null { function getAuditLogSearchService (line 103) | function getAuditLogSearchService(): IAuditLogSearchService | null { function getGuildMemberSearchService (line 107) | function getGuildMemberSearchService(): IGuildMemberSearchService | null { function initializeSearch (line 111) | async function initializeSearch(): Promise { function shutdownSearch (line 140) | async function shutdownSearch(): Promise { function resetSearchServices (line 147) | function resetSearchServices(): void { FILE: packages/api/src/Tables.tsx type PinnedDmRow (line 486) | interface PinnedDmRow { constant PINNED_DM_COLUMNS (line 492) | const PINNED_DM_COLUMNS = ['user_id', 'channel_id', 'sort_order'] as con... type ReadStateRow (line 500) | interface ReadStateRow { constant READ_STATE_COLUMNS (line 505) | const READ_STATE_COLUMNS = ['user_id', 'channel_id'] as const satisfies ... type RecentMentionsByGuildRow (line 554) | interface RecentMentionsByGuildRow { constant RECENT_MENTIONS_BY_GUILD_COLUMNS (line 563) | const RECENT_MENTIONS_BY_GUILD_COLUMNS = [ type AttachmentDecayByExpiryRow (line 815) | interface AttachmentDecayByExpiryRow { constant ATTACHMENT_DECAY_BY_EXPIRY_COLUMNS (line 823) | const ATTACHMENT_DECAY_BY_EXPIRY_COLUMNS = [ type FavoriteMemesByMemeIdRow (line 846) | interface FavoriteMemesByMemeIdRow { constant FAVORITE_MEMES_BY_MEME_ID_COLUMNS (line 851) | const FAVORITE_MEMES_BY_MEME_ID_COLUMNS = ['meme_id', 'user_id'] as cons... constant PACK_INSTALLATION_COLUMNS (line 880) | const PACK_INSTALLATION_COLUMNS = ['user_id', 'pack_id', 'pack_type', 'i... type InvitesByChannelRow (line 890) | interface InvitesByChannelRow { type InvitesByGuildRow (line 895) | interface InvitesByGuildRow { constant INVITES_BY_CHANNEL_COLUMNS (line 900) | const INVITES_BY_CHANNEL_COLUMNS = ['channel_id', 'code'] as const satis... constant INVITES_BY_GUILD_COLUMNS (line 902) | const INVITES_BY_GUILD_COLUMNS = ['guild_id', 'code'] as const satisfies... constant APPLICATIONS_BY_OWNER_COLUMNS (line 922) | const APPLICATIONS_BY_OWNER_COLUMNS = ['owner_user_id', 'application_id'... constant OAUTH2_ACCESS_TOKENS_BY_USER_COLUMNS (line 938) | const OAUTH2_ACCESS_TOKENS_BY_USER_COLUMNS = ['user_id', 'token_'] as co... constant OAUTH2_REFRESH_TOKENS_BY_USER_COLUMNS (line 942) | const OAUTH2_REFRESH_TOKENS_BY_USER_COLUMNS = ['user_id', 'token_'] as c... type WebhooksByChannelRow (line 976) | interface WebhooksByChannelRow { type WebhooksByGuildRow (line 981) | interface WebhooksByGuildRow { constant WEBHOOKS_BY_CHANNEL_COLUMNS (line 986) | const WEBHOOKS_BY_CHANNEL_COLUMNS = ['channel_id', 'webhook_id'] as cons... constant WEBHOOKS_BY_GUILD_COLUMNS (line 990) | const WEBHOOKS_BY_GUILD_COLUMNS = ['guild_id', 'webhook_id'] as const sa... FILE: packages/api/src/Telemetry.tsx type OtlpConfig (line 20) | interface OtlpConfig { type CounterMetric (line 29) | interface CounterMetric { type HistogramMetric (line 35) | interface HistogramMetric { type GaugeMetric (line 41) | interface GaugeMetric { type TelemetryService (line 47) | interface TelemetryService { function initializeTelemetryService (line 61) | function initializeTelemetryService(service: TelemetryService): void { function resetTelemetryService (line 68) | function resetTelemetryService(): void { function getTelemetryService (line 84) | function getTelemetryService(): TelemetryService { function isTelemetryActive (line 88) | function isTelemetryActive(): boolean { function isTelemetryEnabled (line 92) | function isTelemetryEnabled(): boolean { function shouldInitializeTelemetry (line 96) | function shouldInitializeTelemetry(): boolean { function recordCounter (line 100) | function recordCounter(metric: CounterMetric): void { function recordHistogram (line 104) | function recordHistogram(metric: HistogramMetric): void { function recordGauge (line 108) | function recordGauge(metric: GaugeMetric): void { function getOtlpConfig (line 112) | function getOtlpConfig(): OtlpConfig | null { function initializeTelemetry (line 116) | function initializeTelemetry(options: { function shutdownTelemetry (line 124) | async function shutdownTelemetry(): Promise { FILE: packages/api/src/Validator.tsx function isEmptyObject (line 35) | function isEmptyObject(obj: object): boolean { function isValidationErrorCode (line 41) | function isValidationErrorCode(value: string): value is ValidationErrorC... function getValidationErrorCode (line 45) | function getValidationErrorCode(message: string): ValidationErrorCode { type ZodTooSmallIssue (line 52) | interface ZodTooSmallIssue { type ZodTooBigIssue (line 58) | interface ZodTooBigIssue { function isTooSmallIssue (line 64) | function isTooSmallIssue(issue: ZodError['issues'][number]): issue is Zo... function isTooBigIssue (line 68) | function isTooBigIssue(issue: ZodError['issues'][number]): issue is ZodE... type ZodInvalidTypeIssue (line 72) | interface ZodInvalidTypeIssue { type ZodCustomIssue (line 78) | interface ZodCustomIssue { function isInvalidTypeIssue (line 83) | function isInvalidTypeIssue( function isCustomIssue (line 89) | function isCustomIssue(issue: ZodError['issues'][number]): issue is ZodE... function extractVariablesFromIssue (line 93) | function extractVariablesFromIssue(issue: ZodError['issues'][number]): R... function convertEmptyValuesToNull (line 116) | function convertEmptyValuesToNull(obj: unknown, isRoot = true): unknown { type HasUndefined (line 134) | type HasUndefined = undefined extends T ? true : false; type SafeParseResult (line 135) | type SafeParseResult = type Hook (line 139) | type Hook< type PreHook (line 151) | type PreHook; FILE: packages/api/src/ZodErrorMap.tsx function isValidationErrorCode (line 26) | function isValidationErrorCode(value: string): value is ValidationErrorC... function getParamsProperty (line 30) | function getParamsProperty(obj: object): Record | undef... function fluxerZodErrorMap (line 38) | function fluxerZodErrorMap( function initializeFluxerErrorMap (line 132) | function initializeFluxerErrorMap(): void { FILE: packages/api/src/admin/AdminRepository.tsx constant FETCH_AUDIT_LOG_BY_ID_QUERY (line 26) | const FETCH_AUDIT_LOG_BY_ID_QUERY = AdminAuditLogs.select({ constant FETCH_AUDIT_LOGS_BY_IDS_QUERY (line 30) | const FETCH_AUDIT_LOGS_BY_IDS_QUERY = AdminAuditLogs.select({ constant IS_IP_BANNED_QUERY (line 34) | const IS_IP_BANNED_QUERY = BannedIps.select({ constant LOAD_ALL_BANNED_IPS_QUERY (line 38) | const LOAD_ALL_BANNED_IPS_QUERY = BannedIps.select(); constant IS_EMAIL_BANNED_QUERY (line 41) | const IS_EMAIL_BANNED_QUERY = BannedEmails.select({ constant IS_PHONE_BANNED_QUERY (line 47) | const IS_PHONE_BANNED_QUERY = BannedPhones.select({ class AdminRepository (line 64) | class AdminRepository implements IAdminRepository { method createAuditLog (line 65) | async createAuditLog(log: AdminAuditLogRow): Promise { method getAuditLog (line 70) | async getAuditLog(logId: bigint): Promise { method listAuditLogsByIds (line 75) | async listAuditLogsByIds(logIds: Array): Promise { method banIp (line 103) | async banIp(ip: string): Promise { method unbanIp (line 107) | async unbanIp(ip: string): Promise { method listBannedIps (line 111) | async listBannedIps(limit?: number): Promise> { method loadAllBannedIps (line 116) | async loadAllBannedIps(): Promise> { method isEmailBanned (line 121) | async isEmailBanned(email: string): Promise { method banEmail (line 127) | async banEmail(email: string): Promise { method unbanEmail (line 132) | async unbanEmail(email: string): Promise { method listBannedEmails (line 137) | async listBannedEmails(limit?: number): Promise> { method isPhoneBanned (line 142) | async isPhoneBanned(phone: string): Promise { method banPhone (line 147) | async banPhone(phone: string): Promise { method unbanPhone (line 151) | async unbanPhone(phone: string): Promise { method listBannedPhones (line 155) | async listBannedPhones(limit?: number): Promise> { method mapRowToAuditLog (line 160) | private mapRowToAuditLog(row: AdminAuditLogRow): AdminAuditLog { FILE: packages/api/src/admin/AdminService.tsx type ForceAddUserToGuildParams (line 135) | interface ForceAddUserToGuildParams { type LookupAttachmentParams (line 140) | interface LookupAttachmentParams { class AdminService (line 146) | class AdminService { method constructor (line 162) | constructor( method lookupUser (line 281) | async lookupUser(data: LookupUserRequest) { method listSnowflakeReservations (line 285) | async listSnowflakeReservations() { method setSnowflakeReservation (line 289) | async setSnowflakeReservation( method deleteSnowflakeReservation (line 297) | async deleteSnowflakeReservation(data: {email: string}, adminUserId: U... method expandVisionarySlots (line 301) | async expandVisionarySlots(data: {count: number}, adminUserId: UserID,... method shrinkVisionarySlots (line 305) | async shrinkVisionarySlots(data: {targetCount: number}, adminUserId: U... method setVisionarySlotReservation (line 309) | async setVisionarySlotReservation( method swapVisionarySlots (line 317) | async swapVisionarySlots( method createSystemDmJob (line 325) | async createSystemDmJob( method listSystemDmJobs (line 338) | async listSystemDmJobs( method approveSystemDmJob (line 345) | async approveSystemDmJob( method updateUserFlags (line 353) | async updateUserFlags(args: { method disableMfa (line 362) | async disableMfa(data: DisableMfaRequest, adminUserId: UserID, auditLo... method clearUserFields (line 366) | async clearUserFields(data: ClearUserFieldsRequest, adminUserId: UserI... method setUserBotStatus (line 370) | async setUserBotStatus(data: SetUserBotStatusRequest, adminUserId: Use... method setUserSystemStatus (line 374) | async setUserSystemStatus(data: SetUserSystemStatusRequest, adminUserI... method verifyUserEmail (line 378) | async verifyUserEmail(data: VerifyUserEmailRequest, adminUserId: UserI... method resendVerificationEmail (line 382) | async resendVerificationEmail( method sendPasswordReset (line 390) | async sendPasswordReset(data: SendPasswordResetRequest, adminUserId: U... method changeUsername (line 394) | async changeUsername(data: ChangeUsernameRequest, adminUserId: UserID,... method changeEmail (line 398) | async changeEmail(data: ChangeEmailRequest, adminUserId: UserID, audit... method terminateSessions (line 402) | async terminateSessions(data: TerminateSessionsRequest, adminUserId: U... method tempBanUser (line 406) | async tempBanUser(data: TempBanUserRequest, adminUserId: UserID, audit... method unbanUser (line 410) | async unbanUser(data: {user_id: bigint}, adminUserId: UserID, auditLog... method scheduleAccountDeletion (line 414) | async scheduleAccountDeletion( method cancelAccountDeletion (line 436) | async cancelAccountDeletion(data: {user_id: bigint}, adminUserId: User... method cancelBulkMessageDeletion (line 440) | async cancelBulkMessageDeletion( method banIp (line 448) | async banIp(data: {ip: string}, adminUserId: UserID, auditLogReason: s... method unbanIp (line 459) | async unbanIp(data: {ip: string}, adminUserId: UserID, auditLogReason:... method checkIpBan (line 470) | async checkIpBan(data: {ip: string}) { method listIpBans (line 474) | async listIpBans(data: {limit: number}) { method banEmail (line 478) | async banEmail(data: {email: string}, adminUserId: UserID, auditLogRea... method unbanEmail (line 489) | async unbanEmail(data: {email: string}, adminUserId: UserID, auditLogR... method checkEmailBan (line 500) | async checkEmailBan(data: {email: string}) { method listEmailBans (line 504) | async listEmailBans(data: {limit: number}) { method banPhone (line 508) | async banPhone(data: {phone: string}, adminUserId: UserID, auditLogRea... method unbanPhone (line 519) | async unbanPhone(data: {phone: string}, adminUserId: UserID, auditLogR... method checkPhoneBan (line 530) | async checkPhoneBan(data: {phone: string}) { method listPhoneBans (line 534) | async listPhoneBans(data: {limit: number}) { method setUserAcls (line 538) | async setUserAcls(data: SetUserAclsRequest, adminUserId: UserID, audit... method setUserTraits (line 542) | async setUserTraits(data: SetUserTraitsRequest, adminUserId: UserID, a... method unlinkPhone (line 546) | async unlinkPhone(data: UnlinkPhoneRequest, adminUserId: UserID, audit... method changeDob (line 550) | async changeDob(data: ChangeDobRequest, adminUserId: UserID, auditLogR... method updateSuspiciousActivityFlags (line 554) | async updateSuspiciousActivityFlags( method disableForSuspiciousActivity (line 562) | async disableForSuspiciousActivity( method bulkUpdateUserFlags (line 570) | async bulkUpdateUserFlags(data: BulkUpdateUserFlagsRequest, adminUserI... method bulkScheduleUserDeletion (line 574) | async bulkScheduleUserDeletion( method listUserSessions (line 582) | async listUserSessions(userId: bigint, adminUserId: UserID, auditLogRe... method listWebAuthnCredentials (line 586) | async listWebAuthnCredentials( method deleteWebAuthnCredential (line 594) | async deleteWebAuthnCredential( method listUserDmChannels (line 602) | async listUserDmChannels(data: ListUserDmChannelsRequest) { method listUserChangeLog (line 606) | async listUserChangeLog(data: ListUserChangeLogRequest) { method updateGuildFeatures (line 610) | async updateGuildFeatures(args: { method forceAddUserToGuild (line 620) | async forceAddUserToGuild({ method lookupGuild (line 629) | async lookupGuild(data: LookupGuildRequest) { method listUserGuilds (line 633) | async listUserGuilds(data: ListUserGuildsRequest) { method listGuildMembers (line 637) | async listGuildMembers(data: ListGuildMembersRequest) { method banGuildMember (line 641) | async banGuildMember(data: BanGuildMemberRequest, adminUserId: UserID,... method kickGuildMember (line 645) | async kickGuildMember(data: KickGuildMemberRequest, adminUserId: UserI... method listGuildEmojis (line 649) | async listGuildEmojis(guildId: GuildID): Promise) { method getNodeStats (line 725) | async getNodeStats() { method lookupAttachment (line 729) | async lookupAttachment(params: LookupAttachmentParams) { method lookupMessage (line 733) | async lookupMessage(data: LookupMessageRequest) { method lookupMessageByAttachment (line 737) | async lookupMessageByAttachment(data: LookupMessageByAttachmentRequest) { method deleteMessage (line 741) | async deleteMessage(data: DeleteMessageRequest, adminUserId: UserID, a... method deleteAllUserMessages (line 745) | async deleteAllUserMessages(data: DeleteAllUserMessagesRequest, adminU... method queueMessageShred (line 749) | async queueMessageShred(data: MessageShredRequest, adminUserId: UserID... method getMessageShredStatus (line 753) | async getMessageShredStatus(jobId: string) { method listAuditLogs (line 757) | async listAuditLogs(data: ListAuditLogsRequest) { method searchAuditLogs (line 761) | async searchAuditLogs(data: { method listReports (line 773) | async listReports(status: number, limit?: number, offset?: number) { method getReport (line 777) | async getReport(reportId: ReportID) { method resolveReport (line 781) | async resolveReport( method searchReports (line 790) | async searchReports(data: SearchReportsRequest) { method searchGuilds (line 794) | async searchGuilds(data: {query?: string; limit: number; offset: numbe... method searchUsers (line 798) | async searchUsers(data: {query?: string; limit: number; offset: number... method refreshSearchIndex (line 802) | async refreshSearchIndex( method getIndexRefreshStatus (line 822) | async getIndexRefreshStatus(jobId: string) { method listVoiceRegions (line 826) | async listVoiceRegions(data: ListVoiceRegionsRequest, _adminUserId: Us... method getVoiceRegion (line 830) | async getVoiceRegion(data: GetVoiceRegionRequest, _adminUserId: UserID... method createVoiceRegion (line 834) | async createVoiceRegion(data: CreateVoiceRegionRequest, adminUserId: U... method updateVoiceRegion (line 838) | async updateVoiceRegion(data: UpdateVoiceRegionRequest, adminUserId: U... method deleteVoiceRegion (line 842) | async deleteVoiceRegion(data: DeleteVoiceRegionRequest, adminUserId: U... method listVoiceServers (line 846) | async listVoiceServers(data: ListVoiceServersRequest, _adminUserId: Us... method getVoiceServer (line 850) | async getVoiceServer(data: GetVoiceServerRequest, _adminUserId: UserID... method createVoiceServer (line 854) | async createVoiceServer(data: CreateVoiceServerRequest, adminUserId: U... method updateVoiceServer (line 858) | async updateVoiceServer(data: UpdateVoiceServerRequest, adminUserId: U... method deleteVoiceServer (line 862) | async deleteVoiceServer(data: DeleteVoiceServerRequest, adminUserId: U... method generateGiftCodes (line 866) | async generateGiftCodes(count: number, durationMonths: number) { FILE: packages/api/src/admin/IAdminRepository.tsx type AdminAuditLog (line 23) | interface AdminAuditLog { FILE: packages/api/src/admin/controllers/AdminApiKeyAdminController.tsx function AdminApiKeyAdminController (line 38) | function AdminApiKeyAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/ArchiveAdminController.tsx function canViewArchive (line 40) | function canViewArchive(adminAcls: Set, subjectType: 'user' | 'g... function ArchiveAdminController (line 46) | function ArchiveAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/AssetAdminController.tsx function AssetAdminController (line 29) | function AssetAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/AuditLogAdminController.tsx function AuditLogAdminController (line 33) | function AuditLogAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/BanAdminController.tsx function BanAdminController (line 38) | function BanAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/BulkAdminController.tsx function BulkAdminController (line 37) | function BulkAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/ChildSafetyAdminController.tsx function ChildSafetyAdminController (line 39) | function ChildSafetyAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/CodesAdminController.tsx function trimTrailingSlash (line 36) | function trimTrailingSlash(value: string): string { function CodesAdminController (line 45) | function CodesAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/DiscoveryAdminController.tsx function mapDiscoveryRowToResponse (line 39) | function mapDiscoveryRowToResponse(row: GuildDiscoveryRow) { function DiscoveryAdminController (line 51) | function DiscoveryAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/GatewayAdminController.tsx function GatewayAdminController (line 36) | function GatewayAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/GuildAdminController.tsx function GuildAdminController (line 55) | function GuildAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/InstanceConfigAdminController.tsx function InstanceConfigAdminController (line 33) | function InstanceConfigAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/LimitConfigAdminController.tsx function formatConfig (line 39) | function formatConfig(config: LimitConfigSnapshot) { function trackModifiedFields (line 57) | function trackModifiedFields(config: LimitConfigSnapshot): LimitConfigSn... function buildRulesMap (line 69) | function buildRulesMap(rules: Array): Map { function trackRuleModifiedFields (line 77) | function trackRuleModifiedFields( function findModifiedLimits (line 99) | function findModifiedLimits( function LimitConfigAdminController (line 117) | function LimitConfigAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/MessageAdminController.tsx function MessageAdminController (line 43) | function MessageAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/ReportAdminController.tsx function ReportAdminController (line 39) | function ReportAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/SearchAdminController.tsx function SearchAdminController (line 38) | function SearchAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/SnowflakeReservationAdminController.tsx function SnowflakeReservationAdminController (line 36) | function SnowflakeReservationAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/SystemDmAdminController.tsx function parseGuildIds (line 37) | function parseGuildIds(ids: Array | undefined): Array { function SystemDmAdminController (line 44) | function SystemDmAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/UserAdminController.tsx function UserAdminController (line 67) | function UserAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/VisionarySlotAdminController.tsx function VisionarySlotAdminController (line 40) | function VisionarySlotAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/VoiceAdminController.tsx function VoiceAdminController (line 49) | function VoiceAdminController(app: HonoApp) { FILE: packages/api/src/admin/controllers/index.tsx function registerAdminControllers (line 43) | function registerAdminControllers(app: HonoApp) { FILE: packages/api/src/admin/models/AdminArchiveModel.tsx type ArchiveSubjectType (line 24) | type ArchiveSubjectType = 'user' | 'guild'; class AdminArchive (line 25) | class AdminArchive { method constructor (line 42) | constructor(row: AdminArchiveRow) { method toRow (line 60) | toRow(): AdminArchiveRow { method toResponse (line 80) | toResponse(): { type AdminArchiveResponse (line 115) | type AdminArchiveResponse = z.infer; FILE: packages/api/src/admin/models/GuildTypes.tsx function mapGuildToAdminResponse (line 24) | function mapGuildToAdminResponse(guild: Guild): GuildAdminResponse { function mapGuildsToAdminResponse (line 36) | function mapGuildsToAdminResponse(guilds: Array): ListUserGuildsR... FILE: packages/api/src/admin/models/UserTypes.tsx constant REVERSE_DNS_CACHE_TTL_SECONDS (line 28) | const REVERSE_DNS_CACHE_TTL_SECONDS = seconds('1 day'); function reverseDnsLookup (line 30) | async function reverseDnsLookup(ip: string, cacheService?: ICacheService... function mapUserToAdminResponse (line 55) | async function mapUserToAdminResponse(user: User, cacheService?: ICacheS... FILE: packages/api/src/admin/repositories/AdminApiKeyRepository.tsx function computeTtlSeconds (line 31) | function computeTtlSeconds(expiresAt: Date): number { class AdminApiKeyRepository (line 36) | class AdminApiKeyRepository implements IAdminApiKeyRepository { method create (line 37) | async create(data: CreateAdminApiKeyData, createdBy: UserID, keyId: bi... method findById (line 94) | async findById(keyId: bigint): Promise { method listByCreator (line 109) | async listByCreator(createdBy: UserID): Promise> { method updateLastUsed (line 128) | async updateLastUsed(keyId: bigint): Promise { method revoke (line 134) | async revoke(keyId: bigint, createdBy: UserID): Promise { FILE: packages/api/src/admin/repositories/AdminArchiveRepository.tsx constant RETENTION_DAYS (line 28) | const RETENTION_DAYS = 365; constant DEFAULT_RETENTION_MS (line 29) | const DEFAULT_RETENTION_MS = ms(`${RETENTION_DAYS} days`); function computeTtlSeconds (line 31) | function computeTtlSeconds(expiresAt: Date): number { function filterExpired (line 36) | function filterExpired(rows: Array, includeExpired: boo... class AdminArchiveRepository (line 42) | class AdminArchiveRepository { method ensureExpiry (line 43) | private ensureExpiry(archive: AdminArchive): AdminArchive { method create (line 50) | async create(archive: AdminArchive): Promise { method update (line 73) | async update(archive: AdminArchive): Promise { method markAsStarted (line 96) | async markAsStarted(archive: AdminArchive, progressStep = 'Starting ar... method updateProgress (line 150) | async updateProgress(archive: AdminArchive, progressPercent: number, p... method markAsCompleted (line 203) | async markAsCompleted( method markAsFailed (line 271) | async markAsFailed(archive: AdminArchive, errorMessage: string): Promi... method findBySubjectAndArchiveId (line 325) | async findBySubjectAndArchiveId( method listBySubject (line 348) | async listBySubject( method listByType (line 367) | async listByType(subjectType: ArchiveSubjectType, limit = 50, includeE... method listByRequester (line 380) | async listByRequester(requestedBy: bigint, limit = 50, includeExpired ... FILE: packages/api/src/admin/repositories/IAdminApiKeyRepository.tsx type CreateAdminApiKeyData (line 23) | interface CreateAdminApiKeyData { type IAdminApiKeyRepository (line 29) | interface IAdminApiKeyRepository { FILE: packages/api/src/admin/repositories/SystemDmJobRepository.tsx constant JOB_TYPE (line 25) | const JOB_TYPE = 'system_dm'; constant FETCH_JOB_BY_ID (line 27) | const FETCH_JOB_BY_ID = SystemDmJobs.select({ class SystemDmJobRepository (line 31) | class SystemDmJobRepository { method createJob (line 32) | async createJob(job: SystemDmJobRow): Promise { method getJob (line 36) | async getJob(jobId: bigint): Promise { method listJobs (line 45) | async listJobs(limit: number, beforeJobId?: bigint): Promise): Promise... method buildPatch (line 76) | private static buildPatch(patch: Partial): Partial<{ FILE: packages/api/src/admin/services/AdminApiKeyService.tsx constant ADMIN_KEY_PREFIX (line 30) | const ADMIN_KEY_PREFIX = 'fa_'; constant RANDOM_KEY_LENGTH (line 31) | const RANDOM_KEY_LENGTH = 32; constant CHARSET (line 32) | const CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012... type CreateApiKeyResult (line 34) | interface CreateApiKeyResult { class AdminApiKeyService (line 45) | class AdminApiKeyService { method constructor (line 46) | constructor( method generateRawKey (line 51) | private generateRawKey(keyId: bigint): string { method extractKeyId (line 62) | private extractKeyId(rawKey: string): bigint | null { method createApiKey (line 85) | async createApiKey( method validateApiKey (line 127) | async validateApiKey(rawKey: string): Promise<{keyId: bigint; createdB... method listKeys (line 155) | async listKeys(createdBy: UserID): Promise< method revokeKey (line 179) | async revokeKey(keyId: string, createdBy: UserID): Promise { FILE: packages/api/src/admin/services/AdminArchiveService.tsx constant ARCHIVE_RETENTION_DAYS (line 41) | const ARCHIVE_RETENTION_DAYS = 365; constant DOWNLOAD_LINK_DAYS (line 42) | const DOWNLOAD_LINK_DAYS = 7; constant DOWNLOAD_LINK_SECONDS (line 43) | const DOWNLOAD_LINK_SECONDS = DOWNLOAD_LINK_DAYS * seconds('1 day'); type ListArchivesParams (line 45) | interface ListArchivesParams { class AdminArchiveService (line 53) | class AdminArchiveService { method constructor (line 54) | constructor( method computeExpiry (line 63) | private computeExpiry(): Date { method triggerUserArchive (line 67) | async triggerUserArchive(targetUserId: UserID, requestedBy: UserID): P... method triggerGuildArchive (line 103) | async triggerGuildArchive(targetGuildId: GuildID, requestedBy: UserID)... method getArchive (line 139) | async getArchive( method listArchives (line 148) | async listArchives(params: ListArchivesParams): Promise): Promise { method banEmail (line 74) | async banEmail(data: {email: string}, adminUserId: UserID, auditLogRea... method unbanEmail (line 88) | async unbanEmail(data: {email: string}, adminUserId: UserID, auditLogR... method checkEmailBan (line 102) | async checkEmailBan(data: {email: string}): Promise<{banned: boolean}> { method banPhone (line 108) | async banPhone(data: {phone: string}, adminUserId: UserID, auditLogRea... method unbanPhone (line 122) | async unbanPhone(data: {phone: string}, adminUserId: UserID, auditLogR... method checkPhoneBan (line 136) | async checkPhoneBan(data: {phone: string}): Promise<{banned: boolean}> { method listIpBans (line 142) | async listIpBans(data: {limit: number}): Promise<{bans: Array<{ip: str... method listEmailBans (line 165) | async listEmailBans(data: {limit: number}): Promise<{bans: Array { FILE: packages/api/src/admin/services/AdminGuildService.tsx type AdminGuildServiceDeps (line 55) | interface AdminGuildServiceDeps { class AdminGuildService (line 67) | class AdminGuildService { method constructor (line 76) | constructor(deps: AdminGuildServiceDeps) { method lookupGuild (line 122) | async lookupGuild(data: LookupGuildRequest) { method listUserGuilds (line 126) | async listUserGuilds(data: ListUserGuildsRequest) { method listGuildMembers (line 130) | async listGuildMembers(data: ListGuildMembersRequest) { method listGuildEmojis (line 134) | async listGuildEmojis(guildId: GuildID): Promise) { method getNodeStats (line 242) | async getNodeStats() { FILE: packages/api/src/admin/services/AdminMessageDeletionService.tsx type AdminMessageDeletionServiceDeps (line 33) | interface AdminMessageDeletionServiceDeps { constant FETCH_CHUNK_SIZE (line 39) | const FETCH_CHUNK_SIZE = 200; class AdminMessageDeletionService (line 41) | class AdminMessageDeletionService { method constructor (line 42) | constructor(private readonly deps: AdminMessageDeletionServiceDeps) {} method deleteAllUserMessages (line 44) | async deleteAllUserMessages( method collectMessageRefs (line 119) | private async collectMessageRefs(authorId: UserID, includeEntries: boo... FILE: packages/api/src/admin/services/AdminMessageService.tsx type AdminMessageServiceDeps (line 44) | interface AdminMessageServiceDeps { class AdminMessageService (line 52) | class AdminMessageService { method constructor (line 53) | constructor(private readonly deps: AdminMessageServiceDeps) {} method lookupAttachment (line 55) | async lookupAttachment({ method lookupMessage (line 71) | async lookupMessage(data: LookupMessageRequest) { method lookupMessageByAttachment (line 105) | async lookupMessageByAttachment(data: LookupMessageByAttachmentRequest) { method deleteMessage (line 134) | async deleteMessage(data: DeleteMessageRequest, adminUserId: UserID, a... method mapMessageResponseToAdminMessage (line 202) | private mapMessageResponseToAdminMessage(message: MessageResponse) { FILE: packages/api/src/admin/services/AdminMessageShredService.tsx type MessageShredStatusCacheEntry (line 33) | type MessageShredStatusCacheEntry = { type MessageShredStatusResult (line 45) | type MessageShredStatusResult = type AdminMessageShredServiceDeps (line 51) | interface AdminMessageShredServiceDeps { type QueueMessageShredJobPayload (line 58) | interface QueueMessageShredJobPayload extends WorkerJobPayload { class AdminMessageShredService (line 65) | class AdminMessageShredService { method constructor (line 66) | constructor(private readonly deps: AdminMessageShredServiceDeps) {} method queueMessageShred (line 68) | async queueMessageShred( method getMessageShredStatus (line 135) | async getMessageShredStatus(jobId: string): Promise): Pr... method mapReportToResponse (line 189) | private async mapReportToResponse(report: IARSubmission, includeContex... method getMutualDmChannelId (line 248) | private async getMutualDmChannelId(report: IARSubmission): Promise { FILE: packages/api/src/admin/services/AdminVisionarySlotService.tsx type AdminVisionarySlotServiceDeps (line 24) | interface AdminVisionarySlotServiceDeps { class AdminVisionarySlotService (line 29) | class AdminVisionarySlotService { method constructor (line 30) | constructor(private readonly deps: AdminVisionarySlotServiceDeps) {} method expandSlots (line 32) | async expandSlots(data: {count: number}, adminUserId: UserID, auditLog... method shrinkSlots (line 45) | async shrinkSlots(data: {targetCount: number}, adminUserId: UserID, au... method setSlotReservation (line 62) | async setSlotReservation( method swapSlots (line 111) | async swapSlots( FILE: packages/api/src/admin/services/AdminVoiceService.tsx type AdminVoiceServiceDeps (line 43) | interface AdminVoiceServiceDeps { class AdminVoiceService (line 49) | class AdminVoiceService { method constructor (line 50) | constructor(private readonly deps: AdminVoiceServiceDeps) {} method listVoiceRegions (line 52) | async listVoiceRegions(data: ListVoiceRegionsRequest) { method getVoiceRegion (line 77) | async getVoiceRegion(data: GetVoiceRegionRequest) { method createVoiceRegion (line 102) | async createVoiceRegion(data: CreateVoiceRegionRequest, adminUserId: U... method updateVoiceRegion (line 141) | async updateVoiceRegion(data: UpdateVoiceRegionRequest, adminUserId: U... method deleteVoiceRegion (line 197) | async deleteVoiceRegion(data: DeleteVoiceRegionRequest, adminUserId: U... method listVoiceServers (line 226) | async listVoiceServers(data: ListVoiceServersRequest) { method getVoiceServer (line 235) | async getVoiceServer(data: GetVoiceServerRequest) { method createVoiceServer (line 244) | async createVoiceServer(data: CreateVoiceServerRequest, adminUserId: U... method updateVoiceServer (line 284) | async updateVoiceServer(data: UpdateVoiceServerRequest, adminUserId: U... method deleteVoiceServer (line 341) | async deleteVoiceServer(data: DeleteVoiceServerRequest, adminUserId: U... method mapVoiceRegionToAdminResponse (line 371) | private mapVoiceRegionToAdminResponse(region: VoiceRegionRecord): Voic... method mapVoiceServerToAdminResponse (line 388) | private mapVoiceServerToAdminResponse(server: VoiceServerRecord): Voic... FILE: packages/api/src/admin/services/SystemDmService.tsx constant JOB_TYPE (line 34) | const JOB_TYPE = 'system_dm'; constant JOB_KEY_PREFIX (line 35) | const JOB_KEY_PREFIX = 'system_dm_job_'; type CreateJobInput (line 37) | interface CreateJobInput { class SystemDmService (line 44) | class SystemDmService { method constructor (line 45) | constructor( method ensureSearchService (line 53) | private ensureSearchService() { method createJob (line 61) | async createJob( method listJobs (line 127) | async listJobs( method getJob (line 138) | async getJob(jobId: bigint): Promise { method approveJob (line 143) | async approveJob(jobId: bigint, adminUserId: UserID, auditLogReason: s... method toResponse (line 211) | private toResponse(job: SystemDmJobRow): SystemDmJobResponse { method convertExcludedGuildIds (line 228) | private convertExcludedGuildIds(values?: ReadonlySet): Set) { method getNodeStats (line 109) | async getNodeStats() { FILE: packages/api/src/admin/services/guild/AdminGuildMembershipService.tsx type AdminGuildMembershipServiceDeps (line 34) | interface AdminGuildMembershipServiceDeps { class AdminGuildMembershipService (line 40) | class AdminGuildMembershipService { method constructor (line 41) | constructor(private readonly deps: AdminGuildMembershipServiceDeps) {} method forceAddUserToGuild (line 43) | async forceAddUserToGuild({ method bulkAddGuildMembers (line 85) | async bulkAddGuildMembers(data: BulkAddGuildMembersRequest, adminUserI... method banMember (line 130) | async banMember(data: BanGuildMemberRequest, adminUserId: UserID, audi... method kickMember (line 171) | async kickMember(data: KickGuildMemberRequest, adminUserId: UserID, au... FILE: packages/api/src/admin/services/guild/AdminGuildUpdatePropagator.tsx type AdminGuildUpdatePropagatorDeps (line 30) | interface AdminGuildUpdatePropagatorDeps { class AdminGuildUpdatePropagator (line 35) | class AdminGuildUpdatePropagator { method constructor (line 36) | constructor(private readonly deps: AdminGuildUpdatePropagatorDeps) {} method dispatchGuildUpdate (line 38) | async dispatchGuildUpdate(guildId: GuildID, updatedGuild: Guild): Prom... FILE: packages/api/src/admin/services/guild/AdminGuildUpdateService.tsx type AdminGuildUpdateServiceDeps (line 35) | interface AdminGuildUpdateServiceDeps { class AdminGuildUpdateService (line 42) | class AdminGuildUpdateService { method constructor (line 43) | constructor(private readonly deps: AdminGuildUpdateServiceDeps) {} method updateGuildFeatures (line 45) | async updateGuildFeatures({ method clearGuildFields (line 98) | async clearGuildFields(data: ClearGuildFieldsRequest, adminUserId: Use... method updateGuildName (line 183) | async updateGuildName(data: UpdateGuildNameRequest, adminUserId: UserI... method updateGuildSettings (line 217) | async updateGuildSettings(data: UpdateGuildSettingsRequest, adminUserI... method transferGuildOwnership (line 275) | async transferGuildOwnership( FILE: packages/api/src/admin/services/guild/AdminGuildVanityService.tsx type AdminGuildVanityServiceDeps (line 38) | interface AdminGuildVanityServiceDeps { class AdminGuildVanityService (line 45) | class AdminGuildVanityService { method constructor (line 46) | constructor(private readonly deps: AdminGuildVanityServiceDeps) {} method updateGuildVanity (line 48) | async updateGuildVanity(data: UpdateGuildVanityRequest, adminUserId: U... FILE: packages/api/src/admin/tests/AdminApiKeyAuthentication.test.tsx type AdminApiKey (line 27) | interface AdminApiKey { function createAdminApiKey (line 35) | async function createAdminApiKey( function createAdminApiKeyWithDefaultACLs (line 64) | async function createAdminApiKeyWithDefaultACLs( function listAdminApiKeys (line 72) | async function listAdminApiKeys(harness: ApiTestHarness, token: string):... function revokeAdminApiKey (line 79) | async function revokeAdminApiKey(harness: ApiTestHarness, token: string,... FILE: packages/api/src/admin/tests/AdminApiKeyLifecycle.test.tsx type ApiKeyResponse (line 32) | interface ApiKeyResponse { FILE: packages/api/src/admin/tests/AdminApiKeyRevocation.test.tsx function hasAdminAPIKeyId (line 27) | async function hasAdminAPIKeyId(harness: ApiTestHarness, token: string, ... FILE: packages/api/src/admin/tests/AdminArchivesList.test.tsx type ArchiveResponse (line 27) | interface ArchiveResponse { type ListArchivesResponse (line 34) | interface ListArchivesResponse { function setAdminArchiveAcls (line 38) | async function setAdminArchiveAcls(harness: ApiTestHarness, admin: TestA... function triggerGuildArchive (line 42) | async function triggerGuildArchive( function listArchivesByRequester (line 54) | async function listArchivesByRequester( FILE: packages/api/src/admin/tests/AdminOAuth2ScopeRequirement.test.tsx type OAuth2TokenResponse (line 27) | interface OAuth2TokenResponse { function createOAuth2Token (line 34) | async function createOAuth2Token( FILE: packages/api/src/admin/tests/AdminSearchFieldCoverage.test.tsx type UserSearchResponse (line 29) | interface UserSearchResponse { type GuildSearchResponse (line 34) | interface GuildSearchResponse { function setContactInfo (line 39) | async function setContactInfo( FILE: packages/api/src/admin/tests/AdminTestUtils.tsx type AdminApiKey (line 24) | interface AdminApiKey { function createAdminApiKey (line 32) | async function createAdminApiKey( function createAdminApiKeyWithDefaultACLs (line 60) | async function createAdminApiKeyWithDefaultACLs( function listAdminApiKeys (line 68) | async function listAdminApiKeys( function revokeAdminApiKey (line 75) | async function revokeAdminApiKey(harness: ApiTestHarness, token: string,... function setAdminUserAcls (line 83) | async function setAdminUserAcls( FILE: packages/api/src/admin/tests/DiscoveryAdminOperations.test.tsx function setGuildMemberCount (line 32) | async function setGuildMemberCount(harness: ApiTestHarness, guildId: str... function createGuildWithApplication (line 39) | async function createGuildWithApplication( function createAdminWithACLs (line 58) | async function createAdminWithACLs(harness: ApiTestHarness, acls: Array<... FILE: packages/api/src/admin/tests/VisionarySlotManagement.test.tsx type VisionarySlot (line 27) | interface VisionarySlot { type ListVisionarySlotsResponse (line 32) | interface ListVisionarySlotsResponse { type VisionarySlotOperationResponse (line 38) | interface VisionarySlotOperationResponse { function setAdminVisionarySlotAcls (line 42) | async function setAdminVisionarySlotAcls(harness: ApiTestHarness, admin:... function listVisionarySlots (line 54) | async function listVisionarySlots(harness: ApiTestHarness, adminToken: s... function expandVisionarySlots (line 61) | async function expandVisionarySlots( function shrinkVisionarySlots (line 73) | async function shrinkVisionarySlots( function reserveVisionarySlot (line 85) | async function reserveVisionarySlot( function swapVisionarySlots (line 98) | async function swapVisionarySlots( function listVisionarySlotAuditLogs (line 111) | async function listVisionarySlotAuditLogs(harness: ApiTestHarness, admin... FILE: packages/api/src/alert/AlertService.tsx type GuildCrashAlertParams (line 25) | interface GuildCrashAlertParams { class AlertService (line 31) | class AlertService { method constructor (line 34) | constructor(webhookUrl: string | null | undefined) { method isEnabled (line 41) | isEnabled(): boolean { method logGuildCrash (line 45) | async logGuildCrash(params: GuildCrashAlertParams): Promise { FILE: packages/api/src/app/APILifecycle.tsx function createInitializer (line 49) | function createInitializer(config: APIConfig, logger: ILogger): () => Pr... function createShutdown (line 172) | function createShutdown(logger: ILogger): () => Promise { FILE: packages/api/src/app/ControllerRegistry.tsx function registerControllers (line 48) | function registerControllers(routes: HonoApp, config: APIConfig): void { FILE: packages/api/src/app/MiddlewarePipeline.tsx type MiddlewarePipelineOptions (line 38) | interface MiddlewarePipelineOptions { constant TRACEPARENT_HEADER (line 46) | const TRACEPARENT_HEADER = 'traceparent'; function attachTraceparentHeader (line 47) | function attachTraceparentHeader(ctx: HonoContext): void { function configureMiddleware (line 59) | function configureMiddleware(routes: HonoApp, options: MiddlewarePipelin... FILE: packages/api/src/attachment/AttachmentDecayRepository.tsx type AttachmentDecayExpiryRow (line 25) | interface AttachmentDecayExpiryRow { constant FETCH_BY_ID_CQL (line 33) | const FETCH_BY_ID_CQL = AttachmentDecayById.selectCql({ constant FETCH_BY_IDS_CQL (line 38) | const FETCH_BY_IDS_CQL = AttachmentDecayById.selectCql({ class AttachmentDecayRepository (line 51) | class AttachmentDecayRepository { method upsert (line 52) | async upsert(record: AttachmentDecayRow & {expiry_bucket: number}): Pr... method fetchById (line 67) | async fetchById(attachmentId: AttachmentID): Promise): Promise { method clearAll (line 133) | async clearAll(days = 30): Promise { FILE: packages/api/src/attachment/AttachmentDecayService.tsx type AttachmentDecayPayload (line 35) | interface AttachmentDecayPayload { class AttachmentDecayService (line 45) | class AttachmentDecayService { method constructor (line 46) | constructor(private readonly repo: AttachmentDecayRepository = new Att... method upsertMany (line 48) | async upsertMany(payloads: Array): Promise)... method fetchMetadata (line 134) | async fetchMetadata( FILE: packages/api/src/auth/AuthController.tsx function AuthController (line 65) | function AuthController(app: HonoApp) { FILE: packages/api/src/auth/AuthModel.tsx function resolveAuthSessionLocation (line 27) | async function resolveAuthSessionLocation(session: AuthSession): Promise... function mapAuthSessionsToResponse (line 36) | async function mapAuthSessionsToResponse({ FILE: packages/api/src/auth/AuthRequestService.tsx type AuthRegisterRequest (line 55) | interface AuthRegisterRequest { type AuthLoginRequest (line 61) | interface AuthLoginRequest { type AuthForgotPasswordRequest (line 67) | interface AuthForgotPasswordRequest { type AuthResetPasswordRequest (line 72) | interface AuthResetPasswordRequest { type AuthRevertEmailChangeRequest (line 77) | interface AuthRevertEmailChangeRequest { type AuthLoginMfaRequest (line 82) | interface AuthLoginMfaRequest { type AuthLogoutRequest (line 88) | interface AuthLogoutRequest { type AuthHandoffCompleteRequest (line 93) | interface AuthHandoffCompleteRequest { type AuthAuthorizeIpRequest (line 98) | interface AuthAuthorizeIpRequest { type AuthUsernameSuggestionsRequest (line 102) | interface AuthUsernameSuggestionsRequest { type AuthPollIpRequest (line 106) | interface AuthPollIpRequest { type AuthWebAuthnAuthenticateRequest (line 110) | interface AuthWebAuthnAuthenticateRequest { type AuthWebAuthnMfaRequest (line 115) | interface AuthWebAuthnMfaRequest { type AuthLogoutAuthSessionsRequest (line 120) | interface AuthLogoutAuthSessionsRequest { type AuthHandoffInitiateRequest (line 125) | interface AuthHandoffInitiateRequest { type AuthHandoffStatusRequest (line 129) | interface AuthHandoffStatusRequest { class AuthRequestService (line 133) | class AuthRequestService { method constructor (line 134) | constructor( method getSsoStatus (line 141) | getSsoStatus() { method startSso (line 145) | startSso(data: SsoStartRequest) { method completeSso (line 149) | completeSso(data: SsoCompleteRequest, request: Request) { method register (line 153) | async register({data, request, requestCache}: AuthRegisterRequest): Pr... method login (line 158) | async login({data, request, requestCache}: AuthLoginRequest): Promise<... method loginMfaTotp (line 163) | loginMfaTotp({code, ticket, request}: AuthLoginMfaRequest): Promise { method resendVerificationEmail (line 189) | async resendVerificationEmail(user: User): Promise { method forgotPassword (line 193) | async forgotPassword({data, request}: AuthForgotPasswordRequest): Prom... method resetPassword (line 197) | async resetPassword({data, request}: AuthResetPasswordRequest): Promis... method revertEmailChange (line 202) | revertEmailChange({data, request}: AuthRevertEmailChangeRequest): Prom... method getAuthSessions (line 206) | getAuthSessions(userId: UserID): Promise { method logoutAuthSessions (line 210) | async logoutAuthSessions({user, data}: AuthLogoutAuthSessionsRequest):... method completeIpAuthorization (line 217) | async completeIpAuthorization({data}: AuthAuthorizeIpRequest): Promise... method resendIpAuthorization (line 223) | async resendIpAuthorization({ticket}: MfaTicketRequest): Promise { method pollIpAuthorization (line 227) | async pollIpAuthorization({ticket}: AuthPollIpRequest): Promise { method toAuthLoginResponse (line 304) | private toAuthLoginResponse( FILE: packages/api/src/auth/AuthService.tsx type RegisterParams (line 65) | interface RegisterParams { type LoginParams (line 71) | interface LoginParams { type LoginMfaTotpParams (line 77) | interface LoginMfaTotpParams { type ForgotPasswordParams (line 83) | interface ForgotPasswordParams { type ResetPasswordParams (line 88) | interface ResetPasswordParams { type RevertEmailChangeParams (line 93) | interface RevertEmailChangeParams { type LogoutAuthSessionsParams (line 98) | interface LogoutAuthSessionsParams { type CreateAuthSessionParams (line 103) | interface CreateAuthSessionParams { type DispatchAuthSessionChangeParams (line 108) | interface DispatchAuthSessionChangeParams { type VerifyPasswordParams (line 115) | interface VerifyPasswordParams { type VerifyMfaCodeParams (line 120) | interface VerifyMfaCodeParams { type UpdateUserActivityParams (line 127) | interface UpdateUserActivityParams { type ValidateAgeParams (line 132) | interface ValidateAgeParams { type CheckEmailChangeRateLimitParams (line 137) | interface CheckEmailChangeRateLimitParams { type IAuthService (line 141) | interface IAuthService { class AuthService (line 146) | class AuthService implements IAuthService { method constructor (line 157) | constructor( method register (line 267) | async register({data, request, requestCache}: RegisterParams): Promise... method login (line 271) | async login({ method loginMfaTotp (line 282) | async loginMfaTotp({code, ticket, request}: LoginMfaTotpParams): Promi... method loginMfaSms (line 286) | async loginMfaSms({ method loginMfaWebAuthn (line 298) | async loginMfaWebAuthn({ method forgotPassword (line 312) | async forgotPassword({data, request}: ForgotPasswordParams): Promise { method verifyPassword (line 347) | async verifyPassword({password, passwordHash}: VerifyPasswordParams): ... method isPasswordPwned (line 351) | async isPasswordPwned(password: string): Promise { method verifyEmail (line 355) | async verifyEmail(data: VerifyEmailRequest): Promise { method resendVerificationEmail (line 359) | async resendVerificationEmail(user: User): Promise { method getAuthSessionByToken (line 363) | async getAuthSessionByToken(token: string): Promise { method getAuthSessions (line 367) | async getAuthSessions(userId: UserID): Promise { method updateUserActivity (line 408) | async updateUserActivity({userId, clientIp}: UpdateUserActivityParams)... method revokeToken (line 412) | async revokeToken(token: string): Promise { method logoutAuthSessions (line 416) | async logoutAuthSessions({user, sessionIdHashes}: LogoutAuthSessionsPa... method terminateAllUserSessions (line 420) | async terminateAllUserSessions(userId: UserID): Promise { method dispatchAuthSessionChange (line 424) | async dispatchAuthSessionChange({ method getUserSession (line 438) | async getUserSession(_requestCache: RequestCache, token: string): Prom... method sendPhoneVerificationCode (line 446) | async sendPhoneVerificationCode(phone: string, userId: UserID | null):... method verifyPhoneCode (line 450) | async verifyPhoneCode(phone: string, code: string, userId: UserID | nu... method addPhoneToAccount (line 454) | async addPhoneToAccount(userId: UserID, phoneToken: string): Promise { method verifyMfaCode (line 462) | async verifyMfaCode({userId, mfaSecret, code, allowBackup = false}: Ve... method enableSmsMfa (line 466) | async enableSmsMfa(userId: UserID): Promise { method disableSmsMfa (line 470) | async disableSmsMfa(userId: UserID): Promise { method sendSmsMfaCode (line 474) | async sendSmsMfaCode(userId: UserID): Promise { method sendSmsMfaCodeForTicket (line 478) | async sendSmsMfaCodeForTicket(ticket: string): Promise { method verifySmsMfaCode (line 482) | async verifySmsMfaCode(userId: UserID, code: string): Promise { method generateWebAuthnRegistrationOptions (line 486) | async generateWebAuthnRegistrationOptions(userId: UserID) { method verifyWebAuthnRegistration (line 490) | async verifyWebAuthnRegistration( method deleteWebAuthnCredential (line 499) | async deleteWebAuthnCredential(userId: UserID, credentialId: string): ... method renameWebAuthnCredential (line 503) | async renameWebAuthnCredential(userId: UserID, credentialId: string, n... method generateWebAuthnAuthenticationOptionsDiscoverable (line 507) | async generateWebAuthnAuthenticationOptionsDiscoverable() { method verifyWebAuthnAuthenticationDiscoverable (line 511) | async verifyWebAuthnAuthenticationDiscoverable( method generateWebAuthnAuthenticationOptionsForMfa (line 518) | async generateWebAuthnAuthenticationOptionsForMfa(ticket: string) { method verifyWebAuthnAuthentication (line 522) | async verifyWebAuthnAuthentication( method generateSecureToken (line 530) | async generateSecureToken(length = 64): Promise { method generateAuthToken (line 534) | async generateAuthToken(): Promise { method generateBackupCodes (line 538) | generateBackupCodes(): Array { method checkEmailChangeRateLimit (line 542) | async checkEmailChangeRateLimit({ method validateAge (line 548) | validateAge({dateOfBirth, minAge}: ValidateAgeParams): boolean { method authorizeIpByToken (line 552) | async authorizeIpByToken(token: string): Promise<{userId: UserID; emai... method resendIpAuthorization (line 556) | async resendIpAuthorization(ticket: string): Promise<{retryAfter?: num... method completeIpAuthorization (line 560) | async completeIpAuthorization(token: string): Promise<{token: string; ... method createAuthSessionForUser (line 564) | async createAuthSessionForUser(user: User, request: Request): Promise<... method createMfaTicketResponse (line 569) | private async createMfaTicketResponse(user: User): Promise<{ method maskPhone (line 602) | private maskPhone(phone: string): string { FILE: packages/api/src/auth/services/AuthEmailRevertService.tsx type IssueTokenParams (line 36) | interface IssueTokenParams { type RevertParams (line 42) | interface RevertParams { class AuthEmailRevertService (line 48) | class AuthEmailRevertService { method constructor (line 49) | constructor( method issueRevertToken (line 63) | async issueRevertToken(params: IssueTokenParams): Promise { method revertEmailChange (line 78) | async revertEmailChange(params: RevertParams): Promise<{user_id: strin... FILE: packages/api/src/auth/services/AuthEmailService.tsx constant EMAIL_CLEARABLE_SUSPICIOUS_ACTIVITY_FLAGS (line 34) | const EMAIL_CLEARABLE_SUSPICIOUS_ACTIVITY_FLAGS = class AuthEmailService (line 42) | class AuthEmailService { method constructor (line 43) | constructor( method verifyEmail (line 52) | async verifyEmail(data: VerifyEmailRequest): Promise { method resendVerificationEmail (line 99) | async resendVerificationEmail(user: User): Promise { FILE: packages/api/src/auth/services/AuthLoginService.tsx function createRequestCache (line 57) | function createRequestCache(): RequestCache { type LoginParams (line 64) | interface LoginParams { type LoginMfaTotpParams (line 69) | interface LoginMfaTotpParams { function getRetryAfterSeconds (line 75) | function getRetryAfterSeconds(result: RateLimitResult): number { function throwLoginRateLimit (line 79) | function throwLoginRateLimit(result: RateLimitResult): never { type IpAuthorizationTicketCache (line 87) | interface IpAuthorizationTicketCache { class AuthLoginService (line 101) | class AuthLoginService { method constructor (line 102) | constructor( method getTicketCacheKey (line 130) | private getTicketCacheKey(ticket: string): string { method getTokenCacheKey (line 134) | private getTokenCacheKey(token: string): string { method resendIpAuthorization (line 138) | async resendIpAuthorization(ticket: string): Promise<{retryAfter?: num... method completeIpAuthorization (line 178) | async completeIpAuthorization(token: string): Promise<{token: string; ... method login (line 233) | async login({ method performLogin (line 245) | private async performLogin({ method loginMfaTotp (line 422) | async loginMfaTotp({code, ticket, request}: LoginMfaTotpParams): Promi... method loginMfaSms (line 475) | async loginMfaSms({ method loginMfaWebAuthn (line 522) | async loginMfaWebAuthn({ method createMfaTicketResponse (line 564) | private async createMfaTicketResponse(user: User): Promise<{ method maskPhone (line 597) | private maskPhone(phone: string): string { FILE: packages/api/src/auth/services/AuthMfaService.tsx type WebAuthnChallengeContext (line 59) | type WebAuthnChallengeContext = 'registration' | 'discoverable' | 'mfa' ... type SudoMfaVerificationParams (line 61) | interface SudoMfaVerificationParams { type SudoMfaVerificationResult (line 69) | interface SudoMfaVerificationResult { type VerifyMfaCodeParams (line 74) | interface VerifyMfaCodeParams { class AuthMfaService (line 81) | class AuthMfaService { method constructor (line 82) | constructor( method verifyMfaCode (line 90) | async verifyMfaCode({userId, mfaSecret, code, allowBackup = false}: Ve... method enableSmsMfa (line 123) | async enableSmsMfa(userId: UserID): Promise { method disableSmsMfa (line 161) | async disableSmsMfa(userId: UserID): Promise { method sendSmsMfaCode (line 187) | async sendSmsMfaCode(userId: UserID): Promise { method sendSmsMfaCodeForTicket (line 201) | async sendSmsMfaCodeForTicket(ticket: string): Promise { method verifySmsMfaCode (line 209) | async verifySmsMfaCode(userId: UserID, code: string): Promise { method generateWebAuthnRegistrationOptions (line 218) | async generateWebAuthnRegistrationOptions(userId: UserID) { method verifyWebAuthnRegistration (line 253) | async verifyWebAuthnRegistration( method deleteWebAuthnCredential (line 362) | async deleteWebAuthnCredential(userId: UserID, credentialId: string): ... method renameWebAuthnCredential (line 397) | async renameWebAuthnCredential(userId: UserID, credentialId: string, n... method generateWebAuthnAuthenticationOptionsDiscoverable (line 406) | async generateWebAuthnAuthenticationOptionsDiscoverable() { method verifyWebAuthnAuthenticationDiscoverable (line 418) | async verifyWebAuthnAuthenticationDiscoverable( method generateWebAuthnAuthenticationOptionsForMfa (line 440) | async generateWebAuthnAuthenticationOptionsForMfa(ticket: string) { method verifyWebAuthnAuthentication (line 469) | async verifyWebAuthnAuthentication( method generateWebAuthnOptionsForSudo (line 558) | async generateWebAuthnOptionsForSudo(userId: UserID) { method verifySudoMfa (line 582) | async verifySudoMfa(params: SudoMfaVerificationParams): Promise { method verifyPassword (line 136) | async verifyPassword({password, passwordHash}: VerifyPasswordParams): ... method isPasswordPwned (line 140) | async isPasswordPwned(password: string): Promise { method forgotPassword (line 208) | async forgotPassword({data, request}: ForgotPasswordParams): Promise { FILE: packages/api/src/auth/services/AuthRegistrationService.tsx constant MINIMUM_AGE_BY_COUNTRY (line 62) | const MINIMUM_AGE_BY_COUNTRY: Record = { constant DEFAULT_MINIMUM_AGE (line 96) | const DEFAULT_MINIMUM_AGE = 13; constant USER_AGENT_TRUNCATE_LENGTH (line 97) | const USER_AGENT_TRUNCATE_LENGTH = 512; type RegistrationMetadataContext (line 99) | interface RegistrationMetadataContext { constant AGE_BUCKETS (line 116) | const AGE_BUCKETS: Array<{label: string; min: number; max: number}> = [ function determineAgeGroup (line 126) | function determineAgeGroup(age: number | null): string { function isIpv6 (line 134) | function isIpv6(ip: string): boolean { function getRetryAfterSeconds (line 138) | function getRetryAfterSeconds(result: RateLimitResult): number { function throwRegistrationRateLimit (line 142) | function throwRegistrationRateLimit(result: RateLimitResult): never { function parseDobLocalDate (line 150) | function parseDobLocalDate(dateOfBirth: string): types.LocalDate { type RegisterParams (line 158) | interface RegisterParams { class AuthRegistrationService (line 164) | class AuthRegistrationService { method constructor (line 168) | constructor( method register (line 186) | async register({data, request, requestCache}: RegisterParams): Promise... method performRegister (line 192) | private async performRegister({ method maybeIndexUser (line 437) | private async maybeIndexUser(user: User): Promise { method maybeSendVerificationEmail (line 450) | private async maybeSendVerificationEmail(params: {user: User; email: s... method maybeAutoJoinInvite (line 463) | private async maybeAutoJoinInvite(params: { method enforceRegistrationRateLimits (line 485) | private async enforceRegistrationRateLimits(params: { method allocateDiscriminator (line 512) | private async allocateDiscriminator(username: string): Promise { method generateUserId (line 520) | private async generateUserId(emailKey: string | null): Promise { method truncateUserAgent (line 530) | private truncateUserAgent(userAgent: string): string { method parseUserAgentSafe (line 535) | private parseUserAgentSafe(userAgent: string): {osInfo: string; browse... method formatNameVersion (line 549) | private formatNameVersion(name?: string, version?: string): string | n... method formatOsInfo (line 554) | private formatOsInfo(os?: {name?: string; version?: string; versionNam... method formatDeviceInfo (line 562) | private formatDeviceInfo(platform?: {type?: string; vendor?: string; m... method formatPlatformType (line 572) | private formatPlatformType(type?: string): string | null { method buildRegistrationMetadataContext (line 585) | private async buildRegistrationMetadataContext(params: { method reserveFirstAdminAcl (line 648) | private async reserveFirstAdminAcl(): Promise { method sendRegistrationWebhook (line 660) | private async sendRegistrationWebhook( FILE: packages/api/src/auth/services/AuthSessionService.tsx type CreateAuthSessionParams (line 32) | interface CreateAuthSessionParams { type LogoutAuthSessionsParams (line 37) | interface LogoutAuthSessionsParams { type UpdateUserActivityParams (line 42) | interface UpdateUserActivityParams { class AuthSessionService (line 46) | class AuthSessionService { method constructor (line 47) | constructor( method createAuthSession (line 54) | async createAuthSession({user, request}: CreateAuthSessionParams): Pro... method getAuthSessionByToken (line 90) | async getAuthSessionByToken(token: string): Promise { method getAuthSessions (line 94) | async getAuthSessions(userId: UserID): Promise { method updateUserActivity (line 108) | async updateUserActivity({userId, clientIp}: UpdateUserActivityParams)... method revokeToken (line 112) | async revokeToken(token: string): Promise { method logoutAuthSessions (line 130) | async logoutAuthSessions({user, sessionIdHashes}: LogoutAuthSessionsPa... method terminateAllUserSessions (line 145) | async terminateAllUserSessions(userId: UserID): Promise { method dispatchAuthSessionChange (line 163) | async dispatchAuthSessionChange(params: { FILE: packages/api/src/auth/services/AuthUtilityService.tsx constant ALPHANUMERIC_CHARS (line 35) | const ALPHANUMERIC_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr... function base62Encode (line 37) | function base62Encode(buffer: Uint8Array): string { type ValidateAgeParams (line 49) | interface ValidateAgeParams { type CheckEmailChangeRateLimitParams (line 54) | interface CheckEmailChangeRateLimitParams { class AuthUtilityService (line 58) | class AuthUtilityService { method constructor (line 59) | constructor( method generateSecureToken (line 64) | async generateSecureToken(length = 64): Promise { method generateAuthToken (line 68) | async generateAuthToken(): Promise { method generateBackupCodes (line 84) | generateBackupCodes(): Array { method getTokenIdHash (line 90) | getTokenIdHash(token: string): Uint8Array { method checkEmailChangeRateLimit (line 94) | async checkEmailChangeRateLimit({ method validateAge (line 109) | validateAge({dateOfBirth, minAge}: ValidateAgeParams): boolean { method assertNonBotUser (line 119) | assertNonBotUser(user: User): void { method authorizeIpByToken (line 125) | async authorizeIpByToken(token: string): Promise<{userId: UserID; emai... method checkAccountBanStatus (line 129) | checkAccountBanStatus(user: User): { method handleBanStatus (line 145) | async handleBanStatus(user: User): Promise { FILE: packages/api/src/auth/services/DesktopHandoffService.tsx constant HANDOFF_CODE_PREFIX (line 26) | const HANDOFF_CODE_PREFIX = 'desktop-handoff:'; constant HANDOFF_TOKEN_PREFIX (line 27) | const HANDOFF_TOKEN_PREFIX = 'desktop-handoff-token:'; constant CODE_CHARACTERS (line 29) | const CODE_CHARACTERS = 'ABCDEFGHJKMNPQRSTUVWXYZ23456789'; constant CODE_LENGTH (line 30) | const CODE_LENGTH = 8; constant NORMALIZED_CODE_REGEX (line 31) | const NORMALIZED_CODE_REGEX = /^[ABCDEFGHJKMNPQRSTUVWXYZ23456789]{8}$/; type HandoffData (line 33) | interface HandoffData { type HandoffTokenData (line 38) | interface HandoffTokenData { function generateHandoffCode (line 43) | function generateHandoffCode(): string { function normalizeHandoffCode (line 52) | function normalizeHandoffCode(code: string): string { function assertValidHandoffCode (line 56) | function assertValidHandoffCode(code: string): void { class DesktopHandoffService (line 62) | class DesktopHandoffService { method constructor (line 63) | constructor(private readonly cacheService: ICacheService) {} method initiateHandoff (line 65) | async initiateHandoff(userAgent?: string): Promise<{code: string; expi... method completeHandoff (line 82) | async completeHandoff(code: string, token: string, userId: string): Pr... method getHandoffStatus (line 110) | async getHandoffStatus( method cancelHandoff (line 136) | async cancelHandoff(code: string): Promise { FILE: packages/api/src/auth/services/SsoService.tsx type SsoStatePayload (line 57) | interface SsoStatePayload { type PublicSsoStatus (line 64) | interface PublicSsoStatus { type ResolvedSsoConfig (line 71) | interface ResolvedSsoConfig extends InstanceSsoConfig { type RemoteJwkSetResolver (line 80) | interface RemoteJwkSetResolver { type JwksCacheEntry (line 89) | interface JwksCacheEntry { class SsoService (line 94) | class SsoService { method constructor (line 102) | constructor( method getPublicStatus (line 112) | async getPublicStatus(): Promise { method isEnforced (line 122) | async isEnforced(): Promise { method startLogin (line 127) | async startLogin(redirectTo?: string): Promise<{authorization_url: str... method completeLogin (line 174) | async completeLogin({ method resolveUserFromClaims (line 204) | private async resolveUserFromClaims( method provisionUserFromClaims (line 221) | private async provisionUserFromClaims( method resolveClaims (line 307) | private async resolveClaims( method verifyIdToken (line 357) | private async verifyIdToken(idToken: string, config: ResolvedSsoConfig... method getOrCreateJwks (line 383) | private async getOrCreateJwks(jwksUrl: string): Promise { method validatePublicOutboundUrl (line 590) | private async validatePublicOutboundUrl(rawUrl: string, fieldName: str... method validateOptionalPublicOutboundUrl (line 605) | private async validateOptionalPublicOutboundUrl(rawUrl: string | null,... method requireReadyConfig (line 619) | private async requireReadyConfig(): Promise { FILE: packages/api/src/auth/services/SsoUtils.tsx type DiscoveredOidcProviderMetadata (line 24) | interface DiscoveredOidcProviderMetadata { function sanitizeSsoRedirectTo (line 32) | function sanitizeSsoRedirectTo(redirectTo?: string): string | undefined { function parseTokenEndpointResponse (line 45) | function parseTokenEndpointResponse( function buildDiscoveryUrl (line 71) | function buildDiscoveryUrl(issuer: string): URL { function normalizeIssuerForCompare (line 77) | function normalizeIssuerForCompare(value: string): string { function tryDiscoverOidcProviderMetadata (line 81) | async function tryDiscoverOidcProviderMetadata(issuer: string): Promise<... FILE: packages/api/src/auth/services/SudoModeService.tsx class SudoModeService (line 25) | class SudoModeService { method constructor (line 28) | constructor() { method generateSudoToken (line 32) | async generateSudoToken(userId: UserID): Promise { method verifySudoToken (line 47) | async verifySudoToken(token: string, userId: UserID): Promise { function getSudoModeService (line 70) | function getSudoModeService(): SudoModeService { FILE: packages/api/src/auth/services/SudoVerificationService.tsx type SudoVerificationBody (line 33) | interface SudoVerificationBody { type SudoVerificationMethod (line 41) | type SudoVerificationMethod = 'password' | 'mfa' | 'sudo_token'; function userHasMfa (line 43) | function userHasMfa(user: {authenticatorTypes?: Set | null}): bo... type SudoVerificationResult (line 47) | interface SudoVerificationResult { type SudoVerificationOptions (line 53) | interface SudoVerificationOptions { function verifySudoMode (line 57) | async function verifySudoMode( function setSudoTokenHeader (line 126) | function setSudoTokenHeader( function requireSudoMode (line 147) | async function requireSudoMode( FILE: packages/api/src/auth/tests/AppStoreReviewerBypass.test.tsx function setUserSecurityFlags (line 31) | async function setUserSecurityFlags(harness: ApiTestHarness, userId: str... FILE: packages/api/src/auth/tests/AppStoreReviewerMultiFlag.test.tsx function setUserSecurityFlags (line 31) | async function setUserSecurityFlags(harness: ApiTestHarness, userId: str... FILE: packages/api/src/auth/tests/AuthSudoMFAMethods.test.tsx type MfaMethodsResponse (line 27) | interface MfaMethodsResponse { type BackupCodesResponse (line 34) | interface BackupCodesResponse { function generateTotpSecret (line 38) | function generateTotpSecret(): string { function generateTotpCode (line 61) | async function generateTotpCode(secret: string): Promise { FILE: packages/api/src/auth/tests/AuthSudoRequiredOperations.test.tsx type BackupCodesResponse (line 33) | interface BackupCodesResponse { type OAuth2ApplicationResponse (line 37) | interface OAuth2ApplicationResponse { function generateTotpSecret (line 47) | function generateTotpSecret(): string { function generateTotpCode (line 70) | async function generateTotpCode(secret: string): Promise { function loginWithTotp (line 76) | async function loginWithTotp(harness: ApiTestHarness, account: TestAccou... function createOAuth2BotApplication (line 100) | async function createOAuth2BotApplication( function deleteOAuth2Application (line 117) | async function deleteOAuth2Application(harness: ApiTestHarness, account:... FILE: packages/api/src/auth/tests/AuthSudoTOTPVerification.test.tsx type BackupCodesResponse (line 32) | interface BackupCodesResponse { constant SUDO_MODE_HEADER (line 36) | const SUDO_MODE_HEADER = 'X-Fluxer-Sudo-Mode-JWT'; function loginWithTotp (line 38) | async function loginWithTotp(harness: ApiTestHarness, account: TestAccou... FILE: packages/api/src/auth/tests/AuthTestUtils.tsx type RegisterResponse (line 27) | interface RegisterResponse { type LoginSuccessResponse (line 32) | interface LoginSuccessResponse { type LoginMfaResponse (line 37) | interface LoginMfaResponse { type LoginResponse (line 47) | type LoginResponse = type UserMeResponse (line 59) | interface UserMeResponse { type UserSettingsResponse (line 66) | interface UserSettingsResponse { type TestEmailRecord (line 70) | interface TestEmailRecord { type TestAccount (line 78) | interface TestAccount { function createUniqueEmail (line 86) | function createUniqueEmail(prefix = 'integration'): string { function createUniqueUsername (line 90) | function createUniqueUsername(prefix = 'itest'): string { function createAuthHarness (line 94) | async function createAuthHarness(): Promise { function registerUser (line 98) | async function registerUser(harness: ApiTestHarness, body: Record { function findLastTestEmail (line 190) | function findLastTestEmail(emails: Array, type: string)... function titleCaseEmail (line 198) | function titleCaseEmail(email: string): string { type BackupCodesResponse (line 204) | interface BackupCodesResponse { type MfaLoginResponse (line 208) | interface MfaLoginResponse { type PhoneVerifyResponse (line 212) | interface PhoneVerifyResponse { function createTotpSecret (line 218) | function createTotpSecret(): string { function generateTotpCode (line 223) | function generateTotpCode(secret: string, time = Date.now()): string { function totpCodeNow (line 245) | function totpCodeNow(secret: string): string { function totpCodeNext (line 249) | function totpCodeNext(secret: string): string { function seedMfaTicket (line 253) | async function seedMfaTicket( function setUserACLs (line 269) | async function setUserACLs( function unclaimAccount (line 281) | async function unclaimAccount(harness: ApiTestHarness, userId: string): ... type SsoConfig (line 285) | interface SsoConfig { function enableSso (line 298) | async function enableSso( function disableSso (line 319) | async function disableSso(harness: ApiTestHarness, token: string): Promi... function verifyTokenValid (line 330) | async function verifyTokenValid(harness: ApiTestHarness, token: string):... function verifySessionInvalidated (line 335) | async function verifySessionInvalidated(harness: ApiTestHarness, token: ... function createSessionFromLogin (line 340) | async function createSessionFromLogin(harness: ApiTestHarness, account: ... function listSessions (line 349) | async function listSessions(harness: ApiTestHarness, token: string): Pro... function logoutSession (line 353) | async function logoutSession(harness: ApiTestHarness, token: string): Pr... function changePassword (line 357) | async function changePassword( function requestPasswordReset (line 372) | async function requestPasswordReset(harness: ApiTestHarness, email: stri... function resetPassword (line 379) | async function resetPassword( function generateStrongPassword (line 390) | function generateStrongPassword(): string { function createFakeAuthToken (line 394) | function createFakeAuthToken(): string { function assertLoginFails (line 402) | async function assertLoginFails(harness: ApiTestHarness, email: string, ... function assertEndpointProtected (line 407) | async function assertEndpointProtected(harness: ApiTestHarness, path: st... function logoutSpecificSessions (line 412) | async function logoutSpecificSessions( FILE: packages/api/src/auth/tests/BouncedEmailRecoveryFlow.test.tsx type BouncedEmailRequestNewResponse (line 32) | interface BouncedEmailRequestNewResponse { type UserPrivateResponse (line 39) | interface UserPrivateResponse { function markEmailAsBounced (line 46) | async function markEmailAsBounced(harness: ApiTestHarness, account: Test... FILE: packages/api/src/auth/tests/DesktopHandoffCodeNormalization.test.tsx type HandoffInitiateResponse (line 25) | interface HandoffInitiateResponse { type HandoffStatusResponse (line 29) | interface HandoffStatusResponse { function validateHandoffCodeFormat (line 35) | function validateHandoffCodeFormat(code: string): boolean { FILE: packages/api/src/auth/tests/DesktopHandoffFlow.test.tsx type HandoffInitiateResponse (line 25) | interface HandoffInitiateResponse { type HandoffStatusResponse (line 29) | interface HandoffStatusResponse { type UserMeResponse (line 35) | interface UserMeResponse { function validateHandoffCodeFormat (line 42) | function validateHandoffCodeFormat(code: string): boolean { FILE: packages/api/src/auth/tests/DesktopHandoffUsage.test.tsx type HandoffInitiateResponse (line 25) | interface HandoffInitiateResponse { type HandoffStatusResponse (line 29) | interface HandoffStatusResponse { FILE: packages/api/src/auth/tests/EmailChangeFlow.test.tsx type EmailChangeStartResponse (line 32) | interface EmailChangeStartResponse { type EmailChangeVerifyOriginalResponse (line 40) | interface EmailChangeVerifyOriginalResponse { type EmailChangeRequestNewResponse (line 44) | interface EmailChangeRequestNewResponse { type EmailChangeVerifyNewResponse (line 51) | interface EmailChangeVerifyNewResponse { type UserPrivateResponse (line 55) | interface UserPrivateResponse { function startEmailChange (line 69) | async function startEmailChange( function verifyOriginalEmailChange (line 80) | async function verifyOriginalEmailChange( function requestNewEmailChange (line 95) | async function requestNewEmailChange( function verifyNewEmailChange (line 114) | async function verifyNewEmailChange( function unclaimAccount (line 135) | async function unclaimAccount(harness: ApiTestHarness, userId: string): ... FILE: packages/api/src/auth/tests/EmailChangeResendCooldown.test.tsx type EmailChangeStartResponse (line 32) | interface EmailChangeStartResponse { type EmailChangeVerifyOriginalResponse (line 40) | interface EmailChangeVerifyOriginalResponse { type EmailChangeRequestNewResponse (line 44) | interface EmailChangeRequestNewResponse { function startEmailChange (line 51) | async function startEmailChange( function verifyOriginalEmailChange (line 62) | async function verifyOriginalEmailChange( function requestNewEmailChange (line 76) | async function requestNewEmailChange( FILE: packages/api/src/auth/tests/EmailRevertFlow.test.tsx type EmailChangeStartResponse (line 33) | interface EmailChangeStartResponse { type EmailChangeVerifyOriginalResponse (line 41) | interface EmailChangeVerifyOriginalResponse { type EmailChangeRequestNewResponse (line 45) | interface EmailChangeRequestNewResponse { type EmailChangeVerifyNewResponse (line 52) | interface EmailChangeVerifyNewResponse { type UserPrivateResponse (line 56) | interface UserPrivateResponse { type EmailRevertResponse (line 70) | interface EmailRevertResponse { function startEmailChange (line 74) | async function startEmailChange( function verifyOriginalEmailChange (line 85) | async function verifyOriginalEmailChange( function requestNewEmailChange (line 99) | async function requestNewEmailChange( function verifyNewEmailChange (line 118) | async function verifyNewEmailChange( function uniquePassword (line 138) | function uniquePassword(): string { FILE: packages/api/src/auth/tests/EmailVerificationSuspiciousFlags.test.tsx type SuspiciousActivityErrorResponse (line 32) | interface SuspiciousActivityErrorResponse { FILE: packages/api/src/auth/tests/IPAuthResend.test.tsx constant HTTP_TOO_MANY_REQUESTS (line 34) | const HTTP_TOO_MANY_REQUESTS = 429; type IpAuthorizationResponse (line 36) | interface IpAuthorizationResponse { type ResendErrorResponse (line 45) | interface ResendErrorResponse { function triggerIpAuthorization (line 68) | async function triggerIpAuthorization(email: string, password: string, i... FILE: packages/api/src/auth/tests/LoginDisabledFlagRecovery.test.tsx type DataExistsResponse (line 26) | interface DataExistsResponse { FILE: packages/api/src/auth/tests/LoginSelfDeletedRecovery.test.tsx type DataExistsResponse (line 25) | interface DataExistsResponse { FILE: packages/api/src/auth/tests/MfaConsistency.test.tsx type BackupCodesResponse (line 39) | interface BackupCodesResponse { type LoginMfaResponse (line 43) | interface LoginMfaResponse { type MfaMethodsResponse (line 51) | interface MfaMethodsResponse { function loginWithTotp (line 58) | async function loginWithTotp(harness: ApiTestHarness, account: TestAccou... function setupWebAuthnOnlyUser (line 78) | async function setupWebAuthnOnlyUser( FILE: packages/api/src/auth/tests/MfaSmsEnableDisable.test.tsx function attachPhone (line 32) | async function attachPhone(harness: ApiTestHarness, account: TestAccount... FILE: packages/api/src/auth/tests/MfaSmsLoginFlow.test.tsx function setupPhoneAndSms (line 32) | async function setupPhoneAndSms(harness: ApiTestHarness, account: TestAc... FILE: packages/api/src/auth/tests/PasswordChange.test.tsx type ValidationErrorResponse (line 33) | interface ValidationErrorResponse { FILE: packages/api/src/auth/tests/RegistrationValidation.test.tsx type ValidationErrorResponse (line 30) | interface ValidationErrorResponse { FILE: packages/api/src/auth/tests/ResetPasswordRequiresMfa.test.tsx type MfaRequiredResponse (line 33) | interface MfaRequiredResponse { function waitForEmail (line 43) | async function waitForEmail(harness: ApiTestHarness, type: string, recip... FILE: packages/api/src/auth/tests/SsoFlow.test.tsx type SsoStartResponse (line 32) | interface SsoStartResponse { type SsoCompleteResponse (line 38) | interface SsoCompleteResponse { type SsoStatusResponse (line 44) | interface SsoStatusResponse { FILE: packages/api/src/auth/tests/SudoModeNegativeCases.test.tsx constant SUDO_MODE_HEADER (line 33) | const SUDO_MODE_HEADER = 'X-Fluxer-Sudo-Mode-JWT'; type ErrorResponse (line 35) | interface ErrorResponse { type BackupCodesResponse (line 40) | interface BackupCodesResponse { function generateTotpSecret (line 44) | function generateTotpSecret(): string { function generateTotpCode (line 67) | async function generateTotpCode(secret: string): Promise { function enableTotpForAccount (line 73) | async function enableTotpForAccount(harness: ApiTestHarness, account: Te... function loginWithTotp (line 85) | async function loginWithTotp(harness: ApiTestHarness, account: TestAccou... function getSudoTokenViaMfa (line 100) | async function getSudoTokenViaMfa(harness: ApiTestHarness, token: string... FILE: packages/api/src/auth/tests/UnclaimedClaimFlow.test.tsx type EmailChangeStartResponse (line 33) | interface EmailChangeStartResponse { type EmailChangeVerifyNewResponse (line 41) | interface EmailChangeVerifyNewResponse { type UserPrivateResponse (line 45) | interface UserPrivateResponse { type UserPatchResponse (line 59) | interface UserPatchResponse { FILE: packages/api/src/auth/tests/WebAuthnMfaConsistency.test.tsx type BackupCodesResponse (line 30) | interface BackupCodesResponse { type LoginMfaResponse (line 34) | interface LoginMfaResponse { type WebAuthnRegistrationOptions (line 42) | interface WebAuthnRegistrationOptions { type WebAuthnAuthenticationOptions (line 55) | interface WebAuthnAuthenticationOptions { FILE: packages/api/src/auth/tests/WebAuthnTestUtils.tsx type WebAuthnDevice (line 31) | interface WebAuthnDevice { type WebAuthnRegistrationOptions (line 41) | interface WebAuthnRegistrationOptions { type WebAuthnAuthenticationOptions (line 54) | interface WebAuthnAuthenticationOptions { type WebAuthnCredentialMetadata (line 64) | interface WebAuthnCredentialMetadata { type AuthenticatorAttestationResponse (line 69) | interface AuthenticatorAttestationResponse { type AuthenticatorAssertionResponse (line 75) | interface AuthenticatorAssertionResponse { type WebAuthnRegistrationResponse (line 82) | interface WebAuthnRegistrationResponse { type WebAuthnAuthenticationResponse (line 90) | interface WebAuthnAuthenticationResponse { function createTotpSecret (line 98) | function createTotpSecret(): string { function generateTotpCode (line 103) | function generateTotpCode(secret: string, time = Date.now()): string { function resolveWebAuthnOrigin (line 125) | function resolveWebAuthnOrigin(): {rpId: string; origin: string} { function createWebAuthnDevice (line 135) | function createWebAuthnDevice(): WebAuthnDevice { function encodeBase64URL (line 154) | function encodeBase64URL(data: Buffer): string { function decodeBase64URL (line 158) | function decodeBase64URL(value: string): Buffer { function padCoordinate (line 166) | function padCoordinate(bytes: Buffer): Buffer { function encodeCBOR (line 174) | function encodeCBOR(value: unknown): Uint8Array { function encodeCBORMap (line 229) | function encodeCBORMap(length: number, data: Buffer): Uint8Array { function encodeCBORArray (line 239) | function encodeCBORArray(length: number, data: Buffer): Uint8Array { function buildAttestationObject (line 249) | function buildAttestationObject(authData: Buffer): Buffer { function buildRegistrationAuthData (line 260) | function buildRegistrationAuthData(device: WebAuthnDevice): Buffer { function buildAssertionAuthData (line 314) | function buildAssertionAuthData(device: WebAuthnDevice, includeUV = true... function signWithPrivateKey (line 334) | function signWithPrivateKey(device: WebAuthnDevice, data: Buffer): Buffer { function createRegistrationResponse (line 348) | function createRegistrationResponse( function createAuthenticationResponse (line 384) | function createAuthenticationResponse( function createAuthenticationResponseWithoutUV (line 421) | function createAuthenticationResponseWithoutUV( FILE: packages/api/src/bluesky/BlueskyOAuthController.tsx constant BLUESKY_PROFILE_URL_RE (line 40) | const BLUESKY_PROFILE_URL_RE = /^https?:\/\/bsky\.app\/profile\//i; function normalizeBlueskyHandle (line 42) | function normalizeBlueskyHandle(input: string): string { function BlueskyOAuthController (line 49) | function BlueskyOAuthController(app: HonoApp) { FILE: packages/api/src/bluesky/BlueskyOAuthService.tsx class BlueskyOAuthService (line 36) | class BlueskyOAuthService implements IBlueskyOAuthService { method constructor (line 39) | private constructor(client: NodeOAuthClient) { method create (line 43) | static async create( method clientMetadata (line 91) | get clientMetadata(): Record { method jwks (line 95) | get jwks(): Record { method authorize (line 99) | async authorize(handle: string, userId: UserID): Promise { method restoreAndVerify (line 119) | async restoreAndVerify(did: string): Promise<{handle: string} | null> { method resolveHandle (line 136) | private async resolveHandle(did: string): Promise { method revoke (line 142) | async revoke(did: string): Promise { FILE: packages/api/src/bluesky/BlueskyOAuthStores.tsx constant STATE_PREFIX (line 23) | const STATE_PREFIX = 'bsky:oauth:state:'; constant SESSION_PREFIX (line 24) | const SESSION_PREFIX = 'bsky:oauth:session:'; function createKVStateStore (line 26) | function createKVStateStore(kvClient: IKVProvider, ttlSeconds: number) { function createKVSessionStore (line 42) | function createKVSessionStore(kvClient: IKVProvider, ttlSeconds: number) { FILE: packages/api/src/bluesky/IBlueskyOAuthService.tsx type BlueskyAuthorizeResult (line 22) | interface BlueskyAuthorizeResult { type BlueskyCallbackResult (line 26) | interface BlueskyCallbackResult { type IBlueskyOAuthService (line 32) | interface IBlueskyOAuthService { FILE: packages/api/src/bot/tests/BotTestUtils.tsx type BotAccount (line 26) | interface BotAccount { type TestBotAccount (line 31) | interface TestBotAccount { function createTestAccount (line 42) | async function createTestAccount(harness: ApiTestHarness): Promise<{ function createOAuth2BotApplication (line 64) | async function createOAuth2BotApplication( function createTestBotAccount (line 90) | async function createTestBotAccount( function authenticateWithBotToken (line 114) | async function authenticateWithBotToken( function resetBotToken (line 129) | async function resetBotToken( function getGatewayBot (line 152) | async function getGatewayBot( function authorizeBot (line 170) | async function authorizeBot( FILE: packages/api/src/channel/AttachmentDTOs.tsx type UploadedAttachment (line 25) | interface UploadedAttachment { type AttachmentToProcess (line 33) | interface AttachmentToProcess { function mergeUploadWithClientData (line 46) | function mergeUploadWithClientData( type AttachmentRequestData (line 64) | type AttachmentRequestData = AttachmentToProcess | ClientAttachmentReque... FILE: packages/api/src/channel/ChannelController.tsx function ChannelController (line 23) | function ChannelController(app: HonoApp) { FILE: packages/api/src/channel/ChannelMappers.tsx type MapChannelToResponseParams (line 32) | interface MapChannelToResponseParams { function serializeBaseChannelFields (line 39) | function serializeBaseChannelFields(channel: Channel) { function serializeMessageableFields (line 46) | function serializeMessageableFields(channel: Channel) { function serializeGuildChannelFields (line 53) | function serializeGuildChannelFields(channel: Channel) { function serializePositionableGuildChannelFields (line 62) | function serializePositionableGuildChannelFields(channel: Channel) { function serializePermissionOverwrites (line 69) | function serializePermissionOverwrites(channel: Channel): Array { method upsert (line 53) | async upsert(data: ChannelRow): Promise { method updateLastMessageId (line 57) | async updateLastMessageId(channelId: ChannelID, messageId: MessageID):... method delete (line 61) | async delete(channelId: ChannelID, guildId?: GuildID): Promise { method listMessages (line 65) | async listMessages( method getMessage (line 74) | async getMessage(channelId: ChannelID, messageId: MessageID): Promise<... method upsertMessage (line 78) | async upsertMessage(data: MessageRow, oldData?: MessageRow | null): Pr... method deleteMessage (line 82) | async deleteMessage( method bulkDeleteMessages (line 91) | async bulkDeleteMessages(channelId: ChannelID, messageIds: Array> { method countGuildChannels (line 195) | async countGuildChannels(guildId: GuildID): Promise { method lookupAttachmentByChannelAndFilename (line 199) | async lookupAttachmentByChannelAndFilename( method listChannelAttachments (line 207) | async listChannelAttachments(channelId: ChannelID): Promise { method anonymizeMessage (line 231) | async anonymizeMessage(channelId: ChannelID, messageId: MessageID, new... method deleteAllChannelMessages (line 235) | async deleteAllChannelMessages(channelId: ChannelID): Promise { method updateEmbeds (line 239) | async updateEmbeds(message: Message): Promise { FILE: packages/api/src/channel/EmbedTypes.tsx type RichEmbedMediaWithMetadata (line 22) | interface RichEmbedMediaWithMetadata extends RichEmbedMediaRequest { FILE: packages/api/src/channel/MessageMappers.tsx type MapMessageToResponseParams (line 52) | interface MapMessageToResponseParams { type MapEmbedFieldToResponseParams (line 69) | interface MapEmbedFieldToResponseParams { type MapMessageEmbedToResponseParams (line 73) | interface MapMessageEmbedToResponseParams { type MapMessageAttachmentToResponseParams (line 78) | interface MapMessageAttachmentToResponseParams { type MapReactionsParams (line 84) | interface MapReactionsParams { type MapMessageReferenceParams (line 89) | interface MapMessageReferenceParams { function mapEmbedFieldToResponse (line 93) | function mapEmbedFieldToResponse({field}: MapEmbedFieldToResponseParams)... function mapMessageEmbedChildToResponse (line 101) | function mapMessageEmbedChildToResponse({ function mapMessageEmbedToResponse (line 188) | function mapMessageEmbedToResponse({embed, mediaService}: MapMessageEmbe... function mapMessageAttachmentToResponse (line 198) | function mapMessageAttachmentToResponse({ function mapStickerItemToResponse (line 232) | function mapStickerItemToResponse(sticker: StickerItem): MessageStickerR... function mapReactions (line 240) | function mapReactions({reactions, currentUserId}: MapReactionsParams): A... function mapMessageReference (line 279) | function mapMessageReference({reference}: MapMessageReferenceParams): Me... function mapMessageToResponse (line 288) | async function mapMessageToResponse({ FILE: packages/api/src/channel/MessageTypes.tsx type BaseMessageRequestType (line 26) | interface BaseMessageRequestType extends Omit { function ChannelController (line 45) | function ChannelController(app: HonoApp) { FILE: packages/api/src/channel/controllers/MessageController.tsx function MessageController (line 47) | function MessageController(app: HonoApp) { FILE: packages/api/src/channel/controllers/MessageInteractionController.tsx function MessageInteractionController (line 45) | function MessageInteractionController(app: HonoApp) { FILE: packages/api/src/channel/controllers/ScheduledMessageController.tsx function ScheduledMessageController (line 31) | function ScheduledMessageController(app: HonoApp) { FILE: packages/api/src/channel/controllers/ScheduledMessageParsing.tsx type ScheduledMessageSchemaType (line 39) | type ScheduledMessageSchemaType = z.infer; function extractScheduleFields (line 41) | function extractScheduleFields(data: ScheduledMessageSchemaType): { function parseScheduledMessageInput (line 54) | async function parseScheduledMessageInput({ FILE: packages/api/src/channel/controllers/StreamController.tsx function StreamController (line 33) | function StreamController(app: HonoApp) { FILE: packages/api/src/channel/controllers/index.tsx function registerChannelControllers (line 28) | function registerChannelControllers(app: HonoApp) { FILE: packages/api/src/channel/repositories/ChannelDataRepository.tsx constant FETCH_CHANNEL_BY_ID (line 38) | const FETCH_CHANNEL_BY_ID = Channels.select({ constant FETCH_CHANNELS_BY_IDS (line 43) | const FETCH_CHANNELS_BY_IDS = Channels.select({ constant FETCH_GUILD_CHANNELS_BY_GUILD_ID (line 47) | const FETCH_GUILD_CHANNELS_BY_GUILD_ID = ChannelsByGuild.select({ constant DEFAULT_CAS_RETRIES (line 51) | const DEFAULT_CAS_RETRIES = 8; class ChannelDataRepository (line 53) | class ChannelDataRepository extends IChannelDataRepository { method findUnique (line 54) | async findUnique(channelId: ChannelID): Promise { method upsert (line 64) | async upsert(data: ChannelRow, oldData?: ChannelRow | null): Promise { method listGuildChannels (line 138) | async listGuildChannels(guildId: GuildID): Promise> { method countGuildChannels (line 154) | async countGuildChannels(guildId: GuildID): Promise { FILE: packages/api/src/channel/repositories/ChannelRepository.tsx class ChannelRepository (line 25) | class ChannelRepository extends IChannelRepositoryAggregate { method constructor (line 30) | constructor() { FILE: packages/api/src/channel/repositories/IMessageRepository.tsx type ListMessagesOptions (line 24) | interface ListMessagesOptions { FILE: packages/api/src/channel/repositories/MessageInteractionRepository.tsx constant FETCH_MESSAGE_REACTIONS_BY_CHANNEL_AND_MESSAGE_QUERY (line 37) | const FETCH_MESSAGE_REACTIONS_BY_CHANNEL_AND_MESSAGE_QUERY = MessageReac... constant CHECK_MESSAGE_HAS_REACTIONS_QUERY (line 45) | const CHECK_MESSAGE_HAS_REACTIONS_QUERY = MessageReactions.selectCql({ constant CHECK_USER_REACTION_EXISTS_QUERY (line 76) | const CHECK_USER_REACTION_EXISTS_QUERY = MessageReactions.selectCql({ class MessageInteractionRepository (line 89) | class MessageInteractionRepository extends IMessageInteractionRepository { method constructor (line 92) | constructor(messageRepository: MessageRepository) { method listChannelPins (line 97) | async listChannelPins( method addChannelPin (line 118) | async addChannelPin(channelId: ChannelID, messageId: MessageID, pinned... method removeChannelPin (line 128) | async removeChannelPin(channelId: ChannelID, messageId: MessageID): Pr... method listMessageReactions (line 144) | async listMessageReactions(channelId: ChannelID, messageId: MessageID)... method listReactionUsers (line 154) | async listReactionUsers( method addReaction (line 186) | async addReaction( method removeReaction (line 212) | async removeReaction( method removeAllReactions (line 237) | async removeAllReactions(channelId: ChannelID, messageId: MessageID): ... method removeAllReactionsForEmoji (line 256) | async removeAllReactionsForEmoji( method countReactionUsers (line 286) | async countReactionUsers( method countUniqueReactions (line 296) | async countUniqueReactions(channelId: ChannelID, messageId: MessageID)... method checkUserReactionExists (line 308) | async checkUserReactionExists( method setHasReaction (line 330) | async setHasReaction(channelId: ChannelID, messageId: MessageID, hasRe... method messageHasAnyReactions (line 347) | private async messageHasAnyReactions(channelId: ChannelID, messageId: ... FILE: packages/api/src/channel/repositories/MessageRepository.tsx class MessageRepository (line 30) | class MessageRepository extends IMessageRepository { method constructor (line 37) | constructor(channelDataRepo: ChannelDataRepository) { method listMessages (line 46) | async listMessages( method getMessage (line 56) | async getMessage(channelId: ChannelID, messageId: MessageID): Promise<... method upsertMessage (line 60) | async upsertMessage(data: MessageRow, oldData?: MessageRow | null): Pr... method deleteMessage (line 68) | async deleteMessage( method bulkDeleteMessages (line 77) | async bulkDeleteMessages(channelId: ChannelID, messageIds: Array { method listMessagesByAuthor (line 85) | async listMessagesByAuthor( method deleteMessagesByAuthor (line 93) | async deleteMessagesByAuthor( method backfillMessagesByAuthorIndex (line 101) | async backfillMessagesByAuthorIndex(authorId: UserID): Promise { method anonymizeMessage (line 105) | async anonymizeMessage(channelId: ChannelID, messageId: MessageID, new... method authorHasMessage (line 109) | async authorHasMessage(authorId: UserID, channelId: ChannelID, message... method lookupAttachmentByChannelAndFilename (line 113) | async lookupAttachmentByChannelAndFilename( method listChannelAttachments (line 121) | async listChannelAttachments(channelId: ChannelID): Promise { FILE: packages/api/src/channel/repositories/message/BucketScanEngine.tsx type BucketScanDirection (line 20) | enum BucketScanDirection { type BucketScanTraceKind (line 25) | enum BucketScanTraceKind { type BucketScanTraceEvent (line 36) | interface BucketScanTraceEvent { type BucketScanIndexQuery (line 49) | interface BucketScanIndexQuery { type BucketScanBucketFetchResult (line 55) | interface BucketScanBucketFetchResult { type BucketScanDeps (line 60) | interface BucketScanDeps { type BucketScanOptions (line 69) | interface BucketScanOptions { type BucketScanResult (line 78) | interface BucketScanResult { function scanBucketsWithIndex (line 82) | async function scanBucketsWithIndex( FILE: packages/api/src/channel/repositories/message/MessageAttachmentRepository.tsx constant LOOKUP_ATTACHMENT_BY_CHANNEL_AND_FILENAME_QUERY (line 25) | const LOOKUP_ATTACHMENT_BY_CHANNEL_AND_FILENAME_QUERY = AttachmentLookup... constant LIST_CHANNEL_ATTACHMENTS_QUERY (line 34) | const LIST_CHANNEL_ATTACHMENTS_QUERY = AttachmentLookup.selectCql({ class MessageAttachmentRepository (line 38) | class MessageAttachmentRepository { method lookupAttachmentByChannelAndFilename (line 39) | async lookupAttachmentByChannelAndFilename( method listChannelAttachments (line 52) | async listChannelAttachments(channelId: ChannelID): Promise { method anonymizeMessage (line 143) | async anonymizeMessage(channelId: ChannelID, messageId: MessageID, new... FILE: packages/api/src/channel/repositories/message/MessageDataRepository.tsx function getLogger (line 50) | function getLogger() { constant DEFAULT_MESSAGE_LIMIT (line 54) | const DEFAULT_MESSAGE_LIMIT = 50; constant DEFAULT_BUCKET_INDEX_PAGE_SIZE (line 55) | const DEFAULT_BUCKET_INDEX_PAGE_SIZE = 200; constant DEFAULT_CAS_RETRIES (line 56) | const DEFAULT_CAS_RETRIES = 8; constant LEGACY_BUCKETS_TO_CHECK (line 57) | const LEGACY_BUCKETS_TO_CHECK = [0]; constant FETCH_MESSAGE_BY_CHANNEL_BUCKET_AND_MESSAGE_ID (line 59) | const FETCH_MESSAGE_BY_CHANNEL_BUCKET_AND_MESSAGE_ID = Messages.select({ constant FETCH_CHANNEL_STATE (line 64) | const FETCH_CHANNEL_STATE = ChannelState.select({ class MessageDataRepository (line 69) | class MessageDataRepository { method listMessages (line 70) | async listMessages( method makeFetchMessagesBefore (line 101) | private makeFetchMessagesBefore(limit: number) { method makeFetchMessagesAfterDesc (line 113) | private makeFetchMessagesAfterDesc(limit: number) { method makeFetchMessagesBetween (line 125) | private makeFetchMessagesBetween(limit: number) { method makeFetchMessagesLatestDesc (line 138) | private makeFetchMessagesLatestDesc(limit: number) { method makeFetchMessagesAfterAsc (line 146) | private makeFetchMessagesAfterAsc(limit: number) { method makeFetchMessagesOldestAsc (line 158) | private makeFetchMessagesOldestAsc(limit: number) { method listMessagesLatest (line 166) | private async listMessagesLatest(channelId: ChannelID, limit: number):... method listMessagesBefore (line 180) | private async listMessagesBefore( method listMessagesAfter (line 213) | private async listMessagesAfter( method listMessagesBetween (line 259) | private async listMessagesBetween( method scanBucketsDescForMessages (line 301) | private async scanBucketsDescForMessages( method scanBucketsAscForMessages (line 380) | private async scanBucketsAscForMessages( method fetchRowsForBucketAsc (line 435) | private async fetchRowsForBucketAsc( method fetchRowsForBucket (line 471) | private async fetchRowsForBucket( method touchBucketWithMessages (line 539) | private async touchBucketWithMessages(channelId: ChannelID, bucket: nu... method markBucketEmpty (line 560) | private async markBucketEmpty(channelId: ChannelID, bucket: number): P... method touchChannelHasMessages (line 581) | private async touchChannelHasMessages(channelId: ChannelID): Promise { method attemptBucketReadRepair (line 854) | private async attemptBucketReadRepair( method repairAndMapMessages (line 898) | private async repairAndMapMessages(channelId: ChannelID, messages: Arr... FILE: packages/api/src/channel/repositories/message/MessageDeletionRepository.tsx constant BULK_DELETE_BATCH_SIZE (line 37) | const BULK_DELETE_BATCH_SIZE = 100; constant POST_DELETE_BUCKET_CHECK_LIMIT (line 38) | const POST_DELETE_BUCKET_CHECK_LIMIT = 25; constant HAS_ANY_MESSAGE_IN_BUCKET (line 40) | const HAS_ANY_MESSAGE_IN_BUCKET = Messages.select({ constant FETCH_CHANNEL_STATE (line 46) | const FETCH_CHANNEL_STATE = ChannelState.select({ constant LIST_BUCKETS_DESC (line 51) | const LIST_BUCKETS_DESC = ChannelMessageBuckets.select({ constant FETCH_LATEST_MESSAGE_ID_IN_BUCKET (line 58) | const FETCH_LATEST_MESSAGE_ID_IN_BUCKET = Messages.select({ class MessageDeletionRepository (line 65) | class MessageDeletionRepository { method constructor (line 66) | constructor(private messageDataRepo: MessageDataRepository) {} method addMessageDeletionBatchQueries (line 68) | private addMessageDeletionBatchQueries( method markBucketEmpty (line 133) | private async markBucketEmpty(channelId: ChannelID, bucket: number): P... method isBucketEmpty (line 154) | private async isBucketEmpty(channelId: ChannelID, bucket: number): Pro... method reconcileChannelStateIfNeeded (line 164) | private async reconcileChannelStateIfNeeded( method postDeleteMaintenance (line 221) | private async postDeleteMaintenance( method deleteMessage (line 241) | async deleteMessage( method bulkDeleteMessages (line 257) | async bulkDeleteMessages(channelId: ChannelID, messageIds: Array { FILE: packages/api/src/channel/services/AttachmentUploadService.tsx type DeleteAttachmentParams (line 55) | interface DeleteAttachmentParams { type UploadFormDataAttachmentsParams (line 63) | interface UploadFormDataAttachmentsParams { class AttachmentUploadService (line 71) | class AttachmentUploadService { method constructor (line 72) | constructor( method uploadFormDataAttachments (line 94) | async uploadFormDataAttachments({ method performUploadFormDataAttachments (line 110) | private async performUploadFormDataAttachments({ method deleteAttachment (line 206) | async deleteAttachment({ method purgeChannelAttachments (line 279) | async purgeChannelAttachments(channel: Channel): Promise { method resolveContentType (line 304) | private resolveContentType(_file: File, normalizedFilename: string): s... FILE: packages/api/src/channel/services/AuthenticatedChannel.tsx type AuthenticatedChannel (line 24) | interface AuthenticatedChannel { FILE: packages/api/src/channel/services/BaseChannelAuthService.tsx type ChannelAuthOptions (line 42) | interface ChannelAuthOptions { method constructor (line 51) | constructor( method getChannelAuthenticated (line 63) | async getChannelAuthenticated({ method isPersonalNotesChannel (line 87) | isPersonalNotesChannel({userId, channelId}: {userId: UserID; channelId: ... method getRealPersonalNotesChannelAuth (line 91) | protected async getRealPersonalNotesChannelAuth({ method getDMChannelAuth (line 115) | protected async getDMChannelAuth({ method validateDMSendPermissions (line 146) | async validateDMSendPermissions({channelId, userId}: {channelId: Channel... method getGuildChannelAuth (line 158) | protected async getGuildChannelAuth({ method throwGuildAccessError (line 208) | protected throwGuildAccessError(): never { method fetchGuildDataOrThrow (line 215) | private async fetchGuildDataOrThrow(params: {guildId: GuildID; userId: U... method handleGuildAccessError (line 225) | private async handleGuildAccessError(error: unknown, guildId: GuildID): ... method guildExists (line 235) | private async guildExists(guildId: GuildID): Promise { FILE: packages/api/src/channel/services/CallService.tsx constant FALLBACK_VOICE_REGION (line 46) | const FALLBACK_VOICE_REGION = 'us-east'; class CallService (line 48) | class CallService { method constructor (line 51) | constructor( method checkCallEligibility (line 68) | async checkCallEligibility({ method createOrGetCall (line 163) | async createOrGetCall({ method updateCall (line 287) | async updateCall({ method ringCallRecipients (line 316) | async ringCallRecipients({ method stopRingingCallRecipients (line 469) | async stopRingingCallRecipients({ method selectOptimalRegionForCall (line 497) | private selectOptimalRegionForCall(userId: UserID, latitude?: string, ... method ensureCallRegionAccessible (line 536) | private ensureCallRegionAccessible(userId: UserID, region: string): vo... method ensureRequesterIsGroupDmRecipient (line 557) | private ensureRequesterIsGroupDmRecipient({ method validateExplicitRingRecipients (line 575) | private validateExplicitRingRecipients({ method updateCallMessageEnded (line 593) | async updateCallMessageEnded({ FILE: packages/api/src/channel/services/ChannelDataService.tsx type GuildChannelUpdateRequest (line 54) | type GuildChannelUpdateRequest = Exclude; class ChannelDataService (line 57) | class ChannelDataService { method constructor (line 63) | constructor( method getChannel (line 124) | async getChannel({userId, channelId}: {userId: UserID; channelId: Chan... method getChannelAuthenticated (line 128) | async getChannelAuthenticated({ method getPublicChannelData (line 138) | async getPublicChannelData(channelId: ChannelID): Promise { method getChannelSystem (line 147) | async getChannelSystem(channelId: ChannelID): Promise { method editChannel (line 151) | async editChannel({ method deleteChannel (line 234) | async deleteChannel({ method getAvailableRtcRegions (line 246) | async getAvailableRtcRegions({ method updateGroupDmChannel (line 256) | async updateGroupDmChannel({ method setChannelPermissionOverwrite (line 284) | async setChannelPermissionOverwrite(params: { method deleteChannelPermissionOverwrite (line 294) | async deleteChannelPermissionOverwrite(params: { FILE: packages/api/src/channel/services/ChannelRequestService.tsx class ChannelRequestService (line 29) | class ChannelRequestService { method constructor (line 30) | constructor( method getChannelResponse (line 35) | async getChannelResponse(params: { method listRtcRegions (line 52) | async listRtcRegions(params: {userId: UserID; channelId: ChannelID}) { method updateChannel (line 65) | async updateChannel(params: { method deleteChannel (line 86) | async deleteChannel(params: { FILE: packages/api/src/channel/services/ChannelService.tsx class ChannelService (line 59) | class ChannelService { method constructor (line 67) | constructor( method getChannel (line 205) | async getChannel(...args: Parameters) { method getChannelAuthenticated (line 209) | async getChannelAuthenticated(...args: Parameters) { method sendWebhookMessage (line 241) | async sendWebhookMessage(...args: Parameters) { method deleteMessage (line 261) | async deleteMessage(...args: Parameters) { method getMessages (line 269) | async getMessages(...args: Parameters) { method bulkDeleteMessages (line 273) | async bulkDeleteMessages(...args: Parameters) { method ringCallRecipients (line 393) | async ringCallRecipients(...args: Parameters; userId:... FILE: packages/api/src/channel/services/GroupDmService.tsx class GroupDmService (line 35) | class GroupDmService { method constructor (line 38) | constructor( method addRecipientToChannel (line 64) | async addRecipientToChannel(params: { method addRecipientViaInvite (line 73) | async addRecipientViaInvite(params: { method removeRecipientFromChannel (line 82) | async removeRecipientFromChannel(params: { method updateGroupDmChannel (line 92) | async updateGroupDmChannel(params: { FILE: packages/api/src/channel/services/MessageInteractionService.tsx class MessageInteractionService (line 47) | class MessageInteractionService { method constructor (line 53) | constructor( method startTyping (line 94) | async startTyping({userId, channelId}: {userId: UserID; channelId: Cha... method ackMessage (line 100) | async ackMessage({ method deleteReadState (line 117) | async deleteReadState({userId, channelId}: {userId: UserID; channelId:... method ackPins (line 121) | async ackPins({ method getChannelPins (line 134) | async getChannelPins({ method pinMessage (line 151) | async pinMessage({ method unpinMessage (line 169) | async unpinMessage({ method getUsersForReaction (line 187) | async getUsersForReaction({ method addReaction (line 206) | async addReaction({ method removeReaction (line 224) | async removeReaction({ method removeOwnReaction (line 244) | async removeOwnReaction({ method removeAllReactionsForEmoji (line 262) | async removeAllReactionsForEmoji({ method removeAllReactions (line 277) | async removeAllReactions({ method getMessageReactions (line 290) | async getMessageReactions({ method setHasReaction (line 303) | async setHasReaction(channelId: ChannelID, messageId: MessageID, hasRe... method getChannelAuthenticated (line 307) | async getChannelAuthenticated({userId, channelId}: {userId: UserID; ch... method dispatchMessageUpdate (line 311) | async dispatchMessageUpdate({ method dispatchEvent (line 337) | private async dispatchEvent(params: {channel: Channel; event: GatewayD... FILE: packages/api/src/channel/services/MessageService.tsx class MessageService (line 56) | class MessageService { method constructor (line 69) | constructor( method sendMessage (line 150) | async sendMessage({ method sendWebhookMessage (line 164) | async sendWebhookMessage({ method validateMessageCanBeSent (line 180) | async validateMessageCanBeSent({ method editMessage (line 192) | async editMessage({ method deleteMessage (line 208) | async deleteMessage({ method getMessage (line 222) | async getMessage({ method getMessages (line 234) | async getMessages({ method bulkDeleteMessages (line 252) | async bulkDeleteMessages({ method deleteUserMessagesInGuild (line 264) | async deleteUserMessagesInGuild({ method sendJoinSystemMessage (line 276) | async sendJoinSystemMessage({ method searchMessages (line 293) | async searchMessages({ method anonymizeMessagesByAuthor (line 307) | async anonymizeMessagesByAuthor(originalAuthorId: UserID, newAuthorId:... method getMessagePersistenceService (line 311) | getMessagePersistenceService(): MessagePersistenceService { FILE: packages/api/src/channel/services/ScheduledMessageService.tsx constant SCHEDULED_MESSAGE_TTL_SECONDS (line 40) | const SCHEDULED_MESSAGE_TTL_SECONDS = seconds('31 days'); constant DEFAULT_TIMEZONE (line 42) | const DEFAULT_TIMEZONE = 'UTC'; constant WORKER_TASK_NAME (line 43) | const WORKER_TASK_NAME = 'sendScheduledMessage'; type ScheduleParams (line 45) | interface ScheduleParams { type UpdateScheduleParams (line 53) | interface UpdateScheduleParams extends ScheduleParams { type SendScheduledMessageWorkerPayload (line 58) | interface SendScheduledMessageWorkerPayload extends WorkerJobPayload { class ScheduledMessageService (line 64) | class ScheduledMessageService { method constructor (line 65) | constructor( method listScheduledMessages (line 72) | async listScheduledMessages(userId: UserID): Promise { function createSnowflake (line 211) | async function createSnowflake(snowflakeService: SnowflakeService): Prom... function toScheduledPayload (line 215) | function toScheduledPayload(data: MessageRequest): ScheduledMessagePaylo... FILE: packages/api/src/channel/services/StreamPreviewService.tsx constant PREVIEW_TTL_SECONDS (line 31) | const PREVIEW_TTL_SECONDS = seconds('1 day'); type StreamPreviewMeta (line 33) | interface StreamPreviewMeta { class StreamPreviewService (line 42) | class StreamPreviewService { method constructor (line 43) | constructor( method getCacheKey (line 48) | private getCacheKey(streamKey: string): string { method getObjectKey (line 52) | private getObjectKey(streamKey: string): string { method assertJpeg (line 56) | private assertJpeg(buffer: Uint8Array, contentType?: string) { method looksLikeJpeg (line 67) | private looksLikeJpeg(buffer: Uint8Array): boolean { method uploadPreview (line 77) | async uploadPreview(params: { method getPreview (line 118) | async getPreview(streamKey: string): Promise<{buffer: Uint8Array; cont... FILE: packages/api/src/channel/services/StreamService.tsx type ParsedStreamKey (line 35) | type ParsedStreamKey = {scope: 'guild' | 'dm'; guildId?: string; channel... class StreamService (line 37) | class StreamService { method constructor (line 38) | constructor( method parseStreamKey (line 45) | private parseStreamKey(streamKey: string): ParsedStreamKey | null { method getParsedStreamKeyOrThrow (line 58) | private getParsedStreamKeyOrThrow(streamKey: string): ParsedStreamKey { method getChannelIdFromParsedKeyOrThrow (line 66) | private getChannelIdFromParsedKeyOrThrow(parsedKey: ParsedStreamKey): ... method assertStreamChannelAccess (line 74) | private async assertStreamChannelAccess(params: { method updateStreamRegion (line 106) | async updateStreamRegion(params: {streamKey: string; region?: string})... method getPreview (line 114) | async getPreview(params: { method uploadPreview (line 134) | async uploadPreview(params: { FILE: packages/api/src/channel/services/channel_data/ChannelAuthService.tsx class ChannelAuthService (line 22) | class ChannelAuthService extends BaseChannelAuthService { FILE: packages/api/src/channel/services/channel_data/ChannelOperationsService.tsx type ChannelUpdateData (line 59) | interface ChannelUpdateData { class ChannelOperationsService (line 80) | class ChannelOperationsService { method constructor (line 81) | constructor( method getChannel (line 97) | async getChannel({userId, channelId}: {userId: UserID; channelId: Chan... method getPublicChannelData (line 102) | async getPublicChannelData(channelId: ChannelID) { method getChannelMemberCount (line 108) | async getChannelMemberCount(channelId: ChannelID): Promise { method getChannelSystem (line 114) | async getChannelSystem(channelId: ChannelID): Promise { method editChannel (line 118) | async editChannel({ method deleteChannel (line 323) | async deleteChannel({ method getAvailableRtcRegions (line 438) | async getAvailableRtcRegions({ method propagatePermissionsToSyncedChildren (line 471) | private async propagatePermissionsToSyncedChildren({ method arePermissionsEqual (line 510) | private arePermissionsEqual( method handleRtcRegionSwitch (line 532) | private async handleRtcRegionSwitch({guildId, channelId}: {guildId: Gu... method ensureCategoryHasCapacity (line 543) | private async ensureCategoryHasCapacity(params: {guildId: GuildID; cat... method setChannelPermissionOverwrite (line 561) | async setChannelPermissionOverwrite(params: { method deleteChannelPermissionOverwrite (line 608) | async deleteChannelPermissionOverwrite(params: { FILE: packages/api/src/channel/services/channel_data/ChannelUtilsService.tsx class ChannelUtilsService (line 37) | class ChannelUtilsService { method constructor (line 38) | constructor( method purgeChannelAttachments (line 47) | async purgeChannelAttachments(channel: Channel): Promise { method purgeMessageAttachments (line 70) | private async purgeMessageAttachments(message: Message): Promise { method dispatchEvent (line 90) | private async dispatchEvent(params: {channel: Channel; event: GatewayD... method dispatchChannelUpdate (line 110) | async dispatchChannelUpdate({channel, requestCache}: {channel: Channel... method dispatchChannelDelete (line 143) | async dispatchChannelDelete({channel, requestCache}: {channel: Channel... method dispatchDmChannelDelete (line 158) | async dispatchDmChannelDelete({ method dispatchMessageCreate (line 179) | async dispatchMessageCreate({ FILE: packages/api/src/channel/services/channel_data/GroupDmUpdateService.tsx class GroupDmUpdateService (line 36) | class GroupDmUpdateService { method constructor (line 37) | constructor( method updateGroupDmChannel (line 45) | async updateGroupDmChannel({ FILE: packages/api/src/channel/services/group_dm/GroupDmHelpers.tsx function dispatchChannelDelete (line 35) | async function dispatchChannelDelete({ function dispatchMessageCreate (line 61) | async function dispatchMessageCreate({ function dispatchEvent (line 107) | async function dispatchEvent(params: { FILE: packages/api/src/channel/services/group_dm/GroupDmOperationsService.tsx class GroupDmOperationsService (line 55) | class GroupDmOperationsService { method constructor (line 58) | constructor( method addRecipientToChannel (line 73) | async addRecipientToChannel({ method addRecipientViaInvite (line 113) | async addRecipientViaInvite({ method removeRecipientFromChannel (line 210) | async removeRecipientFromChannel({ method updateGroupDmChannel (line 336) | async updateGroupDmChannel(params: { method syncGroupDmRecipientsForUser (line 348) | private async syncGroupDmRecipientsForUser(userId: UserID): Promise): ... method processAttachment (line 248) | private async processAttachment(params: ProcessAttachmentParams): Prom... method scanMalware (line 401) | private async scanMalware(attachment: AttachmentToProcess): Promise<{i... method deleteUploadObject (line 412) | private deleteUploadObject(bucket: string, key: string): void { FILE: packages/api/src/channel/services/message/DmScopeUtils.tsx type DmSearchScope (line 24) | type DmSearchScope = 'all_dms' | 'open_dms'; type DmScopeOptions (line 25) | interface DmScopeOptions { function getDmChannelIdsForScope (line 32) | async function getDmChannelIdsForScope({ FILE: packages/api/src/channel/services/message/MessageAnonymizationService.tsx class MessageAnonymizationService (line 24) | class MessageAnonymizationService { method constructor (line 25) | constructor(private channelRepository: IChannelRepositoryAggregate) {} method anonymizeMessagesByAuthor (line 27) | async anonymizeMessagesByAuthor(originalAuthorId: UserID, newAuthorId:... FILE: packages/api/src/channel/services/message/MessageChannelAuthService.tsx class MessageChannelAuthService (line 26) | class MessageChannelAuthService extends BaseChannelAuthService { method checkGuildVerification (line 32) | async checkGuildVerification({ FILE: packages/api/src/channel/services/message/MessageContentService.tsx class MessageContentService (line 32) | class MessageContentService { method constructor (line 33) | constructor( method sanitizeCustomEmojis (line 40) | async sanitizeCustomEmojis(params: { method isNSFWContentAllowed (line 61) | isNSFWContentAllowed(params: { FILE: packages/api/src/channel/services/message/MessageDeleteService.tsx type MessageDeleteServiceDeps (line 48) | interface MessageDeleteServiceDeps { class MessageDeleteService (line 59) | class MessageDeleteService { method constructor (line 62) | constructor(private readonly deps: MessageDeleteServiceDeps) { method deleteMessage (line 66) | async deleteMessage({ method bulkDeleteMessages (line 137) | async bulkDeleteMessages({ method performBulkDelete (line 157) | private async performBulkDelete({ method deleteUserMessagesInGuild (line 211) | async deleteUserMessagesInGuild({ FILE: packages/api/src/channel/services/message/MessageDispatchService.tsx class MessageDispatchService (line 35) | class MessageDispatchService { method constructor (line 36) | constructor( method dispatchEvent (line 44) | async dispatchEvent(params: {channel: Channel; event: GatewayDispatchE... method dispatchMessageCreate (line 66) | async dispatchMessageCreate({ method dispatchMessageUpdate (line 107) | async dispatchMessageUpdate({ method dispatchMessageDelete (line 142) | async dispatchMessageDelete({ method dispatchMessageDeleteBulk (line 163) | async dispatchMessageDeleteBulk({ FILE: packages/api/src/channel/services/message/MessageEditService.tsx type MessageEditServiceDeps (line 42) | interface MessageEditServiceDeps { class MessageEditService (line 55) | class MessageEditService { method constructor (line 56) | constructor(private readonly deps: MessageEditServiceDeps) {} method editMessage (line 58) | async editMessage({ FILE: packages/api/src/channel/services/message/MessageEmbedAttachmentResolver.tsx type ProcessedAttachment (line 28) | interface ProcessedAttachment { type RichEmbedRequestWithMetadata (line 41) | interface RichEmbedRequestWithMetadata extends Omit): void { function validateTotalAttachmentSize (line 89) | function validateTotalAttachmentSize( function makeAttachmentCdnKey (line 106) | function makeAttachmentCdnKey( function makeAttachmentCdnUrl (line 114) | function makeAttachmentCdnUrl( function cloneAttachments (line 122) | async function cloneAttachments( function createMessageSnapshotsForForward (line 166) | async function createMessageSnapshotsForForward( function purgeMessageAttachments (line 245) | async function purgeMessageAttachments( function isOperationDisabled (line 269) | function isOperationDisabled(guild: GuildResponse | null, operation: num... function isMessageEmpty (line 274) | function isMessageEmpty(message: Message, excludingAttachments = false):... function collectMessageAttachments (line 282) | function collectMessageAttachments(message: Message): Array { FILE: packages/api/src/channel/services/message/MessageMentionService.tsx type MentionData (line 42) | interface MentionData { class MessageMentionService (line 50) | class MessageMentionService { method constructor (line 51) | constructor( method extractMentions (line 57) | extractMentions({ method applyAllowedMentions (line 132) | private applyAllowedMentions({ method filterMentions (line 198) | private filterMentions({ method validateMentions (line 225) | async validateMentions({ method handleMentionTasks (line 255) | async handleMentionTasks(params: { FILE: packages/api/src/channel/services/message/MessageOperationsHelpers.tsx type MessageOperationsHelpersDeps (line 38) | interface MessageOperationsHelpersDeps { class MessageOperationsHelpers (line 46) | class MessageOperationsHelpers { method constructor (line 47) | constructor(private readonly deps: MessageOperationsHelpersDeps) {} method findExistingMessage (line 49) | async findExistingMessage({ method processFavoriteMeme (line 77) | async processFavoriteMeme({ FILE: packages/api/src/channel/services/message/MessageOperationsService.tsx class MessageOperationsService (line 49) | class MessageOperationsService { method constructor (line 55) | constructor( method sendMessage (line 127) | async sendMessage({ method sendWebhookMessage (line 141) | async sendWebhookMessage({ method validateMessageCanBeSent (line 157) | async validateMessageCanBeSent({ method editMessage (line 169) | async editMessage({ method deleteMessage (line 185) | async deleteMessage({ method bulkDeleteMessages (line 199) | async bulkDeleteMessages({ method deleteUserMessagesInGuild (line 211) | async deleteUserMessagesInGuild({ FILE: packages/api/src/channel/services/message/MessagePersistenceService.tsx type CreateMessageParams (line 70) | interface CreateMessageParams { class MessagePersistenceService (line 104) | class MessagePersistenceService { method constructor (line 111) | constructor( method getEmbedAttachmentResolver (line 146) | getEmbedAttachmentResolver(): MessageEmbedAttachmentResolver { method createMessage (line 150) | async createMessage(params: CreateMessageParams): Promise { method sanitizeContentIfNeeded (line 265) | private async sanitizeContentIfNeeded(params: CreateMessageParams, aut... method processAttachments (line 280) | private async processAttachments( method processStickers (line 301) | private async processStickers( method runPostPersistenceOperations (line 317) | private async runPostPersistenceOperations(context: { method updateMessage (line 372) | async updateMessage(params: { method handleNonAuthorEdit (line 522) | async handleNonAuthorEdit(params: { method createSystemMessage (line 601) | async createSystemMessage(params: { FILE: packages/api/src/channel/services/message/MessageProcessingService.tsx type RecipientOpenState (line 41) | interface RecipientOpenState { class MessageProcessingService (line 46) | class MessageProcessingService { method constructor (line 47) | constructor( method processMessageAfterCreation (line 56) | async processMessageAfterCreation(params: { method updateDMRecipients (line 75) | async updateDMRecipients({ method batchCheckDmChannelOpen (line 108) | private async batchCheckDmChannelOpen( method openDmAndDispatch (line 120) | private async openDmAndDispatch(params: { method updateReadStates (line 145) | async updateReadStates({ method fetchMessagesAround (line 170) | async fetchMessagesAround({ method handleMentions (line 233) | async handleMentions(params: { method handleNonAuthorEdit (line 282) | async handleNonAuthorEdit(params: { FILE: packages/api/src/channel/services/message/MessageRequestParser.tsx constant FIELD_NAME_PATTERN (line 45) | const FIELD_NAME_PATTERN = /^files\[(\d+)\]$/; type ParseMultipartMessageDataOptions (line 47) | interface ParseMultipartMessageDataOptions { function parseMultipartMessageData (line 52) | async function parseMultipartMessageData( function resolveMessageAttachmentLimit (line 236) | async function resolveMessageAttachmentLimit(ctx: Context, user... FILE: packages/api/src/channel/services/message/MessageRequestService.tsx class MessageRequestService (line 39) | class MessageRequestService { method constructor (line 42) | constructor( method listMessages (line 49) | async listMessages(params: { method getMessage (line 78) | async getMessage(params: { method sendMessage (line 100) | async sendMessage(params: { method editMessage (line 131) | async editMessage(params: { method mapMessage (line 155) | private async mapMessage(params: { method buildAttachmentDecayMap (line 194) | private async buildAttachmentDecayMap( FILE: packages/api/src/channel/services/message/MessageRetrievalService.tsx class MessageRetrievalService (line 48) | class MessageRetrievalService { method constructor (line 49) | constructor( method isMessageAfterCutoff (line 60) | private isMessageAfterCutoff(messageId: MessageID, cutoffIso: string):... method canAccessMessage (line 66) | private async canAccessMessage(authChannel: AuthenticatedChannel, mess... method getMessage (line 83) | async getMessage({ method getMessages (line 115) | async getMessages({ method searchMessages (line 166) | async searchMessages({ method extendAttachments (line 288) | private async extendAttachments(messages: Array): Promise { method deleteMessageIndex (line 84) | async deleteMessageIndex(messageId: MessageID): Promise { method buildSearchFilters (line 97) | buildSearchFilters(channelId: ChannelID, searchParams: MessageSearchRe... method triggerChannelIndexing (line 167) | async triggerChannelIndexing(channelId: ChannelID): Promise { FILE: packages/api/src/channel/services/message/MessageSendService.tsx type MessageSendServiceDeps (line 84) | interface MessageSendServiceDeps { class MessageSendService (line 103) | class MessageSendService { method constructor (line 104) | constructor(private readonly deps: MessageSendServiceDeps) {} method attachmentsToProcess (line 106) | private attachmentsToProcess(attachments?: Array {} function setupUsersWithMutualGuild (line 55) | async function setupUsersWithMutualGuild() { function setupGroupDmUsers (line 71) | async function setupGroupDmUsers() { FILE: packages/api/src/channel/tests/ChannelTestUtils.tsx function createGuild (line 31) | async function createGuild(harness: ApiTestHarness, token: string, name:... function createChannel (line 35) | async function createChannel( function getChannel (line 48) | async function getChannel(harness: ApiTestHarness, token: string, channe... function updateChannel (line 52) | async function updateChannel( function deleteChannel (line 63) | async function deleteChannel(harness: ApiTestHarness, token: string, cha... function createChannelInvite (line 67) | async function createChannelInvite( function acceptInvite (line 78) | async function acceptInvite( function createRole (line 86) | async function createRole( function updateRole (line 95) | async function updateRole( function deleteRole (line 108) | async function deleteRole( function addMemberRole (line 117) | async function addMemberRole( function removeMemberRole (line 130) | async function removeMemberRole( function updateMember (line 143) | async function updateMember( function getMember (line 156) | async function getMember( function getGuild (line 165) | async function getGuild(harness: ApiTestHarness, token: string, guildId:... function updateGuild (line 169) | async function updateGuild( function leaveGuild (line 178) | async function leaveGuild(harness: ApiTestHarness, token: string, guildI... function getUserGuilds (line 182) | async function getUserGuilds(harness: ApiTestHarness, token: string): Pr... function createPermissionOverwrite (line 186) | async function createPermissionOverwrite( function setupTestGuildWithChannels (line 211) | async function setupTestGuildWithChannels( function setupTestGuildWithMembers (line 228) | async function setupTestGuildWithMembers( type MinimalChannelResponse (line 256) | interface MinimalChannelResponse { function createFriendship (line 262) | async function createFriendship(harness: ApiTestHarness, user1: TestAcco... function createDmChannel (line 271) | async function createDmChannel( function sendChannelMessage (line 289) | async function sendChannelMessage( function blockUser (line 310) | async function blockUser(harness: ApiTestHarness, user: TestAccount, tar... function initiateCall (line 319) | async function initiateCall( function pinMessage (line 333) | async function pinMessage( type GroupDmChannelResponse (line 347) | interface GroupDmChannelResponse { function createGroupDmChannel (line 355) | async function createGroupDmChannel( function addRecipientToGroupDm (line 373) | async function addRecipientToGroupDm( function removeRecipientFromGroupDm (line 386) | async function removeRecipientFromGroupDm( type SeedPrivateChannelsResult (line 395) | interface SeedPrivateChannelsResult { function seedPrivateChannels (line 400) | async function seedPrivateChannels( FILE: packages/api/src/channel/tests/GroupDmLimit.test.tsx constant MAX_GROUP_DM_LIMIT (line 28) | const MAX_GROUP_DM_LIMIT = 150; constant MAX_GROUP_DMS_ERROR_CODE (line 29) | const MAX_GROUP_DMS_ERROR_CODE = 'MAX_GROUP_DMS'; FILE: packages/api/src/channel/tests/GroupDmRecipientLimit.test.tsx constant MAX_GROUP_DM_LIMIT (line 27) | const MAX_GROUP_DM_LIMIT = 150; constant MAX_GROUP_DM_ERROR_CODE (line 28) | const MAX_GROUP_DM_ERROR_CODE = 'MAX_GROUP_DMS'; FILE: packages/api/src/channel/tests/ScheduledMessageTestUtils.tsx type ScheduledMessageResponse (line 27) | type ScheduledMessageResponse = z.infer, conten... function createChannelInvite (line 172) | async function createChannelInvite( function joinGuild (line 188) | async function joinGuild(harness: ApiTestHarness, token: string, inviteC... function removeGuildMember (line 192) | async function removeGuildMember( FILE: packages/api/src/channel/tests/StreamPreviewAuth.test.tsx constant STREAM_PREVIEW_BASE64 (line 35) | const STREAM_PREVIEW_BASE64 = 'dGVzdC1zdHJlYW0tcHJldmlldw=='; constant STREAM_PREVIEW_TEXT (line 36) | const STREAM_PREVIEW_TEXT = 'test-stream-preview'; function createGuildStreamKey (line 38) | function createGuildStreamKey(guildId: string, channelId: string): string { function createStreamPreviewPath (line 42) | function createStreamPreviewPath(streamKey: string): string { function uploadStreamPreview (line 46) | async function uploadStreamPreview( FILE: packages/api/src/channel/tests/TypingIndicators.test.tsx function sendTypingIndicator (line 35) | async function sendTypingIndicator(harness: ApiTestHarness, token: strin... function createDmChannel (line 39) | async function createDmChannel(harness: ApiTestHarness, token: string, r... FILE: packages/api/src/config/APIConfig.tsx type APIConfig (line 20) | interface APIConfig { type BlueskyOAuthKeyConfig (line 335) | interface BlueskyOAuthKeyConfig { type BlueskyOAuthConfig (line 341) | interface BlueskyOAuthConfig { FILE: packages/api/src/connection/ConnectionController.tsx function ConnectionController (line 38) | function ConnectionController(app: HonoApp) { FILE: packages/api/src/connection/ConnectionInitiationToken.tsx type ConnectionInitiationTokenPayload (line 23) | interface ConnectionInitiationTokenPayload { function computeSignature (line 31) | function computeSignature(payloadBase64: string, secret: string): Buffer { function signInitiationToken (line 35) | function signInitiationToken(payload: ConnectionInitiationTokenPayload, ... function verifyInitiationToken (line 42) | function verifyInitiationToken(token: string, secret: string): Connectio... FILE: packages/api/src/connection/ConnectionMappers.tsx function mapConnectionToResponse (line 23) | function mapConnectionToResponse(row: UserConnectionRow): ConnectionResp... FILE: packages/api/src/connection/ConnectionRepository.tsx constant FETCH_CONNECTIONS_BY_USER_CQL (line 31) | const FETCH_CONNECTIONS_BY_USER_CQL = UserConnections.selectCql({ constant FETCH_CONNECTION_BY_ID_CQL (line 35) | const FETCH_CONNECTION_BY_ID_CQL = UserConnections.selectCql({ constant COUNT_CONNECTIONS_CQL (line 44) | const COUNT_CONNECTIONS_CQL = UserConnections.selectCountCql({ class ConnectionRepository (line 48) | class ConnectionRepository extends IConnectionRepository { method findByUserId (line 49) | async findByUserId(userId: UserID): Promise> { method findById (line 53) | async findById( method findByTypeAndIdentifier (line 65) | async findByTypeAndIdentifier( method create (line 78) | async create(params: CreateConnectionParams): Promise { FILE: packages/api/src/connection/ConnectionRequestService.tsx class ConnectionRequestService (line 38) | class ConnectionRequestService { method constructor (line 39) | constructor( method listConnections (line 44) | async listConnections(userId: UserID): Promise)... method generateVerificationInstructions (line 114) | private generateVerificationInstructions(connectionType: ConnectionTyp... FILE: packages/api/src/connection/ConnectionService.tsx class ConnectionService (line 45) | class ConnectionService extends IConnectionService { method constructor (line 46) | constructor( method getConnectionsForUser (line 54) | async getConnectionsForUser(userId: UserID): Promise)... method createOrUpdateBlueskyConnection (line 258) | async createOrUpdateBlueskyConnection(userId: UserID, did: string, han... method revalidateConnection (line 312) | async revalidateConnection(connection: UserConnectionRow): Promise<{ method getVerifier (line 349) | private getVerifier(type: ConnectionType): IConnectionVerifier { FILE: packages/api/src/connection/IConnectionRepository.tsx type CreateConnectionParams (line 24) | interface CreateConnectionParams { type UpdateConnectionParams (line 38) | interface UpdateConnectionParams { FILE: packages/api/src/connection/IConnectionService.tsx type InitiateConnectionResult (line 25) | interface InitiateConnectionResult { FILE: packages/api/src/connection/errors/BlueskyOAuthAuthorizationFailedError.tsx class BlueskyOAuthAuthorizationFailedError (line 23) | class BlueskyOAuthAuthorizationFailedError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/api/src/connection/errors/BlueskyOAuthCallbackFailedError.tsx class BlueskyOAuthCallbackFailedError (line 23) | class BlueskyOAuthCallbackFailedError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/api/src/connection/errors/BlueskyOAuthNotEnabledError.tsx class BlueskyOAuthNotEnabledError (line 23) | class BlueskyOAuthNotEnabledError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/api/src/connection/errors/BlueskyOAuthSessionExpiredError.tsx class BlueskyOAuthSessionExpiredError (line 23) | class BlueskyOAuthSessionExpiredError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/api/src/connection/errors/BlueskyOAuthStateInvalidError.tsx class BlueskyOAuthStateInvalidError (line 23) | class BlueskyOAuthStateInvalidError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/api/src/connection/errors/ConnectionAlreadyExistsError.tsx class ConnectionAlreadyExistsError (line 23) | class ConnectionAlreadyExistsError extends ConflictError { method constructor (line 24) | constructor() { FILE: packages/api/src/connection/errors/ConnectionInitiationTokenInvalidError.tsx class ConnectionInitiationTokenInvalidError (line 23) | class ConnectionInitiationTokenInvalidError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/api/src/connection/errors/ConnectionInvalidTypeError.tsx class ConnectionInvalidTypeError (line 23) | class ConnectionInvalidTypeError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/api/src/connection/errors/ConnectionLimitReachedError.tsx class ConnectionLimitReachedError (line 23) | class ConnectionLimitReachedError extends ThrottledError { method constructor (line 24) | constructor() { FILE: packages/api/src/connection/errors/ConnectionNotFoundError.tsx class ConnectionNotFoundError (line 23) | class ConnectionNotFoundError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/api/src/connection/errors/ConnectionVerificationFailedError.tsx class ConnectionVerificationFailedError (line 23) | class ConnectionVerificationFailedError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/api/src/connection/tests/ConnectionTestUtils.tsx function initiateConnection (line 32) | async function initiateConnection( function verifyAndCreateConnection (line 44) | async function verifyAndCreateConnection( function listConnections (line 56) | async function listConnections(harness: ApiTestHarness, token: string): ... function verifyConnection (line 63) | async function verifyConnection( function deleteConnection (line 75) | async function deleteConnection( function updateConnection (line 84) | async function updateConnection( function reorderConnections (line 98) | async function reorderConnections( function createVerifiedConnection (line 110) | async function createVerifiedConnection( function authorizeBlueskyConnection (line 122) | async function authorizeBlueskyConnection( function createBlueskyConnectionViaOAuth (line 134) | async function createBlueskyConnectionViaOAuth( function createBlueskyHandle (line 171) | function createBlueskyHandle(username: string): string { function createBlueskyDid (line 175) | function createBlueskyDid(username: string): string { FILE: packages/api/src/connection/tests/ConnectionVerification.test.tsx function createDomainConnectionViaFlow (line 38) | async function createDomainConnectionViaFlow( FILE: packages/api/src/connection/verification/BlueskyOAuthVerifier.tsx class BlueskyOAuthVerifier (line 27) | class BlueskyOAuthVerifier implements IConnectionVerifier { method constructor (line 28) | constructor(private readonly oauthService: IBlueskyOAuthService) {} method verify (line 30) | async verify(params: ConnectionVerificationParams): Promise { FILE: packages/api/src/connection/verification/DomainConnectionVerifier.tsx constant VERIFICATION_TIMEOUT_MS (line 28) | const VERIFICATION_TIMEOUT_MS = 5000; class DomainConnectionVerifier (line 30) | class DomainConnectionVerifier implements IConnectionVerifier { method verify (line 31) | async verify(params: ConnectionVerificationParams): Promise { method checkDnsTxt (line 43) | private async checkDnsTxt(domain: string, token: string): Promise([ type MessageTypeValue (line 57) | type MessageTypeValue = ValueOf; constant MESSAGE_TYPE_DELETABLE (line 59) | const MESSAGE_TYPE_DELETABLE = { function isMessageTypeDeletable (line 71) | function isMessageTypeDeletable(type: number): boolean { constant SENDABLE_MESSAGE_FLAGS (line 86) | const SENDABLE_MESSAGE_FLAGS = constant ALL_PERMISSIONS (line 134) | const ALL_PERMISSIONS = Object.values(Permissions).reduce((acc, p) => ac... constant DEFAULT_PERMISSIONS (line 136) | const DEFAULT_PERMISSIONS = FILE: packages/api/src/constants/Core.tsx constant SYSTEM_USER_ID (line 22) | const SYSTEM_USER_ID = createUserID(0n); FILE: packages/api/src/constants/Gateway.tsx type GatewayDispatchEvent (line 20) | type GatewayDispatchEvent = FILE: packages/api/src/constants/InstanceConfig.tsx constant SNOWFLAKE_RESERVATION_KEY_PREFIX (line 20) | const SNOWFLAKE_RESERVATION_KEY_PREFIX = 'snowflake_reservation:'; constant SNOWFLAKE_RESERVATION_REFRESH_CHANNEL (line 21) | const SNOWFLAKE_RESERVATION_REFRESH_CHANNEL = 'snowflake_reservation:ref... constant FIRST_ADMIN_ACL_CONFIG_KEY (line 22) | const FIRST_ADMIN_ACL_CONFIG_KEY = 'first_admin_acl_assigned'; FILE: packages/api/src/constants/IpBan.tsx constant IP_BAN_REFRESH_CHANNEL (line 20) | const IP_BAN_REFRESH_CHANNEL = 'ip_bans:refresh'; FILE: packages/api/src/constants/LimitConfig.tsx constant LIMIT_RULE_IDS (line 25) | const LIMIT_RULE_IDS = { type CachedLimitConfig (line 30) | interface CachedLimitConfig { function getLimitConfigKvKey (line 35) | function getLimitConfigKvKey(selfHosted: boolean): string { constant LIMIT_CONFIG_REFRESH_CHANNEL (line 39) | const LIMIT_CONFIG_REFRESH_CHANNEL = 'limit-config-refresh'; constant LIMIT_CONFIG_REFRESH_LOCK_KEY (line 40) | const LIMIT_CONFIG_REFRESH_LOCK_KEY = 'limit-config-refresh-lock'; function cloneLimitConfigSnapshot (line 42) | function cloneLimitConfigSnapshot(config: LimitConfigSnapshot): LimitCon... function sanitizeLimitConfigForInstance (line 46) | function sanitizeLimitConfigForInstance( function createDefaultLimitConfig (line 73) | function createDefaultLimitConfig(options?: {selfHosted?: boolean}): Lim... function mergeWithCurrentDefaults (line 101) | function mergeWithCurrentDefaults( FILE: packages/api/src/csam/CsamEvidenceRetentionService.tsx class CsamEvidenceRetentionService (line 32) | class CsamEvidenceRetentionService { method constructor (line 36) | constructor(private readonly storageService: IStorageService) {} method trackExpiration (line 38) | async trackExpiration(reportId: bigint, expiresAt: Date | null): Promi... method rescheduleExpiration (line 56) | async rescheduleExpiration(reportId: bigint, newExpiresAt: Date): Prom... method rescheduleForHold (line 69) | async rescheduleForHold(reportId: bigint, heldUntil: Date | null): Pro... method cleanupExpired (line 91) | async cleanupExpired(): Promise { method processExpiration (line 136) | private async processExpiration(row: CsamEvidenceExpirationRow, deadli... method deleteEvidenceObjects (line 188) | private async deleteEvidenceObjects(reportId: bigint, pkg: CsamEvidenc... method buildAssetCopyKey (line 211) | private buildAssetCopyKey(reportId: bigint, pkg: CsamEvidencePackageRo... method deleteExpirationRow (line 216) | private async deleteExpirationRow(row: CsamEvidenceExpirationRow): Pro... FILE: packages/api/src/csam/CsamEvidenceService.tsx function bigintReplacer (line 39) | function bigintReplacer(_key: string, value: unknown): unknown { class CsamEvidenceService (line 43) | class CsamEvidenceService implements ICsamEvidenceService { method constructor (line 44) | constructor( method storeEvidence (line 49) | async storeEvidence(args: StoreEvidenceArgs): Promise { method hold (line 35) | async hold(reportId: string, expiresAt?: Date): Promise { method release (line 51) | async release(reportId: string): Promise { method isHeld (line 61) | async isHeld(reportId: string): Promise { FILE: packages/api/src/csam/CsamReportSnapshotService.tsx type CreateSnapshotParams (line 34) | interface CreateSnapshotParams { type CsamReportSnapshotServiceDeps (line 46) | interface CsamReportSnapshotServiceDeps { class CsamReportSnapshotService (line 54) | class CsamReportSnapshotService implements ICsamReportSnapshotService { method constructor (line 61) | constructor(deps: CsamReportSnapshotServiceDeps) { method createSnapshot (line 69) | async createSnapshot(params: CreateSnapshotParams): Promise { FILE: packages/api/src/csam/CsamResponseService.tsx type CsamResponseServiceDeps (line 49) | interface CsamResponseServiceDeps { type CsamResponseArgs (line 61) | interface CsamResponseArgs { class CsamResponseService (line 70) | class CsamResponseService { method constructor (line 71) | constructor(private readonly deps: CsamResponseServiceDeps) {} method handleMatch (line 73) | async handleMatch(args: CsamResponseArgs): Promise { method buildMessageContextRow (line 164) | private buildMessageContextRow(message: Message, user: User | null): I... method copyAttachments (line 189) | private async copyAttachments(reportId: bigint, message: Message): Pro... FILE: packages/api/src/csam/CsamScanJobService.tsx type CreateCsamScanJobArgs (line 29) | interface CreateCsamScanJobArgs { type ICsamScanJobService (line 34) | interface ICsamScanJobService { type CsamScanJobPatchOps (line 38) | type CsamScanJobPatchOps = Partial<{[K in keyof CsamScanJobRow]: DbOp): CsamScanJobPatc... method patchJob (line 82) | private async patchJob(jobId: string, patch: Partial):... method createJob (line 91) | async createJob(args: CreateCsamScanJobArgs): Promise { method markProcessing (line 122) | async markProcessing(jobId: string): Promise { method recordHashes (line 128) | async recordHashes(jobId: string, hashes: Array): Promise { method recordMatchResult (line 135) | async recordMatchResult(jobId: string, matchResult: PhotoDnaMatchResul... method recordError (line 144) | async recordError(jobId: string, error: unknown): Promise { FILE: packages/api/src/csam/CsamScanQueueService.tsx constant CSAM_SCAN_QUEUE_KEY (line 33) | const CSAM_SCAN_QUEUE_KEY = 'csam:scan:queue'; type CsamScanQueueServiceOptions (line 35) | interface CsamScanQueueServiceOptions { type CsamScanContext (line 41) | interface CsamScanContext { type CsamScanSubmitParams (line 49) | interface CsamScanSubmitParams { type CsamScanQueueResult (line 55) | interface CsamScanQueueResult { type CsamScanQueueEntry (line 60) | interface CsamScanQueueEntry { type CsamScanResultMessage (line 67) | interface CsamScanResultMessage { type ICsamScanQueueService (line 73) | interface ICsamScanQueueService { class CsamScanQueueService (line 77) | class CsamScanQueueService implements ICsamScanQueueService { method constructor (line 82) | constructor(options: CsamScanQueueServiceOptions) { method submitScan (line 88) | async submitScan(params: CsamScanSubmitParams): Promise { method uploadEvidence (line 94) | async uploadEvidence( method submitFileDetails (line 118) | async submitFileDetails(fileDetailsXml: string): Promise { method finish (line 131) | async finish(requestReportId: string): Promise<{reportId: string; file... method retract (line 154) | async retract(reportId: string): Promise { method request (line 166) | private async request(path: string, init: RequestInit): Promise<{res: ... method parseReportResponse (line 181) | private parseReportResponse(xml: string): ReportResponse { method parseReportDoneResponse (line 186) | private parseReportDoneResponse(xml: string): ReportDoneResponse { method safeParse (line 191) | private safeParse(xml: string): any | null { method ensureOk (line 200) | private ensureOk(res: Response, parsed: {responseCode?: number; respon... method makeError (line 220) | private makeError( method requireEnabledConfig (line 236) | private requireEnabledConfig(): Extract(operation: NcmecTelemetryOperation, fn:... function createNcmecApiConfig (line 260) | function createNcmecApiConfig(): NcmecApiConfig { function createNcmecApi (line 273) | function createNcmecApi(): NcmecReporter { function basicAuth (line 277) | function basicAuth(username: string, password: string): string { function normaliseBaseUrl (line 281) | function normaliseBaseUrl(rawUrl: string | undefined | null): string { function normaliseRequiredValue (line 287) | function normaliseRequiredValue(value: string | undefined | null, label:... function normaliseResponseId (line 293) | function normaliseResponseId(value: unknown): string | null { FILE: packages/api/src/csam/NcmecSubmissionService.tsx type NcmecSubmissionStatus (line 36) | type NcmecSubmissionStatus = 'not_submitted' | 'submitted' | 'failed'; type NcmecSubmissionStatusResponse (line 38) | interface NcmecSubmissionStatusResponse { type NcmecSubmitResult (line 46) | interface NcmecSubmitResult { type NcmecSubmissionServiceDeps (line 52) | interface NcmecSubmissionServiceDeps { constant GET_SUBMISSION_QUERY (line 58) | const GET_SUBMISSION_QUERY = NcmecSubmissions.select({ constant GET_EVIDENCE_PACKAGE_QUERY (line 63) | const GET_EVIDENCE_PACKAGE_QUERY = CsamEvidencePackages.select({ class NcmecSubmissionService (line 68) | class NcmecSubmissionService { method constructor (line 69) | constructor(private readonly deps: NcmecSubmissionServiceDeps) {} method getSubmissionStatus (line 71) | async getSubmissionStatus(reportId: ReportID): Promise): Promise> { FILE: packages/api/src/csam/PhotoDnaMatchService.tsx type MatchRequestItem (line 30) | interface MatchRequestItem { type MatchResponseResult (line 35) | interface MatchResponseResult { type MatchResponse (line 54) | interface MatchResponse { class PhotoDnaMatchService (line 59) | class PhotoDnaMatchService { method constructor (line 65) | constructor() { method matchHashes (line 78) | async matchHashes(hashes: Array): Promise { method callMatchApi (line 136) | private async callMatchApi(chunk: Array): Promise(fn: () => Promise): Promise { method chunkArray (line 207) | private chunkArray(values: Array, size: number): Array> { FILE: packages/api/src/csam/SynchronousCsamScanner.tsx type SynchronousCsamScannerOptions (line 29) | interface SynchronousCsamScannerOptions { type ScanMediaParams (line 34) | interface ScanMediaParams { type ScanBase64Params (line 41) | interface ScanBase64Params { type SynchronousCsamScanResult (line 47) | interface SynchronousCsamScanResult { constant SCANNABLE_IMAGE_TYPES (line 54) | const SCANNABLE_IMAGE_TYPES = new Set([ constant SCANNABLE_VIDEO_TYPES (line 65) | const SCANNABLE_VIDEO_TYPES = new Set([ function isScannableMediaType (line 73) | function isScannableMediaType(contentType: string | null): boolean { function isVideoType (line 81) | function isVideoType(contentType: string): boolean { function createDefaultContext (line 86) | function createDefaultContext(resourceType: CsamResourceType = 'other'):... class SynchronousCsamScanner (line 96) | class SynchronousCsamScanner implements ISynchronousCsamScanner { method constructor (line 97) | constructor( method scanMedia (line 104) | async scanMedia(params: ScanMediaParams): Promise { method scanBase64 (line 203) | async scanBase64(params: ScanBase64Params): Promise { method withSpan (line 244) | private async withSpan( method recordScan (line 258) | private recordScan( method submitToArachnid (line 268) | private async submitToArachnid(fileData: Uint8Array, contentType: stri... method computeWaitMs (line 326) | private computeWaitMs(attempt: number, rateLimit: {remaining: number; ... method fetchWithTimeout (line 333) | private async fetchWithTimeout(fileData: Uint8Array, contentType: stri... method translateResponse (line 352) | private translateResponse(response: ArachnidShieldResponse): CsamScanR... method sleep (line 384) | private sleep(ms: number): Promise { FILE: packages/api/src/csam/providers/CsamProviderFactory.tsx type CsamIntegrationConfig (line 29) | interface CsamIntegrationConfig { type CsamProviderFactoryDeps (line 50) | interface CsamProviderFactoryDeps { function createCsamProvider (line 58) | function createCsamProvider( FILE: packages/api/src/csam/providers/ICsamScanProvider.tsx type CsamScanProvider (line 22) | type CsamScanProvider = 'photo_dna' | 'arachnid_shield'; type CsamMatchDetail (line 24) | interface CsamMatchDetail { type CsamMatchResult (line 31) | interface CsamMatchResult { type CsamScanResult (line 39) | interface CsamScanResult { type CsamScanContext (line 46) | interface CsamScanContext { type ScanMediaParams (line 54) | interface ScanMediaParams { type ScanBase64Params (line 61) | interface ScanBase64Params { type ICsamScanProvider (line 67) | interface ICsamScanProvider { FILE: packages/api/src/csam/providers/PhotoDnaProvider.tsx type PhotoDnaProviderOptions (line 37) | interface PhotoDnaProviderOptions { function isScannableMediaType (line 41) | function isScannableMediaType(contentType: string | null): boolean { function isVideoType (line 49) | function isVideoType(contentType: string): boolean { function createDefaultContext (line 54) | function createDefaultContext(): CsamScanContext { class PhotoDnaProvider (line 64) | class PhotoDnaProvider implements ICsamScanProvider { method constructor (line 67) | constructor( method scanMedia (line 74) | async scanMedia(params: ScanMediaParams): Promise { method scanBase64 (line 204) | async scanBase64(params: ScanBase64Params): Promise { method extractFramesFromS3 (line 322) | private async extractFramesFromS3(bucket: string, key: string, content... FILE: packages/api/src/csam/providers/tests/ArachnidShieldProvider.test.tsx constant DEFAULT_CONFIG (line 34) | const DEFAULT_CONFIG = { function makeProvider (line 43) | function makeProvider( FILE: packages/api/src/csam/tests/CsamBlockingBehavior.test.tsx function createMockMatchResult (line 41) | function createMockMatchResult(options?: {trackingId?: string}): PhotoDn... function createMockMessage (line 57) | function createMockMessage(options?: {authorId?: bigint; channelId?: big... constant TEST_LIMIT_CONFIG_SERVICE (line 65) | const TEST_LIMIT_CONFIG_SERVICE = { method getConfigSnapshot (line 66) | getConfigSnapshot() { FILE: packages/api/src/csam/tests/CsamEvidenceRetentionService.test.tsx function buildEvidencePackageRow (line 29) | function buildEvidencePackageRow(reportId: bigint, expiresAt: Date): Csa... function buildExpirationRow (line 54) | function buildExpirationRow(reportId: bigint, expiresAt: Date): CsamEvid... FILE: packages/api/src/csam/tests/CsamLegalHoldService.test.tsx type ReportResponse (line 26) | interface ReportResponse { type LegalHoldResponse (line 32) | interface LegalHoldResponse { function createUserReport (line 36) | async function createUserReport(harness: ApiTestHarness, reporter: TestA... function createAdminUser (line 49) | async function createAdminUser(harness: ApiTestHarness, acls: Array)... FILE: packages/api/src/csam/tests/CsamScanQueueService.test.tsx function createDefaultContext (line 28) | function createDefaultContext(): CsamScanContext { FILE: packages/api/src/csam/tests/CsamTestUtils.tsx type MockPhotoDnaConfig (line 39) | interface MockPhotoDnaConfig { type MockNcmecReport (line 47) | interface MockNcmecReport { type MockNcmecUpload (line 53) | interface MockNcmecUpload { type CapturedJob (line 60) | interface CapturedJob { class MockWorkerService (line 66) | class MockWorkerService implements IWorkerService { method reset (line 69) | reset(): void { method getCapturedJobs (line 73) | getCapturedJobs(): Array { method addJob (line 77) | async addJob(jobType: string, payload: unknown): Promise { method cancelJob (line 85) | async cancelJob(_jobId: string): Promise { method retryDeadLetterJob (line 89) | async retryDeadLetterJob(_jobId: string): Promise { type CsamTestContext (line 94) | interface CsamTestContext { function setupCsamTestContext (line 101) | async function setupCsamTestContext(harness: ApiTestHarness): Promise { function createMockMatchResult (line 177) | function createMockMatchResult(options?: { constant CSAM_JOB_STATUSES (line 201) | const CSAM_JOB_STATUSES: Record = { constant TEST_FIXTURES (line 210) | const TEST_FIXTURES = { function loadTestFixture (line 222) | function loadTestFixture(type: 'png' | 'gif' | 'jpeg'): Buffer { function createNoopLogger (line 235) | function createNoopLogger(): ILogger { function createMockGuildResponse (line 247) | function createMockGuildResponse(overrides?: Partial): Gu... FILE: packages/api/src/csam/tests/NcmecReporter.test.tsx constant TEST_BASE_URL (line 29) | const TEST_BASE_URL = 'https://exttest.cybertip.org/ispws'; constant TEST_USERNAME (line 30) | const TEST_USERNAME = 'usr123'; constant TEST_PASSWORD (line 31) | const TEST_PASSWORD = 'pswd123'; FILE: packages/api/src/csam/tests/NcmecSubmissionService.test.tsx type ReportResponse (line 35) | interface ReportResponse { function createAdminWithNcmecAccess (line 41) | async function createAdminWithNcmecAccess(harness: ApiTestHarness): Prom... function createAdminWithViewOnly (line 46) | async function createAdminWithViewOnly(harness: ApiTestHarness): Promise... function createChildSafetyMessageReport (line 51) | async function createChildSafetyMessageReport(harness: ApiTestHarness): ... function createNonChildSafetyReport (line 73) | async function createNonChildSafetyReport(harness: ApiTestHarness): Prom... FILE: packages/api/src/database/Cassandra.tsx function getIsDev (line 28) | function getIsDev(): boolean { function getStorageBackend (line 31) | function getStorageBackend(): string { function getUseSqlite (line 34) | function getUseSqlite(): boolean { type TableMetadata (line 37) | interface TableMetadata { function registerTableSpec (line 47) | function registerTableSpec(tableSpec: KvTableSpec): string { function getQueryType (line 125) | function getQueryType(cql: string): string { function extractTableName (line 135) | function extractTableName(cql: string): string { function formatCql (line 163) | function formatCql(cql: string): string { function logQuery (line 170) | function logQuery( function logBatch (line 205) | function logBatch(queries: Array<{query: string; params: object}>, durat... type DbOp (line 242) | type DbOp = {kind: 'set'; value: T} | {kind: 'clear'}; method set (line 245) | set(value: T): DbOp { method clear (line 248) | clear(): DbOp { function nextVersion (line 257) | function nextVersion(current: number | null | undefined): number { type ColumnName (line 261) | type ColumnName = Extract; type RowValue (line 262) | type RowValue> = Row[K & keyof Row]; type CassandraParam (line 264) | type CassandraParam = type CassandraParams (line 278) | type CassandraParams = Record; type KvAction (line 280) | type KvAction = type KvTableSpec (line 291) | interface KvTableSpec> { type KvQueryMeta (line 298) | interface KvQueryMeta> { type PreparedQuery (line 315) | interface PreparedQuery

{ function prepared (line 321) | function prepared

(cql: string, params: P, kvM... constant IN_PARAM_CACHE (line 325) | const IN_PARAM_CACHE = new Map>(); function getInParamNames (line 327) | function getInParamNames(cql: string): Array { function normalizeInParams (line 346) | function normalizeInParams

(cql: string, param... type QueryTemplate (line 364) | interface QueryTemplate

{ function getClient (line 371) | function getClient(): cassandra.Client { constant DEFAULT_MAX_PARTITION_KEYS_PER_QUERY (line 402) | const DEFAULT_MAX_PARTITION_KEYS_PER_QUERY = 100; function chunkArray (line 404) | function chunkArray(items: Array, size: number): Array> { function isUnsafePreparedStatement (line 415) | function isUnsafePreparedStatement(query: string): boolean { function assertNoUndefinedDeep (line 420) | function assertNoUndefinedDeep(value: unknown, path: string): void { function assertNoUndefinedParams (line 469) | function assertNoUndefinedParams(params: Record): void { function normalizeExecuteArgs (line 475) | function normalizeExecuteArgs

( function normalizeCqlForRegistry (line 488) | function normalizeCqlForRegistry(cql: string): string { function registerKvMeta (line 492) | function registerKvMeta(cql: string, meta: KvQueryMeta): void { type RowObject (line 496) | type RowObject = Record; type CountResult (line 502) | type CountResult = z.infer; function toCountResult (line 504) | function toCountResult(value: number): CountResult { function validateCountResult (line 508) | function validateCountResult(value: unknown): CountResult { function wrapCountResultAsArray (line 512) | function wrapCountResultAsArray(countResult: CountResult): Array { function generateMetaFromCql (line 516) | function generateMetaFromCql(cql: string): KvQueryMeta | null { function metaOrThrow (line 559) | function metaOrThrow

(prepared: PreparedQuery<... function paramsToRow (line 574) | function paramsToRow(table: KvTableSpec, params: CassandraParams): RowOb... function pkFromParams (line 584) | function pkFromParams(table: KvTableSpec, params: CassandraParams): RowO... function partitionPrefixFromWhere (line 592) | function partitionPrefixFromWhere( function normalizeNullish (line 608) | function normalizeNullish(value: unknown): unknown { function matchesWhere (line 612) | function matchesWhere(row: RowObject, expr: WhereExp... function applyPatch (line 662) | function applyPatch( function applyNowColumn (line 681) | function applyNowColumn(row: RowObject, nowColumn?: string): RowObject { function orderRows (line 689) | function orderRows(rows: Array, orderBy?:... function executeQuerySqlite (line 700) | async function executeQuerySqlite, P extends Cassa... function fetchOne (line 940) | async function fetchOne, P extends Cassandra... function fetchMany (line 948) | async function fetchMany, P extends Cassandr... function fetchManyInChunks (line 955) | async function fetchManyInChunks< function upsertOne (line 987) | async function upsertOne

( function deleteOneOrMany (line 994) | async function deleteOneOrMany

, atomic = true): ... class BatchBuilder (line 1121) | class BatchBuilder { method add (line 1124) | add(query: string, params: object, meta?: KvQueryMeta): this { method addPrepared (line 1129) | addPrepared(q: PreparedQuery): this { method addIf (line 1134) | addIf(condition: boolean, query: string, params: object, meta?: KvQuer... method addPreparedIf (line 1139) | addPreparedIf(condition: boolean, q: PreparedQuery): this { method execute (line 1144) | async execute(atomic = true): Promise { method getQueries (line 1149) | getQueries(): Array { type WhereExpr (line 1154) | type WhereExpr = type OrderBy (line 1164) | type OrderBy = {col: ColumnName; direction?: 'A... type Table (line 1166) | interface Table, PartKey ... function compileWhere (line 1256) | function compileWhere(w: WhereExpr): string { function opToValue (line 1287) | function opToValue(op: DbOp): CassandraParam { function defineTable (line 1291) | function defineTable, Par... constant DEFAULT_LWT_RETRIES (line 1817) | const DEFAULT_LWT_RETRIES = 5; function sleep (line 1819) | function sleep(ms: number): Promise { type PatchObject (line 1823) | type PatchObject = {[key: string]: DbOp}; function executeVersionedUpdate (line 1825) | async function executeVersionedUpdate< function valuesEqual (line 1870) | function valuesEqual(a: unknown, b: unknown): boolean { function buildPatchFromData (line 1914) | function buildPatchFromData( FILE: packages/api/src/database/SqliteKV.tsx type KvEntry (line 26) | interface KvEntry> { type SqliteExecutor (line 33) | interface SqliteExecutor { function executeSqliteTransaction (line 37) | function executeSqliteTransaction(db: SqliteExecutor, fn: () => T): T { function upperBound (line 51) | function upperBound(prefix: string): string { constant FLUXER_TAG (line 55) | const FLUXER_TAG = '__fluxer__' as const; constant FLUXER_TAG_VERSION (line 56) | const FLUXER_TAG_VERSION = 1 as const; type FluxerTagType (line 58) | type FluxerTagType = 'bigint' | 'date' | 'set' | 'map' | 'buffer' | 'uin... type FluxerTagged (line 60) | type FluxerTagged = class FluxerSerialisationError (line 68) | class FluxerSerialisationError extends Error { class FluxerDeserialisationError (line 72) | class FluxerDeserialisationError extends Error { function isPlainObject (line 76) | function isPlainObject(value: unknown): value is Record { function tag (line 82) | function tag( function isKnownTagType (line 89) | function isKnownTagType(t: unknown): t is FluxerTagType { function assertNever (line 93) | function assertNever(_x: never, msg: string): never { function fluxerReplacer (line 97) | function fluxerReplacer(this: unknown, key: string, value: unknown): unk... function decodeTagged (line 128) | function decodeTagged(meta: unknown): unknown { function fluxerReviver (line 206) | function fluxerReviver(_key: string, value: unknown): unknown { function serialize (line 232) | function serialize(value: unknown): Buffer { function deserialize (line 245) | function deserialize(blob: Buffer | Uint8Array | string): T { type KvRow (line 261) | type KvRow = { class SqliteKvStore (line 267) | class SqliteKvStore { method constructor (line 278) | constructor(path: string) { method purgeExpired (line 326) | private purgeExpired(now: number): void { method runInTransaction (line 330) | private runInTransaction(fn: () => T): T { method put (line 334) | put(table: string, key: string, value: unknown, ttlSeconds?: number): ... method get (line 353) | get(table: string, key: string): T | null { method delete (line 369) | delete(table: string, key: string): void { method deletePrefix (line 373) | deletePrefix(table: string, prefix: string): void { method scan (line 377) | scan(table: string, prefix?: string): Array> { method clearAll (line 404) | clearAll(): void { method getDatabase (line 411) | getDatabase(): DatabaseSync { function getKvStore (line 418) | function getKvStore(): SqliteKvStore { function clearSqliteStore (line 433) | function clearSqliteStore(): void { function encodeKeyPart (line 438) | function encodeKeyPart(part: unknown): string { function encodeKey (line 455) | function encodeKey(parts: ReadonlyArray): string { FILE: packages/api/src/database/types/AdminArchiveTypes.tsx type AdminArchiveRow (line 20) | interface AdminArchiveRow { constant ADMIN_ARCHIVE_COLUMNS (line 38) | const ADMIN_ARCHIVE_COLUMNS = [ type AdminAuditLogRow (line 56) | interface AdminAuditLogRow { constant ADMIN_AUDIT_LOG_COLUMNS (line 67) | const ADMIN_AUDIT_LOG_COLUMNS = [ type BannedIpRow (line 78) | interface BannedIpRow { constant BANNED_IP_COLUMNS (line 82) | const BANNED_IP_COLUMNS = ['ip'] as const satisfies ReadonlyArray = T | null; type AdminApiKeyRow (line 24) | interface AdminApiKeyRow { type AdminApiKeyByCreatorRow (line 36) | interface AdminApiKeyByCreatorRow { constant ADMIN_API_KEY_COLUMNS (line 47) | const ADMIN_API_KEY_COLUMNS = [ constant ADMIN_API_KEY_BY_CREATOR_COLUMNS (line 59) | const ADMIN_API_KEY_BY_CREATOR_COLUMNS = [ FILE: packages/api/src/database/types/AuthTypes.tsx type Nullish (line 29) | type Nullish = T | null; type AuthSessionRow (line 31) | interface AuthSessionRow { type MfaBackupCodeRow (line 44) | interface MfaBackupCodeRow { type EmailVerificationTokenRow (line 50) | interface EmailVerificationTokenRow { type PasswordResetTokenRow (line 56) | interface PasswordResetTokenRow { type EmailRevertTokenRow (line 62) | interface EmailRevertTokenRow { type IpAuthorizationTokenRow (line 68) | interface IpAuthorizationTokenRow { type AuthorizedIpRow (line 74) | interface AuthorizedIpRow { type WebAuthnCredentialRow (line 79) | interface WebAuthnCredentialRow { type PhoneTokenRow (line 91) | interface PhoneTokenRow { type EmailChangeTicketRow (line 97) | interface EmailChangeTicketRow { type EmailChangeTokenRow (line 116) | interface EmailChangeTokenRow { constant AUTH_SESSION_COLUMNS (line 124) | const AUTH_SESSION_COLUMNS = [ constant MFA_BACKUP_CODE_COLUMNS (line 137) | const MFA_BACKUP_CODE_COLUMNS = ['user_id', 'code', 'consumed'] as const... constant EMAIL_VERIFICATION_TOKEN_COLUMNS (line 141) | const EMAIL_VERIFICATION_TOKEN_COLUMNS = ['token_', 'user_id', 'email'] ... constant PASSWORD_RESET_TOKEN_COLUMNS (line 145) | const PASSWORD_RESET_TOKEN_COLUMNS = ['token_', 'user_id', 'email'] as c... constant EMAIL_REVERT_TOKEN_COLUMNS (line 149) | const EMAIL_REVERT_TOKEN_COLUMNS = ['token_', 'user_id', 'email'] as con... constant IP_AUTHORIZATION_TOKEN_COLUMNS (line 153) | const IP_AUTHORIZATION_TOKEN_COLUMNS = ['token_', 'user_id', 'email'] as... constant AUTHORIZED_IP_COLUMNS (line 157) | const AUTHORIZED_IP_COLUMNS = ['user_id', 'ip'] as const satisfies Reado... constant WEBAUTHN_CREDENTIAL_COLUMNS (line 159) | const WEBAUTHN_CREDENTIAL_COLUMNS = [ constant PHONE_TOKEN_COLUMNS (line 171) | const PHONE_TOKEN_COLUMNS = ['token_', 'phone', 'user_id'] as const sati... type PasswordChangeTicketRow (line 173) | interface PasswordChangeTicketRow { constant PASSWORD_CHANGE_TICKET_COLUMNS (line 186) | const PASSWORD_CHANGE_TICKET_COLUMNS = [ constant EMAIL_CHANGE_TICKET_COLUMNS (line 199) | const EMAIL_CHANGE_TICKET_COLUMNS = [ constant EMAIL_CHANGE_TOKEN_COLUMNS (line 218) | const EMAIL_CHANGE_TOKEN_COLUMNS = [ FILE: packages/api/src/database/types/ChannelTypes.tsx type Nullish (line 31) | type Nullish = T | null; type PermissionOverwrite (line 33) | interface PermissionOverwrite { type ChannelRow (line 39) | interface ChannelRow { type InviteRow (line 65) | interface InviteRow { type WebhookRow (line 79) | interface WebhookRow { type PrivateChannelRow (line 91) | interface PrivateChannelRow { type DmStateRow (line 97) | interface DmStateRow { type ReadStateRow (line 103) | interface ReadStateRow { constant CHANNEL_COLUMNS (line 111) | const CHANNEL_COLUMNS = [ type ChannelsByGuildRow (line 137) | interface ChannelsByGuildRow { constant CHANNELS_BY_GUILD_COLUMNS (line 142) | const CHANNELS_BY_GUILD_COLUMNS = ['guild_id', 'channel_id'] as const sa... constant INVITE_COLUMNS (line 146) | const INVITE_COLUMNS = [ constant WEBHOOK_COLUMNS (line 160) | const WEBHOOK_COLUMNS = [ constant READ_STATE_COLUMNS (line 172) | const READ_STATE_COLUMNS = [ constant PRIVATE_CHANNEL_COLUMNS (line 180) | const PRIVATE_CHANNEL_COLUMNS = ['user_id', 'channel_id', 'is_gdm'] as c... constant DM_STATE_COLUMNS (line 184) | const DM_STATE_COLUMNS = ['hi_user_id', 'lo_user_id', 'channel_id'] as c... FILE: packages/api/src/database/types/ConnectionTypes.tsx type Nullish (line 23) | type Nullish = T | null; type UserConnectionRow (line 25) | interface UserConnectionRow { constant USER_CONNECTION_COLUMNS (line 41) | const USER_CONNECTION_COLUMNS = [ FILE: packages/api/src/database/types/CsamTypes.tsx type CsamEvidencePackageRow (line 20) | interface CsamEvidencePackageRow { type CsamEvidenceLegalHoldRow (line 43) | interface CsamEvidenceLegalHoldRow { type CsamScanJobRow (line 49) | interface CsamScanJobRow { constant CSAM_EVIDENCE_PACKAGE_COLUMNS (line 71) | const CSAM_EVIDENCE_PACKAGE_COLUMNS = [ constant CSAM_EVIDENCE_LEGAL_HOLD_COLUMNS (line 94) | const CSAM_EVIDENCE_LEGAL_HOLD_COLUMNS = [ constant CSAM_SCAN_JOB_COLUMNS (line 100) | const CSAM_SCAN_JOB_COLUMNS = [ type CsamEvidenceExpirationRow (line 122) | interface CsamEvidenceExpirationRow { constant CSAM_EVIDENCE_EXPIRATION_COLUMNS (line 128) | const CSAM_EVIDENCE_EXPIRATION_COLUMNS = ['bucket', 'expires_at', 'repor... type NcmecSubmissionRow (line 132) | interface NcmecSubmissionRow { constant NCMEC_SUBMISSION_COLUMNS (line 143) | const NCMEC_SUBMISSION_COLUMNS = [ FILE: packages/api/src/database/types/DatabaseRowTypes.tsx type ExactRow (line 20) | type ExactRow = T; FILE: packages/api/src/database/types/DonationTypes.tsx type Nullish (line 20) | type Nullish = T | null; type DonorRow (line 22) | interface DonorRow { type DonorByStripeCustomerIdRow (line 39) | interface DonorByStripeCustomerIdRow { type DonorByStripeSubscriptionIdRow (line 44) | interface DonorByStripeSubscriptionIdRow { type DonorMagicLinkTokenRow (line 49) | interface DonorMagicLinkTokenRow { type DonorMagicLinkTokenByEmailRow (line 56) | interface DonorMagicLinkTokenByEmailRow { constant DONOR_COLUMNS (line 61) | const DONOR_COLUMNS = [ constant DONOR_BY_STRIPE_CUSTOMER_ID_COLUMNS (line 78) | const DONOR_BY_STRIPE_CUSTOMER_ID_COLUMNS = ['stripe_customer_id', 'emai... constant DONOR_BY_STRIPE_SUBSCRIPTION_ID_COLUMNS (line 82) | const DONOR_BY_STRIPE_SUBSCRIPTION_ID_COLUMNS = [ constant DONOR_MAGIC_LINK_TOKEN_COLUMNS (line 87) | const DONOR_MAGIC_LINK_TOKEN_COLUMNS = [ constant DONOR_MAGIC_LINK_TOKEN_BY_EMAIL_COLUMNS (line 94) | const DONOR_MAGIC_LINK_TOKEN_BY_EMAIL_COLUMNS = ['donor_email', 'token_'... FILE: packages/api/src/database/types/GuildDiscoveryTypes.tsx type Nullish (line 22) | type Nullish = T | null; type GuildDiscoveryRow (line 24) | interface GuildDiscoveryRow { constant GUILD_DISCOVERY_COLUMNS (line 38) | const GUILD_DISCOVERY_COLUMNS = [ type GuildDiscoveryByStatusRow (line 52) | interface GuildDiscoveryByStatusRow { constant GUILD_DISCOVERY_BY_STATUS_COLUMNS (line 58) | const GUILD_DISCOVERY_BY_STATUS_COLUMNS = ['status', 'applied_at', 'guil... FILE: packages/api/src/database/types/GuildTypes.tsx type Nullish (line 33) | type Nullish = T | null; type GuildRow (line 35) | interface GuildRow { constant GUILD_COLUMNS (line 70) | const GUILD_COLUMNS = [ type GuildMemberRow (line 105) | interface GuildMemberRow { constant GUILD_MEMBER_COLUMNS (line 128) | const GUILD_MEMBER_COLUMNS = [ type GuildAuditLogRow (line 151) | interface GuildAuditLogRow { constant GUILD_AUDIT_LOG_COLUMNS (line 162) | const GUILD_AUDIT_LOG_COLUMNS = [ type GuildRoleRow (line 173) | interface GuildRoleRow { constant GUILD_ROLE_COLUMNS (line 188) | const GUILD_ROLE_COLUMNS = [ type GuildBanRow (line 203) | interface GuildBanRow { constant GUILD_BAN_COLUMNS (line 213) | const GUILD_BAN_COLUMNS = [ type GuildEmojiRow (line 223) | interface GuildEmojiRow { constant GUILD_EMOJI_COLUMNS (line 232) | const GUILD_EMOJI_COLUMNS = [ constant GUILD_EMOJI_BY_EMOJI_ID_COLUMNS (line 241) | const GUILD_EMOJI_BY_EMOJI_ID_COLUMNS = [ type GuildStickerRow (line 249) | interface GuildStickerRow { constant GUILD_STICKER_COLUMNS (line 260) | const GUILD_STICKER_COLUMNS = [ constant GUILD_STICKER_BY_STICKER_ID_COLUMNS (line 271) | const GUILD_STICKER_BY_STICKER_ID_COLUMNS = [ type GuildMemberByUserIdRow (line 281) | interface GuildMemberByUserIdRow { constant GUILD_MEMBER_BY_USER_ID_COLUMNS (line 286) | const GUILD_MEMBER_BY_USER_ID_COLUMNS = ['user_id', 'guild_id'] as const... type GuildByOwnerIdRow (line 290) | interface GuildByOwnerIdRow { constant GUILD_BY_OWNER_ID_COLUMNS (line 295) | const GUILD_BY_OWNER_ID_COLUMNS = ['owner_id', 'guild_id'] as const sati... FILE: packages/api/src/database/types/InstanceConfigTypes.tsx type InstanceConfigurationRow (line 20) | interface InstanceConfigurationRow { constant INSTANCE_CONFIGURATION_COLUMNS (line 26) | const INSTANCE_CONFIGURATION_COLUMNS = ['key', 'value', 'updated_at'] as... FILE: packages/api/src/database/types/MessageTypes.tsx type Nullish (line 32) | type Nullish = T | null; type MessageAttachment (line 34) | interface MessageAttachment { type MessageEmbedAuthor (line 51) | interface MessageEmbedAuthor { type MessageEmbedProvider (line 57) | interface MessageEmbedProvider { type MessageEmbedFooter (line 62) | interface MessageEmbedFooter { type MessageEmbedMedia (line 67) | interface MessageEmbedMedia { type MessageEmbedField (line 79) | interface MessageEmbedField { type MessageEmbedBase (line 85) | interface MessageEmbedBase { type MessageEmbedChild (line 102) | interface MessageEmbedChild extends MessageEmbedBase {} type MessageEmbed (line 104) | interface MessageEmbed extends MessageEmbedBase { type MessageStickerItem (line 108) | interface MessageStickerItem { type MessageReference (line 114) | interface MessageReference { type MessageSnapshot (line 121) | interface MessageSnapshot { type MessageCall (line 135) | interface MessageCall { type MessageRow (line 140) | interface MessageRow { constant MESSAGE_COLUMNS (line 167) | const MESSAGE_COLUMNS = [ type ChannelPinRow (line 194) | interface ChannelPinRow { type MessageReactionRow (line 200) | interface MessageReactionRow { type AttachmentLookupRow (line 210) | interface AttachmentLookupRow { constant ATTACHMENT_LOOKUP_COLUMNS (line 217) | const ATTACHMENT_LOOKUP_COLUMNS = [ constant CHANNEL_PIN_COLUMNS (line 224) | const CHANNEL_PIN_COLUMNS = ['channel_id', 'message_id', 'pinned_timesta... constant MESSAGE_REACTION_COLUMNS (line 228) | const MESSAGE_REACTION_COLUMNS = [ type MessageByAuthorRow (line 238) | interface MessageByAuthorRow { constant MESSAGE_BY_AUTHOR_COLUMNS (line 244) | const MESSAGE_BY_AUTHOR_COLUMNS = ['author_id', 'channel_id', 'message_i... type ChannelStateRow (line 248) | interface ChannelStateRow { constant CHANNEL_STATE_COLUMNS (line 257) | const CHANNEL_STATE_COLUMNS = [ type ChannelMessageBucketRow (line 266) | interface ChannelMessageBucketRow { constant CHANNEL_MESSAGE_BUCKET_COLUMNS (line 272) | const CHANNEL_MESSAGE_BUCKET_COLUMNS = ['channel_id', 'bucket', 'updated... type ChannelEmptyBucketRow (line 276) | interface ChannelEmptyBucketRow { constant CHANNEL_EMPTY_BUCKET_COLUMNS (line 282) | const CHANNEL_EMPTY_BUCKET_COLUMNS = ['channel_id', 'bucket', 'updated_a... FILE: packages/api/src/database/types/OAuth2Types.tsx type ApplicationRow (line 22) | interface ApplicationRow { type ApplicationByOwnerRow (line 38) | interface ApplicationByOwnerRow { type OAuth2AuthorizationCodeRow (line 43) | interface OAuth2AuthorizationCodeRow { type OAuth2AccessTokenRow (line 53) | interface OAuth2AccessTokenRow { type OAuth2AccessTokenByUserRow (line 61) | interface OAuth2AccessTokenByUserRow { type OAuth2RefreshTokenRow (line 66) | interface OAuth2RefreshTokenRow { type OAuth2RefreshTokenByUserRow (line 74) | interface OAuth2RefreshTokenByUserRow { constant APPLICATION_COLUMNS (line 79) | const APPLICATION_COLUMNS = [ constant OAUTH2_AUTHORIZATION_CODE_COLUMNS (line 95) | const OAUTH2_AUTHORIZATION_CODE_COLUMNS = [ constant OAUTH2_ACCESS_TOKEN_COLUMNS (line 105) | const OAUTH2_ACCESS_TOKEN_COLUMNS = [ constant OAUTH2_REFRESH_TOKEN_COLUMNS (line 113) | const OAUTH2_REFRESH_TOKEN_COLUMNS = [ FILE: packages/api/src/database/types/PaymentTypes.tsx type Nullish (line 22) | type Nullish = T | null; type GiftCodeRow (line 24) | interface GiftCodeRow { type PaymentRow (line 37) | interface PaymentRow { type PaymentBySubscriptionRow (line 56) | interface PaymentBySubscriptionRow { type VisionarySlotRow (line 64) | interface VisionarySlotRow { constant PAYMENT_COLUMNS (line 69) | const PAYMENT_COLUMNS = [ constant PAYMENT_BY_SUBSCRIPTION_COLUMNS (line 88) | const PAYMENT_BY_SUBSCRIPTION_COLUMNS = [ constant PAYMENT_BY_PAYMENT_INTENT_COLUMNS (line 96) | const PAYMENT_BY_PAYMENT_INTENT_COLUMNS = ['payment_intent_id', 'checkou... constant PAYMENT_BY_USER_COLUMNS (line 98) | const PAYMENT_BY_USER_COLUMNS = ['user_id', 'created_at', 'checkout_sess... constant GIFT_CODE_COLUMNS (line 100) | const GIFT_CODE_COLUMNS = [ constant GIFT_CODE_BY_CREATOR_COLUMNS (line 113) | const GIFT_CODE_BY_CREATOR_COLUMNS = ['created_by_user_id', 'code'] as c... constant GIFT_CODE_BY_PAYMENT_INTENT_COLUMNS (line 115) | const GIFT_CODE_BY_PAYMENT_INTENT_COLUMNS = ['stripe_payment_intent_id',... constant GIFT_CODE_BY_REDEEMER_COLUMNS (line 117) | const GIFT_CODE_BY_REDEEMER_COLUMNS = ['redeemed_by_user_id', 'code'] as... constant VISIONARY_SLOT_COLUMNS (line 119) | const VISIONARY_SLOT_COLUMNS = ['slot_index', 'user_id'] as const; type PaymentByPaymentIntentRow (line 121) | interface PaymentByPaymentIntentRow { type PaymentByUserRow (line 126) | interface PaymentByUserRow { type GiftCodeByCreatorRow (line 132) | interface GiftCodeByCreatorRow { type GiftCodeByPaymentIntentRow (line 137) | interface GiftCodeByPaymentIntentRow { type GiftCodeByRedeemerRow (line 142) | interface GiftCodeByRedeemerRow { FILE: packages/api/src/database/types/ReportTypes.tsx type MentionCollection (line 22) | type MentionCollection = ReadonlyArray | Set | null | un... type IARMessageContextRow (line 24) | interface IARMessageContextRow { type IARSubmissionRow (line 45) | interface IARSubmissionRow { type DSAReportEmailVerificationRow (line 73) | interface DSAReportEmailVerificationRow { type DSAReportTicketRow (line 80) | interface DSAReportTicketRow { constant IAR_SUBMISSION_COLUMNS (line 87) | const IAR_SUBMISSION_COLUMNS = [ constant DSA_REPORT_EMAIL_VERIFICATION_COLUMNS (line 115) | const DSA_REPORT_EMAIL_VERIFICATION_COLUMNS = [ constant DSA_REPORT_TICKET_COLUMNS (line 122) | const DSA_REPORT_TICKET_COLUMNS = [ FILE: packages/api/src/database/types/SystemDmJobTypes.tsx type SystemDmJobStatus (line 22) | type SystemDmJobStatus = 'pending' | 'approved' | 'running' | 'completed... type SystemDmJobRow (line 23) | interface SystemDmJobRow { constant SYSTEM_DM_JOB_COLUMNS (line 43) | const SYSTEM_DM_JOB_COLUMNS = [ FILE: packages/api/src/database/types/UserTypes.tsx type Nullish (line 25) | type Nullish = T | null; type UserRow (line 27) | interface UserRow { constant USER_COLUMNS (line 83) | const USER_COLUMNS = [ constant EMPTY_USER_ROW (line 139) | const EMPTY_USER_ROW: UserRow = { type CustomStatus (line 195) | interface CustomStatus { type GuildFolder (line 203) | interface GuildFolder { type UserSettingsRow (line 212) | interface UserSettingsRow { type RelationshipRow (line 247) | interface RelationshipRow { type NoteRow (line 256) | interface NoteRow { type MuteConfig (line 263) | interface MuteConfig { type ChannelOverride (line 268) | interface ChannelOverride { type UserGuildSettingsRow (line 275) | interface UserGuildSettingsRow { type ExpressionPackRow (line 289) | interface ExpressionPackRow { type PackInstallationRow (line 300) | interface PackInstallationRow { type SavedMessageRow (line 307) | interface SavedMessageRow { constant SAVED_MESSAGE_COLUMNS (line 314) | const SAVED_MESSAGE_COLUMNS = [ type ScheduledMessageRow (line 321) | interface ScheduledMessageRow { constant SCHEDULED_MESSAGE_COLUMNS (line 335) | const SCHEDULED_MESSAGE_COLUMNS = [ type FavoriteMemeRow (line 349) | interface FavoriteMemeRow { constant FAVORITE_MEME_COLUMNS (line 369) | const FAVORITE_MEME_COLUMNS = [ type RecentMentionRow (line 389) | interface RecentMentionRow { constant RECENT_MENTION_COLUMNS (line 398) | const RECENT_MENTION_COLUMNS = [ type UserHarvestRow (line 407) | interface UserHarvestRow { constant USER_HARVEST_COLUMNS (line 422) | const USER_HARVEST_COLUMNS = [ type PushSubscriptionRow (line 437) | interface PushSubscriptionRow { constant PUSH_SUBSCRIPTION_COLUMNS (line 446) | const PUSH_SUBSCRIPTION_COLUMNS = [ type UserContactChangeLogRow (line 455) | interface UserContactChangeLogRow { constant USER_SETTINGS_COLUMNS (line 466) | const USER_SETTINGS_COLUMNS = [ constant EXPRESSION_PACK_COLUMNS (line 501) | const EXPRESSION_PACK_COLUMNS = [ constant USER_GUILD_SETTINGS_COLUMNS (line 512) | const USER_GUILD_SETTINGS_COLUMNS = [ constant RELATIONSHIP_COLUMNS (line 526) | const RELATIONSHIP_COLUMNS = [ constant NOTE_COLUMNS (line 535) | const NOTE_COLUMNS = ['source_user_id', 'target_user_id', 'note', 'versi... constant USER_CONTACT_CHANGE_LOG_COLUMNS (line 539) | const USER_CONTACT_CHANGE_LOG_COLUMNS = [ type UserByUsernameRow (line 550) | interface UserByUsernameRow { type UserByEmailRow (line 556) | interface UserByEmailRow { type UserByPhoneRow (line 561) | interface UserByPhoneRow { type UserByStripeCustomerIdRow (line 566) | interface UserByStripeCustomerIdRow { type UserByStripeSubscriptionIdRow (line 571) | interface UserByStripeSubscriptionIdRow { constant USER_BY_USERNAME_COLUMNS (line 576) | const USER_BY_USERNAME_COLUMNS = ['username', 'discriminator', 'user_id'... constant USER_BY_EMAIL_COLUMNS (line 580) | const USER_BY_EMAIL_COLUMNS = ['email_lower', 'user_id'] as const satisf... constant USER_BY_PHONE_COLUMNS (line 582) | const USER_BY_PHONE_COLUMNS = ['phone', 'user_id'] as const satisfies Re... constant USER_BY_STRIPE_CUSTOMER_ID_COLUMNS (line 584) | const USER_BY_STRIPE_CUSTOMER_ID_COLUMNS = ['stripe_customer_id', 'user_... constant USER_BY_STRIPE_SUBSCRIPTION_ID_COLUMNS (line 588) | const USER_BY_STRIPE_SUBSCRIPTION_ID_COLUMNS = [ type UsersPendingDeletionRow (line 593) | interface UsersPendingDeletionRow { constant USERS_PENDING_DELETION_COLUMNS (line 600) | const USERS_PENDING_DELETION_COLUMNS = [ type UserDmHistoryRow (line 607) | interface UserDmHistoryRow { constant USER_DM_HISTORY_COLUMNS (line 612) | const USER_DM_HISTORY_COLUMNS = ['user_id', 'channel_id'] as const satis... FILE: packages/api/src/database/types/VoiceTypes.tsx type VoiceRegionRow (line 20) | interface VoiceRegionRow { constant VOICE_REGION_COLUMNS (line 35) | const VOICE_REGION_COLUMNS = [ type VoiceServerRow (line 50) | interface VoiceServerRow { constant VOICE_SERVER_COLUMNS (line 65) | const VOICE_SERVER_COLUMNS = [ FILE: packages/api/src/donation/DonationController.tsx function DonationController (line 33) | function DonationController(app: HonoApp) { FILE: packages/api/src/donation/DonationRepository.tsx constant FETCH_DONOR_BY_EMAIL_QUERY (line 47) | const FETCH_DONOR_BY_EMAIL_QUERY = Donors.selectCql({ constant FETCH_DONOR_BY_STRIPE_CUSTOMER_ID_QUERY (line 52) | const FETCH_DONOR_BY_STRIPE_CUSTOMER_ID_QUERY = DonorsByStripeCustomerId... constant FETCH_DONOR_BY_STRIPE_SUBSCRIPTION_ID_QUERY (line 58) | const FETCH_DONOR_BY_STRIPE_SUBSCRIPTION_ID_QUERY = DonorsByStripeSubscr... constant FETCH_MAGIC_LINK_TOKEN_QUERY (line 64) | const FETCH_MAGIC_LINK_TOKEN_QUERY = DonorMagicLinkTokens.selectCql({ constant FETCH_MAGIC_LINK_TOKENS_BY_EMAIL_QUERY (line 69) | const FETCH_MAGIC_LINK_TOKENS_BY_EMAIL_QUERY = DonorMagicLinkTokensByEma... class DonationRepository (line 74) | class DonationRepository extends IDonationRepository { method findDonorByEmail (line 75) | async findDonorByEmail(email: string): Promise { method findDonorByStripeCustomerId (line 80) | async findDonorByStripeCustomerId(customerId: string): Promise { method createDonor (line 123) | async createDonor(data: { method updateDonorSubscription (line 181) | async updateDonorSubscription( method cancelDonorSubscription (line 258) | async cancelDonorSubscription(email: string): Promise<{applied: boolea... method createMagicLinkToken (line 295) | async createMagicLinkToken(token: DonorMagicLinkToken): Promise { method findMagicLinkToken (line 310) | async findMagicLinkToken(token: string): Promise { FILE: packages/api/src/donation/DonationService.tsx class DonationService (line 24) | class DonationService implements IDonationService { method constructor (line 25) | constructor( method requestMagicLink (line 30) | async requestMagicLink(email: string): Promise { method validateMagicLinkToken (line 34) | async validateMagicLinkToken(token: string): Promise<{email: string; s... method createDonationCheckout (line 38) | async createDonationCheckout(params: { method createDonorPortalSession (line 47) | async createDonorPortalSession(stripeCustomerId: string): Promise { FILE: packages/api/src/donation/services/DonationMagicLinkService.tsx class DonationMagicLinkService (line 34) | class DonationMagicLinkService { method constructor (line 35) | constructor( method sendMagicLink (line 41) | async sendMagicLink(email: string): Promise { method validateToken (line 72) | async validateToken(token: string): Promise<{email: string; stripeCust... FILE: packages/api/src/donation/tests/DonationManage.test.tsx function createDonorWithCustomerId (line 57) | async function createDonorWithCustomerId(email: string, customerId: stri... function createValidMagicLinkToken (line 72) | async function createValidMagicLinkToken(email: string, token: string): ... function createExpiredMagicLinkToken (line 83) | async function createExpiredMagicLinkToken(email: string, token: string)... function createUsedMagicLinkToken (line 94) | async function createUsedMagicLinkToken(email: string, token: string): P... FILE: packages/api/src/donation/tests/DonationRequestLink.test.tsx function createDonor (line 50) | async function createDonor(email: string): Promise { FILE: packages/api/src/donation/tests/DonationTestUtils.tsx type DonationTestEmailRecord (line 23) | interface DonationTestEmailRecord { function listDonationTestEmails (line 30) | async function listDonationTestEmails( function clearDonationTestEmails (line 41) | async function clearDonationTestEmails(harness: ApiTestHarness): Promise... constant TEST_DONOR_EMAIL (line 45) | const TEST_DONOR_EMAIL = 'donor@test.com'; constant TEST_DONOR_EMAIL_ALT (line 46) | const TEST_DONOR_EMAIL_ALT = 'donor-alt@test.com'; constant TEST_MAGIC_LINK_TOKEN (line 47) | const TEST_MAGIC_LINK_TOKEN = 'a'.repeat(64); constant TEST_INVALID_TOKEN (line 48) | const TEST_INVALID_TOKEN = 'invalid-token-too-short'; constant DONATION_AMOUNTS (line 50) | const DONATION_AMOUNTS = { constant DONATION_CURRENCIES (line 58) | const DONATION_CURRENCIES = { constant DONATION_INTERVALS (line 63) | const DONATION_INTERVALS = { type DonationCheckoutRequestBody (line 68) | interface DonationCheckoutRequestBody { type DonationCheckoutResponse (line 75) | interface DonationCheckoutResponse { type DonationRequestLinkBody (line 79) | interface DonationRequestLinkBody { function createDonationRequestLinkBuilder (line 83) | function createDonationRequestLinkBuilder(harness: ApiTestHarness): Test... function createDonationCheckoutBuilder (line 87) | function createDonationCheckoutBuilder(harness: ApiTestHarness): TestReq... function createDonationManageBuilder (line 91) | function createDonationManageBuilder(harness: ApiTestHarness, token: str... function createValidCheckoutBody (line 95) | function createValidCheckoutBody(overrides?: Partial): void { FILE: packages/api/src/download/DownloadService.tsx constant DOWNLOAD_PREFIX (line 32) | const DOWNLOAD_PREFIX = '/dl'; constant DESKTOP_REDIRECT_PREFIX (line 33) | const DESKTOP_REDIRECT_PREFIX = `${DOWNLOAD_PREFIX}/desktop`; type DesktopManifestFileEntry (line 35) | type DesktopManifestFileEntry = string | {filename: string; sha256: stri... type DesktopManifest (line 37) | type DesktopManifest = { type FormatMapping (line 46) | type FormatMapping = { constant FORMAT_MAPPINGS (line 51) | const FORMAT_MAPPINGS: Record(key: string): Promise EncryptionCo... function getDecryptedBodyAsJson (line 151) | function getDecryptedBodyAsJson(ctx: {get: (key: 'encryption') => Enc... function isEncryptedRequest (line 165) | function isEncryptedRequest(ctx: {get: (key: 'encryption') => Encryption... FILE: packages/api/src/federation/KeyManager.tsx constant KEY_SIZE (line 24) | const KEY_SIZE = 32; constant NONCE_SIZE (line 25) | const NONCE_SIZE = 12; constant TAG_SIZE (line 26) | const TAG_SIZE = 16; type KeyPair (line 28) | interface KeyPair { type EncryptResult (line 33) | interface EncryptResult { type IKeyManager (line 38) | interface IKeyManager { type KeyManagerConfig (line 46) | interface KeyManagerConfig { class KeyManager (line 50) | class KeyManager implements IKeyManager { method constructor (line 54) | constructor(config: KeyManagerConfig) { method init (line 58) | async init(): Promise { method getPublicKey (line 78) | getPublicKey(): Uint8Array { method getPublicKeyBase64 (line 83) | getPublicKeyBase64(): string { method decrypt (line 88) | async decrypt(ciphertext: Uint8Array, ephemeralPublicKey: Uint8Array, ... method encrypt (line 125) | async encrypt(plaintext: Uint8Array, recipientPublicKey: Uint8Array): ... method generateKeyPair (line 153) | private generateKeyPair(): KeyPair { method extractRawX25519PublicKey (line 168) | private extractRawX25519PublicKey(spkiKey: Buffer): Uint8Array { method extractRawX25519PrivateKey (line 172) | private extractRawX25519PrivateKey(pkcs8Key: Buffer): Uint8Array { method deriveSharedSecret (line 176) | private deriveSharedSecret(peerPublicKey: Uint8Array, keypair: KeyPair... method createPkcs8FromRaw (line 195) | private createPkcs8FromRaw(rawPrivateKey: Uint8Array): Buffer { method createSpkiFromRaw (line 202) | private createSpkiFromRaw(rawPublicKey: Uint8Array): Buffer { method loadKeyFromFile (line 207) | private async loadKeyFromFile(filePath: string): Promise { method saveKeyToFile (line 224) | private async saveKeyToFile(filePath: string, keypair: KeyPair): Promi... method createPrivateKeyPem (line 248) | private createPrivateKeyPem(keypair: KeyPair): string { method parsePrivateKeyPem (line 258) | private parsePrivateKeyPem(pemContent: string): KeyPair { method fileExists (line 277) | private async fileExists(filePath: string): Promise { method getKeypairOrThrow (line 286) | private getKeypairOrThrow(): KeyPair { class KeyManagerError (line 294) | class KeyManagerError extends Error { method constructor (line 295) | constructor(message: string) { function initializeKeyManager (line 303) | function initializeKeyManager(config: KeyManagerConfig): KeyManager { function getKeyManager (line 311) | function getKeyManager(): IKeyManager { function resetKeyManager (line 318) | function resetKeyManager(): void { FILE: packages/api/src/federation/tests/EncryptionMiddleware.test.tsx type EchoResponse (line 34) | interface EchoResponse { type SimpleResponse (line 39) | interface SimpleResponse { type ErrorResponse (line 43) | interface ErrorResponse { type BodyCheckResponse (line 48) | interface BodyCheckResponse { type EncryptedCheckResponse (line 52) | interface EncryptedCheckResponse { type RawBodyResponse (line 56) | interface RawBodyResponse { function createTestErrorHandler (line 61) | function createTestErrorHandler(err: Error, ctx: {json: (body: unknown, ... constant TEST_KEY_DIR (line 68) | const TEST_KEY_DIR = '/tmp/fluxer-encryption-middleware-test-keys'; constant ENCRYPTED_CONTENT_TYPE (line 69) | const ENCRYPTED_CONTENT_TYPE = 'application/x-fluxer-encrypted'; constant EPHEMERAL_KEY_HEADER (line 70) | const EPHEMERAL_KEY_HEADER = 'x-fluxer-ephemeral-key'; constant IV_HEADER (line 71) | const IV_HEADER = 'x-fluxer-iv'; constant ENCRYPTED_RESPONSE_HEADER (line 72) | const ENCRYPTED_RESPONSE_HEADER = 'x-fluxer-encrypted-response'; type TestContext (line 74) | interface TestContext { function createTestContext (line 80) | async function createTestContext(): Promise { FILE: packages/api/src/federation/tests/KeyManager.test.tsx constant TEST_KEY_DIR (line 25) | const TEST_KEY_DIR = '/tmp/fluxer-test-keys'; FILE: packages/api/src/gateway/GatewayController.tsx function GatewayController (line 26) | function GatewayController(app: HonoApp) { FILE: packages/api/src/gateway/GatewayRequestService.tsx type TokenType (line 27) | type TokenType = 'user' | 'bot' | 'unknown'; function parseTokenType (line 29) | function parseTokenType(raw: string): TokenType { function extractToken (line 39) | function extractToken(authHeader: string | null): string { class GatewayRequestService (line 47) | class GatewayRequestService { method constructor (line 48) | constructor(private readonly botAuthService: BotAuthService) {} method getBotGatewayInfo (line 50) | async getBotGatewayInfo(authHeader: string | null): Promise { method batchConsecutiveMessageDeleteLogs (line 117) | async batchConsecutiveMessageDeleteLogs(guildId: GuildID, logs: Array<... method batchRecentMessageDeleteLogs (line 146) | async batchRecentMessageDeleteLogs(guildId: GuildID, limit: number = 2... method findConsecutiveMessageDeleteGroups (line 165) | private findConsecutiveMessageDeleteGroups(logs: Array)... method createBatchedMessageDeleteLog (line 208) | private async createBatchedMessageDeleteLog( method createBuilder (line 230) | createBuilder(guildId: GuildID, userId: UserID): GuildAuditLogBuilder { method computeChanges (line 234) | computeChanges( method computeArrayChange (line 283) | computeArrayChange( method areValuesEqual (line 308) | private areValuesEqual(a: unknown, b: unknown): boolean { method areArraysEqual (line 322) | private areArraysEqual(a: Array | null | undefined, b: Array<... class GuildAuditLogBuilder (line 330) | class GuildAuditLogBuilder { method constructor (line 334) | constructor( method withAction (line 342) | withAction(actionType: AuditLogActionType, targetId?: string | null): ... method withReason (line 348) | withReason(reason?: string | null): this { method withMetadata (line 353) | withMetadata(metadata?: CreateGuildAuditLogParams['metadata']): this { method withMetadataEntry (line 358) | withMetadataEntry(key: string, value: string): this { method withChanges (line 366) | withChanges(changes: GuildAuditLogChange | null): this { method withComputedChanges (line 371) | withComputedChanges( method withCreatedAt (line 379) | withCreatedAt(createdAt?: Date): this { method commit (line 384) | async commit(): Promise { FILE: packages/api/src/guild/GuildAuditLogTypes.tsx type AuditLogChange (line 20) | interface AuditLogChange { type GuildAuditLogChange (line 26) | type GuildAuditLogChange = Array; FILE: packages/api/src/guild/GuildController.tsx function GuildController (line 23) | function GuildController(app: HonoApp) { FILE: packages/api/src/guild/GuildFeatureUtils.tsx function mapGuildFeatures (line 22) | function mapGuildFeatures(features: ReadonlySet): Array | null | unde... function resolveDefaultMaxGuildMembers (line 40) | function resolveDefaultMaxGuildMembers(guildFeatures: Iterable |... function resolveMaxGuildMembersLimit (line 48) | function resolveMaxGuildMembersLimit(params: { FILE: packages/api/src/guild/GuildModel.tsx function mapGuildToPartialResponse (line 42) | function mapGuildToPartialResponse(guild: Guild): z.infer { method listEmojis (line 83) | async listEmojis(guildId: GuildID): Promise> { method countEmojis (line 90) | async countEmojis(guildId: GuildID): Promise { method upsertEmoji (line 97) | async upsertEmoji(data: GuildEmojiRow, oldData?: GuildEmojiRow | null)... method deleteEmoji (line 120) | async deleteEmoji(guildId: GuildID, emojiId: EmojiID): Promise { method getSticker (line 132) | async getSticker(stickerId: StickerID, guildId: GuildID): Promise> { method countStickers (line 154) | async countStickers(guildId: GuildID): Promise { method upsertSticker (line 161) | async upsertSticker(data: GuildStickerRow, oldData?: GuildStickerRow |... method deleteSticker (line 184) | async deleteSticker(guildId: GuildID, stickerId: StickerID): Promise { method listGuilds (line 60) | async listGuilds(guildIds: Array): Promise> { method listAllGuildsPaginated (line 69) | async listAllGuildsPaginated(limit: number, lastGuildId?: GuildID): Pr... method listUserGuilds (line 85) | async listUserGuilds(userId: UserID): Promise> { method countUserGuilds (line 102) | async countUserGuilds(userId: UserID): Promise { method listOwnedGuildIds (line 112) | async listOwnedGuildIds(userId: UserID): Promise> { method upsert (line 117) | async upsert(data: GuildRow, oldData?: GuildRow | null, _previousOwner... method delete (line 133) | async delete(guildId: GuildID, _ownerId?: UserID): Promise { FILE: packages/api/src/guild/repositories/GuildDiscoveryRepository.tsx constant FETCH_DISCOVERY_BY_GUILD_ID (line 26) | const FETCH_DISCOVERY_BY_GUILD_ID = GuildDiscovery.selectCql({ constant FETCH_DISCOVERY_BY_STATUS (line 31) | const FETCH_DISCOVERY_BY_STATUS = GuildDiscoveryByStatus.selectCql({ class GuildDiscoveryRepository (line 48) | class GuildDiscoveryRepository extends IGuildDiscoveryRepository { method findByGuildId (line 49) | async findByGuildId(guildId: GuildID): Promise { method deleteByGuildId (line 93) | async deleteByGuildId(guildId: GuildID, status: string, appliedAt: Dat... method updateStatus (line 106) | async updateStatus( FILE: packages/api/src/guild/repositories/GuildMemberRepository.tsx constant FETCH_GUILD_MEMBER_BY_GUILD_AND_USER_ID_QUERY (line 34) | const FETCH_GUILD_MEMBER_BY_GUILD_AND_USER_ID_QUERY = GuildMembers.selec... constant FETCH_GUILD_MEMBERS_BY_GUILD_ID_QUERY (line 39) | const FETCH_GUILD_MEMBERS_BY_GUILD_ID_QUERY = GuildMembers.selectCql({ constant COUNT_GUILD_MEMBERS_BY_GUILD_ID_QUERY (line 43) | const COUNT_GUILD_MEMBERS_BY_GUILD_ID_QUERY = GuildMembers.selectCountCql({ function createPaginatedFirstPageQuery (line 47) | function createPaginatedFirstPageQuery(limit: number) { function createPaginatedQuery (line 54) | function createPaginatedQuery(limit: number) { class GuildMemberRepository (line 61) | class GuildMemberRepository extends IGuildMemberRepository { method getMember (line 62) | async getMember(guildId: GuildID, userId: UserID): Promise> { method countMembers (line 77) | async countMembers(guildId: GuildID): Promise { method upsertMember (line 84) | async upsertMember(data: GuildMemberRow, oldData?: GuildMemberRow | nu... method listMembersPaginated (line 112) | async listMembersPaginated(guildId: GuildID, limit: number, afterUserI... method deleteMember (line 127) | async deleteMember(guildId: GuildID, userId: UserID): Promise { FILE: packages/api/src/guild/repositories/GuildModerationRepository.tsx constant FETCH_GUILD_BAN_BY_GUILD_AND_USER_ID_QUERY (line 45) | const FETCH_GUILD_BAN_BY_GUILD_AND_USER_ID_QUERY = GuildBans.selectCql({ constant FETCH_GUILD_BANS_BY_GUILD_ID_QUERY (line 50) | const FETCH_GUILD_BANS_BY_GUILD_ID_QUERY = GuildBans.selectCql({ constant AUDIT_LOG_TTL_SECONDS (line 54) | const AUDIT_LOG_TTL_SECONDS = seconds('45 days'); constant FETCH_GUILD_BY_ID_QUERY (line 56) | const FETCH_GUILD_BY_ID_QUERY = Guilds.selectCql({ constant FETCH_GUILD_AUDIT_LOG_QUERY (line 61) | const FETCH_GUILD_AUDIT_LOG_QUERY = GuildAuditLogs.selectCql({ constant FETCH_GUILD_AUDIT_LOGS_BY_IDS_QUERY (line 66) | const FETCH_GUILD_AUDIT_LOGS_BY_IDS_QUERY = GuildAuditLogs.selectCql({ class GuildModerationRepository (line 70) | class GuildModerationRepository extends IGuildModerationRepository { method getBan (line 71) | async getBan(guildId: GuildID, userId: UserID): Promise> { method upsertBan (line 86) | async upsertBan(data: GuildBanRow): Promise { method deleteBan (line 98) | async deleteBan(guildId: GuildID, userId: UserID): Promise { method createAuditLog (line 107) | async createAuditLog(data: GuildAuditLogRow): Promise { method getAuditLog (line 124) | async getAuditLog(guildId: GuildID, logId: bigint): Promise): Pro... method deleteAuditLogs (line 180) | async deleteAuditLogs(guildId: GuildID, logs: Array): P... method batchDeleteAndCreateAuditLogs (line 219) | async batchDeleteAndCreateAuditLogs( method updateAuditLogsIndexedAt (line 273) | async updateAuditLogsIndexedAt(guildId: GuildID, indexedAt: Date | nul... method mapRowToGuildAuditLog (line 294) | private mapRowToGuildAuditLog(row: GuildAuditLogRow): GuildAuditLog { method buildAuditLogSelectQuery (line 298) | private buildAuditLogSelectQuery( method selectAuditLogTable (line 333) | private selectAuditLogTable( FILE: packages/api/src/guild/repositories/GuildRepository.tsx class GuildRepository (line 45) | class GuildRepository implements IGuildRepositoryAggregate { method constructor (line 52) | constructor() { method findUnique (line 60) | async findUnique(guildId: GuildID): Promise { method listGuilds (line 64) | async listGuilds(guildIds: Array): Promise> { method listAllGuildsPaginated (line 68) | async listAllGuildsPaginated(limit: number, lastGuildId?: GuildID): Pr... method listUserGuilds (line 72) | async listUserGuilds(userId: UserID): Promise> { method countUserGuilds (line 76) | async countUserGuilds(userId: UserID): Promise { method listOwnedGuildIds (line 80) | async listOwnedGuildIds(userId: UserID): Promise> { method upsert (line 84) | async upsert(data: GuildRow, oldData?: GuildRow | null, previousOwnerI... method delete (line 88) | async delete(guildId: GuildID, ownerId?: UserID): Promise { method getMember (line 121) | async getMember(guildId: GuildID, userId: UserID): Promise> { method countMembers (line 129) | async countMembers(guildId: GuildID): Promise { method upsertMember (line 133) | async upsertMember(data: GuildMemberRow): Promise { method listMembersPaginated (line 137) | async listMembersPaginated(guildId: GuildID, limit: number, afterUserI... method deleteMember (line 141) | async deleteMember(guildId: GuildID, userId: UserID): Promise { method getRole (line 145) | async getRole(roleId: RoleID, guildId: GuildID): Promise> { method listRolesByIds (line 153) | async listRolesByIds(roleIds: Array, guildId: GuildID): Promis... method countRoles (line 157) | async countRoles(guildId: GuildID): Promise { method upsertRole (line 161) | async upsertRole(data: GuildRoleRow): Promise { method deleteRole (line 165) | async deleteRole(guildId: GuildID, roleId: RoleID): Promise { method getBan (line 169) | async getBan(guildId: GuildID, userId: UserID): Promise> { method upsertBan (line 177) | async upsertBan(data: GuildBanRow): Promise { method deleteBan (line 181) | async deleteBan(guildId: GuildID, userId: UserID): Promise { method createAuditLog (line 185) | async createAuditLog(data: GuildAuditLogRow): Promise { method getAuditLog (line 189) | async getAuditLog(guildId: GuildID, logId: bigint): Promise): Pro... method deleteAuditLogs (line 208) | async deleteAuditLogs(guildId: GuildID, logs: Array): P... method batchDeleteAndCreateAuditLogs (line 212) | async batchDeleteAndCreateAuditLogs( method updateAuditLogsIndexedAt (line 220) | async updateAuditLogsIndexedAt(guildId: GuildID, indexedAt: Date | nul... method getEmoji (line 224) | async getEmoji(emojiId: EmojiID, guildId: GuildID): Promise { method listEmojis (line 232) | async listEmojis(guildId: GuildID): Promise> { method countEmojis (line 236) | async countEmojis(guildId: GuildID): Promise { method upsertEmoji (line 240) | async upsertEmoji(data: GuildEmojiRow): Promise { method deleteEmoji (line 244) | async deleteEmoji(guildId: GuildID, emojiId: EmojiID): Promise { method getSticker (line 248) | async getSticker(stickerId: StickerID, guildId: GuildID): Promise> { method countStickers (line 260) | async countStickers(guildId: GuildID): Promise { method upsertSticker (line 264) | async upsertSticker(data: GuildStickerRow): Promise { method deleteSticker (line 268) | async deleteSticker(guildId: GuildID, stickerId: StickerID): Promise> { method listRolesByIds (line 63) | async listRolesByIds(roleIds: Array, guildId: GuildID): Promis... method countRoles (line 73) | async countRoles(guildId: GuildID): Promise { method upsertRole (line 80) | async upsertRole(data: GuildRoleRow, oldData?: GuildRoleRow | null): P... method deleteRole (line 101) | async deleteRole(guildId: GuildID, roleId: RoleID): Promise { FILE: packages/api/src/guild/repositories/IGuildRepositoryAggregate.tsx type IGuildRepositoryAggregate (line 26) | interface IGuildRepositoryAggregate FILE: packages/api/src/guild/services/GuildChannelService.tsx class GuildChannelService (line 38) | class GuildChannelService { method constructor (line 41) | constructor( method getChannels (line 63) | async getChannels(params: { method createChannel (line 95) | async createChannel( method updateChannelPositions (line 107) | async updateChannelPositions( method sanitizeTextChannelNames (line 136) | async sanitizeTextChannelNames(params: {guildId: GuildID; requestCache... method checkPermission (line 140) | private async checkPermission(params: {userId: UserID; guildId: GuildI... FILE: packages/api/src/guild/services/GuildContentService.tsx class GuildContentService (line 43) | class GuildContentService { method constructor (line 48) | constructor( method getEmojis (line 82) | async getEmojis(params: { method getEmojiUser (line 90) | async getEmojiUser(params: { method createEmoji (line 99) | async createEmoji( method bulkCreateEmojis (line 106) | async bulkCreateEmojis( method updateEmoji (line 116) | async updateEmoji( method deleteEmoji (line 123) | async deleteEmoji( method getStickers (line 130) | async getStickers(params: { method getStickerUser (line 138) | async getStickerUser(params: { method createSticker (line 147) | async createSticker( method bulkCreateStickers (line 161) | async bulkCreateStickers( method updateSticker (line 175) | async updateSticker( method deleteSticker (line 189) | async deleteSticker( FILE: packages/api/src/guild/services/GuildDataService.tsx class GuildDataService (line 48) | class GuildDataService { method constructor (line 54) | constructor( method getGuild (line 89) | async getGuild({userId, guildId}: {userId: UserID; guildId: GuildID}):... method getUserGuilds (line 93) | async getUserGuilds( method getPublicGuildData (line 105) | async getPublicGuildData(guildId: GuildID): Promise { method createGuild (line 113) | async createGuild( method updateGuild (line 120) | async updateGuild( method getVanityURL (line 127) | async getVanityURL(params: {userId: UserID; guildId: GuildID}): Promis... method updateVanityURL (line 131) | async updateVanityURL( method deleteGuild (line 138) | async deleteGuild(params: {user: User; guildId: GuildID}, auditLogReas... method deleteGuildForAdmin (line 142) | async deleteGuildForAdmin(guildId: GuildID, _auditLogReason?: string |... method transferOwnership (line 146) | async transferOwnership( method checkGuildVerification (line 153) | async checkGuildVerification(params: {user: User; guild: Guild; member... FILE: packages/api/src/guild/services/GuildDiscoveryService.tsx constant VALID_CATEGORY_TYPES (line 44) | const VALID_CATEGORY_TYPES = new Set(Object.values(DiscoveryCate... type DiscoveryGuildResult (line 83) | interface DiscoveryGuildResult { class GuildDiscoveryService (line 95) | class GuildDiscoveryService extends IGuildDiscoveryService { method constructor (line 96) | constructor( method apply (line 105) | async apply(params: { method editApplication (line 157) | async editApplication(params: { method withdraw (line 202) | async withdraw(params: {guildId: GuildID; userId: UserID}): Promise { method getEligibility (line 224) | async getEligibility(guildId: GuildID): Promise<{eligible: boolean; mi... method approve (line 231) | async approve(params: {guildId: GuildID; adminUserId: UserID; reason?:... method reject (line 268) | async reject(params: {guildId: GuildID; adminUserId: UserID; reason: s... method remove (line 294) | async remove(params: {guildId: GuildID; adminUserId: UserID; reason: s... method listByStatus (line 325) | async listByStatus(params: {status: string; limit: number}): Promise { method removeDiscoverableFeature (line 445) | private async removeDiscoverableFeature(guildId: GuildID): Promise { method dispatchGuildMemberRemove (line 239) | private async dispatchGuildMemberRemove({guildId, userId}: {guildId: G... method recordAuditLog (line 247) | private async recordAuditLog(params: { FILE: packages/api/src/guild/services/GuildRoleService.tsx type GuildAuth (line 54) | interface GuildAuth { type RoleUpdateData (line 60) | type RoleUpdateData = Partial<{ class GuildRoleService (line 72) | class GuildRoleService { method constructor (line 73) | constructor( method systemCreateRole (line 83) | async systemCreateRole(params: { method createRole (line 137) | async createRole( method resolveRequestedPermissions (line 199) | private async resolveRequestedPermissions(params: { method updateRole (line 217) | async updateRole( method deleteRole (line 281) | async deleteRole( method updateRolePositions (line 339) | async updateRolePositions( method listRoles (line 360) | async listRoles(params: {userId: UserID; guildId: GuildID}): Promise}, allRoles: A... method isRoleHigherThan (line 532) | private isRoleHigherThan(roleA: GuildRole, roleB: GuildRole): boolean { method buildRoleUpdateData (line 544) | private async buildRoleUpdateData(params: { method updateRolePositionsByList (line 582) | private async updateRolePositionsByList(params: { method reorderRolePositions (line 678) | private reorderRolePositions({ method serializeRoleForAudit (line 718) | private serializeRoleForAudit(role: GuildRole): Record { method dispatchGuildRoleCreate (line 733) | private async dispatchGuildRoleCreate({guildId, role}: {guildId: Guild... method dispatchGuildRoleUpdate (line 741) | private async dispatchGuildRoleUpdate({guildId, role}: {guildId: Guild... method dispatchGuildRoleDelete (line 749) | private async dispatchGuildRoleDelete({guildId, roleId}: {guildId: Gui... method dispatchGuildRoleUpdateBulk (line 757) | private async dispatchGuildRoleUpdateBulk({ method recordAuditLog (line 773) | private async recordAuditLog(params: { method resolveGuildLimit (line 817) | private resolveGuildLimit(guildFeatures: Iterable | null, key:... FILE: packages/api/src/guild/services/GuildSearchService.tsx class GuildSearchService (line 46) | class GuildSearchService { method constructor (line 49) | constructor( method searchMessages (line 66) | async searchMessages(params: { method searchAllGuilds (line 210) | async searchAllGuilds(params: { method queueIndexingChannels (line 303) | private async queueIndexingChannels(channelIds: Iterable): Pro... method collectAccessibleGuildChannels (line 318) | async collectAccessibleGuildChannels(userId: UserID): Promise<{ FILE: packages/api/src/guild/services/GuildService.tsx type AuditLogOptions (line 90) | interface AuditLogOptions { type GuildAuditLogEntryResponse (line 107) | interface GuildAuditLogEntryResponse { type AuditLogWebhook (line 117) | interface AuditLogWebhook { type GuildAuth (line 126) | interface GuildAuth { class GuildService (line 137) | class GuildService { method constructor (line 152) | constructor( method getGuild (line 250) | async getGuild({userId, guildId}: {userId: UserID; guildId: GuildID}):... method getUserGuilds (line 254) | async getUserGuilds( method getPublicGuildData (line 266) | async getPublicGuildData(guildId: GuildID): Promise { method createGuild (line 274) | async createGuild( method updateGuild (line 281) | async updateGuild( method updateTextChannelFlexibleNamesFeature (line 288) | async updateTextChannelFlexibleNamesFeature( method updateDetachedBannerFeature (line 331) | async updateDetachedBannerFeature( method getVanityURL (line 369) | async getVanityURL(params: {userId: UserID; guildId: GuildID}): Promis... method updateVanityURL (line 373) | async updateVanityURL( method deleteGuild (line 380) | async deleteGuild(params: {user: User; guildId: GuildID}, auditLogReas... method deleteGuildAsAdmin (line 384) | async deleteGuildAsAdmin(guildId: GuildID, auditLogReason?: string | n... method transferOwnership (line 388) | async transferOwnership( method checkGuildVerification (line 395) | async checkGuildVerification(params: {user: User; guild: Guild; member... method getMembers (line 399) | async getMembers(params: { method getMember (line 409) | async getMember(params: { method updateMember (line 418) | async updateMember( method addMemberRole (line 449) | async addMemberRole( method removeMemberRole (line 456) | async removeMemberRole( method removeMember (line 463) | async removeMember( method addUserToGuild (line 470) | async addUserToGuild(params: { method leaveGuild (line 486) | async leaveGuild(params: {userId: UserID; guildId: GuildID}, auditLogR... method systemCreateRole (line 490) | async systemCreateRole(params: { method createRole (line 498) | async createRole( method updateRole (line 505) | async updateRole( method deleteRole (line 512) | async deleteRole( method updateRolePositions (line 519) | async updateRolePositions( method listRoles (line 526) | async listRoles(params: {userId: UserID; guildId: GuildID}): Promise): AuditLogOp... method parseBooleanOption (line 1025) | private parseBooleanOption(value: string): boolean { method assignNumericOption (line 1029) | private assignNumericOption( method loadAuditLogWebhooks (line 1040) | private async loadAuditLogWebhooks(logs: Array): Promise<{ method buildAuditLogWebhookResponses (line 1067) | private buildAuditLogWebhookResponses(webhooks: Array): Array... method isWebhookAction (line 1078) | private isWebhookAction(actionType: AuditLogActionType): boolean { method getAuditLogTargetUserId (line 1086) | private getAuditLogTargetUserId(log: GuildAuditLog): UserID | null { method isUserTargetAction (line 1098) | private isUserTargetAction(actionType: AuditLogActionType): boolean { method searchMessages (line 1112) | async searchMessages(params: { method searchAllGuilds (line 1122) | async searchAllGuilds(params: { method collectAccessibleGuildChannels (line 1131) | async collectAccessibleGuildChannels(userId: UserID) { method getGuildAuthenticated (line 1135) | async getGuildAuthenticated({userId, guildId}: {userId: UserID; guildI... FILE: packages/api/src/guild/services/channel/ChannelHelpers.tsx type ChannelReorderOperation (line 28) | interface ChannelReorderOperation { class ChannelHelpers (line 35) | class ChannelHelpers { method getNextGlobalChannelPosition (line 36) | static getNextGlobalChannelPosition( method validateChannelVoicePlacement (line 82) | static validateChannelVoicePlacement( method serializeChannelForAudit (line 120) | static serializeChannelForAudit(channel: Channel): Record { FILE: packages/api/src/guild/services/content/ContentHelpers.tsx class ContentHelpers (line 32) | class ContentHelpers { method constructor (line 33) | constructor( method getGuildData (line 38) | async getGuildData(params: {userId: UserID; guildId: GuildID}) { method checkPermission (line 44) | async checkPermission(params: {userId: UserID; guildId: GuildID; permi... method checkManageExpressionsPermission (line 49) | async checkManageExpressionsPermission(params: {userId: UserID; guildI... method checkCreateExpressionsPermission (line 53) | async checkCreateExpressionsPermission(params: {userId: UserID; guildI... method checkModifyExpressionPermission (line 57) | async checkModifyExpressionPermission(params: {userId: UserID; guildId... method hasManageExpressionsPermission (line 65) | async hasManageExpressionsPermission(params: {userId: UserID; guildId:... method serializeEmojiForAudit (line 70) | serializeEmojiForAudit(emoji: GuildEmoji): Record { method serializeStickerForAudit (line 74) | serializeStickerForAudit(sticker: GuildSticker): Record { method purgeSticker (line 32) | async purgeSticker(id: string): Promise { method queueAsset (line 36) | private async queueAsset(prefix: string, id: string, cdnUrls: Array { method buildStickerCdnUrls (line 54) | private buildStickerCdnUrls(id: string): Array { FILE: packages/api/src/guild/services/content/StickerService.tsx class StickerService (line 53) | class StickerService { method constructor (line 54) | constructor( method resolveGuildLimit (line 65) | private resolveGuildLimit(key: LimitKey, fallback: number, guildFeatur... method getStickers (line 76) | async getStickers(params: { method getStickerUser (line 88) | async getStickerUser(params: { method createSticker (line 108) | async createSticker( method bulkCreateStickers (line 176) | async bulkCreateStickers( method updateSticker (line 272) | async updateSticker( method deleteSticker (line 316) | async deleteSticker( method dispatchGuildStickersUpdate (line 352) | private async dispatchGuildStickersUpdate(params: {guildId: GuildID; s... FILE: packages/api/src/guild/services/data/GuildDataHelpers.tsx type GuildAuth (line 35) | interface GuildAuth { class GuildDataHelpers (line 40) | class GuildDataHelpers { method constructor (line 41) | constructor( method getGuildAuthenticated (line 47) | async getGuildAuthenticated(params: {userId: UserID; guildId: GuildID}... method createGuildAuth (line 61) | private createGuildAuth(params: {guildData: GuildResponse; guildId: Gu... method guildExists (line 69) | private async guildExists(guildId: GuildID): Promise { method serializeGuildForAudit (line 74) | serializeGuildForAudit(guild: Guild): Record { method computeGuildChanges (line 78) | computeGuildChanges( method dispatchGuildUpdate (line 90) | async dispatchGuildUpdate(guild: Guild): Promise { method recordAuditLog (line 98) | async recordAuditLog(params: { FILE: packages/api/src/guild/services/data/GuildOperationsService.tsx type PreparedGuildAssets (line 79) | interface PreparedGuildAssets { constant BASE_GUILD_FEATURES (line 86) | const BASE_GUILD_FEATURES: ReadonlyArray = [ class GuildOperationsService (line 93) | class GuildOperationsService { method constructor (line 94) | constructor( method getGuild (line 109) | async getGuild({userId, guildId}: {userId: UserID; guildId: GuildID}):... method getUserGuilds (line 125) | async getUserGuilds( method getPublicGuildData (line 208) | async getPublicGuildData(guildId: GuildID): Promise { method createGuild (line 220) | async createGuild( method performCreateGuild (line 229) | private async performCreateGuild( method updateGuild (line 463) | async updateGuild( method rollbackPreparedAssets (line 821) | private async rollbackPreparedAssets(assets: PreparedGuildAssets): Pro... method commitPreparedAssets (line 840) | private async commitPreparedAssets(assets: PreparedGuildAssets): Promi... method deleteGuild (line 861) | async deleteGuild(params: {user: User; guildId: GuildID}, _auditLogRea... method deleteGuildById (line 871) | async deleteGuildById(guildId: GuildID): Promise { method performGuildDeletion (line 875) | private async performGuildDeletion(guildId: GuildID): Promise { method isGuildAccessError (line 953) | private isGuildAccessError(error: unknown): boolean { method guildExists (line 957) | private async guildExists(guildId: GuildID): Promise { FILE: packages/api/src/guild/services/data/GuildOwnershipService.tsx class GuildOwnershipService (line 37) | class GuildOwnershipService { method constructor (line 38) | constructor( method transferOwnership (line 44) | async transferOwnership( method checkGuildVerification (line 96) | async checkGuildVerification(params: {user: User; guild: Guild; member... FILE: packages/api/src/guild/services/data/GuildVanityService.tsx class GuildVanityService (line 39) | class GuildVanityService { method constructor (line 40) | constructor( method getVanityURL (line 46) | async getVanityURL(params: {userId: UserID; guildId: GuildID}): Promis... method updateVanityURL (line 68) | async updateVanityURL( FILE: packages/api/src/guild/services/member/GuildMemberAuditService.tsx class GuildMemberAuditService (line 27) | class GuildMemberAuditService { method constructor (line 28) | constructor(private readonly guildAuditLogService: GuildAuditLogServic... method serializeMemberForAudit (line 30) | serializeMemberForAudit(member: GuildMember): Record { method recordAuditLog (line 52) | async recordAuditLog(params: { FILE: packages/api/src/guild/services/member/GuildMemberAuthService.tsx type GuildAuth (line 26) | interface GuildAuth { class GuildMemberAuthService (line 35) | class GuildMemberAuthService { method constructor (line 36) | constructor(private readonly gatewayService: IGatewayService) {} method getGuildAuthenticated (line 38) | async getGuildAuthenticated({userId, guildId}: {userId: UserID; guildI... FILE: packages/api/src/guild/services/member/GuildMemberEventService.tsx class GuildMemberEventService (line 27) | class GuildMemberEventService { method constructor (line 28) | constructor( method dispatchGuildMemberAdd (line 33) | async dispatchGuildMemberAdd({ method dispatchGuildMemberUpdate (line 47) | async dispatchGuildMemberUpdate({ method dispatchGuildMemberRemove (line 64) | async dispatchGuildMemberRemove({guildId, userId}: {guildId: GuildID; ... FILE: packages/api/src/guild/services/member/GuildMemberOperationsService.tsx type MemberUpdateData (line 71) | interface MemberUpdateData { type PreparedMemberAssets (line 85) | interface PreparedMemberAssets { type VoiceAuditLogMetadataParams (line 90) | interface VoiceAuditLogMetadataParams { function buildVoiceAuditLogMetadata (line 95) | function buildVoiceAuditLogMetadata(params: VoiceAuditLogMetadataParams)... class GuildMemberOperationsService (line 106) | class GuildMemberOperationsService { method constructor (line 107) | constructor( method getMembers (line 122) | async getMembers(params: { method recordVoiceAuditLog (line 140) | private async recordVoiceAuditLog(params: { method recordGuildAuditLog (line 172) | private async recordGuildAuditLog(params: { method fetchCurrentChannelId (line 209) | private async fetchCurrentChannelId(guildId: GuildID, userId: UserID):... method getMember (line 214) | async getMember(params: { method updateMember (line 227) | async updateMember(params: { method removeMember (line 344) | async removeMember(params: {userId: UserID; targetId: UserID; guildId:... method addUserToGuild (line 382) | async addUserToGuild( method leaveGuild (line 524) | async leaveGuild(params: {userId: UserID; guildId: GuildID}): Promise<... method validateTimeout (line 582) | private async validateTimeout(params: { method buildMemberUpdateRow (line 626) | private buildMemberUpdateRow(params: { method enforceGuildLimit (line 652) | private async enforceGuildLimit(user: User, currentGuildCount: number)... method applyJoinUserSettings (line 659) | private async applyJoinUserSettings(params: {userId: UserID; guildId: ... method updateSelfProfile (line 734) | private async updateSelfProfile(params: { method updateVoiceAndChannel (line 887) | private async updateVoiceAndChannel(params: { method dispatchUserSettingsUpdate (line 972) | private async dispatchUserSettingsUpdate({ method dispatchUserGuildSettingsUpdate (line 987) | private async dispatchUserGuildSettingsUpdate({ method rollbackPreparedAssets (line 1001) | private async rollbackPreparedAssets(preparedAssets: PreparedMemberAss... method commitPreparedAssets (line 1014) | private async commitPreparedAssets(preparedAssets: PreparedMemberAsset... FILE: packages/api/src/guild/services/member/GuildMemberRoleService.tsx class GuildMemberRoleService (line 29) | class GuildMemberRoleService { method constructor (line 30) | constructor( method systemAddMemberRole (line 37) | async systemAddMemberRole(params: {targetId: UserID; guildId: GuildID;... method addMemberRole (line 68) | async addMemberRole(params: { method removeMemberRole (line 115) | async removeMemberRole(params: { FILE: packages/api/src/guild/services/member/GuildMemberSearchIndexService.tsx class GuildMemberSearchIndexService (line 26) | class GuildMemberSearchIndexService { method indexMember (line 27) | async indexMember(member: GuildMember, user: User): Promise { method updateMember (line 46) | async updateMember(member: GuildMember, user: User): Promise { method deleteMember (line 65) | async deleteMember(guildId: GuildID, userId: UserID): Promise { FILE: packages/api/src/guild/services/member/GuildMemberValidationService.tsx function ensureNotEveryoneRole (line 34) | function ensureNotEveryoneRole(roleId: RoleID, guildId: GuildID, path: s... class GuildMemberValidationService (line 40) | class GuildMemberValidationService { method constructor (line 41) | constructor( method validateAndGetRoleIds (line 46) | async validateAndGetRoleIds(params: { method validateRoleAssignment (line 93) | async validateRoleAssignment(params: { method checkUserBanStatus (line 117) | async checkUserBanStatus({userId, guildId}: {userId: UserID; guildId: ... FILE: packages/api/src/guild/tests/DiscoveryApplicationLifecycle.test.tsx function setGuildMemberCount (line 33) | async function setGuildMemberCount(harness: ApiTestHarness, guildId: str... function applyForDiscovery (line 40) | async function applyForDiscovery( function adminApprove (line 54) | async function adminApprove( function adminReject (line 67) | async function adminReject( function createAdminAccount (line 80) | async function createAdminAccount(harness: ApiTestHarness) { FILE: packages/api/src/guild/tests/DiscoveryApplicationValidation.test.tsx function setGuildMemberCount (line 33) | async function setGuildMemberCount(harness: ApiTestHarness, guildId: str... FILE: packages/api/src/guild/tests/DiscoverySearchAndJoin.test.tsx function setGuildMemberCount (line 34) | async function setGuildMemberCount(harness: ApiTestHarness, guildId: str... function applyAndApprove (line 41) | async function applyAndApprove( FILE: packages/api/src/guild/tests/GuildAssetUpload.test.tsx constant AVATAR_MAX_SIZE (line 29) | const AVATAR_MAX_SIZE = 10 * 1024 * 1024; function getTooLargeImageDataUrl (line 31) | function getTooLargeImageDataUrl(): string { function grantGuildFeature (line 37) | async function grantGuildFeature(harness: ApiTestHarness, guildId: strin... FILE: packages/api/src/guild/tests/GuildAuditLogs.test.tsx type AuditLogChange (line 36) | interface AuditLogChange { type AuditLogOptions (line 42) | interface AuditLogOptions { type AuditLogEntry (line 49) | interface AuditLogEntry { type AuditLogWebhook (line 59) | interface AuditLogWebhook { type AuditLogResponse (line 68) | interface AuditLogResponse { type PermissionsDiff (line 74) | interface PermissionsDiff { FILE: packages/api/src/guild/tests/GuildFeatures.test.tsx type AuditLogEntry (line 37) | interface AuditLogEntry { type AuditLogResponse (line 47) | interface AuditLogResponse { FILE: packages/api/src/guild/tests/GuildMemberManagement.test.tsx type InvalidFormResponse (line 75) | type InvalidFormResponse = {errors: Array<{path: string}>; code: string}; type InvalidFormResponse (line 89) | type InvalidFormResponse = {errors: Array<{path: string}>; code: string}; FILE: packages/api/src/guild/tests/GuildMfaLevel.test.tsx constant TOTP_SECRET (line 29) | const TOTP_SECRET = 'JBSWY3DPEHPK3PXP'; function enableTotp (line 31) | async function enableTotp(harness: ApiTestHarness, account: TestAccount)... function loginWithTotp (line 39) | async function loginWithTotp(harness: ApiTestHarness, account: TestAccou... FILE: packages/api/src/guild/tests/GuildTestUtils.tsx function createGuild (line 29) | async function createGuild(harness: ApiTestHarness, token: string, name:... function getGuild (line 33) | async function getGuild(harness: ApiTestHarness, token: string, guildId:... function updateGuild (line 37) | async function updateGuild( function leaveGuild (line 46) | async function leaveGuild(harness: ApiTestHarness, token: string, guildI... function deleteGuild (line 50) | async function deleteGuild(harness: ApiTestHarness, token: string, guild... function getUserGuilds (line 54) | async function getUserGuilds(harness: ApiTestHarness, token: string): Pr... function createChannel (line 58) | async function createChannel( function getChannel (line 71) | async function getChannel(harness: ApiTestHarness, token: string, channe... function updateChannel (line 75) | async function updateChannel( function deleteChannel (line 84) | async function deleteChannel(harness: ApiTestHarness, token: string, cha... function getGuildChannels (line 88) | async function getGuildChannels( function updateChannelPositions (line 96) | async function updateChannelPositions( function createRole (line 111) | async function createRole( function getRoles (line 120) | async function getRoles( function updateRole (line 128) | async function updateRole( function deleteRole (line 141) | async function deleteRole( function updateRolePositions (line 150) | async function updateRolePositions( function addMemberRole (line 159) | async function addMemberRole( function removeMemberRole (line 169) | async function removeMemberRole( function updateMember (line 182) | async function updateMember( function getMember (line 195) | async function getMember( function createChannelInvite (line 204) | async function createChannelInvite( function acceptInvite (line 215) | async function acceptInvite( function getInvite (line 223) | async function getInvite(harness: ApiTestHarness, inviteCode: string): P... function deleteInvite (line 227) | async function deleteInvite(harness: ApiTestHarness, token: string, invi... function setupTestGuild (line 231) | async function setupTestGuild( function setupTestGuildWithChannels (line 243) | async function setupTestGuildWithChannels( function setupTestGuildWithMembers (line 262) | async function setupTestGuildWithMembers( FILE: packages/api/src/guild/tests/GuildUnavailableFeatureAccess.test.tsx constant STAFF_TEST_FLAGS (line 30) | const STAFF_TEST_FLAGS = UserFlags.HAS_SESSION_STARTED | UserFlags.STAFF; function addGuildFeaturesForTesting (line 32) | async function addGuildFeaturesForTesting( function setUserFlagsForTesting (line 43) | async function setUserFlagsForTesting(harness: ApiTestHarness, userId: s... FILE: packages/api/src/infrastructure/AssetDeletionQueue.tsx constant QUEUE_KEY (line 24) | const QUEUE_KEY = 'asset:deletion:queue'; constant MAX_RETRIES (line 25) | const MAX_RETRIES = 5; class AssetDeletionQueue (line 27) | class AssetDeletionQueue implements IAssetDeletionQueue { method constructor (line 28) | constructor(private readonly kvClient: IKVProvider) {} method queueDeletion (line 30) | async queueDeletion(item: Omit { method getBatch (line 64) | async getBatch(count: number): Promise> { method requeueItem (line 81) | async requeueItem(item: QueuedAssetDeletion): Promise { method getQueueSize (line 106) | async getQueueSize(): Promise { method clear (line 115) | async clear(): Promise { FILE: packages/api/src/infrastructure/AvatarService.tsx type CsamUploadContext (line 44) | interface CsamUploadContext { type LimitConfigSnapshotProvider (line 51) | type LimitConfigSnapshotProvider = Pick { method scanAndBlockCsam (line 373) | private async scanAndBlockCsam(params: { method getResourceTypeForPrefix (line 407) | private getResourceTypeForPrefix(prefix: string): CsamResourceType { method stripAnimationPrefix (line 425) | private stripAnimationPrefix(hash: string): string { method formatSupportedExtensions (line 429) | private formatSupportedExtensions(extSet: ReadonlySet): string { FILE: packages/api/src/infrastructure/ClamAV.tsx type ScanResult (line 24) | interface ScanResult { class ClamAV (line 29) | class ClamAV { method constructor (line 30) | constructor( method scanFile (line 35) | async scanFile(filePath: string): Promise { method scanBuffer (line 40) | async scanBuffer(buffer: Buffer): Promise { FILE: packages/api/src/infrastructure/CloudflarePurgeQueue.tsx type IPurgeQueue (line 23) | interface IPurgeQueue { class CloudflarePurgeQueue (line 37) | class CloudflarePurgeQueue implements IPurgeQueue { method constructor (line 42) | constructor(kvClient: IKVProvider) { method addUrls (line 46) | async addUrls(urls: Array): Promise { method normalizePrefix (line 68) | private normalizePrefix(rawUrl: string): string { method getBatch (line 83) | async getBatch(count: number): Promise> { method getQueueSize (line 97) | async getQueueSize(): Promise { method clear (line 106) | async clear(): Promise { method tryConsumeTokens (line 116) | async tryConsumeTokens( method getAvailableTokens (line 139) | async getAvailableTokens(maxTokens: number, refillRate: number, refill... method resetTokenBucket (line 166) | async resetTokenBucket(): Promise { class NoopPurgeQueue (line 177) | class NoopPurgeQueue implements IPurgeQueue { method addUrls (line 178) | async addUrls(_urls: Array): Promise {} method getBatch (line 180) | async getBatch(_count: number): Promise> { method getQueueSize (line 184) | async getQueueSize(): Promise { method clear (line 188) | async clear(): Promise {} method tryConsumeTokens (line 190) | async tryConsumeTokens( method getAvailableTokens (line 199) | async getAvailableTokens(maxTokens: number, _refillRate: number, _refi... FILE: packages/api/src/infrastructure/DirectMediaService.tsx type DirectMediaServiceOptions (line 35) | interface DirectMediaServiceOptions { class DirectMediaService (line 43) | class DirectMediaService extends IMediaService { method constructor (line 50) | constructor(options: DirectMediaServiceOptions) { method getMetadata (line 62) | async getMetadata(request: MediaProxyMetadataRequest): Promise { method extractFrames (line 107) | async extractFrames(request: MediaProxyFrameRequest): Promise { method normaliseExpiresAt (line 127) | private normaliseExpiresAt(expiresAt: Date): number { method clearTimer (line 135) | private clearTimer(bucket: string, key: string): void { method scheduleExpiration (line 145) | private scheduleExpiration(entry: DirectS3ExpirationEntry): void { method scheduleRetry (line 167) | private scheduleRetry(entry: DirectS3ExpirationEntry): void { method handleTimer (line 188) | private async handleTimer(entry: DirectS3ExpirationEntry): Promise { FILE: packages/api/src/infrastructure/DirectS3ExpirationStore.tsx type DirectS3ExpirationEntry (line 23) | interface DirectS3ExpirationEntry { class DirectS3ExpirationStore (line 29) | class DirectS3ExpirationStore { method constructor (line 37) | constructor(dbPath: string) { method upsert (line 73) | upsert(entry: DirectS3ExpirationEntry): void { method delete (line 77) | delete(bucket: string, key: string): void { method deleteBucket (line 81) | deleteBucket(bucket: string): void { method getExpiresAtMs (line 85) | getExpiresAtMs(bucket: string, key: string): number | null { method listAll (line 97) | listAll(): Array { method parseRow (line 102) | private parseRow(row: Record): DirectS3Expirat... FILE: packages/api/src/infrastructure/DirectS3StorageService.tsx function getExpirationManager (line 38) | function getExpirationManager(s3Service: S3Service): DirectS3ExpirationM... class DirectS3StorageService (line 48) | class DirectS3StorageService implements IStorageService { method constructor (line 53) | constructor(s3Service: S3Service) { method uploadObject (line 59) | async uploadObject({ method getPresignedDownloadURL (line 89) | async getPresignedDownloadURL({ method deleteObject (line 120) | async deleteObject(bucket: string, key: string): Promise { method getObjectMetadata (line 125) | async getObjectMetadata(bucket: string, key: string): Promise<{content... method readObject (line 146) | async readObject(bucket: string, key: string): Promise { method streamObject (line 157) | async streamObject(params: {bucket: string; key: string; range?: strin... method ensureDirectoryExists (line 198) | private async ensureDirectoryExists(dirPath: string): Promise { method writeObjectToDisk (line 202) | async writeObjectToDisk(bucket: string, key: string, filePath: string)... method copyObject (line 218) | async copyObject({ method copyObjectWithJpegProcessing (line 264) | async copyObjectWithJpegProcessing({ method moveObject (line 327) | async moveObject({ method purgeBucket (line 350) | async purgeBucket(bucket: string): Promise { method uploadAvatar (line 363) | async uploadAvatar(params: {prefix: string; key: string; body: Uint8Ar... method deleteAvatar (line 372) | async deleteAvatar(params: {prefix: string; key: string}): Promise { method getServer (line 95) | getServer(_regionId: string, _serverId: string): VoiceServerRecord | n... FILE: packages/api/src/infrastructure/DisabledVirusScanService.tsx class DisabledVirusScanService (line 24) | class DisabledVirusScanService implements IVirusScanService { method initialize (line 27) | async initialize(): Promise {} method scanFile (line 29) | async scanFile(filePath: string): Promise { method scanBuffer (line 37) | async scanBuffer(buffer: Buffer, _filename: string): Promise { method cacheVirusHash (line 50) | async cacheVirusHash(fileHash: string): Promise { FILE: packages/api/src/infrastructure/DiscriminatorService.tsx type GenerateDiscriminatorParams (line 33) | interface GenerateDiscriminatorParams { type GenerateDiscriminatorResult (line 39) | interface GenerateDiscriminatorResult { type ResolveUsernameChangeParams (line 44) | interface ResolveUsernameChangeParams { type ResolveUsernameChangeResult (line 52) | interface ResolveUsernameChangeResult { class UsernameNotAvailableError (line 57) | class UsernameNotAvailableError extends BadRequestError { method constructor (line 58) | constructor() { type IDiscriminatorService (line 64) | interface IDiscriminatorService { class DiscriminatorService (line 70) | class DiscriminatorService implements IDiscriminatorService { method constructor (line 76) | constructor( method canUseCustomDiscriminator (line 82) | private async canUseCustomDiscriminator(user?: User | null): Promise { method releaseLock (line 209) | private async releaseLock(lockKey: string, token: string): Promise { FILE: packages/api/src/infrastructure/ElasticsearchSearchProvider.tsx type ElasticsearchSearchProviderOptions (line 39) | interface ElasticsearchSearchProviderOptions { class ElasticsearchSearchProvider (line 44) | class ElasticsearchSearchProvider implements ISearchProvider { method constructor (line 55) | constructor(options: ElasticsearchSearchProviderOptions) { method initialize (line 60) | async initialize(): Promise { method shutdown (line 82) | async shutdown(): Promise { method getMessageSearchService (line 101) | getMessageSearchService(): IMessageSearchService | null { method getGuildSearchService (line 105) | getGuildSearchService(): IGuildSearchService | null { method getUserSearchService (line 109) | getUserSearchService(): IUserSearchService | null { method getReportSearchService (line 113) | getReportSearchService(): IReportSearchService | null { method getAuditLogSearchService (line 117) | getAuditLogSearchService(): IAuditLogSearchService | null { method getGuildMemberSearchService (line 121) | getGuildMemberSearchService(): IGuildMemberSearchService | null { FILE: packages/api/src/infrastructure/EmailDnsValidationService.tsx type DomainValidationCacheEntry (line 26) | interface DomainValidationCacheEntry { type IDnsResolver (line 31) | interface IDnsResolver { type EmailDnsValidationServiceOptions (line 37) | interface EmailDnsValidationServiceOptions { type DnsResolutionResult (line 44) | type DnsResolutionResult = 'valid' | 'invalid' | 'fallback' | 'transient... constant DOMAIN_NOT_FOUND_CODES (line 46) | const DOMAIN_NOT_FOUND_CODES = new Set(['ENOTFOUND', 'ENONAME', 'EAI_NON... constant DOMAIN_NO_RECORD_CODES (line 47) | const DOMAIN_NO_RECORD_CODES = new Set(['ENODATA', 'ENOENT', 'NODATA']); class EmailDnsValidationService (line 49) | class EmailDnsValidationService implements IEmailDnsValidationService { method constructor (line 56) | constructor(options: EmailDnsValidationServiceOptions = {}) { method hasValidDnsRecords (line 63) | async hasValidDnsRecords(email: string): Promise { method extractDomain (line 83) | private extractDomain(email: string): string | null { method getCachedDomainResult (line 91) | private getCachedDomainResult(domain: string): boolean | null { method setCachedDomainResult (line 105) | private setCachedDomainResult(domain: string, isValid: boolean): void { method resolveDomain (line 113) | private async resolveDomain(domain: string): Promise { method resolveMx (line 135) | private async resolveMx(domain: string): Promise { method resolveAddressRecords (line 147) | private async resolveAddressRecords(domain: string): Promise): Promise { method processCustomEmbeds (line 130) | private async processCustomEmbeds({ method processUrlEmbeds (line 144) | private async processUrlEmbeds({ method mapResponseEmbed (line 173) | private mapResponseEmbed(embed: MessageEmbedResponse): MessageEmbed { method mapResponseEmbedChild (line 183) | private mapResponseEmbedChild(embed: MessageEmbedChildResponse): Messa... method mapResponseMedia (line 225) | private mapResponseMedia(media?: MessageEmbedResponse['image']): Messa... method validateEmbedSize (line 240) | private validateEmbedSize(embeds: Array): void { method createEmbed (line 259) | private async createEmbed( method processMedia (line 306) | private async processMedia( method processAuthor (line 374) | private async processAuthor(author?: RichEmbedAuthorRequest, isNSFWAll... method processFooter (line 394) | private async processFooter(footer?: RichEmbedFooterRequest, isNSFWAll... method getCachedEmbeds (line 413) | private async getCachedEmbeds( method enqueue (line 434) | private async enqueue( method updateMessageEmbeds (line 448) | private async updateMessageEmbeds(channelId: ChannelID, messageId: Mes... FILE: packages/api/src/infrastructure/EntityAssetService.tsx type AssetType (line 38) | type AssetType = 'avatar' | 'banner' | 'icon' | 'splash' | 'embed_splash'; type EntityType (line 39) | type EntityType = 'user' | 'guild' | 'guild_member'; constant ASSET_TYPE_TO_PREFIX (line 41) | const ASSET_TYPE_TO_PREFIX: Record = { type PreparedAssetUpload (line 49) | interface PreparedAssetUpload { type PrepareAssetUploadOptions (line 65) | interface PrepareAssetUploadOptions { type CommitAssetChangeOptions (line 75) | interface CommitAssetChangeOptions { type LimitConfigSnapshotProvider (line 80) | type LimitConfigSnapshotProvider = Pick { method mapAssetTypeToResourceType (line 254) | private mapAssetTypeToResourceType(assetType: AssetType): CsamResource... method resolveUserId (line 268) | private resolveUserId(params: {entityType: EntityType; entityId: bigin... method resolveGuildId (line 278) | private resolveGuildId(params: {entityType: EntityType; entityId: bigi... method verifyAssetExists (line 288) | async verifyAssetExists(assetType: AssetType, entityType: EntityType, ... method resolveAvatarSizeLimit (line 298) | private resolveAvatarSizeLimit(): number { method verifyAssetExistsWithRetry (line 307) | async verifyAssetExistsWithRetry( method cleanup (line 343) | public cleanup(): void { method getActiveTimeoutCount (line 350) | public getActiveTimeoutCount(): number { method getS3KeyForHash (line 354) | getS3KeyForHash( method getCdnUrlForHash (line 365) | getCdnUrlForHash( method queueAssetDeletion (line 376) | async queueAssetDeletion( method stripAnimationPrefix (line 394) | private stripAnimationPrefix(hash: string): string { method buildS3KeyBase (line 398) | private buildS3KeyBase(assetType: AssetType, entityType: EntityType, e... method buildCdnUrlBase (line 411) | private buildCdnUrlBase(assetType: AssetType, entityType: EntityType, ... method validateAndProcessImage (line 424) | private async validateAndProcessImage( method uploadToS3 (line 475) | private async uploadToS3( method deleteAssetImmediately (line 495) | private async deleteAssetImmediately(s3Key: string, cdnUrl: string | n... FILE: packages/api/src/infrastructure/ErrorI18nService.tsx class ErrorI18nService (line 23) | class ErrorI18nService { method getMessage (line 24) | getMessage( FILE: packages/api/src/infrastructure/GatewayRpcClient.tsx constant MAX_RETRY_ATTEMPTS (line 30) | const MAX_RETRY_ATTEMPTS = 3; type GatewayRpcClientOptions (line 32) | interface GatewayRpcClientOptions { class GatewayRpcClient (line 36) | class GatewayRpcClient { method constructor (line 41) | private constructor(options?: GatewayRpcClientOptions) { method getInstance (line 45) | static getInstance(): GatewayRpcClient { method createForTests (line 52) | static createForTests(transport: IGatewayRpcTransport): GatewayRpcClie... method resetForTests (line 58) | static async resetForTests(): Promise { method call (line 66) | async call(method: string, params: Record): Promis... method executeCall (line 107) | private async executeCall(method: string, params: Record { method getCall (line 163) | async getCall(channelId: string): Promise { method createCall (line 167) | async createCall( method updateCallRegion (line 183) | async updateCallRegion(channelId: string, region: string | null): Prom... method ringCallRecipients (line 187) | async ringCallRecipients(channelId: string, recipients: Array)... method stopRingingCallRecipients (line 191) | async stopRingingCallRecipients(channelId: string, recipients: Array { method getNodeStats (line 199) | async getNodeStats(): Promise { function createNatsTransportSync (line 204) | function createNatsTransportSync(): NatsGatewayRpcTransport { FILE: packages/api/src/infrastructure/GatewayRpcError.tsx class GatewayRpcMethodError (line 37) | class GatewayRpcMethodError extends Error { method constructor (line 40) | constructor(code: string) { FILE: packages/api/src/infrastructure/GatewayService.tsx constant GATEWAY_ERROR_TO_DOMAIN_ERROR (line 41) | const GATEWAY_ERROR_TO_DOMAIN_ERROR: Record Error> = { type DispatchGuildParams (line 54) | interface DispatchGuildParams { type DispatchPresenceParams (line 60) | interface DispatchPresenceParams { type InvalidatePushBadgeCountParams (line 66) | interface InvalidatePushBadgeCountParams { type GuildDataParams (line 70) | interface GuildDataParams { type GuildMemberParams (line 75) | interface GuildMemberParams { type HasMemberParams (line 80) | interface HasMemberParams { type GuildMemoryInfo (line 85) | interface GuildMemoryInfo { type UserPermissionsParams (line 95) | interface UserPermissionsParams { type CheckPermissionParams (line 101) | interface CheckPermissionParams { type CanManageRolesParams (line 108) | interface CanManageRolesParams { type AssignableRolesParams (line 115) | interface AssignableRolesParams { type MaxRolePositionParams (line 120) | interface MaxRolePositionParams { type MembersWithRoleParams (line 125) | interface MembersWithRoleParams { type CheckTargetMemberParams (line 130) | interface CheckTargetMemberParams { type ViewableChannelsParams (line 136) | interface ViewableChannelsParams { type CategoryChannelCountParams (line 141) | interface CategoryChannelCountParams { type ChannelCountParams (line 146) | interface ChannelCountParams { type UsersToMentionByRolesParams (line 150) | interface UsersToMentionByRolesParams { type UsersToMentionByUserIdsParams (line 157) | interface UsersToMentionByUserIdsParams { type AllUsersToMentionParams (line 164) | interface AllUsersToMentionParams { type ResolveAllMentionsParams (line 170) | interface ResolveAllMentionsParams { type JoinGuildParams (line 180) | interface JoinGuildParams { type LeaveGuildParams (line 185) | interface LeaveGuildParams { type TerminateSessionParams (line 190) | interface TerminateSessionParams { type TerminateAllSessionsParams (line 195) | interface TerminateAllSessionsParams { type UpdateMemberVoiceParams (line 199) | interface UpdateMemberVoiceParams { type DisconnectVoiceUserParams (line 206) | interface DisconnectVoiceUserParams { type MoveMemberParams (line 212) | interface MoveMemberParams { type GuildMemberRpcResponse (line 220) | interface GuildMemberRpcResponse { type PendingRequest (line 225) | type PendingRequest = { class GatewayService (line 230) | class GatewayService { method constructor (line 251) | constructor() { method isCircuitBreakerOpen (line 255) | private isCircuitBreakerOpen(): boolean { method rejectAllPendingRequests (line 268) | private rejectAllPendingRequests(error: Error): void { method recordCircuitBreakerSuccess (line 287) | private recordCircuitBreakerSuccess(): void { method recordCircuitBreakerFailure (line 291) | private recordCircuitBreakerFailure(): void { method shouldRecordCircuitBreakerFailure (line 305) | private shouldRecordCircuitBreakerFailure(error: unknown): boolean { method call (line 315) | private async call(method: string, params: Record)... method transformGatewayError (line 333) | private transformGatewayError(error: unknown): Error { method logBatchFailures (line 361) | private logBatchFailures(method: string, failures: Array { method rejectAllPendingBatchRequests (line 459) | private rejectAllPendingBatchRequests(error: Error): void { method processInChunks (line 481) | private async processInChunks( method processGuildDataBatch (line 498) | private async processGuildDataBatch(requests: Map { method getCategoryChannelCount (line 629) | async getCategoryChannelCount({guildId, categoryId}: CategoryChannelCo... method getGuildData (line 637) | async getGuildData({ method getGuildMember (line 680) | async getGuildMember({ method hasGuildMember (line 722) | async hasGuildMember({guildId, userId}: HasMemberParams): Promise { method stopGuild (line 779) | async stopGuild(guildId: GuildID): Promise { method reloadGuild (line 785) | async reloadGuild(guildId: GuildID): Promise { method reloadAllGuilds (line 791) | async reloadAllGuilds(guildIds: Array): Promise<{count: numbe... method shutdownGuild (line 798) | async shutdownGuild(guildId: GuildID): Promise { method getGuildMemoryStats (line 804) | async getGuildMemoryStats(limit: number): Promise<{guilds: Array( method canManageRoles (line 911) | async canManageRoles({guildId, userId, targetUserId, roleId}: CanManag... method canManageRole (line 921) | async canManageRole({guildId, userId, roleId}: {guildId: GuildID; user... method getAssignableRoles (line 930) | async getAssignableRoles({guildId, userId}: AssignableRolesParams): Pr... method getUserMaxRolePosition (line 938) | async getUserMaxRolePosition({guildId, userId}: MaxRolePositionParams)... method getMembersWithRole (line 946) | async getMembersWithRole({guildId, roleId}: MembersWithRoleParams): Pr... method checkTargetMember (line 954) | async checkTargetMember({guildId, userId, targetUserId}: CheckTargetMe... method getViewableChannels (line 963) | async getViewableChannels({guildId, userId}: ViewableChannelsParams): ... method getUsersToMentionByRoles (line 971) | async getUsersToMentionByRoles({ method getUsersToMentionByUserIds (line 986) | async getUsersToMentionByUserIds({ method getAllUsersToMention (line 1001) | async getAllUsersToMention({guildId, channelId, authorId}: AllUsersToM... method resolveAllMentions (line 1010) | async resolveAllMentions({ method getVanityUrlChannel (line 1031) | async getVanityUrlChannel(guildId: GuildID): Promise { method getFirstViewableTextChannel (line 1038) | async getFirstViewableTextChannel(guildId: GuildID): Promise { method leaveGuild (line 1052) | async leaveGuild({userId, guildId}: LeaveGuildParams): Promise { method terminateSession (line 1059) | async terminateSession({userId, sessionIdHashes}: TerminateSessionPara... method terminateAllSessionsForUser (line 1066) | async terminateAllSessionsForUser({userId}: TerminateAllSessionsParams... method updateMemberVoice (line 1072) | async updateMemberVoice({guildId, userId, mute, deaf}: UpdateMemberVoi... method disconnectVoiceUser (line 1082) | async disconnectVoiceUser({guildId, userId, connectionId}: DisconnectV... method disconnectVoiceUserIfInChannel (line 1090) | async disconnectVoiceUserIfInChannel({ method getVoiceState (line 1121) | async getVoiceState({ method moveMember (line 1135) | async moveMember({guildId, moderatorId, userId, channelId, connectionI... method hasActivePresence (line 1149) | async hasActivePresence(userId: UserID): Promise { method addTemporaryGuild (line 1156) | async addTemporaryGuild({userId, guildId}: {userId: UserID; guildId: G... method removeTemporaryGuild (line 1163) | async removeTemporaryGuild({userId, guildId}: {userId: UserID; guildId... method syncGroupDmRecipients (line 1177) | async syncGroupDmRecipients({ method switchVoiceRegion (line 1198) | async switchVoiceRegion({guildId, channelId}: {guildId: GuildID; chann... method disconnectAllVoiceUsersInChannel (line 1205) | async disconnectAllVoiceUsersInChannel({ method confirmVoiceConnection (line 1225) | async confirmVoiceConnection({ method getVoiceStatesForChannel (line 1251) | async getVoiceStatesForChannel({ method getPendingJoinsForChannel (line 1275) | async getPendingJoinsForChannel({ method getCall (line 1299) | async getCall(channelId: ChannelID): Promise { method createCall (line 1303) | async createCall( method updateCallRegion (line 1319) | async updateCallRegion(channelId: ChannelID, region: string | null): P... method ringCallRecipients (line 1323) | async ringCallRecipients(channelId: ChannelID, recipients: Array { method getDiscoveryOnlineCounts (line 1335) | async getDiscoveryOnlineCounts(guildIds: Array): Promise> { method getServerOccupancy (line 44) | async getServerOccupancy(_regionId: string, _serverId: string): Promis... FILE: packages/api/src/infrastructure/KVAccountDeletionQueueService.tsx type QueuedDeletion (line 27) | interface QueuedDeletion { constant QUEUE_KEY (line 32) | const QUEUE_KEY = 'deletion_queue'; constant STATE_VERSION_KEY (line 33) | const STATE_VERSION_KEY = 'deletion_queue:state_version'; constant REBUILD_LOCK_KEY (line 34) | const REBUILD_LOCK_KEY = 'deletion_queue:rebuild_lock'; constant REBUILD_LOCK_TTL (line 35) | const REBUILD_LOCK_TTL = seconds('5 minutes'); class KVAccountDeletionQueueService (line 37) | class KVAccountDeletionQueueService { method constructor (line 38) | constructor( method serializeQueueItem (line 43) | private serializeQueueItem(item: QueuedDeletion): string { method deserializeQueueItem (line 47) | private deserializeQueueItem(value: string): QueuedDeletion { method needsRebuild (line 55) | async needsRebuild(): Promise { method rebuildState (line 80) | async rebuildState(): Promise { method scheduleDeletion (line 142) | async scheduleDeletion(userId: UserID, pendingAt: Date, reasonCode: nu... method removeFromQueue (line 165) | async removeFromQueue(userId: UserID): Promise { method getReadyDeletions (line 187) | async getReadyDeletions(nowMs: number, limit: number): Promise { method releaseRebuildLock (line 225) | async releaseRebuildLock(token: string): Promise { method getQueueSize (line 240) | async getQueueSize(): Promise { method getStateVersion (line 249) | async getStateVersion(): Promise { method getSecondaryKey (line 259) | private getSecondaryKey(userId: UserID): string { FILE: packages/api/src/infrastructure/KVActivityTracker.tsx constant TTL_SECONDS (line 26) | const TTL_SECONDS = seconds('90 days'); constant STATE_VERSION_KEY (line 27) | const STATE_VERSION_KEY = 'activity_tracker:state_version'; constant STATE_VERSION_TTL_SECONDS (line 28) | const STATE_VERSION_TTL_SECONDS = seconds('1 day'); constant REBUILD_BATCH_SIZE (line 29) | const REBUILD_BATCH_SIZE = 100; class KVActivityTracker (line 31) | class KVActivityTracker { method constructor (line 35) | constructor(kvClient: IKVProvider) { method shutdown (line 39) | shutdown(): void { method getActivityKey (line 43) | private getActivityKey(userId: UserID): string { method updateActivity (line 47) | async updateActivity(userId: UserID, timestamp: Date): Promise { method getActivity (line 53) | async getActivity(userId: UserID): Promise { method needsRebuild (line 69) | async needsRebuild(): Promise { method rebuildActivities (line 85) | async rebuildActivities(): Promise { FILE: packages/api/src/infrastructure/KVBulkMessageDeletionQueueService.tsx type QueuedBulkMessageDeletion (line 24) | interface QueuedBulkMessageDeletion { constant QUEUE_KEY (line 29) | const QUEUE_KEY = 'bulk_message_deletion_queue'; constant SECONDARY_KEY_PREFIX (line 30) | const SECONDARY_KEY_PREFIX = 'bulk_message_deletion_queue:'; class KVBulkMessageDeletionQueueService (line 32) | class KVBulkMessageDeletionQueueService { method constructor (line 33) | constructor(private readonly kvClient: IKVProvider) {} method getSecondaryKey (line 35) | private getSecondaryKey(userId: UserID): string { method serializeQueueItem (line 39) | private serializeQueueItem(item: QueuedBulkMessageDeletion): string { method deserializeQueueItem (line 43) | private deserializeQueueItem(value: string): QueuedBulkMessageDeletion { method scheduleDeletion (line 51) | async scheduleDeletion(userId: UserID, scheduledAt: Date): Promise { method getReadyDeletions (line 87) | async getReadyDeletions(nowMs: number, limit: number): Promise { FILE: packages/api/src/infrastructure/LiveKitService.tsx type CreateTokenParams (line 29) | interface CreateTokenParams { type UpdateParticipantParams (line 44) | interface UpdateParticipantParams { type DisconnectParticipantParams (line 55) | interface DisconnectParticipantParams { type UpdateParticipantPermissionsParams (line 64) | interface UpdateParticipantPermissionsParams { type ServerClientConfig (line 76) | interface ServerClientConfig { function toHttpUrl (line 83) | function toHttpUrl(wsUrl: string): string { function createRoomServiceClient (line 87) | function createRoomServiceClient(endpoint: string, apiKey: string, apiSe... class LiveKitService (line 104) | class LiveKitService extends ILiveKitService { method constructor (line 114) | constructor(topology: VoiceTopology) { method createToken (line 132) | async createToken(params: CreateTokenParams): Promise<{token: string; ... method computePublishSources (line 185) | private static computePublishSources(permissions: { method updateParticipant (line 208) | async updateParticipant(params: UpdateParticipantParams): Promise { method updateParticipantPermissions (line 242) | async updateParticipantPermissions(params: UpdateParticipantPermission... method disconnectParticipant (line 297) | async disconnectParticipant(params: DisconnectParticipantParams): Prom... method listParticipants (line 314) | async listParticipants(params: { method getDefaultRegionId (line 344) | getDefaultRegionId(): string | null { method getRegionMetadata (line 348) | getRegionMetadata(): Array { method getServer (line 352) | getServer(regionId: string, serverId: string): VoiceServerRecord | null { method getRoomName (line 356) | private getRoomName(guildId: GuildID | undefined, channelId: ChannelID... method getParticipantIdentity (line 363) | private getParticipantIdentity(userId: UserID, connectionId: string): ... method resolveServerClient (line 367) | private resolveServerClient(regionId: string, serverId: string): Serve... method refreshServerClients (line 381) | private refreshServerClients(): void { FILE: packages/api/src/infrastructure/LiveKitWebhookService.tsx type VoiceWebhookParticipantContext (line 41) | interface VoiceWebhookParticipantContext { class LiveKitWebhookService (line 47) | class LiveKitWebhookService { method constructor (line 51) | constructor( method verifyAndParse (line 65) | async verifyAndParse(body: string, authHeader: string | undefined): Pr... method handleWebhookRequest (line 83) | async handleWebhookRequest(params: { method rebuildReceivers (line 147) | private rebuildReceivers(): void { method handleRoomFinished (line 171) | async handleRoomFinished(event: WebhookEvent, apiKey: string): Promise... method handleParticipantJoined (line 255) | async handleParticipantJoined(event: WebhookEvent): Promise { method isParticipantStillInRoom (line 364) | private async isParticipantStillInRoom(params: { method handleParticipantLeft (line 410) | async handleParticipantLeft(event: WebhookEvent): Promise { method handleTrackPublished (line 543) | async handleTrackPublished(event: WebhookEvent, apiKey: string): Promi... method processEvent (line 703) | async processEvent(data: {event: WebhookEvent; apiKey: string}): Promi... FILE: packages/api/src/infrastructure/MediaService.tsx type MediaProxyRequestBody (line 32) | type MediaProxyRequestBody = class MediaService (line 37) | class MediaService extends IMediaService { method constructor (line 40) | constructor() { method getMetadata (line 45) | async getMetadata(request: MediaProxyMetadataRequest): Promise { method extractFrames (line 108) | async extractFrames(request: MediaProxyFrameRequest): Promise { method shutdown (line 97) | async shutdown(): Promise { method getMessageSearchService (line 116) | getMessageSearchService(): IMessageSearchService | null { method getGuildSearchService (line 120) | getGuildSearchService(): IGuildSearchService | null { method getUserSearchService (line 124) | getUserSearchService(): IUserSearchService | null { method getReportSearchService (line 128) | getReportSearchService(): IReportSearchService | null { method getAuditLogSearchService (line 132) | getAuditLogSearchService(): IAuditLogSearchService | null { method getGuildMemberSearchService (line 136) | getGuildMemberSearchService(): IGuildMemberSearchService | null { FILE: packages/api/src/infrastructure/MetricsService.tsx class MetricsService (line 30) | class MetricsService implements IMetricsService { method counter (line 31) | counter(params: CounterParams): void { method gauge (line 39) | gauge(params: GaugeParams): void { method histogram (line 47) | histogram(params: HistogramParams): void { method crash (line 55) | crash({guildId}: CrashParams): void { method batch (line 63) | batch(metrics: Array): void { method isEnabled (line 93) | isEnabled(): boolean { function initializeMetricsService (line 100) | function initializeMetricsService(): IMetricsService { function getMetricsService (line 107) | function getMetricsService(): IMetricsService { FILE: packages/api/src/infrastructure/NatsGatewayRpcTransport.tsx constant NATS_REQUEST_TIMEOUT_MS (line 25) | const NATS_REQUEST_TIMEOUT_MS = 10_000; constant NATS_SUBJECT_PREFIX (line 26) | const NATS_SUBJECT_PREFIX = 'rpc.gateway.'; type NatsRpcResponse (line 28) | interface NatsRpcResponse { class NatsGatewayRpcTransport (line 34) | class NatsGatewayRpcTransport implements IGatewayRpcTransport { method constructor (line 38) | constructor(connectionManager: INatsConnectionManager) { method call (line 42) | async call(method: string, params: Record): Promise { FILE: packages/api/src/infrastructure/NullSearchProvider.tsx class NullSearchProvider (line 28) | class NullSearchProvider implements ISearchProvider { method initialize (line 29) | async initialize(): Promise {} method shutdown (line 31) | async shutdown(): Promise {} method getMessageSearchService (line 33) | getMessageSearchService(): IMessageSearchService | null { method getGuildSearchService (line 37) | getGuildSearchService(): IGuildSearchService | null { method getUserSearchService (line 41) | getUserSearchService(): IUserSearchService | null { method getReportSearchService (line 45) | getReportSearchService(): IReportSearchService | null { method getAuditLogSearchService (line 49) | getAuditLogSearchService(): IAuditLogSearchService | null { method getGuildMemberSearchService (line 53) | getGuildMemberSearchService(): IGuildMemberSearchService | null { FILE: packages/api/src/infrastructure/SnowflakeService.tsx constant MAX_SEQ (line 33) | const MAX_SEQ = Number(MAX_SEQUENCE); constant MAX_NODE_ID (line 34) | const MAX_NODE_ID = Number(MAX_WORKER_ID); constant NODE_ID_TTL (line 35) | const NODE_ID_TTL = seconds('5 minutes'); constant NODE_ID_RENEWAL_INTERVAL (line 36) | const NODE_ID_RENEWAL_INTERVAL = seconds('4 minutes'); class SnowflakeService (line 38) | class SnowflakeService implements ISnowflakeService { method constructor (line 50) | constructor(kvClient?: IKVProvider) { method initialize (line 61) | async initialize(): Promise { method acquireNodeId (line 83) | private async acquireNodeId(): Promise { method startNodeIdRenewal (line 107) | private startNodeIdRenewal(): void { method renewNodeId (line 138) | private async renewNodeId(): Promise { method renewNodeLockIfOwned (line 156) | private async renewNodeLockIfOwned(lockKey: string): Promise { method handleLostNodeId (line 164) | private handleLostNodeId(): void { method reinitialize (line 176) | async reinitialize(): Promise { method shutdown (line 184) | async shutdown(): Promise { method generate (line 219) | public async generate(): Promise { method generateWithTimestamp (line 228) | private async generateWithTimestamp(timestamp: bigint): Promise { method sleep (line 251) | private async sleep(milliseconds: number): Promise { method getNodeIdForTesting (line 255) | public getNodeIdForTesting(): number | null { method renewNodeIdForTesting (line 259) | public async renewNodeIdForTesting(): Promise { FILE: packages/api/src/infrastructure/StorageObjectHelpers.tsx type JpegUploadTarget (line 30) | interface JpegUploadTarget { type JpegUploadRequest (line 35) | interface JpegUploadRequest { function streamToBuffer (line 42) | async function streamToBuffer(stream: NodeReadable, maxBytes = 50 * 1024... function processAndUploadJpeg (line 68) | async function processAndUploadJpeg(params: JpegUploadRequest): Promise<... function cleanupTempFiles (line 121) | async function cleanupTempFiles(paths: ReadonlyArray): Promise { function stripJpegMetadata (line 144) | async function stripJpegMetadata(filePath: string): Promise { FILE: packages/api/src/infrastructure/StorageService.tsx class StorageService (line 51) | class StorageService implements IStorageService { method constructor (line 55) | constructor() { method getClient (line 71) | private getClient(_bucket: string): S3Client { method uploadObject (line 75) | async uploadObject({ method getPresignedDownloadURL (line 98) | async getPresignedDownloadURL({ method deleteObject (line 114) | async deleteObject(bucket: string, key: string): Promise { method getObjectMetadata (line 119) | async getObjectMetadata(bucket: string, key: string): Promise<{content... method readObject (line 135) | async readObject(bucket: string, key: string): Promise { method streamObject (line 143) | async streamObject(params: {bucket: string; key: string; range?: strin... method ensureDirectoryExists (line 175) | private async ensureDirectoryExists(dirPath: string): Promise { method writeObjectToDisk (line 179) | async writeObjectToDisk(bucket: string, key: string, filePath: string)... method copyObject (line 194) | async copyObject({ method copyObjectWithJpegProcessing (line 217) | async copyObjectWithJpegProcessing({ method moveObject (line 264) | async moveObject({ method purgeBucket (line 287) | async purgeBucket(bucket: string): Promise { method uploadAvatar (line 297) | async uploadAvatar(params: {prefix: string; key: string; body: Uint8Ar... method deleteAvatar (line 306) | async deleteAvatar(params: {prefix: string; key: string}): Promise | null... method determineMimeType (line 156) | private determineMimeType(content: Uint8Array, headers: Headers): stri... FILE: packages/api/src/infrastructure/UserCacheService.tsx constant USER_PARTIAL_CACHE_TTL (line 36) | const USER_PARTIAL_CACHE_TTL = seconds('5 minutes'); class UserCacheService (line 38) | class UserCacheService { method constructor (line 41) | constructor( method getUserPartialCacheKey (line 46) | private getUserPartialCacheKey(userId: UserID): string { method getDeprecatedIncludeDeletedUserPartialCacheKey (line 50) | private getDeprecatedIncludeDeletedUserPartialCacheKey(userId: UserID)... method getUserPartialResponse (line 55) | async getUserPartialResponse(userId: UserID, requestCache: RequestCach... method invalidateUserCache (line 91) | async invalidateUserCache(userId: UserID): Promise { method getUserPartialResponses (line 98) | async getUserPartialResponses( method setUserPartialResponseFromUser (line 113) | async setUserPartialResponseFromUser(user: User, requestCache?: Reques... method setUserPartialResponseFromUserInBackground (line 121) | setUserPartialResponseFromUserInBackground(user: User, requestCache?: ... FILE: packages/api/src/infrastructure/VirusScanService.tsx class VirusScanService (line 31) | class VirusScanService implements IVirusScanService { method constructor (line 35) | constructor(cacheService: ICacheService) { method initialize (line 62) | async initialize(): Promise { method scanFile (line 66) | async scanFile(filePath: string): Promise { method scanBuffer (line 70) | async scanBuffer(buffer: Buffer, filename: string): Promise; constant DM_ROOM_PREFIX (line 82) | const DM_ROOM_PREFIX = 'dm_channel_'; constant GUILD_ROOM_PREFIX (line 83) | const GUILD_ROOM_PREFIX = 'guild_'; function parseRoomName (line 85) | function parseRoomName(roomName: string): VoiceRoomContext | null { function parseParticipantMetadataWithRaw (line 116) | function parseParticipantMetadataWithRaw( function isDMRoom (line 159) | function isDMRoom(context: VoiceRoomContext): context is DMRoomContext { constant PARTICIPANT_IDENTITY_PREFIX (line 163) | const PARTICIPANT_IDENTITY_PREFIX = 'user_'; type ParticipantIdentity (line 165) | interface ParticipantIdentity { function parseParticipantIdentity (line 170) | function parseParticipantIdentity(identity: string): ParticipantIdentity... FILE: packages/api/src/infrastructure/VoiceRoomStore.tsx type PinnedRoomServer (line 27) | interface PinnedRoomServer { class VoiceRoomStore (line 33) | class VoiceRoomStore { method constructor (line 37) | constructor(kvClient: IKVProvider) { method getRoomKey (line 41) | private getRoomKey(guildId: GuildID | undefined, channelId: ChannelID)... method pinRoomServer (line 48) | async pinRoomServer( method getPinnedRoomServer (line 75) | async getPinnedRoomServer(guildId: GuildID | undefined, channelId: Cha... method deleteRoomServer (line 92) | async deleteRoomServer(guildId: GuildID | undefined, channelId: Channe... method getRegionOccupancy (line 102) | async getRegionOccupancy(regionId: string): Promise> { method getServerOccupancy (line 108) | async getServerOccupancy(regionId: string, serverId: string): Promise<... method addOccupancy (line 114) | private async addOccupancy( method removeOccupancy (line 127) | private async removeOccupancy( method buildOccupancyMember (line 140) | private buildOccupancyMember(guildId: GuildID | undefined, channelId: ... FILE: packages/api/src/infrastructure/error_i18n/index.tsx type ErrorTranslations (line 22) | type ErrorTranslations = Record; function getLocaleTranslations (line 24) | function getLocaleTranslations(_locale: string): ErrorTranslations { function hasLocale (line 28) | function hasLocale(locale: string): boolean { FILE: packages/api/src/infrastructure/tests/EmailDnsValidationService.test.tsx type ResolveMxFn (line 23) | type ResolveMxFn = (domain: string) => Promise Promise>; type MockResolver (line 26) | interface MockResolver { function createDnsError (line 32) | function createDnsError(code: string): Error & {code: string} { function createMockResolver (line 38) | function createMockResolver(): MockResolver { FILE: packages/api/src/instance/InstanceConfigRepository.tsx constant FETCH_CONFIG_QUERY (line 28) | const FETCH_CONFIG_QUERY = InstanceConfiguration.selectCql({ constant FETCH_ALL_CONFIG_QUERY (line 33) | const FETCH_ALL_CONFIG_QUERY = InstanceConfiguration.selectCql(); type InstanceConfig (line 35) | interface InstanceConfig { type InstanceSsoConfig (line 44) | interface InstanceSsoConfig { class InstanceConfigRepository (line 61) | class InstanceConfigRepository { method getConfig (line 62) | async getConfig(key: string): Promise { method getAllConfigs (line 67) | async getAllConfigs(): Promise> { method setConfig (line 78) | async setConfig(key: string, value: string): Promise { method getInstanceConfig (line 88) | async getInstanceConfig(): Promise { method setManualReviewEnabled (line 104) | async setManualReviewEnabled(enabled: boolean): Promise { method setManualReviewSchedule (line 108) | async setManualReviewSchedule(scheduleEnabled: boolean, startHourUtc: ... method setRegistrationAlertsWebhookUrl (line 114) | async setRegistrationAlertsWebhookUrl(url: string | null): Promise { method isManualReviewActiveNow (line 130) | isManualReviewActiveNow(config: InstanceConfig): boolean { method hasLimitConfig (line 151) | async hasLimitConfig(): Promise { method getLimitConfig (line 156) | async getLimitConfig(): Promise { method setLimitConfig (line 171) | async setLimitConfig(config: LimitConfigSnapshot): Promise { method getSsoConfig (line 175) | async getSsoConfig(options?: {includeSecret?: boolean}): Promise): Promise) { FILE: packages/api/src/instance/SnowflakeReservationRepository.tsx constant FETCH_ALL_CONFIG_QUERY (line 26) | const FETCH_ALL_CONFIG_QUERY = InstanceConfiguration.selectCql(); type SnowflakeReservationConfig (line 28) | interface SnowflakeReservationConfig { class SnowflakeReservationRepository (line 34) | class SnowflakeReservationRepository { method listReservations (line 35) | async listReservations(): Promise> { method setReservation (line 63) | async setReservation(emailKey: string, snowflake: bigint): Promise { FILE: packages/api/src/instance/SnowflakeReservationService.tsx class SnowflakeReservationService (line 28) | class SnowflakeReservationService { method constructor (line 35) | constructor( method initialize (line 40) | async initialize(): Promise { method reload (line 68) | async reload(): Promise { method getReservedSnowflake (line 88) | getReservedSnowflake(emailKey: string | null): bigint | null { method buildLookup (line 95) | private buildLookup(entries: Array): Map { method listChannelInvites (line 61) | async listChannelInvites(channelId: ChannelID): Promise> { method listGuildInvites (line 75) | async listGuildInvites(guildId: GuildID): Promise> { method create (line 89) | async create(data: CreateInviteParams): Promise { method updateInviteUses (line 171) | async updateInviteUses(code: InviteCode, uses: number): Promise { method delete (line 182) | async delete(code: InviteCode): Promise { FILE: packages/api/src/invite/InviteRequestService.tsx type MappingHelpers (line 50) | interface MappingHelpers { type InviteMetricAction (line 62) | type InviteMetricAction = 'accepted' | 'created' | 'deleted'; function mapInviteType (line 64) | function mapInviteType(inviteType: number): string { class InviteRequestService (line 79) | class InviteRequestService { method constructor (line 80) | constructor( method getInvite (line 89) | async getInvite(params: {inviteCode: InviteCode; requestCache: Request... method acceptInvite (line 94) | async acceptInvite(params: { method deleteInvite (line 104) | async deleteInvite(params: {userId: UserID; inviteCode: InviteCode; au... method createChannelInvite (line 114) | async createChannelInvite(params: { method listChannelInvites (line 140) | async listChannelInvites(params: { method listGuildInvites (line 152) | async listGuildInvites(params: { method listPackInvites (line 164) | async listPackInvites(params: { method createPackInvite (line 176) | async createPackInvite(params: { method createMappingHelpers (line 203) | private createMappingHelpers(requestCache: RequestCache): MappingHelpe... method mapInviteResponse (line 217) | private async mapInviteResponse(invite: Invite, requestCache: RequestC... method mapInviteMetadataResponse (line 228) | private async mapInviteMetadataResponse( method mapInviteList (line 242) | private async mapInviteList( method recordInviteMetric (line 249) | private recordInviteMetric( FILE: packages/api/src/invite/InviteService.tsx type GetChannelInvitesParams (line 59) | interface GetChannelInvitesParams { type GetGuildInvitesParams (line 64) | interface GetGuildInvitesParams { type CreateInviteParams (line 69) | interface CreateInviteParams { type CreatePackInviteParams (line 78) | interface CreatePackInviteParams { type AcceptInviteParams (line 87) | interface AcceptInviteParams { type DeleteInviteParams (line 93) | interface DeleteInviteParams { type GetChannelInvitesSortedParams (line 98) | interface GetChannelInvitesSortedParams { type GetGuildInvitesSortedParams (line 103) | interface GetGuildInvitesSortedParams { type SerializedInviteForAudit (line 108) | interface SerializedInviteForAudit { constant PACK_TYPE_TO_INVITE_TYPE (line 121) | const PACK_TYPE_TO_INVITE_TYPE: Record = { class InviteService (line 126) | class InviteService { method constructor (line 127) | constructor( method getInvite (line 139) | async getInvite(inviteCode: InviteCode): Promise { method getChannelInvites (line 147) | async getChannelInvites({userId, channelId}: GetChannelInvitesParams):... method getGuildInvites (line 171) | async getGuildInvites({userId, guildId}: GetGuildInvitesParams): Promi... method createInvite (line 183) | async createInvite( method createPackInvite (line 291) | async createPackInvite({ method acceptInvite (line 348) | async acceptInvite({userId, inviteCode, requestCache}: AcceptInvitePar... method performAcceptInvite (line 354) | private async performAcceptInvite({userId, inviteCode, requestCache}: ... method findInviteWithLowercaseFallback (line 473) | private async findInviteWithLowercaseFallback(inviteCode: InviteCode):... method cloneInviteWithUses (line 487) | private cloneInviteWithUses(invite: Invite, uses: number): Invite { method resolveInviteLimit (line 495) | private resolveInviteLimit(guildFeatures?: Iterable | null): n... method deleteInvite (line 501) | async deleteInvite({userId, inviteCode}: DeleteInviteParams, auditLogR... method resolveVanityUrlChannel (line 565) | async resolveVanityUrlChannel(guildId: GuildID): Promise { method logGuildInviteAction (line 651) | private async logGuildInviteAction(params: { method serializeInviteForAudit (line 705) | private serializeInviteForAudit(invite: Invite): SerializedInviteForAu... FILE: packages/api/src/invite/tests/GroupDMInviteRecipientsSerialization.test.tsx type GroupDmInviteChannelResponse (line 31) | interface GroupDmInviteChannelResponse { type GroupDmInviteWithChannelResponse (line 37) | interface GroupDmInviteWithChannelResponse { FILE: packages/api/src/invite/tests/InviteGuildMemberLimit.test.tsx type InviteResponse (line 30) | interface InviteResponse { type InviteAcceptResponse (line 34) | interface InviteAcceptResponse { function createGuildInvite (line 40) | async function createGuildInvite(harness: ApiTestHarness, token: string,... function addGuildFeatureForTesting (line 48) | async function addGuildFeatureForTesting(harness: ApiTestHarness, guildI... function setGuildMemberCountForTesting (line 55) | async function setGuildMemberCountForTesting( FILE: packages/api/src/invite/tests/InvitePermissions.test.tsx constant BASIC_PERMISSIONS (line 35) | const BASIC_PERMISSIONS = FILE: packages/api/src/invite/tests/InviteSecurityChecks.test.tsx function createGuildInviteWithCodeForTesting (line 38) | async function createGuildInviteWithCodeForTesting( FILE: packages/api/src/invite/tests/InviteTestUtils.tsx function getInvite (line 24) | async function getInvite(harness: ApiTestHarness, token: string, code: s... function deleteInvite (line 28) | async function deleteInvite(harness: ApiTestHarness, token: string, code... function listChannelInvites (line 32) | async function listChannelInvites( function listGuildInvites (line 42) | async function listGuildInvites( FILE: packages/api/src/klipy/KlipyController.tsx function getCountry (line 48) | function getCountry(ctx: Context): string { function KlipyController (line 52) | function KlipyController(app: HonoApp) { FILE: packages/api/src/klipy/KlipyService.tsx constant KLIPY_BASE_URL (line 29) | const KLIPY_BASE_URL = 'https://api.klipy.com/v2'; constant DEFAULT_MEDIA_FILTER (line 30) | const DEFAULT_MEDIA_FILTER = 'webm'; constant DEFAULT_CONTENT_FILTER (line 31) | const DEFAULT_CONTENT_FILTER = 'low'; constant CLIENT_KEY (line 32) | const CLIENT_KEY = 'fluxer'; constant MAX_RETRIES (line 33) | const MAX_RETRIES = 3; constant BACKOFF_BASE_DELAY (line 34) | const BACKOFF_BASE_DELAY = ms('1 second'); constant CACHE_EXPIRATION_TIME (line 35) | const CACHE_EXPIRATION_TIME = ms('5 minutes'); type KlipyGif (line 37) | interface KlipyGif { type KlipyCategoryTag (line 50) | interface KlipyCategoryTag { type CacheEntry (line 54) | type CacheEntry = { type KlipyPath (line 59) | interface KlipyPath { class KlipyService (line 64) | class KlipyService implements IKlipyService { method constructor (line 70) | constructor( method createURL (line 75) | private createURL({endpoint, params}: {endpoint: string; params: Recor... method fetchKlipyData (line 93) | private async fetchKlipyData(url: URL): Promise { method fetchAndTransformGifs (line 116) | private async fetchAndTransformGifs(url: URL): Promise(key: string): Promise<{data: T; isStale: boo... method setCache (line 129) | private async setCache(key: string, data: T): Promise { method triggerBackgroundRefresh (line 137) | private triggerBackgroundRefresh(key: string, refreshFn: () => Prom... method search (line 154) | async search(params: {q: string; locale: string; country: string}): Pr... method registerShare (line 168) | async registerShare(params: {id: string; q: string; locale: string; co... method getFeatured (line 185) | async getFeatured(params: {locale: string; country: string}): Promise<{ method fetchFeaturedData (line 204) | private async fetchFeaturedData(params: {locale: string; country: stri... method getTrendingGifs (line 212) | async getTrendingGifs(params: {locale: string; country: string}): Prom... method fetchTrendingGifs (line 225) | private async fetchTrendingGifs(params: {locale: string; country: stri... method suggest (line 238) | async suggest(params: {q: string; locale: string}): Promise { method getConfigSnapshot (line 67) | getConfigSnapshot(): LimitConfigSnapshot { method getConfigWireFormat (line 71) | getConfigWireFormat(): LimitConfigWireFormat { method refreshCache (line 75) | async refreshCache(): Promise { method sleep (line 127) | private sleep(ms: number): Promise { method updateConfig (line 131) | async updateConfig(config: LimitConfigSnapshot): Promise { method initializeSubscriber (line 140) | private initializeSubscriber(): void { method shutdown (line 171) | shutdown(): void { function getGlobalLimitConfigSnapshot (line 185) | function getGlobalLimitConfigSnapshot(): LimitConfigSnapshot { FILE: packages/api/src/limits/LimitConfigUtils.tsx function resolveLimitSafe (line 24) | function resolveLimitSafe( FILE: packages/api/src/limits/LimitMatchContextBuilder.tsx function createLimitMatchContext (line 24) | function createLimitMatchContext({ FILE: packages/api/src/limits/tests/LimitWireFormat.test.tsx type WellKnownResponse (line 31) | interface WellKnownResponse { FILE: packages/api/src/message/tests/MessageForwardingSuppressedEmbeds.test.tsx type ForwardedSnapshot (line 32) | interface ForwardedSnapshot { type ForwardedMessageResponse (line 37) | interface ForwardedMessageResponse { FILE: packages/api/src/message/tests/MessageHistoryCutoff.test.tsx function removeReadMessageHistoryFromEveryone (line 53) | async function removeReadMessageHistoryFromEveryone(ownerToken: string, ... function setupGuildWithMember (line 65) | async function setupGuildWithMember(): Promise<{ function getGuildCreationCutoff (line 89) | function getGuildCreationCutoff(guild: GuildResponse): string { FILE: packages/api/src/message/tests/MessageOperationValidation.test.tsx type ErrorResponse (line 31) | interface ErrorResponse { FILE: packages/api/src/message/tests/MessagePermissions.test.tsx constant TEST_IMAGE_URL (line 41) | const TEST_IMAGE_URL = 'https://picsum.photos/id/1/100'; FILE: packages/api/src/message/tests/MessageReactionValidation.test.tsx type ValidationErrorResponse (line 35) | interface ValidationErrorResponse { FILE: packages/api/src/message/tests/MessageShred.test.tsx type MessageShredQueueResponse (line 28) | interface MessageShredQueueResponse { type MessageShredStatusResponse (line 34) | interface MessageShredStatusResponse { FILE: packages/api/src/message/tests/MessageStickerDMPremium.test.tsx type ValidationErrorResponse (line 32) | interface ValidationErrorResponse { type DMChannelResponse (line 37) | interface DMChannelResponse { type GuildStickerResponse (line 41) | interface GuildStickerResponse { type MessageResponse (line 45) | interface MessageResponse { constant VALID_PNG_DATA_URL (line 49) | const VALID_PNG_DATA_URL = FILE: packages/api/src/message/tests/MessageTestUtils.tsx type AckResponse (line 26) | interface AckResponse { function createTestAccount (line 30) | async function createTestAccount(harness: ApiTestHarness): Promise { function sendMessage (line 39) | async function sendMessage( function getMessage (line 60) | async function getMessage( function getMessages (line 76) | async function getMessages( function editMessage (line 91) | async function editMessage( function deleteMessage (line 111) | async function deleteMessage( function ackMessage (line 123) | async function ackMessage( function pinMessage (line 139) | async function pinMessage( function unpinMessage (line 152) | async function unpinMessage( function getPins (line 161) | async function getPins( function createGuild (line 175) | async function createGuild(harness: ApiTestHarness, token: string, name:... function createDMChannel (line 189) | async function createDMChannel( function createChannelInvite (line 207) | async function createChannelInvite( function acceptInvite (line 215) | async function acceptInvite(harness: ApiTestHarness, token: string, invi... function addReaction (line 219) | async function addReaction( function removeReaction (line 233) | async function removeReaction( function removeAllReactions (line 248) | async function removeAllReactions( function removeAllReactionsForEmoji (line 260) | async function removeAllReactionsForEmoji( function deleteAttachment (line 273) | async function deleteAttachment( function updateChannelPermissions (line 287) | async function updateChannelPermissions( function editMessageWithAttachments (line 305) | async function editMessageWithAttachments( function createFriendship (line 328) | async function createFriendship(harness: ApiTestHarness, user1: TestAcco... function ensureSessionStarted (line 337) | async function ensureSessionStarted(harness: ApiTestHarness, token: stri... type SeedMessageInput (line 355) | interface SeedMessageInput { type SeededMessage (line 362) | interface SeededMessage { type SeedMessagesResult (line 368) | interface SeedMessagesResult { function seedMessages (line 374) | async function seedMessages( function seedMessagesWithContent (line 396) | async function seedMessagesWithContent( function seedMessagesAtTimestamps (line 413) | async function seedMessagesAtTimestamps( type ChannelStateResponse (line 426) | interface ChannelStateResponse { function getChannelState (line 436) | async function getChannelState(harness: ApiTestHarness, channelId: strin... type ChannelBucket (line 440) | interface ChannelBucket { type ChannelBucketsResponse (line 445) | interface ChannelBucketsResponse { function getChannelBuckets (line 451) | async function getChannelBuckets(harness: ApiTestHarness, channelId: str... function clearChannelMessages (line 455) | async function clearChannelMessages(harness: ApiTestHarness, channelId: ... function markChannelAsIndexed (line 461) | async function markChannelAsIndexed(harness: ApiTestHarness, channelId: ... function markGuildChannelsAsIndexed (line 468) | async function markGuildChannelsAsIndexed( function markUserDmChannelsAsIndexed (line 480) | async function markUserDmChannelsAsIndexed(harness: ApiTestHarness, toke... FILE: packages/api/src/message/tests/VoiceMessageValidation.test.tsx type ValidationErrorResponse (line 31) | interface ValidationErrorResponse { FILE: packages/api/src/middleware/AdminMiddleware.tsx constant REQUIRED_OAUTH_ADMIN_SCOPE (line 29) | const REQUIRED_OAUTH_ADMIN_SCOPE = 'admin'; function requireAdminACL (line 31) | function requireAdminACL(requiredACL: string) { function requireAnyAdminACL (line 77) | function requireAnyAdminACL(requiredACLs: Array) { FILE: packages/api/src/middleware/AuthMiddleware.tsx function ensureOAuth2BearerRouteSupport (line 26) | function ensureOAuth2BearerRouteSupport( FILE: packages/api/src/middleware/BlockAppOriginMiddleware.tsx function BlockAppOriginMiddleware (line 23) | async function BlockAppOriginMiddleware(ctx: Context, next: Next) { FILE: packages/api/src/middleware/CaptchaMiddleware.tsx function initializeProviders (line 31) | function initializeProviders(): void { function resolveProvider (line 61) | function resolveProvider(requestedType: string | undefined): ICaptchaPro... FILE: packages/api/src/middleware/ConcurrencyLimitMiddleware.tsx constant MAX_CONCURRENT_REQUESTS (line 24) | const MAX_CONCURRENT_REQUESTS = 500; constant SKIP_PATHS (line 25) | const SKIP_PATHS = new Set(['/_health', '/internal/telemetry']); FILE: packages/api/src/middleware/GuildAvailabilityMiddleware.tsx function parseResourceId (line 32) | function parseResourceId(path: string, resourceName: 'guilds' | 'channel... function extractGuildId (line 46) | function extractGuildId(path: string): GuildID | null { function extractChannelId (line 55) | function extractChannelId(path: string): ChannelID | null { function isStaffUser (line 64) | function isStaffUser(user: User): boolean { function isGuildUnavailableForUser (line 68) | function isGuildUnavailableForUser(guild: Guild, user: User): boolean { function resolveGuildIdForRequest (line 80) | async function resolveGuildIdForRequest(ctx: Context, path: str... FILE: packages/api/src/middleware/IpBanMiddleware.tsx type FamilyMap (line 32) | type FamilyMap = Record>; type SingleCacheEntry (line 34) | interface SingleCacheEntry { type RangeCacheEntry (line 39) | interface RangeCacheEntry { class IpBanCache (line 45) | class IpBanCache { method constructor (line 57) | constructor() { method setRefreshSubscriber (line 62) | setRefreshSubscriber(kvClient: IKVProvider | null): void { method initialize (line 66) | async initialize(): Promise { method setupSubscriber (line 74) | private setupSubscriber(): void { method refresh (line 111) | async refresh(): Promise { method isBanned (line 120) | isBanned(ip: string): boolean { method ban (line 139) | ban(ip: string): void { method unban (line 143) | unban(ip: string): void { method resetCaches (line 147) | resetCaches(): void { method createFamilyMaps (line 152) | private createFamilyMaps(): FamilyMap { method addEntry (line 159) | private addEntry(value: string): void { method removeEntry (line 185) | private removeEntry(value: string): void { method shutdown (line 210) | shutdown(): void { FILE: packages/api/src/middleware/MetricsMiddleware.tsx function normalizePath (line 24) | function normalizePath(path: string): string { FILE: packages/api/src/middleware/OAuth2ScopeMiddleware.tsx type OAuth2ScopeCheckMode (line 27) | type OAuth2ScopeCheckMode = 'strict' | 'bearer_only'; function ensureBearerScope (line 29) | function ensureBearerScope(ctx: Context, scope: OAuth2Scope, mo... function ensureAnyBearerScope (line 46) | function ensureAnyBearerScope(ctx: Context, scopes: Array) { function requireOAuth2ScopeForBearer (line 80) | function requireOAuth2ScopeForBearer(scope: OAuth2Scope) { function requireAnyOAuth2ScopeForBearer (line 88) | function requireAnyOAuth2ScopeForBearer(...scopes: Array) { function requireOAuth2BearerToken (line 96) | function requireOAuth2BearerToken() { FILE: packages/api/src/middleware/RateLimitMiddleware.tsx type RouteRateLimitConfig (line 30) | interface RouteRateLimitConfig { constant TEST_ENABLE_RATE_LIMITS_HEADER (line 35) | const TEST_ENABLE_RATE_LIMITS_HEADER = 'x-fluxer-test-enable-rate-limits'; constant TEST_GLOBAL_RATE_LIMIT_OVERRIDE_HEADER (line 36) | const TEST_GLOBAL_RATE_LIMIT_OVERRIDE_HEADER = 'x-fluxer-test-global-rat... function shouldEnforceRateLimits (line 38) | function shouldEnforceRateLimits(ctx: Context): boolean { function getClientIdentifier (line 47) | function getClientIdentifier(ctx: Context): string { function getGlobalRateLimit (line 57) | function getGlobalRateLimit(ctx: Context): number { function resolveBucket (line 75) | function resolveBucket(bucket: string, ctx: Context): string { function setRateLimitHeaders (line 87) | function setRateLimitHeaders(ctx: Context, limit: number, remai... function getRetryAfterSeconds (line 93) | function getRetryAfterSeconds(retryAfter: number | undefined, resetTime:... function revokeAuthenticatedSessionOnGlobalRateLimit (line 97) | async function revokeAuthenticatedSessionOnGlobalRateLimit(ctx: Context<... function RateLimitMiddleware (line 117) | function RateLimitMiddleware(routeConfig: RouteRateLimitConfig): Middlew... FILE: packages/api/src/middleware/RequestCacheMiddleware.tsx type RequestCache (line 24) | interface RequestCache { class RequestCacheImpl (line 29) | class RequestCacheImpl implements RequestCache { method clear (line 32) | clear(): void { function createRequestCache (line 47) | function createRequestCache(): RequestCache { FILE: packages/api/src/middleware/RequireXForwardedForMiddleware.tsx type RequireXForwardedForOptions (line 27) | interface RequireXForwardedForOptions { function RequireXForwardedForMiddleware (line 39) | function RequireXForwardedForMiddleware({exemptPaths = defaultExemptPath... FILE: packages/api/src/middleware/ResponseTypeMiddleware.tsx constant RESPONSE_SCHEMA_KEY (line 28) | const RESPONSE_SCHEMA_KEY = Symbol('responseSchema'); class MissingResponseTypeError (line 30) | class MissingResponseTypeError extends Error { method constructor (line 31) | constructor(method: string, path: string) { class ResponseValidationError (line 41) | class ResponseValidationError extends InternalServerError { method constructor (line 42) | constructor(public readonly validationErrors: Array<{path: string; mes... function ResponseType (line 51) | function ResponseType( function NoContent (line 123) | function NoContent(): MiddlewareHandler { type ResponseTypeOf (line 130) | type ResponseTypeOf = T['_output']; constant OPENAPI_METADATA_KEY (line 132) | const OPENAPI_METADATA_KEY = Symbol('openapiMetadata'); type OpenAPIMetadata (line 134) | interface OpenAPIMetadata { type SecurityScheme (line 146) | type SecurityScheme = 'botToken' | 'oauth2Token' | 'bearerToken' | 'sess... type OpenAPIRouteMetadata (line 148) | interface OpenAPIRouteMetadata { type OpenAPIOptions (line 160) | interface OpenAPIOptions { function validateOperationId (line 164) | function validateOperationId(operationId: string): void { function normalizeSecurityToArray (line 172) | function normalizeSecurityToArray( function normalizeTagsToArray (line 179) | function normalizeTagsToArray(tags: string | Array): Array)... function OpenAPI (line 195) | function OpenAPI( FILE: packages/api/src/middleware/ServiceMiddleware.tsx function shutdownReportService (line 178) | function shutdownReportService(): void { function getTestEmailService (line 186) | function getTestEmailService(): TestEmailService { function getVirusScanService (line 193) | function getVirusScanService() { function getCacheService (line 198) | function getCacheService(): ICacheService { function getRateLimitService (line 206) | function getRateLimitService(): RateLimitService { function getEmailDnsValidationService (line 214) | function getEmailDnsValidationService(): EmailDnsValidationService { function createRuntimeSmsProvider (line 221) | function createRuntimeSmsProvider(): ISmsProvider { function getPurgeQueue (line 246) | function getPurgeQueue(): IPurgeQueue { function getAssetDeletionQueue (line 254) | function getAssetDeletionQueue(): IAssetDeletionQueue { function getCsamLegalHoldService (line 262) | function getCsamLegalHoldService(): CsamLegalHoldService { function getLimitConfigService (line 271) | function getLimitConfigService(): LimitConfigService { function getSnowflakeReservationService (line 280) | function getSnowflakeReservationService(): SnowflakeReservationService { function initializeServiceSingletons (line 289) | async function initializeServiceSingletons(): Promise { function getAlertService (line 308) | function getAlertService(): AlertService { function getLiveKitWebhookService (line 316) | function getLiveKitWebhookService(): LiveKitWebhookService | null { FILE: packages/api/src/middleware/ServiceRegistry.tsx function setInjectedKVProvider (line 46) | function setInjectedKVProvider(provider: IKVProvider | undefined): void { function getKVClient (line 50) | function getKVClient(): IKVProvider { function setInjectedWorkerService (line 67) | function setInjectedWorkerService(service: IWorkerService | undefined): ... function getWorkerService (line 71) | function getWorkerService(): IWorkerService { function setInjectedGatewayService (line 80) | function setInjectedGatewayService(service: IGatewayService | undefined)... function getGatewayService (line 84) | function getGatewayService(): IGatewayService { function getSnowflakeService (line 92) | function getSnowflakeService(): SnowflakeService { function setInjectedMediaService (line 101) | function setInjectedMediaService(mediaService: IMediaService | undefined... function getMediaService (line 105) | function getMediaService(): IMediaService { function setInjectedS3Service (line 114) | function setInjectedS3Service(s3Service: S3Service | undefined): void { function getInjectedS3Service (line 118) | function getInjectedS3Service(): S3Service | undefined { function setInjectedSearchProviderService (line 124) | function setInjectedSearchProviderService(provider: ISearchProvider | un... function getInjectedSearchProvider (line 129) | function getInjectedSearchProvider(): ISearchProvider | undefined { function setInjectedBlueskyOAuthService (line 135) | function setInjectedBlueskyOAuthService(service: IBlueskyOAuthService | ... function getInjectedBlueskyOAuthService (line 139) | function getInjectedBlueskyOAuthService(): IBlueskyOAuthService | undefi... function ensureVoiceResourcesInitialized (line 150) | async function ensureVoiceResourcesInitialized(): Promise { function getVoiceTopology (line 187) | function getVoiceTopology(): VoiceTopology | null { function getVoiceAvailabilityService (line 191) | function getVoiceAvailabilityService(): VoiceAvailabilityService | null { function getLiveKitServiceInstance (line 195) | function getLiveKitServiceInstance(): ILiveKitService | null { function getVoiceRoomStoreInstance (line 199) | function getVoiceRoomStoreInstance(): IVoiceRoomStore | null { FILE: packages/api/src/middleware/SudoModeMiddleware.tsx constant SUDO_MODE_HEADER (line 25) | const SUDO_MODE_HEADER = 'X-Fluxer-Sudo-Mode-JWT'; FILE: packages/api/src/middleware/UserMiddleware.tsx type TokenType (line 31) | type TokenType = 'session' | 'bearer' | 'bot' | 'admin_api_key'; type ParsedAuthHeader (line 33) | interface ParsedAuthHeader { function parseAuthHeader (line 38) | function parseAuthHeader(authHeader?: string | null): ParsedAuthHeader |... function setUserInContext (line 79) | function setUserInContext(ctx: Context, user: User, trackActivi... FILE: packages/api/src/middleware/tests/GlobalRateLimitRevokesSession.test.tsx constant HTTP_TOO_MANY_REQUESTS (line 27) | const HTTP_TOO_MANY_REQUESTS = 429; type RateLimitErrorResponse (line 29) | interface RateLimitErrorResponse { type UnauthorizedErrorResponse (line 36) | interface UnauthorizedErrorResponse { FILE: packages/api/src/models/AdminApiKey.tsx class AdminApiKey (line 23) | class AdminApiKey { method constructor (line 34) | constructor(row: AdminApiKeyRow) { method toRow (line 46) | toRow(): AdminApiKeyRow { method isExpired (line 60) | isExpired(): boolean { FILE: packages/api/src/models/Application.tsx class Application (line 23) | class Application { method constructor (line 38) | constructor(row: ApplicationRow) { method toRow (line 54) | toRow(): ApplicationRow { method hasBotUser (line 72) | hasBotUser(): boolean { method getBotUserId (line 76) | getBotUserId(): UserID | null { FILE: packages/api/src/models/Attachment.tsx class Attachment (line 23) | class Attachment { method constructor (line 39) | constructor(attachment: MessageAttachment) { method toMessageAttachment (line 56) | toMessageAttachment(): MessageAttachment { FILE: packages/api/src/models/AuthSession.tsx class AuthSession (line 23) | class AuthSession { method constructor (line 35) | constructor(row: AuthSessionRow) { method toRow (line 48) | toRow(): AuthSessionRow { FILE: packages/api/src/models/CallInfo.tsx class CallInfo (line 23) | class CallInfo { method constructor (line 27) | constructor(call: MessageCall) { method toMessageCall (line 32) | toMessageCall(): MessageCall { FILE: packages/api/src/models/Channel.tsx class Channel (line 24) | class Channel { method constructor (line 49) | constructor(row: ChannelRow) { method toRow (line 80) | toRow(): ChannelRow { FILE: packages/api/src/models/ChannelPermissionOverwrite.tsx class ChannelPermissionOverwrite (line 22) | class ChannelPermissionOverwrite { method constructor (line 27) | constructor(overwrite: PermissionOverwrite) { method toPermissionOverwrite (line 33) | toPermissionOverwrite(): PermissionOverwrite { FILE: packages/api/src/models/EmailRevertToken.tsx class EmailRevertToken (line 24) | class EmailRevertToken { method constructor (line 29) | constructor(row: EmailRevertTokenRow) { method toRow (line 35) | toRow(): EmailRevertTokenRow { FILE: packages/api/src/models/EmailVerificationToken.tsx class EmailVerificationToken (line 24) | class EmailVerificationToken { method constructor (line 29) | constructor(row: EmailVerificationTokenRow) { method toRow (line 35) | toRow(): EmailVerificationTokenRow { FILE: packages/api/src/models/Embed.tsx class Embed (line 28) | class Embed { method constructor (line 45) | constructor(embed: MessageEmbed | MessageEmbedChild, allowChildren: bo... method toMessageEmbed (line 66) | toMessageEmbed(): MessageEmbed { method toMessageEmbedChild (line 73) | private toMessageEmbedChild(): MessageEmbedChild { FILE: packages/api/src/models/EmbedAuthor.tsx class EmbedAuthor (line 23) | class EmbedAuthor { method constructor (line 28) | constructor(author: MessageEmbedAuthor) { method toMessageEmbedAuthor (line 34) | toMessageEmbedAuthor(): MessageEmbedAuthor { FILE: packages/api/src/models/EmbedField.tsx class EmbedField (line 22) | class EmbedField { method constructor (line 27) | constructor(field: MessageEmbedField) { method toMessageEmbedField (line 33) | toMessageEmbedField(): MessageEmbedField { FILE: packages/api/src/models/EmbedFooter.tsx class EmbedFooter (line 23) | class EmbedFooter { method constructor (line 27) | constructor(footer: MessageEmbedFooter) { method toMessageEmbedFooter (line 32) | toMessageEmbedFooter(): MessageEmbedFooter { FILE: packages/api/src/models/EmbedMedia.tsx class EmbedMedia (line 22) | class EmbedMedia { method constructor (line 33) | constructor(media: MessageEmbedMedia) { method toMessageEmbedMedia (line 45) | toMessageEmbedMedia(): MessageEmbedMedia { FILE: packages/api/src/models/EmbedProvider.tsx class EmbedProvider (line 23) | class EmbedProvider { method constructor (line 27) | constructor(provider: MessageEmbedProvider) { method toMessageEmbedProvider (line 32) | toMessageEmbedProvider(): MessageEmbedProvider { FILE: packages/api/src/models/ExpressionPack.tsx type ExpressionPackType (line 23) | type ExpressionPackType = 'emoji' | 'sticker'; class ExpressionPack (line 24) | class ExpressionPack { method constructor (line 34) | constructor(row: ExpressionPackRow) { method toRow (line 45) | toRow(): ExpressionPackRow { FILE: packages/api/src/models/FavoriteMeme.tsx class FavoriteMeme (line 25) | class FavoriteMeme { method constructor (line 45) | constructor(row: FavoriteMemeRow) { method toRow (line 66) | toRow(): FavoriteMemeRow { method storageKey (line 88) | get storageKey(): string { FILE: packages/api/src/models/GiftCode.tsx class GiftCode (line 23) | class GiftCode { method constructor (line 35) | constructor(row: GiftCodeRow) { method toRow (line 48) | toRow(): GiftCodeRow { FILE: packages/api/src/models/Guild.tsx class Guild (line 24) | class Guild { method constructor (line 58) | constructor(row: GuildRow) { method toRow (line 93) | toRow(): GuildRow { FILE: packages/api/src/models/GuildAuditLog.tsx class GuildAuditLog (line 25) | class GuildAuditLog { method constructor (line 36) | constructor(row: GuildAuditLogRow) { method toRow (line 48) | toRow(): GuildAuditLogRow { method safeParseChanges (line 61) | private safeParseChanges(raw: string): GuildAuditLogChange | null { FILE: packages/api/src/models/GuildBan.tsx class GuildBan (line 23) | class GuildBan { method constructor (line 32) | constructor(row: GuildBanRow) { method toRow (line 42) | toRow(): GuildBanRow { FILE: packages/api/src/models/GuildChannelOverride.tsx class GuildChannelOverride (line 23) | class GuildChannelOverride { method constructor (line 29) | constructor(override: ChannelOverride) { method toChannelOverride (line 36) | toChannelOverride(): ChannelOverride { FILE: packages/api/src/models/GuildEmoji.tsx class GuildEmoji (line 23) | class GuildEmoji { method constructor (line 31) | constructor(row: GuildEmojiRow) { method toRow (line 40) | toRow(): GuildEmojiRow { FILE: packages/api/src/models/GuildMember.tsx class GuildMember (line 24) | class GuildMember { method constructor (line 46) | constructor(row: GuildMemberRow) { method hasProfileFlag (line 69) | hasProfileFlag(flag: number): boolean { method isAvatarUnset (line 73) | isAvatarUnset(): boolean { method isBannerUnset (line 77) | isBannerUnset(): boolean { method toRow (line 81) | toRow(): GuildMemberRow { FILE: packages/api/src/models/GuildRole.tsx class GuildRole (line 23) | class GuildRole { method constructor (line 37) | constructor(row: GuildRoleRow) { method effectiveHoistPosition (line 52) | get effectiveHoistPosition(): number { method toRow (line 56) | toRow(): GuildRoleRow { FILE: packages/api/src/models/GuildSticker.tsx class GuildSticker (line 23) | class GuildSticker { method constructor (line 33) | constructor(row: GuildStickerRow) { method toRow (line 44) | toRow(): GuildStickerRow { FILE: packages/api/src/models/Invite.tsx class Invite (line 23) | class Invite { method constructor (line 36) | constructor(row: InviteRow) { method toRow (line 50) | toRow(): InviteRow { FILE: packages/api/src/models/Message.tsx class Message (line 29) | class Message { method constructor (line 55) | constructor(row: MessageRow) { method toRow (line 82) | toRow(): MessageRow { FILE: packages/api/src/models/MessageReaction.tsx class MessageReaction (line 23) | class MessageReaction { method constructor (line 32) | constructor(row: MessageReactionRow) { method toRow (line 42) | toRow(): MessageReactionRow { FILE: packages/api/src/models/MessageRef.tsx class MessageRef (line 23) | class MessageRef { method constructor (line 29) | constructor(ref: MessageReference) { method toMessageReference (line 36) | toMessageReference(): MessageReference { FILE: packages/api/src/models/MessageSnapshot.tsx class MessageSnapshot (line 26) | class MessageSnapshot { method constructor (line 39) | constructor(snapshot: CassandraMessageSnapshot) { method toMessageSnapshot (line 53) | toMessageSnapshot(): CassandraMessageSnapshot { FILE: packages/api/src/models/MfaBackupCode.tsx class MfaBackupCode (line 24) | class MfaBackupCode { method constructor (line 29) | constructor(row: MfaBackupCodeRow) { method toRow (line 35) | toRow(): MfaBackupCodeRow { FILE: packages/api/src/models/MuteConfiguration.tsx class MuteConfiguration (line 22) | class MuteConfiguration { method constructor (line 26) | constructor(config: MuteConfig) { method toMuteConfig (line 31) | toMuteConfig(): MuteConfig { FILE: packages/api/src/models/OAuth2AccessToken.tsx class OAuth2AccessToken (line 23) | class OAuth2AccessToken { method constructor (line 30) | constructor(row: OAuth2AccessTokenRow) { method toRow (line 38) | toRow(): OAuth2AccessTokenRow { method hasScope (line 48) | hasScope(scope: string): boolean { FILE: packages/api/src/models/OAuth2AuthorizationCode.tsx class OAuth2AuthorizationCode (line 23) | class OAuth2AuthorizationCode { method constructor (line 32) | constructor(row: OAuth2AuthorizationCodeRow) { method toRow (line 42) | toRow(): OAuth2AuthorizationCodeRow { method hasScope (line 54) | hasScope(scope: string): boolean { FILE: packages/api/src/models/OAuth2RefreshToken.tsx class OAuth2RefreshToken (line 23) | class OAuth2RefreshToken { method constructor (line 30) | constructor(row: OAuth2RefreshTokenRow) { method toRow (line 38) | toRow(): OAuth2RefreshTokenRow { method hasScope (line 48) | hasScope(scope: string): boolean { FILE: packages/api/src/models/PasswordResetToken.tsx class PasswordResetToken (line 24) | class PasswordResetToken { method constructor (line 29) | constructor(row: PasswordResetTokenRow) { method toRow (line 35) | toRow(): PasswordResetTokenRow { FILE: packages/api/src/models/Payment.tsx class Payment (line 23) | class Payment { method constructor (line 41) | constructor(row: PaymentRow) { method toRow (line 60) | toRow(): PaymentRow { FILE: packages/api/src/models/PushSubscription.tsx class PushSubscription (line 23) | class PushSubscription { method constructor (line 31) | constructor(row: PushSubscriptionRow) { method toRow (line 40) | toRow(): PushSubscriptionRow { FILE: packages/api/src/models/ReadState.tsx class ReadState (line 23) | class ReadState { method constructor (line 30) | constructor(row: ReadStateRow) { method toRow (line 38) | toRow(): ReadStateRow { FILE: packages/api/src/models/RecentMention.tsx class RecentMention (line 23) | class RecentMention { method constructor (line 31) | constructor(row: RecentMentionRow) { method toRow (line 40) | toRow(): RecentMentionRow { FILE: packages/api/src/models/Relationship.tsx class Relationship (line 23) | class Relationship { method constructor (line 31) | constructor(row: RelationshipRow) { method toRow (line 40) | toRow(): RelationshipRow { FILE: packages/api/src/models/SavedMessage.tsx class SavedMessage (line 23) | class SavedMessage { method constructor (line 29) | constructor(row: SavedMessageRow) { method toRow (line 36) | toRow(): SavedMessageRow { FILE: packages/api/src/models/ScheduledMessage.tsx type ScheduledMessageStatus (line 26) | type ScheduledMessageStatus = 'pending' | 'invalid'; type ScheduledMessageReference (line 27) | interface ScheduledMessageReference { type ScheduledAllowedMentions (line 34) | interface ScheduledAllowedMentions { type ScheduledMessagePayload (line 41) | interface ScheduledMessagePayload { type ScheduledMessageResponse (line 54) | interface ScheduledMessageResponse { class ScheduledMessage (line 67) | class ScheduledMessage { method constructor (line 80) | constructor(params: { method fromRow (line 106) | static fromRow(row: ScheduledMessageRow): ScheduledMessage { method toRow (line 122) | toRow(): ScheduledMessageRow { method toResponse (line 138) | toResponse(): ScheduledMessageResponse { method parseToMessageRequest (line 153) | parseToMessageRequest(): MessageRequest { function parsePayload (line 158) | function parsePayload(payload: string): ScheduledMessagePayload { function toStatus (line 166) | function toStatus(value: string): ScheduledMessageStatus { function hydrateMessageRequest (line 170) | function hydrateMessageRequest(payload: ScheduledMessagePayload): Messag... FILE: packages/api/src/models/StickerItem.tsx class StickerItem (line 23) | class StickerItem { method constructor (line 28) | constructor(sticker: MessageStickerItem) { method toMessageStickerItem (line 34) | toMessageStickerItem(): MessageStickerItem { FILE: packages/api/src/models/User.tsx class User (line 28) | class User { method constructor (line 83) | constructor(row: UserRow) { method traits (line 139) | get traits(): Set { method isPremium (line 143) | isPremium(): boolean { method isUnclaimedAccount (line 147) | isUnclaimedAccount(): boolean { method canUseGlobalExpressions (line 151) | canUseGlobalExpressions(): boolean { method toRow (line 163) | toRow(): UserRow { FILE: packages/api/src/models/UserCustomStatus.tsx class UserCustomStatus (line 23) | class UserCustomStatus { method constructor (line 30) | constructor(status: CustomStatus) { method toCustomStatus (line 38) | toCustomStatus(): CustomStatus { method isExpired (line 48) | isExpired(referenceTime: Date = new Date()): boolean { FILE: packages/api/src/models/UserGuildFolder.tsx class UserGuildFolder (line 24) | class UserGuildFolder { method constructor (line 32) | constructor(folder: GuildFolder) { method toGuildFolder (line 41) | toGuildFolder(): GuildFolder { FILE: packages/api/src/models/UserGuildSettings.tsx class UserGuildSettings (line 25) | class UserGuildSettings { method constructor (line 38) | constructor(row: UserGuildSettingsRow) { method toRow (line 57) | toRow(): UserGuildSettingsRow { FILE: packages/api/src/models/UserNote.tsx class UserNote (line 23) | class UserNote { method constructor (line 29) | constructor(row: NoteRow) { method toRow (line 36) | toRow(): NoteRow { FILE: packages/api/src/models/UserSettings.tsx class UserSettings (line 38) | class UserSettings { method constructor (line 72) | constructor(row: UserSettingsRow) { method getUncategorizedFolder (line 107) | getUncategorizedFolder(): UserGuildFolder | null { method getOrderedGuildIds (line 111) | getOrderedGuildIds(): Array { method toRow (line 115) | toRow(): UserSettingsRow { method getDefaultUserSettings (line 152) | static getDefaultUserSettings({ FILE: packages/api/src/models/VisionarySlot.tsx class VisionarySlot (line 23) | class VisionarySlot { method constructor (line 27) | constructor(row: VisionarySlotRow) { method toRow (line 32) | toRow(): VisionarySlotRow { method isReserved (line 39) | isReserved(): boolean { FILE: packages/api/src/models/WebAuthnCredential.tsx class WebAuthnCredential (line 23) | class WebAuthnCredential { method constructor (line 33) | constructor(row: WebAuthnCredentialRow) { method toRow (line 44) | toRow(userId: UserID): WebAuthnCredentialRow { FILE: packages/api/src/models/Webhook.tsx class Webhook (line 23) | class Webhook { method constructor (line 34) | constructor(row: WebhookRow) { method toRow (line 46) | toRow(): WebhookRow { FILE: packages/api/src/moderation/tests/ModerationTestUtils.tsx function banUser (line 31) | async function banUser( function createTimeoutModerationSetup (line 47) | async function createTimeoutModerationSetup(harness: ApiTestHarness): Pr... function createRoleWithPermissions (line 99) | async function createRoleWithPermissions( function updateRolePositions (line 115) | async function updateRolePositions( function addMemberRole (line 124) | async function addMemberRole( function timeoutMember (line 137) | async function timeoutMember( function createBannedUserSetup (line 156) | async function createBannedUserSetup(harness: ApiTestHarness): Promise<{ FILE: packages/api/src/oauth/ApplicationMessageAuthorAnonymization.tsx type RemapAuthorMessagesToDeletedUserParams (line 34) | interface RemapAuthorMessagesToDeletedUserParams { function createDeletedMessageAuthorUser (line 41) | async function createDeletedMessageAuthorUser(params: { function remapAuthorMessagesToDeletedUser (line 62) | async function remapAuthorMessagesToDeletedUser( FILE: packages/api/src/oauth/ApplicationService.tsx type ApplicationServiceDeps (line 51) | interface ApplicationServiceDeps { class ApplicationNotOwnedError (line 63) | class ApplicationNotOwnedError extends ForbiddenError { method constructor (line 64) | constructor() { class BotUserGenerationError (line 70) | class BotUserGenerationError extends InternalServerError { method constructor (line 71) | constructor() { class ApplicationService (line 77) | class ApplicationService { method constructor (line 78) | constructor(public readonly deps: ApplicationServiceDeps) {} method sanitizeUsername (line 80) | private sanitizeUsername(name: string): string { method generateBotUsername (line 93) | private async generateBotUsername(applicationName: string): Promise<{u... method createApplication (line 123) | async createApplication(args: { method getApplication (line 253) | async getApplication(applicationId: ApplicationID): Promise { method generateBotToken (line 68) | async generateBotToken(applicationId: ApplicationID): Promise<{ FILE: packages/api/src/oauth/BotMfaMirrorService.tsx class BotMfaMirrorService (line 28) | class BotMfaMirrorService { method constructor (line 29) | constructor( method cloneAuthenticatorTypes (line 35) | private cloneAuthenticatorTypes(source: User): Set { method hasSameAuthenticatorTypes (line 39) | private hasSameAuthenticatorTypes(target: User, desired: Set):... method listApplications (line 50) | private async listApplications(ownerUserId: UserID): Promise { FILE: packages/api/src/oauth/OAuth2ApplicationsController.tsx function OAuth2ApplicationsController (line 40) | function OAuth2ApplicationsController(app: HonoApp) { FILE: packages/api/src/oauth/OAuth2ApplicationsRequestService.tsx class OAuth2ApplicationsRequestService (line 45) | class OAuth2ApplicationsRequestService { method constructor (line 46) | constructor( method listApplications (line 54) | async listApplications(userId: UserID) { method createApplication (line 87) | async createApplication(userId: UserID, body: ApplicationCreateRequest) { method getApplication (line 103) | async getApplication(userId: UserID, applicationId: bigint) { method updateApplication (line 125) | async updateApplication(userId: UserID, applicationId: bigint, body: A... method deleteApplication (line 156) | async deleteApplication(params: { method updateBotProfile (line 177) | async updateBotProfile( FILE: packages/api/src/oauth/OAuth2Controller.tsx function OAuth2Controller (line 54) | function OAuth2Controller(app: HonoApp) { FILE: packages/api/src/oauth/OAuth2Mappers.tsx function mapBotUserToResponse (line 28) | function mapBotUserToResponse(user: User, opts?: {token?: string}): Appl... function mapApplicationToResponse (line 48) | function mapApplicationToResponse( function mapBotTokenResetResponse (line 78) | function mapBotTokenResetResponse(user: User, token: string) { function mapBotProfileToResponse (line 85) | function mapBotProfileToResponse(user: User) { FILE: packages/api/src/oauth/OAuth2RedirectURI.tsx function isLoopbackHost (line 22) | function isLoopbackHost(hostname: string) { function isValidRedirectURI (line 32) | function isValidRedirectURI(value: string, allowAnyHttp: boolean) { FILE: packages/api/src/oauth/OAuth2RequestService.tsx class OAuth2RequestService (line 78) | class OAuth2RequestService { method constructor (line 79) | constructor( method tokenExchange (line 92) | async tokenExchange(params: { method userInfo (line 143) | async userInfo(authorizationHeader: string | undefined): Promise; authori... method introspect (line 186) | async introspect(params: { method authorizeConsent (line 218) | async authorizeConsent(params: { method getMe (line 341) | async getMe(authorizationHeader: string | undefined): Promise): Array { constant ACCESS_TOKEN_TTL_SECONDS (line 72) | const ACCESS_TOKEN_TTL_SECONDS = seconds('7 days'); class OAuth2Service (line 74) | class OAuth2Service { method constructor (line 79) | constructor(private readonly deps: OAuth2ServiceDeps) { method parseScope (line 84) | private parseScope(scope: string): Array { method validateRedirectUri (line 89) | private validateRedirectUri(application: Application, redirectUri: str... method authorizeAndConsent (line 96) | async authorizeAndConsent(params: { method basicAuth (line 170) | private basicAuth(credentialsHeader?: string): {clientId: string; clie... method issueTokens (line 193) | private async issueTokens(args: {application: Application; userId: Use... method tokenExchange (line 232) | async tokenExchange(params: { method userInfo (line 358) | async userInfo(accessToken: string) { method introspect (line 378) | async introspect( method revoke (line 426) | async revoke( FILE: packages/api/src/oauth/OAuth2Types.tsx type ApplicationBotResponse (line 20) | interface ApplicationBotResponse { type ApplicationResponse (line 33) | interface ApplicationResponse { FILE: packages/api/src/oauth/repositories/ApplicationRepository.tsx constant SELECT_APPLICATION_CQL (line 38) | const SELECT_APPLICATION_CQL = Applications.selectCql({ constant SELECT_APPLICATION_IDS_BY_OWNER_CQL (line 42) | const SELECT_APPLICATION_IDS_BY_OWNER_CQL = ApplicationsByOwner.selectCql({ constant FETCH_APPLICATIONS_BY_IDS_CQL (line 47) | const FETCH_APPLICATIONS_BY_IDS_CQL = Applications.selectCql({ function getAdminSecretHash (line 53) | async function getAdminSecretHash(): Promise { function getAdminRedirectUri (line 64) | function getAdminRedirectUri(): string { function buildAdminApplication (line 68) | function buildAdminApplication(secretHash: string | null): Application { class ApplicationRepository (line 87) | class ApplicationRepository implements IApplicationRepository { method getApplication (line 88) | async getApplication(applicationId: ApplicationID): Promise { FILE: packages/api/src/oauth/repositories/IApplicationRepository.tsx type IApplicationRepository (line 24) | interface IApplicationRepository { FILE: packages/api/src/oauth/repositories/IOAuth2TokenRepository.tsx type IOAuth2TokenRepository (line 30) | interface IOAuth2TokenRepository { FILE: packages/api/src/oauth/repositories/OAuth2TokenRepository.tsx constant SELECT_AUTHORIZATION_CODE (line 41) | const SELECT_AUTHORIZATION_CODE = OAuth2AuthorizationCodes.selectCql({ constant SELECT_ACCESS_TOKEN (line 45) | const SELECT_ACCESS_TOKEN = OAuth2AccessTokens.selectCql({ constant SELECT_ACCESS_TOKENS_BY_USER (line 49) | const SELECT_ACCESS_TOKENS_BY_USER = OAuth2AccessTokensByUser.selectCql({ constant SELECT_REFRESH_TOKEN (line 54) | const SELECT_REFRESH_TOKEN = OAuth2RefreshTokens.selectCql({ constant SELECT_REFRESH_TOKENS_BY_USER (line 58) | const SELECT_REFRESH_TOKENS_BY_USER = OAuth2RefreshTokensByUser.selectCql({ class OAuth2TokenRepository (line 63) | class OAuth2TokenRepository implements IOAuth2TokenRepository { method createAuthorizationCode (line 64) | async createAuthorizationCode(data: OAuth2AuthorizationCodeRow): Promi... method getAuthorizationCode (line 69) | async getAuthorizationCode(code: string): Promise { method createAccessToken (line 78) | async createAccessToken(data: OAuth2AccessTokenRow): Promise { method deleteAccessToken (line 100) | async deleteAccessToken(token: string, _applicationId: ApplicationID, ... method deleteAllAccessTokensForUser (line 111) | async deleteAllAccessTokensForUser(userId: UserID): Promise { method createRefreshToken (line 128) | async createRefreshToken(data: OAuth2RefreshTokenRow): Promise { method listRefreshTokensForUser (line 170) | async listRefreshTokensForUser(userId: UserID): Promise { function createOAuth2Application (line 39) | async function createOAuth2Application( function authorizeOAuth2 (line 67) | async function authorizeOAuth2( function exchangeOAuth2AuthorizationCode (line 108) | async function exchangeOAuth2AuthorizationCode( function refreshOAuth2Token (line 149) | async function refreshOAuth2Token( function revokeOAuth2Token (line 188) | async function revokeOAuth2Token( function introspectOAuth2Token (line 222) | async function introspectOAuth2Token( function getOAuth2UserInfo (line 254) | async function getOAuth2UserInfo( function listOAuth2Authorizations (line 269) | async function listOAuth2Authorizations( function deauthorizeOAuth2Application (line 286) | async function deauthorizeOAuth2Application( function createOAuth2TestSetup (line 300) | async function createOAuth2TestSetup(harness: ApiTestHarness) { FILE: packages/api/src/oauth/utils/ParseClientCredentials.tsx type ParsedClientCredentials (line 28) | interface ParsedClientCredentials { function parseClientCredentials (line 33) | function parseClientCredentials( FILE: packages/api/src/oauth2/tests/OAuth2Me.test.tsx type OAuth2MeResponse (line 32) | interface OAuth2MeResponse { FILE: packages/api/src/pack/PackExpressionAccessResolver.tsx type PackExpressionAccessResolution (line 23) | type PackExpressionAccessResolution = 'accessible' | 'not-accessible' | ... type PackExpressionAccessResolver (line 24) | interface PackExpressionAccessResolver { type PackExpressionAccessResolverParams (line 28) | interface PackExpressionAccessResolverParams { FILE: packages/api/src/pack/PackModel.tsx function mapPackToSummary (line 23) | function mapPackToSummary(pack: ExpressionPack, installedAt?: Date | nul... FILE: packages/api/src/pack/PackRepository.tsx type PackType (line 34) | type PackType = ExpressionPack['type']; constant FETCH_EXPRESSION_PACK_BY_ID_QUERY (line 36) | const FETCH_EXPRESSION_PACK_BY_ID_QUERY = ExpressionPacks.select({ constant FETCH_EXPRESSION_PACKS_BY_CREATOR_QUERY (line 41) | const FETCH_EXPRESSION_PACKS_BY_CREATOR_QUERY = ExpressionPacksByCreator... constant FETCH_PACK_INSTALLATIONS_BY_USER_QUERY (line 45) | const FETCH_PACK_INSTALLATIONS_BY_USER_QUERY = PackInstallations.select({ constant FETCH_PACK_INSTALLATION_QUERY (line 49) | const FETCH_PACK_INSTALLATION_QUERY = PackInstallations.select({ class PackRepository (line 54) | class PackRepository { method getPack (line 55) | async getPack(packId: GuildID): Promise { method listPacksByCreator (line 60) | async listPacksByCreator(creatorId: UserID, packType?: PackType): Prom... method countPacksByCreator (line 67) | async countPacksByCreator(creatorId: UserID, packType: PackType): Prom... method upsertPack (line 74) | async upsertPack(data: ExpressionPackRow): Promise { method deletePack (line 107) | async deletePack(packId: GuildID): Promise { method listInstallations (line 121) | async listInstallations(userId: UserID): Promise { method removeInstallation (line 129) | async removeInstallation(userId: UserID, packId: GuildID): Promise { method installPack (line 84) | async installPack(params: PackDeleteParams): Promise { method uninstallPack (line 88) | async uninstallPack(params: PackDeleteParams): Promise { FILE: packages/api/src/pack/PackService.tsx class PackService (line 72) | class PackService { method constructor (line 73) | constructor( method requireExpressionPackAccess (line 84) | private async requireExpressionPackAccess(userId: UserID): Promise { method createPack (line 227) | async createPack(params: { method updatePack (line 256) | async updatePack(params: { method deletePack (line 274) | async deletePack(userId: UserID, packId: GuildID): Promise { method installPack (line 280) | async installPack(userId: UserID, packId: GuildID): Promise { method uninstallPack (line 310) | async uninstallPack(userId: UserID, packId: GuildID): Promise { method getInstalledPackIds (line 315) | async getInstalledPackIds(userId: UserID): Promise> { method getPackEmojis (line 321) | async getPackEmojis(params: { method getPackStickers (line 336) | async getPackStickers(params: { method createPackEmoji (line 351) | async createPackEmoji(params: { method bulkCreatePackEmojis (line 395) | async bulkCreatePackEmojis(params: { method updatePackEmoji (line 452) | async updatePackEmoji(params: { method deletePackEmoji (line 477) | async deletePackEmoji(params: {userId: UserID; packId: GuildID; emojiI... method createPackSticker (line 496) | async createPackSticker(params: { method bulkCreatePackStickers (line 541) | async bulkCreatePackStickers(params: { method updatePackSticker (line 600) | async updatePackSticker(params: { method deletePackSticker (line 629) | async deletePackSticker(params: { method resolveLimitForUser (line 655) | private resolveLimitForUser(user: User | null, key: LimitKey, fallback... FILE: packages/api/src/pack/controllers/PackController.tsx function PackController (line 36) | function PackController(app: HonoApp) { FILE: packages/api/src/pack/controllers/PackEmojiController.tsx function PackEmojiController (line 40) | function PackEmojiController(app: HonoApp) { FILE: packages/api/src/pack/controllers/PackStickerController.tsx function PackStickerController (line 40) | function PackStickerController(app: HonoApp) { FILE: packages/api/src/pack/controllers/index.tsx function registerPackControllers (line 25) | function registerPackControllers(app: HonoApp) { FILE: packages/api/src/pack/tests/PackTestUtils.tsx type PackCreateRequest (line 35) | interface PackCreateRequest { type PackUpdateRequest (line 40) | interface PackUpdateRequest { type PackType (line 45) | type PackType = 'emoji' | 'sticker'; function loadPackFixture (line 47) | function loadPackFixture(filename: string): Buffer { function createGuild (line 52) | async function createGuild(harness: ApiTestHarness, token: string, name:... function grantStaffAccess (line 56) | async function grantStaffAccess(harness: ApiTestHarness, userId: string)... function grantPremium (line 60) | async function grantPremium(harness: ApiTestHarness, userId: string): Pr... function revokePremium (line 71) | async function revokePremium(harness: ApiTestHarness, userId: string): P... function setupPackTestAccount (line 81) | async function setupPackTestAccount(harness: ApiTestHarness): Promise<{ function setupNonPremiumPackTestAccount (line 92) | async function setupNonPremiumPackTestAccount(harness: ApiTestHarness): ... function listPacks (line 102) | async function listPacks(harness: ApiTestHarness, token: string): Promis... function createPack (line 106) | async function createPack( function updatePack (line 119) | async function updatePack( function deletePack (line 132) | async function deletePack(harness: ApiTestHarness, token: string, packId... function installPack (line 136) | async function installPack(harness: ApiTestHarness, token: string, packI... function uninstallPack (line 144) | async function uninstallPack(harness: ApiTestHarness, token: string, pac... function getPackEmojis (line 148) | async function getPackEmojis( function getPackStickers (line 159) | async function getPackStickers( function createPackEmoji (line 170) | async function createPackEmoji( function deletePackEmoji (line 185) | async function deletePackEmoji( function createPackSticker (line 197) | async function createPackSticker( function deletePackSticker (line 213) | async function deletePackSticker( FILE: packages/api/src/rate_limit_configs/RateLimitHelpers.tsx type RateLimitSection (line 22) | type RateLimitSection = {readonly [key: string]: RouteRateLimitConfig}; type UnionToIntersection (line 24) | type UnionToIntersection = (U extends unknown ? (k: U) => void : neve... function mergeRateLimitSections (line 26) | function mergeRateLimitSections>( FILE: packages/api/src/read_state/ReadStateController.tsx function ReadStateController (line 29) | function ReadStateController(app: Hono): void { FILE: packages/api/src/read_state/ReadStateRepository.tsx constant FETCH_READ_STATES_CQL (line 42) | const FETCH_READ_STATES_CQL = ReadStates.selectCql({ constant FETCH_READ_STATE_BY_USER_AND_CHANNEL_CQL (line 46) | const FETCH_READ_STATE_BY_USER_AND_CHANNEL_CQL = ReadStates.selectCql({ class ReadStateRepository (line 51) | class ReadStateRepository implements IReadStateRepository { method listReadStates (line 52) | async listReadStates(userId: UserID): Promise> { method upsertReadState (line 57) | async upsertReadState( method incrementReadStateMentions (line 81) | async incrementReadStateMentions(userId: UserID, channelId: ChannelID,... method bulkIncrementMentionCounts (line 95) | async bulkIncrementMentionCounts(updates: Array<{userId: UserID; chann... method deleteReadState (line 133) | async deleteReadState(userId: UserID, channelId: ChannelID): Promise> { method ackMessage (line 36) | async ackMessage(params: { method bulkAckMessages (line 59) | async bulkAckMessages({ method deleteReadState (line 86) | async deleteReadState({userId, channelId}: {userId: UserID; channelId:... method incrementMentionCount (line 91) | async incrementMentionCount({userId, channelId}: {userId: UserID; chan... method bulkIncrementMentionCounts (line 96) | async bulkIncrementMentionCounts(updates: Array<{userId: UserID; chann... method ackPins (line 119) | async ackPins(params: {userId: UserID; channelId: ChannelID; timestamp... method dispatchMessageAck (line 125) | private async dispatchMessageAck(params: { method dispatchPinsAck (line 145) | private async dispatchPinsAck(params: {userId: UserID; channelId: Chan... FILE: packages/api/src/report/IReportRepository.tsx type ReportStatus (line 24) | enum ReportStatus { type ReportType (line 29) | enum ReportType { constant REPORT_STATUS_STRINGS (line 35) | const REPORT_STATUS_STRINGS: Record = { function reportStatusToString (line 40) | function reportStatusToString(status: ReportStatus | number): string { type MentionCollection (line 44) | type MentionCollection = ReadonlyArray | Set | null | un... type IARMessageContextRow (line 46) | interface IARMessageContextRow { type IARMessageContext (line 67) | interface IARMessageContext { type IARSubmissionRow (line 88) | interface IARSubmissionRow { type IARSubmission (line 116) | interface IARSubmission { FILE: packages/api/src/report/ReportController.tsx function ReportController (line 38) | function ReportController(app: HonoApp) { FILE: packages/api/src/report/ReportRepository.tsx constant GET_REPORT_QUERY (line 41) | const GET_REPORT_QUERY = IARSubmissions.select({ constant GET_DSA_EMAIL_VERIFICATION_QUERY (line 52) | const GET_DSA_EMAIL_VERIFICATION_QUERY = DSAReportEmailVerifications.sel... constant GET_DSA_REPORT_TICKET_QUERY (line 57) | const GET_DSA_REPORT_TICKET_QUERY = DSAReportTickets.select({ function createFetchAllReportsFirstPageQuery (line 62) | function createFetchAllReportsFirstPageQuery(limit: number) { class ReportRepository (line 66) | class ReportRepository implements IReportRepository { method createReport (line 67) | async createReport(data: IARSubmissionRow): Promise { method getReport (line 72) | async getReport(reportId: ReportID): Promise { method resolveReport (line 77) | async resolveReport( method mapRowToSubmission (line 118) | private mapRowToSubmission(row: IARSubmissionRow): IARSubmission { method listAllReportsPaginated (line 148) | async listAllReportsPaginated(limit: number, lastReportId?: ReportID):... method upsertDsaEmailVerification (line 162) | async upsertDsaEmailVerification(row: DSAReportEmailVerificationRow): ... method getDsaEmailVerification (line 166) | async getDsaEmailVerification(emailLower: string): Promise { method createDsaTicket (line 177) | async createDsaTicket(row: DSAReportTicketRow): Promise { method getDsaTicket (line 181) | async getDsaTicket(ticket: string): Promise { method deleteDsaTicket (line 186) | async deleteDsaTicket(ticket: string): Promise { method mapMessageContext (line 190) | private mapMessageContext(rawContext: Array): Ar... FILE: packages/api/src/report/ReportRequestService.tsx type ReportUserRequestContext (line 35) | interface ReportUserRequestContext { type ReportDsaRequestContext (line 40) | interface ReportDsaRequestContext { type ReportRecord (line 44) | interface ReportRecord { class ReportRequestService (line 50) | class ReportRequestService { method constructor (line 51) | constructor(private reportService: ReportService) {} method reportMessage (line 53) | async reportMessage({user, data}: ReportUserRequestContext { method verifyDsaReportEmail (line 352) | async verifyDsaReportEmail(email: string, code: string): Promise { method buildDsaReportRow (line 407) | private async buildDsaReportRow( method buildDsaMessageReportRow (line 424) | private async buildDsaMessageReportRow( method buildDsaUserReportRow (line 484) | private async buildDsaUserReportRow( method buildDsaGuildReportRow (line 520) | private async buildDsaGuildReportRow( method resolveDsaUser (line 569) | private async resolveDsaUser(userId?: bigint, userTag?: string | null)... method findUserByTag (line 589) | private async findUserByTag(tag: string): Promise { method consumeDsaTicket (line 601) | private async consumeDsaTicket(ticket: string): Promise { method listMyReports (line 689) | async listMyReports(reporterId: UserID, limit?: number, offset?: numbe... method listReportsByStatus (line 702) | async listReportsByStatus(status: number, limit?: number, offset?: num... method listAllReportsPaginated (line 715) | async listAllReportsPaginated(limit: number, lastReportId?: ReportID):... method resolveReport (line 719) | async resolveReport( method gatherMessageContext (line 738) | private async gatherMessageContext( method cloneAttachmentsForReport (line 813) | private async cloneAttachmentsForReport( method checkReportBan (line 859) | private async checkReportBan(userId: UserID | null): Promise { method getReporterRateLimitKey (line 869) | private getReporterRateLimitKey(reporter: ReporterMetadata): string { method checkRateLimit (line 879) | private async checkRateLimit(key: string): Promise { method trackRateLimit (line 897) | private trackRateLimit(key: string): void { method cleanupRateLimitMap (line 905) | private cleanupRateLimitMap(): void { method shutdown (line 917) | public shutdown(): void { function emitReportMetric (line 924) | function emitReportMetric(metricName: string, report: IARSubmission, ext... function reportTypeLabel (line 944) | function reportTypeLabel(type: number): string { FILE: packages/api/src/report/tests/ContentReporting.test.tsx type ReportResponse (line 42) | interface ReportResponse { FILE: packages/api/src/rpc/NatsApiRpcListener.tsx constant RPC_SUBJECT (line 31) | const RPC_SUBJECT = 'rpc.api'; constant QUEUE_GROUP (line 32) | const QUEUE_GROUP = 'api'; class NatsApiRpcListener (line 34) | class NatsApiRpcListener { method constructor (line 42) | constructor(connectionManager: INatsConnectionManager, logger: ILogger) { method start (line 59) | async start(): Promise { method stop (line 68) | async stop(): Promise { method processMessages (line 78) | private async processMessages(): Promise { method handleMessage (line 92) | private async handleMessage(msg: Msg): Promise { FILE: packages/api/src/rpc/RpcService.tsx type HandleRpcRequestParams (line 118) | interface HandleRpcRequestParams { type HandleSessionRequestParams (line 123) | interface HandleSessionRequestParams { type HandleGuildCollectionRequestParams (line 132) | interface HandleGuildCollectionRequestParams { type GetUserDataParams (line 140) | interface GetUserDataParams { type UserData (line 145) | interface UserData { constant GUILD_COLLECTION_DEFAULT_LIMIT (line 158) | const GUILD_COLLECTION_DEFAULT_LIMIT = 250; constant GUILD_COLLECTION_MAX_LIMIT (line 159) | const GUILD_COLLECTION_MAX_LIMIT = 1000; class RpcService (line 161) | class RpcService { method constructor (line 164) | constructor( method sanitizeOwnedBotDiscriminators (line 196) | private async sanitizeOwnedBotDiscriminators(owner: User): Promise { method updateGuildMemberCount (line 336) | private async updateGuildMemberCount(guild: Guild, actualMemberCount: ... method migrateStickerAnimated (line 347) | private async migrateStickerAnimated(sticker: GuildSticker): Promise { method resolveGuildCollectionLimit (line 1230) | private resolveGuildCollectionLimit(limit?: number): number { method handleGuildCollectionGuildRequest (line 1237) | private async handleGuildCollectionGuildRequest({ method handleGuildCollectionRolesRequest (line 1254) | private async handleGuildCollectionRolesRequest({ method handleGuildCollectionChannelsRequest (line 1267) | private async handleGuildCollectionChannelsRequest({ method handleGuildCollectionEmojisRequest (line 1296) | private async handleGuildCollectionEmojisRequest({ method handleGuildCollectionStickersRequest (line 1309) | private async handleGuildCollectionStickersRequest({ method handleGuildCollectionMembersRequest (line 1323) | private async handleGuildCollectionMembersRequest({ method migrateGuildStickersForRpc (line 1356) | private async migrateGuildStickersForRpc( method getUserData (line 1372) | private async getUserData({userId, includePrivateChannels = true}: Get... method ensurePrivateChannelsWithinLimit (line 1441) | private async ensurePrivateChannelsWithinLimit(user: User): Promise}): Promis... method deletePushSubscriptions (line 1550) | private async deletePushSubscriptions(params: { method stripAnimationPrefix (line 1562) | private stripAnimationPrefix(hash: string): string { method repairDanglingChannelReferences (line 1566) | private async repairDanglingChannelReferences(params: {guild: Guild; c... method repairGuildBannerHeight (line 1596) | private async repairGuildBannerHeight(guild: Guild): Promise { method repairGuildSplashDimensions (line 1625) | private async repairGuildSplashDimensions(guild: Guild): Promise { method repairGuildEmbedSplashDimensions (line 1654) | private async repairGuildEmbedSplashDimensions(guild: Guild): Promise<... method repairOrphanedInvitesAndWebhooks (line 1683) | private async repairOrphanedInvitesAndWebhooks(params: {guild: Guild; ... method getUserBlockedIds (line 1735) | private async getUserBlockedIds(params: {userIds: Array}): Pro... method kickTemporaryMember (line 1754) | private async kickTemporaryMember(params: {userId: UserID; guildIds: A... method handleCallEnded (line 1796) | private async handleCallEnded(params: { method getDmChannel (line 1848) | private async getDmChannel(params: { FILE: packages/api/src/rpc/tests/RpcGuildMemberCountRepair.test.tsx type RpcGuildCollectionResponse (line 29) | interface RpcGuildCollectionResponse { function setGuildMemberCount (line 39) | async function setGuildMemberCount(harness: ApiTestHarness, guildId: str... FILE: packages/api/src/search/BuildMessageSearchFilters.tsx function buildMessageSearchFilters (line 23) | function buildMessageSearchFilters( FILE: packages/api/src/search/ChannelIndexingUtils.tsx function channelNeedsReindexing (line 22) | function channelNeedsReindexing(indexedAt: Date | null | undefined): boo... FILE: packages/api/src/search/GlobalSearchService.tsx class GlobalSearchService (line 45) | class GlobalSearchService { method constructor (line 48) | constructor( method getMessageSearchService (line 65) | private getMessageSearchService(): IMessageSearchService { method searchAcrossDms (line 73) | async searchAcrossDms(params: { method searchAcrossGuildsAndDms (line 108) | async searchAcrossGuildsAndDms(params: { method filterRequestedChannelIds (line 187) | private filterRequestedChannelIds(available: Array, requested?... method ensureChannelsIndexed (line 203) | private async ensureChannelsIndexed(channelIds: Array): Promis... method queueIndexingChannels (line 232) | private async queueIndexingChannels(channelIds: Iterable): Pro... method runSearch (line 247) | private async runSearch( FILE: packages/api/src/search/IAuditLogSearchService.tsx type IAuditLogSearchService (line 27) | interface IAuditLogSearchService extends SchemaISearchAdapter(promise: Promise): Promise { function drainSearchTasks (line 53) | async function drainSearchTasks(options?: {timeoutMs?: number}): Promise... FILE: packages/api/src/search/SearchWarmup.tsx constant BATCH_SIZE (line 35) | const BATCH_SIZE = 100; type SearchWarmupDeps (line 37) | interface SearchWarmupDeps { function warmupAdminSearchIndexes (line 44) | async function warmupAdminSearchIndexes(deps: SearchWarmupDeps): Promise... function warmupGuilds (line 92) | async function warmupGuilds( function warmupUsers (line 117) | async function warmupUsers( function warmupReports (line 142) | async function warmupReports( FILE: packages/api/src/search/auditlog/AuditLogSearchSerializer.tsx function convertToSearchableAuditLog (line 24) | function convertToSearchableAuditLog(log: AdminAuditLog): SearchableAudi... FILE: packages/api/src/search/controllers/SearchController.tsx function SearchController (line 29) | function SearchController(app: HonoApp) { FILE: packages/api/src/search/elasticsearch/ElasticsearchAuditLogSearchService.tsx type ElasticsearchAuditLogSearchServiceOptions (line 31) | interface ElasticsearchAuditLogSearchServiceOptions extends Elasticsearc... class ElasticsearchAuditLogSearchService (line 33) | class ElasticsearchAuditLogSearchService method constructor (line 37) | constructor(options: ElasticsearchAuditLogSearchServiceOptions) { method indexAuditLog (line 41) | async indexAuditLog(log: AdminAuditLog): Promise { method indexAuditLogs (line 45) | async indexAuditLogs(logs: Array): Promise { method updateAuditLog (line 50) | async updateAuditLog(log: AdminAuditLog): Promise { method deleteAuditLog (line 54) | async deleteAuditLog(logId: bigint): Promise { method deleteAuditLogs (line 58) | async deleteAuditLogs(logIds: Array): Promise { method searchAuditLogs (line 62) | searchAuditLogs( FILE: packages/api/src/search/elasticsearch/ElasticsearchGuildMemberSearchService.tsx constant DEFAULT_LIMIT (line 36) | const DEFAULT_LIMIT = 25; function toSearchOptions (line 38) | function toSearchOptions(options?: {limit?: number; offset?: number}): {... type ElasticsearchGuildMemberSearchServiceOptions (line 45) | interface ElasticsearchGuildMemberSearchServiceOptions extends Elasticse... class ElasticsearchGuildMemberSearchService (line 47) | class ElasticsearchGuildMemberSearchService method constructor (line 55) | constructor(options: ElasticsearchGuildMemberSearchServiceOptions) { method indexMember (line 59) | async indexMember(member: GuildMember, user: User): Promise { method indexMembers (line 63) | async indexMembers(members: Array<{member: GuildMember; user: User}>):... method updateMember (line 68) | async updateMember(member: GuildMember, user: User): Promise { method deleteMember (line 72) | async deleteMember(guildId: GuildID, userId: UserID): Promise { method deleteGuildMembers (line 76) | async deleteGuildMembers(guildId: GuildID): Promise { method searchMembers (line 87) | searchMembers( FILE: packages/api/src/search/elasticsearch/ElasticsearchGuildSearchService.tsx type ElasticsearchGuildSearchServiceOptions (line 32) | interface ElasticsearchGuildSearchServiceOptions extends ElasticsearchGu... class ElasticsearchGuildSearchService (line 34) | class ElasticsearchGuildSearchService method constructor (line 38) | constructor(options: ElasticsearchGuildSearchServiceOptions) { method indexGuild (line 42) | async indexGuild(guild: Guild, discovery?: GuildDiscoveryContext): Pro... method indexGuilds (line 46) | async indexGuilds(guilds: Array): Promise { method updateGuild (line 51) | async updateGuild(guild: Guild, discovery?: GuildDiscoveryContext): Pr... method deleteGuild (line 55) | async deleteGuild(guildId: GuildID): Promise { method deleteGuilds (line 59) | async deleteGuilds(guildIds: Array): Promise { method searchGuilds (line 63) | searchGuilds( FILE: packages/api/src/search/elasticsearch/ElasticsearchMessageSearchService.tsx constant MESSAGE_DELETE_BATCH_SIZE (line 32) | const MESSAGE_DELETE_BATCH_SIZE = 1000; constant DEFAULT_HITS_PER_PAGE (line 33) | const DEFAULT_HITS_PER_PAGE = 25; function toSearchOptions (line 35) | function toSearchOptions(options?: {hitsPerPage?: number; page?: number}... type ElasticsearchMessageSearchServiceOptions (line 42) | interface ElasticsearchMessageSearchServiceOptions extends Elasticsearch... class ElasticsearchMessageSearchService (line 44) | class ElasticsearchMessageSearchService method constructor (line 48) | constructor(options: ElasticsearchMessageSearchServiceOptions) { method indexMessage (line 52) | async indexMessage(message: Message, authorIsBot?: boolean): Promise, authorBotMap?: Map { method deleteMessages (line 76) | async deleteMessages(messageIds: Array): Promise { method deleteGuildMessages (line 80) | async deleteGuildMessages(guildId: GuildID): Promise { method searchMessages (line 91) | searchMessages( FILE: packages/api/src/search/elasticsearch/ElasticsearchReportSearchService.tsx type ElasticsearchReportSearchServiceOptions (line 32) | interface ElasticsearchReportSearchServiceOptions extends ElasticsearchR... class ElasticsearchReportSearchService (line 34) | class ElasticsearchReportSearchService method constructor (line 38) | constructor(options: ElasticsearchReportSearchServiceOptions) { method indexReport (line 42) | async indexReport(report: IARSubmission): Promise { method indexReports (line 46) | async indexReports(reports: Array): Promise { method updateReport (line 51) | async updateReport(report: IARSubmission): Promise { method deleteReport (line 55) | async deleteReport(reportId: ReportID): Promise { method deleteReports (line 59) | async deleteReports(reportIds: Array): Promise { method searchReports (line 63) | searchReports( method listReportsByReporter (line 71) | listReportsByReporter( method listReportsByStatus (line 79) | listReportsByStatus(status: number, limit?: number, offset?: number): ... method listReportsByType (line 83) | listReportsByType( method listReportsByReportedUser (line 91) | listReportsByReportedUser( method listReportsByReportedGuild (line 99) | listReportsByReportedGuild( method listReportsByReportedMessage (line 107) | listReportsByReportedMessage( FILE: packages/api/src/search/elasticsearch/ElasticsearchSearchServiceBase.tsx method constructor (line 30) | protected constructor(adapter: TAdapter) { method initialize (line 34) | initialize(): Promise { method shutdown (line 38) | shutdown(): Promise { method isAvailable (line 42) | isAvailable(): boolean { method indexDocument (line 46) | indexDocument(doc: TDocument): Promise { method indexDocuments (line 50) | indexDocuments(docs: Array): Promise { method updateDocument (line 54) | updateDocument(doc: TDocument): Promise { method deleteDocument (line 58) | deleteDocument(id: string): Promise { method deleteDocuments (line 62) | deleteDocuments(ids: Array): Promise { method deleteAllDocuments (line 66) | deleteAllDocuments(): Promise { method search (line 70) | search(query: string, filters: TFilters, options?: SearchOptions): Promi... FILE: packages/api/src/search/elasticsearch/ElasticsearchUserSearchService.tsx type ElasticsearchUserSearchServiceOptions (line 32) | interface ElasticsearchUserSearchServiceOptions extends ElasticsearchUse... class ElasticsearchUserSearchService (line 34) | class ElasticsearchUserSearchService method constructor (line 38) | constructor(options: ElasticsearchUserSearchServiceOptions) { method indexUser (line 42) | async indexUser(user: User): Promise { method indexUsers (line 46) | async indexUsers(users: Array): Promise { method updateUser (line 51) | async updateUser(user: User): Promise { method deleteUser (line 55) | async deleteUser(userId: UserID): Promise { method deleteUsers (line 59) | async deleteUsers(userIds: Array): Promise { method searchUsers (line 63) | searchUsers( FILE: packages/api/src/search/guild/GuildSearchSerializer.tsx type GuildDiscoveryContext (line 25) | interface GuildDiscoveryContext { function convertToSearchableGuild (line 30) | function convertToSearchableGuild(guild: Guild, discovery?: GuildDiscove... FILE: packages/api/src/search/guild_member/GuildMemberSearchSerializer.tsx function convertToSearchableGuildMember (line 25) | function convertToSearchableGuildMember(member: GuildMember, user: User)... FILE: packages/api/src/search/meilisearch/MeilisearchAuditLogSearchService.tsx type MeilisearchAuditLogSearchServiceOptions (line 29) | interface MeilisearchAuditLogSearchServiceOptions extends MeilisearchAud... class MeilisearchAuditLogSearchService (line 31) | class MeilisearchAuditLogSearchService method constructor (line 35) | constructor(options: MeilisearchAuditLogSearchServiceOptions) { method indexAuditLog (line 39) | async indexAuditLog(log: AdminAuditLog): Promise { method indexAuditLogs (line 43) | async indexAuditLogs(logs: Array): Promise { method updateAuditLog (line 48) | async updateAuditLog(log: AdminAuditLog): Promise { method deleteAuditLog (line 52) | async deleteAuditLog(logId: bigint): Promise { method deleteAuditLogs (line 56) | async deleteAuditLogs(logIds: Array): Promise { method searchAuditLogs (line 60) | searchAuditLogs( FILE: packages/api/src/search/meilisearch/MeilisearchGuildMemberSearchService.tsx constant DEFAULT_LIMIT (line 34) | const DEFAULT_LIMIT = 25; function toSearchOptions (line 36) | function toSearchOptions(options?: {limit?: number; offset?: number}): {... type MeilisearchGuildMemberSearchServiceOptions (line 43) | interface MeilisearchGuildMemberSearchServiceOptions extends Meilisearch... class MeilisearchGuildMemberSearchService (line 45) | class MeilisearchGuildMemberSearchService method constructor (line 49) | constructor(options: MeilisearchGuildMemberSearchServiceOptions) { method indexMember (line 53) | async indexMember(member: GuildMember, user: User): Promise { method indexMembers (line 57) | async indexMembers(members: Array<{member: GuildMember; user: User}>):... method updateMember (line 62) | async updateMember(member: GuildMember, user: User): Promise { method deleteMember (line 66) | async deleteMember(guildId: GuildID, userId: UserID): Promise { method deleteGuildMembers (line 70) | async deleteGuildMembers(guildId: GuildID): Promise { method searchMembers (line 81) | searchMembers( FILE: packages/api/src/search/meilisearch/MeilisearchGuildSearchService.tsx type MeilisearchGuildSearchServiceOptions (line 30) | interface MeilisearchGuildSearchServiceOptions extends MeilisearchGuildA... class MeilisearchGuildSearchService (line 32) | class MeilisearchGuildSearchService method constructor (line 36) | constructor(options: MeilisearchGuildSearchServiceOptions) { method indexGuild (line 40) | async indexGuild(guild: Guild, discovery?: GuildDiscoveryContext): Pro... method indexGuilds (line 44) | async indexGuilds(guilds: Array): Promise { method updateGuild (line 49) | async updateGuild(guild: Guild, discovery?: GuildDiscoveryContext): Pr... method deleteGuild (line 53) | async deleteGuild(guildId: GuildID): Promise { method deleteGuilds (line 57) | async deleteGuilds(guildIds: Array): Promise { method searchGuilds (line 61) | searchGuilds( FILE: packages/api/src/search/meilisearch/MeilisearchMessageSearchService.tsx constant MESSAGE_DELETE_BATCH_SIZE (line 30) | const MESSAGE_DELETE_BATCH_SIZE = 1000; constant DEFAULT_HITS_PER_PAGE (line 31) | const DEFAULT_HITS_PER_PAGE = 25; function toSearchOptions (line 33) | function toSearchOptions(options?: {hitsPerPage?: number; page?: number}... type MeilisearchMessageSearchServiceOptions (line 40) | interface MeilisearchMessageSearchServiceOptions extends MeilisearchMess... class MeilisearchMessageSearchService (line 42) | class MeilisearchMessageSearchService method constructor (line 46) | constructor(options: MeilisearchMessageSearchServiceOptions) { method indexMessage (line 50) | async indexMessage(message: Message, authorIsBot?: boolean): Promise, authorBotMap?: Map { method deleteMessages (line 74) | async deleteMessages(messageIds: Array): Promise { method deleteGuildMessages (line 78) | async deleteGuildMessages(guildId: GuildID): Promise { method searchMessages (line 89) | searchMessages( FILE: packages/api/src/search/meilisearch/MeilisearchReportSearchService.tsx type MeilisearchReportSearchServiceOptions (line 30) | interface MeilisearchReportSearchServiceOptions extends MeilisearchRepor... class MeilisearchReportSearchService (line 32) | class MeilisearchReportSearchService method constructor (line 36) | constructor(options: MeilisearchReportSearchServiceOptions) { method indexReport (line 40) | async indexReport(report: IARSubmission): Promise { method indexReports (line 44) | async indexReports(reports: Array): Promise { method updateReport (line 49) | async updateReport(report: IARSubmission): Promise { method deleteReport (line 53) | async deleteReport(reportId: ReportID): Promise { method deleteReports (line 57) | async deleteReports(reportIds: Array): Promise { method searchReports (line 61) | searchReports( method listReportsByReporter (line 69) | listReportsByReporter( method listReportsByStatus (line 77) | listReportsByStatus(status: number, limit?: number, offset?: number): ... method listReportsByType (line 81) | listReportsByType( method listReportsByReportedUser (line 89) | listReportsByReportedUser( method listReportsByReportedGuild (line 97) | listReportsByReportedGuild( method listReportsByReportedMessage (line 105) | listReportsByReportedMessage( FILE: packages/api/src/search/meilisearch/MeilisearchSearchServiceBase.tsx method constructor (line 30) | protected constructor(adapter: TAdapter) { method initialize (line 34) | initialize(): Promise { method shutdown (line 38) | shutdown(): Promise { method isAvailable (line 42) | isAvailable(): boolean { method indexDocument (line 46) | indexDocument(doc: TDocument): Promise { method indexDocuments (line 50) | indexDocuments(docs: Array): Promise { method updateDocument (line 54) | updateDocument(doc: TDocument): Promise { method deleteDocument (line 58) | deleteDocument(id: string): Promise { method deleteDocuments (line 62) | deleteDocuments(ids: Array): Promise { method deleteAllDocuments (line 66) | deleteAllDocuments(): Promise { method search (line 70) | search(query: string, filters: TFilters, options?: SearchOptions): Promi... FILE: packages/api/src/search/meilisearch/MeilisearchUserSearchService.tsx type MeilisearchUserSearchServiceOptions (line 30) | interface MeilisearchUserSearchServiceOptions extends MeilisearchUserAda... class MeilisearchUserSearchService (line 32) | class MeilisearchUserSearchService method constructor (line 36) | constructor(options: MeilisearchUserSearchServiceOptions) { method indexUser (line 40) | async indexUser(user: User): Promise { method indexUsers (line 44) | async indexUsers(users: Array): Promise { method updateUser (line 49) | async updateUser(user: User): Promise { method deleteUser (line 53) | async deleteUser(userId: UserID): Promise { method deleteUsers (line 57) | async deleteUsers(userIds: Array): Promise { method searchUsers (line 61) | searchUsers( FILE: packages/api/src/search/message/MessageSearchSerializer.tsx constant LINK_HOSTNAME_MATCHER (line 24) | const LINK_HOSTNAME_MATCHER = /https?:\/\/([^\s/]+)/g; constant HAS_LINK_REGEX (line 25) | const HAS_LINK_REGEX = /https?:\/\/[^\s/]+/i; function getAuthorType (line 27) | function getAuthorType(message: Message, authorIsBot?: boolean): 'user' ... function extractAttachmentTypes (line 39) | function extractAttachmentTypes(message: Message): {hasVideo: boolean; h... function extractEmbedTypes (line 50) | function extractEmbedTypes(message: Message): Array { function extractEmbedProviders (line 60) | function extractEmbedProviders(message: Message): Array { function extractLinkHostnames (line 71) | function extractLinkHostnames(message: Message): Array { function extractAttachmentInfo (line 101) | function extractAttachmentInfo(message: Message): { function convertToSearchableMessage (line 127) | function convertToSearchableMessage(message: Message, authorIsBot?: bool... FILE: packages/api/src/search/report/ReportSearchSerializer.tsx function convertToSearchableReport (line 24) | function convertToSearchableReport(report: IARSubmission): SearchableRep... FILE: packages/api/src/search/tests/GuildMemberSearchEndpoint.test.tsx function indexGuildMembers (line 36) | async function indexGuildMembers(harness: ApiTestHarness, guildId: strin... FILE: packages/api/src/search/tests/MessageSearchEndpoint.test.tsx type MessageSearchResult (line 28) | interface MessageSearchResult { type SearchIndexingResponse (line 44) | interface SearchIndexingResponse { type MessageSearchResponse (line 48) | type MessageSearchResponse = MessageSearchResult | SearchIndexingResponse; function isSearchResult (line 50) | function isSearchResult(response: MessageSearchResponse): response is Me... FILE: packages/api/src/search/tests/MessageSearchExactPhrase.test.tsx type MessageSearchResult (line 28) | interface MessageSearchResult { type SearchIndexingResponse (line 45) | interface SearchIndexingResponse { type MessageSearchResponse (line 49) | type MessageSearchResponse = MessageSearchResult | SearchIndexingResponse; function isSearchResult (line 51) | function isSearchResult(response: MessageSearchResponse): response is Me... FILE: packages/api/src/search/tests/MessageSearchFilters.test.tsx type MessageSearchResult (line 36) | interface MessageSearchResult { type SearchIndexingResponse (line 59) | interface SearchIndexingResponse { type MessageSearchResponse (line 63) | type MessageSearchResponse = MessageSearchResult | SearchIndexingResponse; function isSearchResult (line 65) | function isSearchResult(response: MessageSearchResponse): response is Me... FILE: packages/api/src/search/tests/MessageSearchPermissions.test.tsx type MessageSearchResult (line 52) | interface MessageSearchResult { type MessageSearchIndexingResponse (line 63) | interface MessageSearchIndexingResponse { type MessageSearchResponse (line 67) | type MessageSearchResponse = MessageSearchResult | MessageSearchIndexing... function isSearchResult (line 69) | function isSearchResult(response: MessageSearchResponse): response is Me... FILE: packages/api/src/search/tests/MessageSearchSorting.test.tsx type MessageSearchResult (line 28) | interface MessageSearchResult { type SearchIndexingResponse (line 52) | interface SearchIndexingResponse { type MessageSearchResponse (line 56) | type MessageSearchResponse = MessageSearchResult | SearchIndexingResponse; function isSearchResult (line 58) | function isSearchResult(response: MessageSearchResponse): response is Me... type MessageWithTimestamp (line 62) | interface MessageWithTimestamp { function sendMessageWithEmbed (line 68) | async function sendMessageWithEmbed( FILE: packages/api/src/search/user/UserSearchSerializer.tsx function convertToSearchableUser (line 24) | function convertToSearchableUser(user: User): SearchableUser { FILE: packages/api/src/sticker/tests/StickerUploadValidation.test.tsx constant VALID_PNG_BASE64 (line 26) | const VALID_PNG_BASE64 = constant VALID_GIF_BASE64 (line 29) | const VALID_GIF_BASE64 = 'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAA... function getPngDataUrl (line 31) | function getPngDataUrl(base64: string = VALID_PNG_BASE64): string { function getGifDataUrl (line 35) | function getGifDataUrl(base64: string = VALID_GIF_BASE64): string { type StickerResponse (line 39) | interface StickerResponse { function createTestGuild (line 46) | async function createTestGuild(harness: ApiTestHarness, token: string, n... FILE: packages/api/src/stripe/ProductRegistry.tsx type ProductType (line 23) | enum ProductType { type ProductInfo (line 30) | interface ProductInfo { class ProductRegistry (line 38) | class ProductRegistry { method constructor (line 41) | constructor() { method registerProduct (line 106) | private registerProduct(priceId: string | undefined, info: ProductInfo... method getProduct (line 112) | getProduct(priceId: string): ProductInfo | null { method isRecurringSubscription (line 116) | isRecurringSubscription(info: ProductInfo): boolean { FILE: packages/api/src/stripe/StripeController.tsx function StripeController (line 42) | function StripeController(app: HonoApp) { FILE: packages/api/src/stripe/StripeModel.tsx type MapGiftCodeToResponseParams (line 26) | interface MapGiftCodeToResponseParams { type MapGiftCodeToMetadataResponseParams (line 33) | interface MapGiftCodeToMetadataResponseParams { function mapGiftCodeToResponse (line 39) | async function mapGiftCodeToResponse({ function mapGiftCodeToMetadataResponse (line 62) | async function mapGiftCodeToMetadataResponse({ FILE: packages/api/src/stripe/StripeService.tsx class StripeService (line 44) | class StripeService { method constructor (line 53) | constructor( method getStripe (line 113) | getStripe(): Stripe | null { method createCheckoutSession (line 117) | async createCheckoutSession(params: CreateCheckoutSessionParams): Prom... method createCustomerPortalSession (line 121) | async createCustomerPortalSession(userId: UserID): Promise { method getPriceIds (line 125) | getPriceIds(countryCode?: string): { method cancelSubscriptionAtPeriodEnd (line 135) | async cancelSubscriptionAtPeriodEnd(userId: UserID): Promise { method reactivateSubscription (line 139) | async reactivateSubscription(userId: UserID): Promise { method extendSubscriptionWithGiftTrial (line 143) | async extendSubscriptionWithGiftTrial(user: User, durationMonths: numb... method getGiftCode (line 147) | async getGiftCode(code: string): Promise { method redeemGiftCode (line 151) | async redeemGiftCode(userId: UserID, code: string): Promise { method getUserGifts (line 155) | async getUserGifts(userId: UserID): Promise> { method rejoinVisionariesGuild (line 159) | async rejoinVisionariesGuild(userId: UserID): Promise { method rejoinOperatorsGuild (line 163) | async rejoinOperatorsGuild(userId: UserID): Promise { method handleWebhook (line 167) | async handleWebhook(params: HandleWebhookParams): Promise { FILE: packages/api/src/stripe/StripeSubscriptionPeriod.tsx function getPrimarySubscriptionItem (line 22) | function getPrimarySubscriptionItem(subscription: Stripe.Subscription): ... function getSubscriptionItemPeriodEndUnix (line 32) | function getSubscriptionItemPeriodEndUnix(item: Stripe.SubscriptionItem ... function getSubscriptionItemPeriodEnd (line 36) | function getSubscriptionItemPeriodEnd(item: Stripe.SubscriptionItem | nu... function getSubscriptionCurrentPeriodEnd (line 41) | function getSubscriptionCurrentPeriodEnd(subscription: Stripe.Subscripti... FILE: packages/api/src/stripe/StripeUtils.tsx function extractId (line 20) | function extractId(value: string | {id: string} | null | undefined): str... function addMonthsClamp (line 26) | function addMonthsClamp(date: Date, months: number): Date { FILE: packages/api/src/stripe/VisionarySlotInitializer.tsx constant DEFAULT_SLOT_COUNT (line 24) | const DEFAULT_SLOT_COUNT = 100; class VisionarySlotInitializer (line 26) | class VisionarySlotInitializer { method initialize (line 27) | async initialize(): Promise { FILE: packages/api/src/stripe/services/StripeCheckoutService.tsx constant FIRST_REFUND_BLOCK_DAYS (line 38) | const FIRST_REFUND_BLOCK_DAYS = 30; type CreateCheckoutSessionParams (line 40) | interface CreateCheckoutSessionParams { class StripeCheckoutService (line 46) | class StripeCheckoutService { method constructor (line 47) | constructor( method createCheckoutSession (line 53) | async createCheckoutSession({userId, priceId, isGift = false}: CreateC... method createCustomerPortalSession (line 149) | async createCustomerPortalSession(userId: UserID): Promise { method getPriceIds (line 182) | getPriceIds(countryCode?: string): { method validateUserCanPurchase (line 217) | validateUserCanPurchase(user: User): void { method ensureStripeCustomer (line 234) | private async ensureStripeCustomer(user: User): Promise { FILE: packages/api/src/stripe/services/StripeGiftService.tsx class StripeGiftService (line 44) | class StripeGiftService { method constructor (line 45) | constructor( method getGiftCode (line 55) | async getGiftCode(code: string): Promise { method redeemGiftCode (line 63) | async redeemGiftCode(userId: UserID, code: string): Promise { method getUserGifts (line 137) | async getUserGifts(userId: UserID): Promise> { method prepareGiftCode (line 142) | async prepareGiftCode( method finaliseGiftCode (line 195) | async finaliseGiftCode(purchaserId: UserID): Promise { method generateUniqueGiftCode (line 211) | private async generateUniqueGiftCode(): Promise { method cancelStripeSubscriptionImmediately (line 224) | private async cancelStripeSubscriptionImmediately(user: User): Promise... method dispatchUser (line 245) | private async dispatchUser(user: User): Promise { FILE: packages/api/src/stripe/services/StripePremiumService.tsx class StripePremiumService (line 36) | class StripePremiumService { method constructor (line 37) | constructor( method grantPremium (line 44) | async grantPremium( method grantPremiumFromGift (line 126) | async grantPremiumFromGift( method revokePremium (line 170) | async revokePremium(userId: UserID): Promise { method rejoinVisionariesGuild (line 184) | async rejoinVisionariesGuild(userId: UserID): Promise { method rejoinOperatorsGuild (line 189) | async rejoinOperatorsGuild(userId: UserID): Promise { method assertHasVisionaryCommunityAccess (line 194) | private async assertHasVisionaryCommunityAccess(userId: UserID): Promi... method addToVisionariesGuild (line 201) | private async addToVisionariesGuild(userId: UserID): Promise { method addToOperatorsGuild (line 221) | private async addToOperatorsGuild(userId: UserID): Promise { method dispatchUser (line 241) | private async dispatchUser(user: User): Promise { FILE: packages/api/src/stripe/services/StripeSubscriptionService.tsx class StripeSubscriptionService (line 43) | class StripeSubscriptionService { method constructor (line 44) | constructor( method cancelSubscriptionAtPeriodEnd (line 51) | async cancelSubscriptionAtPeriodEnd(userId: UserID): Promise { method reactivateSubscription (line 95) | async reactivateSubscription(userId: UserID): Promise { method extendSubscriptionWithGiftTrial (line 136) | async extendSubscriptionWithGiftTrial(user: User, durationMonths: numb... method dispatchUser (line 200) | private async dispatchUser(user: User): Promise { FILE: packages/api/src/stripe/services/StripeWebhookService.tsx type HandleWebhookParams (line 52) | interface HandleWebhookParams { type DonationCustomerDetails (line 57) | interface DonationCustomerDetails { type DonationSubscriptionDetails (line 63) | interface DonationSubscriptionDetails { class StripeWebhookService (line 71) | class StripeWebhookService { method constructor (line 72) | constructor( method handleWebhook (line 85) | async handleWebhook({body, signature}: HandleWebhookParams): Promise { method handleChargebackClosed (line 621) | private async handleChargebackClosed(dispute: Stripe.Dispute): Promise... method handleRefund (line 676) | private async handleRefund(charge: Stripe.Charge): Promise { method getSubscriptionIdFromInvoice (line 751) | private getSubscriptionIdFromInvoice(invoice: Stripe.Invoice): string ... method scheduleAccountDeletionForFraud (line 794) | private async scheduleAccountDeletionForFraud(userId: UserID): Promise... method cancelStripeSubscriptionImmediately (line 832) | private async cancelStripeSubscriptionImmediately(user: User): Promise... method dispatchUser (line 849) | private async dispatchUser(user: User): Promise { method loadDonationCustomerDetails (line 857) | private async loadDonationCustomerDetails(customerId: string): Promise... method loadDonationSubscriptionDetails (line 881) | private async loadDonationSubscriptionDetails(subscriptionId: string |... FILE: packages/api/src/stripe/tests/StripeCheckoutService.test.tsx constant MOCK_CUSTOMER_ID (line 30) | const MOCK_CUSTOMER_ID = 'cus_test_existing'; constant MOCK_PRICES (line 32) | const MOCK_PRICES = { type UrlResponse (line 43) | interface UrlResponse { type PriceIdsResponse (line 47) | interface PriceIdsResponse { FILE: packages/api/src/stripe/tests/StripeWebhookCheckout.test.tsx constant MOCK_PRICES (line 39) | const MOCK_PRICES = { function createWebhookSignature (line 87) | function createWebhookSignature(payload: string, timestamp: number, secr... function sendWebhook (line 93) | async function sendWebhook(eventData: StripeWebhookEventData): Promise<{... function sendWebhookExpectStripeError (line 105) | async function sendWebhookExpectStripeError(eventData: StripeWebhookEven... FILE: packages/api/src/stripe/tests/StripeWebhookCore.test.tsx function createWebhookSignature (line 49) | function createWebhookSignature(payload: string, timestamp: number, secr... function sendWebhook (line 55) | async function sendWebhook( FILE: packages/api/src/stripe/tests/StripeWebhookDispute.test.tsx type UserDataExistsResponse (line 38) | interface UserDataExistsResponse { function createWebhookSignature (line 64) | function createWebhookSignature(payload: string, timestamp: number, secr... function sendWebhook (line 70) | async function sendWebhook(eventData: StripeWebhookEventData): Promise<{... function sendWebhookExpectStripeError (line 82) | async function sendWebhookExpectStripeError(eventData: StripeWebhookEven... FILE: packages/api/src/stripe/tests/StripeWebhookIdempotency.test.tsx constant MOCK_PRICES (line 39) | const MOCK_PRICES = { function createWebhookSignature (line 49) | function createWebhookSignature(payload: string, timestamp: number, secr... function sendWebhook (line 55) | async function sendWebhook(eventData: StripeWebhookEventData): Promise<{... function createSubscriptionPayment (line 94) | async function createSubscriptionPayment(params: { FILE: packages/api/src/stripe/tests/StripeWebhookInvoice.test.tsx constant MOCK_PRICES (line 35) | const MOCK_PRICES = { function createWebhookSignature (line 73) | function createWebhookSignature(payload: string, timestamp: number, secr... function sendWebhook (line 79) | async function sendWebhook(eventData: StripeWebhookEventData): Promise<{... function sendWebhookExpectStripeError (line 91) | async function sendWebhookExpectStripeError(eventData: StripeWebhookEven... function createPaymentRecord (line 104) | async function createPaymentRecord(params: { FILE: packages/api/src/stripe/tests/StripeWebhookRefund.test.tsx function createWebhookSignature (line 52) | function createWebhookSignature(payload: string, timestamp: number, secr... function sendWebhook (line 58) | async function sendWebhook(eventData: StripeWebhookEventData): Promise<{... FILE: packages/api/src/stripe/tests/StripeWebhookSubscription.test.tsx constant MOCK_PRICES (line 41) | const MOCK_PRICES = { function createWebhookSignature (line 83) | function createWebhookSignature(payload: string, timestamp: number, secr... function sendWebhook (line 89) | async function sendWebhook(eventData: StripeWebhookEventData): Promise<{... function sendWebhookExpectStripeError (line 101) | async function sendWebhookExpectStripeError(eventData: StripeWebhookEven... FILE: packages/api/src/stripe/tests/StripeWebhookTestUtils.tsx type WebhookTestHarness (line 37) | interface WebhookTestHarness { function createWebhookTestHarness (line 46) | async function createWebhookTestHarness(config?: StripeApiMockConfig): P... function setupWebhookTestServer (line 62) | function setupWebhookTestServer(testHarness: WebhookTestHarness): void { function sendWebhook (line 77) | async function sendWebhook(service: StripeWebhookService, eventData: Str... function createTestUserWithPremium (line 88) | async function createTestUserWithPremium( function createTestPayment (line 117) | async function createTestPayment( type CreateTestAccountWithPaymentOptions (line 149) | interface CreateTestAccountWithPaymentOptions { function createTestAccountWithPayment (line 159) | async function createTestAccountWithPayment( function setUserPremium (line 182) | async function setUserPremium( function createTestGiftCode (line 209) | async function createTestGiftCode( function mockStripeWebhookSecret (line 235) | function mockStripeWebhookSecret(secret = 'whsec_test'): void { function restoreStripeWebhookSecret (line 242) | function restoreStripeWebhookSecret(): void { FILE: packages/api/src/system_dm/TargetFinder.tsx constant SEARCH_BATCH_SIZE (line 25) | const SEARCH_BATCH_SIZE = 1000; type SystemDmTargetFilters (line 27) | interface SystemDmTargetFilters { type BuiltSystemDmFilters (line 33) | interface BuiltSystemDmFilters { function buildFilters (line 38) | function buildFilters(filters: SystemDmTargetFilters): BuiltSystemDmFilt... function filterExcludedGuilds (line 54) | async function filterExcludedGuilds( function collectSystemDmTargets (line 74) | async function collectSystemDmTargets( FILE: packages/api/src/telemetry/BusinessSpans.tsx function withBusinessSpan (line 23) | async function withBusinessSpan( FILE: packages/api/src/telemetry/CsamTelemetry.tsx type CsamScanStatus (line 23) | type CsamScanStatus = 'success' | 'error' | 'skipped' | 'disabled'; type CsamApiStatus (line 24) | type CsamApiStatus = 'success' | 'error' | 'timeout'; type NcmecSubmissionStatus (line 25) | type NcmecSubmissionStatus = 'success' | 'error' | 'disabled'; type EvidenceStorageStatus (line 26) | type EvidenceStorageStatus = 'success' | 'error'; function recordCsamScan (line 28) | function recordCsamScan(params: { function recordCsamScanDuration (line 43) | function recordCsamScanDuration(params: {resourceType: CsamResourceType;... function recordCsamMatch (line 53) | function recordCsamMatch(params: {resourceType: CsamResourceType; source... function recordPhotoDnaApiCall (line 64) | function recordPhotoDnaApiCall(params: { function recordPhotoDnaApiDuration (line 79) | function recordPhotoDnaApiDuration(params: {operation: 'hash' | 'match';... type NcmecSubmissionOperation (line 89) | type NcmecSubmissionOperation = 'report' | 'evidence' | 'fileinfo' | 'fi... function recordNcmecSubmission (line 91) | function recordNcmecSubmission(params: { function recordCsamEvidenceStorage (line 104) | function recordCsamEvidenceStorage(params: { function recordCsamQueueProcessed (line 117) | function recordCsamQueueProcessed(params: {status: 'success' | 'error' |... function recordCsamQueueWaitTime (line 127) | function recordCsamQueueWaitTime(params: {waitTimeMs: number}): void { function recordCsamQueueDepth (line 134) | function recordCsamQueueDepth(params: {depth: number}): void { type ArachnidApiStatus (line 141) | type ArachnidApiStatus = 'success' | 'error' | 'timeout'; function recordArachnidApiCall (line 143) | function recordArachnidApiCall(params: {status: ArachnidApiStatus}): void { function recordArachnidApiDuration (line 152) | function recordArachnidApiDuration(params: {durationMs: number}): void { FILE: packages/api/src/telemetry/MessageTelemetry.tsx type MessageDeleteType (line 22) | type MessageDeleteType = 'single' | 'bulk' | 'moderation'; type AttachmentOperation (line 23) | type AttachmentOperation = 'upload' | 'process' | 'delete'; type AttachmentStatus (line 24) | type AttachmentStatus = 'success' | 'error'; function recordMessageSent (line 26) | function recordMessageSent(params: { function recordMessageSendDuration (line 43) | function recordMessageSendDuration(params: {channelType: string; duratio... function recordMessageEdited (line 53) | function recordMessageEdited(params: {channelType: number}): void { function recordMessageDeleted (line 62) | function recordMessageDeleted(params: {channelType: number; deleteType: ... function recordMessageRetrieved (line 72) | function recordMessageRetrieved(params: {channelType: number; count: num... function recordMessageRetrievalDuration (line 82) | function recordMessageRetrievalDuration(params: {channelType: number; du... function recordAttachmentOperation (line 92) | function recordAttachmentOperation(params: { function recordAttachmentUploadDuration (line 107) | function recordAttachmentUploadDuration(params: {contentType: string; du... FILE: packages/api/src/telemetry/Tracing.tsx type SpanOptions (line 26) | interface SpanOptions { function withSpan (line 32) | async function withSpan(options: SpanOptions, fn: () => Promise): ... function setSpanAttributes (line 68) | function setSpanAttributes(attributes: Attributes): void { function addSpanEvent (line 75) | function addSpanEvent(name: string, attributes?: Attributes): void { FILE: packages/api/src/tenor/TenorController.tsx function getCountry (line 48) | function getCountry(ctx: Context): string { function TenorController (line 52) | function TenorController(app: HonoApp) { FILE: packages/api/src/tenor/TenorService.tsx constant TENOR_BASE_URL (line 29) | const TENOR_BASE_URL = 'https://tenor.googleapis.com/v2'; constant DEFAULT_MEDIA_FILTER (line 30) | const DEFAULT_MEDIA_FILTER = 'webm,mp4'; constant DEFAULT_CONTENT_FILTER (line 31) | const DEFAULT_CONTENT_FILTER = 'low'; constant CLIENT_KEY (line 32) | const CLIENT_KEY = 'fluxer'; constant MAX_RETRIES (line 33) | const MAX_RETRIES = 3; constant BACKOFF_BASE_DELAY (line 34) | const BACKOFF_BASE_DELAY = ms('1 second'); constant CACHE_EXPIRATION_TIME (line 35) | const CACHE_EXPIRATION_TIME = ms('5 minutes'); type TenorMediaFormat (line 37) | interface TenorMediaFormat { type TenorGif (line 42) | interface TenorGif { type TenorCategoryTag (line 51) | interface TenorCategoryTag { type CacheEntry (line 56) | type CacheEntry = { class TenorService (line 61) | class TenorService implements ITenorService { method constructor (line 67) | constructor( method createURL (line 72) | private createURL({endpoint, params}: {endpoint: string; params: Recor... method fetchTenorData (line 84) | private async fetchTenorData(url: URL): Promise { method fetchAndTransformGifs (line 107) | private async fetchAndTransformGifs(url: URL): Promise(key: string): Promise<{data: T; isStale: boo... method setCache (line 120) | private async setCache(key: string, data: T): Promise { method triggerBackgroundRefresh (line 128) | private triggerBackgroundRefresh(key: string, refreshFn: () => Prom... method search (line 145) | async search(params: {q: string; locale: string; country: string}): Pr... method registerShare (line 162) | async registerShare(params: {id: string; q: string; locale: string; co... method getFeatured (line 180) | async getFeatured(params: {locale: string; country: string}): Promise<{ method fetchFeaturedData (line 199) | private async fetchFeaturedData(params: {locale: string; country: stri... method getTrendingGifs (line 207) | async getTrendingGifs(params: {locale: string; country: string}): Prom... method fetchTrendingGifs (line 220) | private async fetchTrendingGifs(params: {locale: string; country: stri... method suggest (line 236) | async suggest(params: {q: string; locale: string}): Promise { method startGuild (line 111) | async startGuild(guildId: GuildID): Promise { method stopGuild (line 118) | async stopGuild(_guildId: GuildID): Promise {} method reloadGuild (line 120) | async reloadGuild(_guildId: GuildID): Promise {} method reloadAllGuilds (line 122) | async reloadAllGuilds(_guildIds: Array): Promise<{count: numb... method shutdownGuild (line 126) | async shutdownGuild(_guildId: GuildID): Promise {} method getGuildMemoryStats (line 128) | async getGuildMemoryStats(_limit: number): Promise<{ method getUsersToMentionByRoles (line 142) | async getUsersToMentionByRoles(_params: { method getUsersToMentionByUserIds (line 151) | async getUsersToMentionByUserIds(_params: { method getAllUsersToMention (line 160) | async getAllUsersToMention(_params: { method resolveAllMentions (line 168) | async resolveAllMentions(_params: { method getUserPermissions (line 180) | async getUserPermissions(params: {guildId: GuildID; userId: UserID; ch... method getUserPermissionsBatch (line 214) | async getUserPermissionsBatch(_params: { method canManageRoles (line 222) | async canManageRoles(params: { method canManageRole (line 260) | async canManageRole(params: {guildId: GuildID; userId: UserID; roleId:... method getHighestRole (line 289) | private getHighestRole( method getAssignableRoles (line 308) | async getAssignableRoles(_params: {guildId: GuildID; userId: UserID}):... method getUserMaxRolePosition (line 312) | async getUserMaxRolePosition(params: {guildId: GuildID; userId: UserID... method checkTargetMember (line 322) | async checkTargetMember(params: {guildId: GuildID; userId: UserID; tar... method getViewableChannels (line 350) | async getViewableChannels(params: {guildId: GuildID; userId: UserID}):... method getCategoryChannelCount (line 391) | async getCategoryChannelCount(_params: {guildId: GuildID; categoryId: ... method getMembersWithRole (line 395) | async getMembersWithRole(_params: {guildId: GuildID; roleId: RoleID}):... method getGuildData (line 399) | async getGuildData(params: { method getGuildMember (line 424) | async getGuildMember(params: { method hasGuildMember (line 463) | async hasGuildMember(params: {guildId: GuildID; userId: UserID}): Prom... method listGuildMembers (line 468) | async listGuildMembers(_params: {guildId: GuildID; limit: number; offs... method listGuildMembersCursor (line 475) | async listGuildMembersCursor(_params: {guildId: GuildID; limit: number... method checkPermission (line 482) | async checkPermission(params: { method calculateGuildPermissions (line 526) | private calculateGuildPermissions( method applyChannelOverwrites (line 553) | private applyChannelOverwrites( method getMaxRolePosition (line 595) | private getMaxRolePosition(memberRoleIds: Set, allRoles: Array... method getVanityUrlChannel (line 606) | async getVanityUrlChannel(_guildId: GuildID): Promise { method getFirstViewableTextChannel (line 610) | async getFirstViewableTextChannel(_guildId: GuildID): Promise { method addTemporaryGuild (line 701) | async addTemporaryGuild(_params: {userId: UserID; guildId: GuildID}): ... method removeTemporaryGuild (line 703) | async removeTemporaryGuild(_params: {userId: UserID; guildId: GuildID}... method syncGroupDmRecipients (line 705) | async syncGroupDmRecipients(_params: { method switchVoiceRegion (line 710) | async switchVoiceRegion(_params: {guildId: GuildID; channelId: Channel... method getCall (line 712) | async getCall(_channelId: ChannelID): Promise { method createCall (line 716) | async createCall( method updateCallRegion (line 733) | async updateCallRegion(_channelId: ChannelID, _region: string | null):... method ringCallRecipients (line 737) | async ringCallRecipients(_channelId: ChannelID, _recipients: Array { method getDiscoveryOnlineCounts (line 749) | async getDiscoveryOnlineCounts(_guildIds: Array): Promise {} method cancelJob (line 25) | async cancelJob(_jobId: string): Promise { method retryDeadLetterJob (line 29) | async retryDeadLetterJob(_jobId: string): Promise { FILE: packages/api/src/test/TestConstants.tsx constant TEST_TIMEOUTS (line 20) | const TEST_TIMEOUTS = { constant TEST_CREDENTIALS (line 35) | const TEST_CREDENTIALS = { constant TEST_USER_DATA (line 45) | const TEST_USER_DATA = { constant TEST_GUILD_DATA (line 58) | const TEST_GUILD_DATA = { constant TEST_CHANNEL_DATA (line 64) | const TEST_CHANNEL_DATA = { constant HTTP_STATUS (line 69) | const HTTP_STATUS = { constant SUCCESS_CODES (line 85) | const SUCCESS_CODES = [200, 201, 204] as const; constant CLIENT_ERROR_CODES (line 86) | const CLIENT_ERROR_CODES = [400, 401, 403, 404, 409] as const; constant EXPECTED_RESPONSES (line 88) | const EXPECTED_RESPONSES = { constant TEST_IDS (line 97) | const TEST_IDS = { constant TEST_LIMITS (line 105) | const TEST_LIMITS = { function generateTimestampedValue (line 116) | function generateTimestampedValue(prefix = 'test'): string { function generateUniquePassword (line 120) | function generateUniquePassword(): string { function generateTestEmail (line 124) | function generateTestEmail(prefix = 'test', domain = 'example.com'): str... function generateFutureTimestamp (line 128) | function generateFutureTimestamp(minutesInFuture = 5): string { function generatePastTimestamp (line 132) | function generatePastTimestamp(hoursInPast = 1): string { function wait (line 136) | function wait(ms: number): Promise { function waitImmediate (line 140) | async function waitImmediate(): Promise { function waitDefault (line 144) | async function waitDefault(): Promise { function waitTicketExpiry (line 148) | async function waitTicketExpiry(): Promise { function waitCooldown (line 152) | async function waitCooldown(): Promise { function isSuccessCode (line 156) | function isSuccessCode(status: number): boolean { function isClientErrorCode (line 160) | function isClientErrorCode(status: number): boolean { function isServerErrorCode (line 164) | function isServerErrorCode(status: number): boolean { function assertStatusCode (line 168) | function assertStatusCode(actual: number, expected: ReadonlyArray) { function isTestEmailService (line 177) | function isTestEmailService(service: IEmailService): service is ITestEma... function initializeWorkerDepsWithHarnessEmail (line 187) | async function initializeWorkerDepsWithHarnessEmail(ctx: Context): bigint | null { function parseSuspiciousFlagNames (line 213) | function parseSuspiciousFlagNames(names: Array): number | null { function TestHarnessController (line 225) | function TestHarnessController(app: HonoApp) { FILE: packages/api/src/test/TestHarnessReset.tsx type TestHarnessResetHandler (line 26) | type TestHarnessResetHandler = () => Promise; function registerTestHarnessReset (line 30) | function registerTestHarnessReset(handler: TestHarnessResetHandler | nul... function resetTestHarnessState (line 34) | async function resetTestHarnessState(): Promise { type CreateTestHarnessResetOptions (line 41) | interface CreateTestHarnessResetOptions { function createTestHarnessResetHandler (line 46) | function createTestHarnessResetHandler(options: CreateTestHarnessResetOp... FILE: packages/api/src/test/TestMediaService.tsx class TestMediaService (line 31) | class TestMediaService extends IMediaService { method setS3Service (line 34) | setS3Service(s3Service: S3Service): void { method getMetadata (line 38) | async getMetadata(request: MediaProxyMetadataRequest): Promise { method extractFrames (line 104) | async extractFrames(_request: MediaProxyFrameRequest): Promise { method constructor (line 31) | constructor( method get (line 40) | get(path: string): this { method post (line 46) | post(path: string): this { method put (line 52) | put(path: string): this { method delete (line 58) | delete(path: string): this { method patch (line 64) | patch(path: string): this { method body (line 70) | body(data: T): this { method expect (line 75) | expect(status: number, errorCode?: string): this { method header (line 81) | header(key: string, value: string): this { method execute (line 86) | async execute(): Promise { method executeWithResponse (line 127) | async executeWithResponse(): Promise<{response: Response; json: TRespo... method executeRaw (line 160) | async executeRaw(): Promise<{response: Response; text: string; json: T... function createBuilder (line 183) | function createBuilder( function createBuilderWithoutAuth (line 190) | function createBuilderWithoutAuth(harness: ApiTestH... FILE: packages/api/src/test/TestS3Service.tsx class TestS3Service (line 27) | class TestS3Service extends S3Service { method constructor (line 30) | constructor() { method cleanup (line 42) | async cleanup(): Promise { FILE: packages/api/src/test/fixtures/ncmec/NcmecXmlFixtures.tsx constant SAMPLE_REPORT_XML (line 20) | const SAMPLE_REPORT_XML = ` constant INVALID_REPORT_XML (line 48) | const INVALID_REPORT_XML = ` FILE: packages/api/src/test/meilisearch/MeilisearchTestServer.tsx constant MEILISEARCH_DOCKER_IMAGE (line 22) | const MEILISEARCH_DOCKER_IMAGE = 'getmeili/meilisearch:v1.16.0'; constant MEILISEARCH_PORT (line 23) | const MEILISEARCH_PORT = 7700; constant TEST_MEILISEARCH_MASTER_KEY (line 25) | const TEST_MEILISEARCH_MASTER_KEY = 'test-meilisearch-master-key'; type MeilisearchTestServer (line 30) | interface MeilisearchTestServer { function acquireMeilisearchTestServer (line 36) | async function acquireMeilisearchTestServer(): Promise { method getBatch (line 65) | async getBatch(count: number): Promise> { method requeueItem (line 73) | async requeueItem(item: QueuedAssetDeletion): Promise { method getQueueSize (line 78) | async getQueueSize(): Promise { method clear (line 83) | async clear(): Promise { method getQueuedItems (line 89) | getQueuedItems(): Array { method getPurges (line 93) | getPurges(): Array { method reset (line 97) | reset(): void { FILE: packages/api/src/test/mocks/MockBlueskyOAuthService.tsx type MockBlueskyOAuthServiceOptions (line 28) | interface MockBlueskyOAuthServiceOptions { class MockBlueskyOAuthService (line 36) | class MockBlueskyOAuthService implements IBlueskyOAuthService { method constructor (line 47) | constructor(options: MockBlueskyOAuthServiceOptions = {}) { method setupDefaults (line 52) | private setupDefaults(): void { method authorize (line 77) | async authorize(handle: string, userId: UserID): Promise { method restoreAndVerify (line 85) | async restoreAndVerify(did: string): Promise<{handle: string} | null> { method revoke (line 89) | async revoke(did: string): Promise { method configure (line 93) | configure(options: Partial): void { method reset (line 98) | reset(): void { FILE: packages/api/src/test/mocks/MockCsamEvidenceService.tsx type MockCsamEvidenceServiceConfig (line 28) | interface MockCsamEvidenceServiceConfig { class MockCsamEvidenceService (line 35) | class MockCsamEvidenceService implements ICsamEvidenceService { method constructor (line 40) | constructor(config: MockCsamEvidenceServiceConfig = {}) { method configure (line 44) | configure(config: MockCsamEvidenceServiceConfig): void { method storeEvidence (line 48) | async storeEvidence(args: StoreEvidenceArgs): Promise { method getSnapshots (line 58) | getSnapshots(): ReadonlyArray { method reset (line 62) | reset(): void { FILE: packages/api/src/test/mocks/MockCsamScanQueueService.tsx type MockCsamScanQueueServiceConfig (line 29) | interface MockCsamScanQueueServiceConfig { class MockCsamScanQueueService (line 34) | class MockCsamScanQueueService implements ICsamScanQueueService { method constructor (line 45) | constructor(config: MockCsamScanQueueServiceConfig = {}) { method configure (line 49) | configure(config: MockCsamScanQueueServiceConfig): void { method submitScan (line 53) | async submitScan(params: CsamScanSubmitParams): Promise { method startGuild (line 144) | async startGuild(_guildId: GuildID): Promise {} method stopGuild (line 145) | async stopGuild(_guildId: GuildID): Promise {} method reloadGuild (line 146) | async reloadGuild(_guildId: GuildID): Promise {} method reloadAllGuilds (line 147) | async reloadAllGuilds(_guildIds: Array): Promise<{count: numb... method shutdownGuild (line 150) | async shutdownGuild(_guildId: GuildID): Promise {} method getGuildMemoryStats (line 151) | async getGuildMemoryStats(_limit: number): Promise<{guilds: Array> { method resolveAllMentions (line 163) | async resolveAllMentions(_params: unknown): Promise> { method getUserPermissions (line 166) | async getUserPermissions(_params: unknown): Promise { method getUserPermissionsBatch (line 169) | async getUserPermissionsBatch(_params: unknown): Promise { method canManageRole (line 175) | async canManageRole(_params: unknown): Promise { method getAssignableRoles (line 178) | async getAssignableRoles(_params: unknown): Promise> { method getUserMaxRolePosition (line 181) | async getUserMaxRolePosition(_params: unknown): Promise { method checkTargetMember (line 184) | async checkTargetMember(_params: unknown): Promise { method getViewableChannels (line 187) | async getViewableChannels(_params: unknown): Promise> { method getCategoryChannelCount (line 190) | async getCategoryChannelCount(_params: unknown): Promise { method getMembersWithRole (line 193) | async getMembersWithRole(_params: unknown): Promise> { method getGuildData (line 196) | async getGuildData(_params: unknown): Promise { method getGuildMember (line 199) | async getGuildMember(_params: unknown): Promise<{success: boolean; mem... method hasGuildMember (line 202) | async hasGuildMember(_params: unknown): Promise { method listGuildMembers (line 205) | async listGuildMembers(_params: unknown): Promise<{members: Array { method getVanityUrlChannel (line 214) | async getVanityUrlChannel(_guildId: GuildID): Promise { method getFirstViewableTextChannel (line 217) | async getFirstViewableTextChannel(_guildId: GuildID): Promise {} method invalidatePushBadgeCount (line 221) | async invalidatePushBadgeCount(_params: unknown): Promise {} method joinGuild (line 222) | async joinGuild(_params: unknown): Promise {} method leaveGuild (line 223) | async leaveGuild(_params: unknown): Promise {} method terminateSession (line 224) | async terminateSession(_params: unknown): Promise {} method terminateAllSessionsForUser (line 225) | async terminateAllSessionsForUser(_params: unknown): Promise {} method disconnectAllVoiceUsersInChannel (line 226) | async disconnectAllVoiceUsersInChannel(_params: unknown): Promise<{suc... method getVoiceState (line 229) | async getVoiceState(_params: unknown): Promise<{channel_id: string | n... method hasActivePresence (line 232) | async hasActivePresence(_userId: UserID): Promise { method addTemporaryGuild (line 235) | async addTemporaryGuild(_params: unknown): Promise {} method removeTemporaryGuild (line 236) | async removeTemporaryGuild(_params: unknown): Promise {} method syncGroupDmRecipients (line 237) | async syncGroupDmRecipients(_params: unknown): Promise {} method switchVoiceRegion (line 238) | async switchVoiceRegion(_params: unknown): Promise {} method getCall (line 239) | async getCall(_channelId: ChannelID): Promise { method createCall (line 242) | async createCall( method updateCallRegion (line 251) | async updateCallRegion(_channelId: ChannelID, _region: string | null):... method ringCallRecipients (line 254) | async ringCallRecipients(_channelId: ChannelID, _recipients: Array { method getDiscoveryOnlineCounts (line 263) | async getDiscoveryOnlineCounts(_guildIds: Array): Promise void; type ErrorCallback (line 24) | type ErrorCallback = (error: Error) => void; type MockKVSubscriptionOptions (line 26) | interface MockKVSubscriptionOptions { class MockKVSubscription (line 31) | class MockKVSubscription implements IKVSubscription { method constructor (line 41) | constructor(options: MockKVSubscriptionOptions = {}) { method connect (line 45) | async connect(): Promise { method on (line 54) | on(event: 'message' | 'error', callback: MessageCallback | ErrorCallba... method subscribe (line 62) | async subscribe(...channels: Array): Promise { method unsubscribe (line 69) | async unsubscribe(..._channels: Array): Promise {} method quit (line 71) | async quit(): Promise { method disconnect (line 75) | async disconnect(): Promise { method removeAllListeners (line 79) | removeAllListeners(event?: 'message' | 'error'): void { method simulateMessage (line 91) | simulateMessage(channel: string, message: string): void { method simulateError (line 97) | simulateError(error: Error): void { method reset (line 103) | reset(): void { type MockKVProviderOptions (line 113) | interface MockKVProviderOptions { class MockKVProvider (line 117) | class MockKVProvider implements IKVProvider { method constructor (line 166) | constructor(options: MockKVProviderOptions = {}) { method get (line 170) | async get(key: string): Promise { method set (line 176) | async set(key: string, value: string, ...args: Array)... method setex (line 189) | async setex(key: string, ttlSeconds: number, value: string): Promise): Promise> { method mset (line 220) | async mset(...args: Array): Promise { method del (line 234) | async del(...keys: Array): Promise { method exists (line 245) | async exists(key: string): Promise { method expire (line 250) | async expire(key: string, ttlSeconds: number): Promise { method ttl (line 259) | async ttl(key: string): Promise { method incr (line 279) | async incr(key: string): Promise { method getex (line 288) | async getex(key: string, ttlSeconds: number): Promise { method getdel (line 298) | async getdel(key: string): Promise { method sadd (line 306) | async sadd(key: string, ...members: Array): Promise { method srem (line 321) | async srem(key: string, ...members: Array): Promise { method smembers (line 338) | async smembers(key: string): Promise> { method sismember (line 345) | async sismember(key: string, member: string): Promise { method scard (line 352) | async scard(key: string): Promise { method spop (line 358) | async spop(key: string, count: number = 1): Promise> { method zadd (line 379) | async zadd(key: string, ...scoreMembers: Array): Prom... method zrem (line 405) | async zrem(key: string, ...members: Array): Promise { method zcard (line 421) | async zcard(key: string): Promise { method zrangebyscore (line 427) | async zrangebyscore( method rpush (line 468) | async rpush(key: string, ...values: Array): Promise { method lpop (line 478) | async lpop(key: string, count: number = 1): Promise> { method llen (line 493) | async llen(key: string): Promise { method hset (line 499) | async hset(key: string, field: string, value: string): Promise { method hdel (line 509) | async hdel(key: string, ...fields: Array): Promise { method hget (line 525) | async hget(key: string, field: string): Promise { method hgetall (line 531) | async hgetall(key: string): Promise> { method publish (line 541) | async publish(channel: string, message: string): Promise { method duplicate (line 547) | duplicate(): IKVSubscription { method releaseLock (line 551) | async releaseLock(key: string, token: string): Promise { method renewSnowflakeNode (line 562) | async renewSnowflakeNode(key: string, instanceId: string, ttlSeconds: ... method tryConsumeTokens (line 573) | async tryConsumeTokens( method scheduleBulkDeletion (line 619) | async scheduleBulkDeletion(queueKey: string, secondaryKey: string, sco... method removeBulkDeletion (line 627) | async removeBulkDeletion(queueKey: string, secondaryKey: string): Prom... method scan (line 640) | async scan(pattern: string, count: number): Promise> { method pipeline (line 650) | pipeline(): IKVPipeline { method multi (line 654) | multi(): IKVPipeline { method health (line 658) | async health(): Promise { method getSubscription (line 663) | getSubscription(): MockKVSubscription { method setSubscription (line 667) | setSubscription(subscription: MockKVSubscription): void { method createPipeline (line 671) | private createPipeline(): IKVPipeline { method keyExists (line 730) | private keyExists(key: string): boolean { method evictIfExpired (line 741) | private evictIfExpired(key: string): void { method ensureType (line 751) | private ensureType(key: string, type: 'string' | 'set' | 'zset' | 'lis... method deleteKey (line 783) | private deleteKey(key: string): boolean { method setExpiryFromArgs (line 806) | private setExpiryFromArgs(key: string, args: Array): ... method getAllKeys (line 816) | private getAllKeys(): Array { method matchesPattern (line 829) | private matchesPattern(value: string, pattern: string): boolean { method reset (line 838) | reset(): void { type ScoreBound (line 888) | interface ScoreBound { function parseScoreBound (line 893) | function parseScoreBound(bound: string | number, isMin: boolean): ScoreB... function isScoreInRange (line 918) | function isScoreInRange(score: number, min: ScoreBound, max: ScoreBound)... FILE: packages/api/src/test/mocks/MockLiveKitService.tsx type MockLiveKitServiceConfig (line 25) | interface MockLiveKitServiceConfig { class MockLiveKitService (line 32) | class MockLiveKitService implements ILiveKitService { method constructor (line 41) | constructor(config: MockLiveKitServiceConfig = {}) { method configure (line 45) | configure(config: MockLiveKitServiceConfig): void { method createToken (line 49) | async createToken(params: { method updateParticipant (line 70) | async updateParticipant(params: { method updateParticipantPermissions (line 83) | async updateParticipantPermissions(params: { method disconnectParticipant (line 97) | async disconnectParticipant(params: { method listParticipants (line 111) | async listParticipants(params: { method getDefaultRegionId (line 121) | getDefaultRegionId(): string | null { method getRegionMetadata (line 125) | getRegionMetadata(): Array { method getServer (line 129) | getServer(_regionId: string, _serverId: string): VoiceServerRecord | n... method reset (line 133) | reset(): void { FILE: packages/api/src/test/mocks/MockMediaService.tsx type MockMediaServiceConfig (line 29) | interface MockMediaServiceConfig { class MockMediaService (line 38) | class MockMediaService extends IMediaService { method constructor (line 62) | constructor(config: MockMediaServiceConfig = {}) { method configure (line 67) | configure(config: MockMediaServiceConfig): void { method getMetadata (line 71) | async getMetadata(request: MediaProxyMetadataRequest): Promise { method reset (line 103) | reset(): void { FILE: packages/api/src/test/mocks/MockNcmecReporter.tsx type MockNcmecReporterConfig (line 23) | interface MockNcmecReporterConfig { class MockNcmecReporter (line 34) | class MockNcmecReporter { method constructor (line 45) | constructor(config: MockNcmecReporterConfig = {}) { method configure (line 49) | configure(config: MockNcmecReporterConfig): void { method submitReport (line 53) | async submitReport(reportXml: string): Promise { method uploadEvidence (line 65) | async uploadEvidence( method submitFileDetails (line 81) | async submitFileDetails(fileDetailsXml: string): Promise { method finish (line 89) | async finish(reportId: string): Promise<{reportId: string; fileIds: Ar... method retract (line 100) | async retract(reportId: string): Promise { method getReports (line 108) | getReports(): Array<{reportId: string; payload: string}> { method getUploads (line 112) | getUploads(): Array<{reportId: string; filename: string; size: number}> { method reset (line 116) | reset(): void { FILE: packages/api/src/test/mocks/MockPhotoDnaHashClient.tsx type MockPhotoDnaHashClientConfig (line 25) | interface MockPhotoDnaHashClientConfig { class MockPhotoDnaHashClient (line 31) | class MockPhotoDnaHashClient implements IPhotoDnaHashClient { method constructor (line 35) | constructor(config: MockPhotoDnaHashClientConfig = {}) { method configure (line 39) | configure(config: MockPhotoDnaHashClientConfig): void { method hashFrames (line 43) | async hashFrames(frames: Array): Promise> { method reset (line 57) | reset(): void { FILE: packages/api/src/test/mocks/MockSnowflakeService.tsx type MockSnowflakeServiceConfig (line 23) | interface MockSnowflakeServiceConfig { class MockSnowflakeService (line 30) | class MockSnowflakeService implements ISnowflakeService { method constructor (line 44) | constructor(config: MockSnowflakeServiceConfig = {}) { method configure (line 50) | configure(config: MockSnowflakeServiceConfig): void { method initialize (line 60) | async initialize(): Promise { method reinitialize (line 68) | async reinitialize(): Promise { method shutdown (line 74) | async shutdown(): Promise { method generate (line 80) | async generate(): Promise { method getNodeIdForTesting (line 94) | getNodeIdForTesting(): number | null { method renewNodeIdForTesting (line 99) | async renewNodeIdForTesting(): Promise { method setCounter (line 103) | setCounter(value: bigint): void { method getCounter (line 107) | getCounter(): bigint { method getGeneratedIds (line 111) | getGeneratedIds(): Array { method isInitialized (line 115) | isInitialized(): boolean { method reset (line 119) | reset(): void { FILE: packages/api/src/test/mocks/MockStorageService.tsx type MockStorageServiceConfig (line 26) | interface MockStorageServiceConfig { class MockStorageService (line 35) | class MockStorageService implements IStorageService { method constructor (line 68) | constructor(config: MockStorageServiceConfig = {}) { method configure (line 72) | configure(config: MockStorageServiceConfig): void { method uploadObject (line 76) | async uploadObject(params: { method deleteObject (line 90) | async deleteObject(bucket: string, key: string): Promise { method getObjectMetadata (line 99) | async getObjectMetadata(bucket: string, key: string): Promise<{content... method readObject (line 106) | async readObject(bucket: string, key: string): Promise { method streamObject (line 136) | async streamObject(_params: {bucket: string; key: string; range?: stri... method writeObjectToDisk (line 151) | async writeObjectToDisk(_bucket: string, _key: string, _filePath: stri... method copyObject (line 155) | async copyObject(params: { method copyObjectWithJpegProcessing (line 181) | async copyObjectWithJpegProcessing(params: { method moveObject (line 193) | async moveObject(params: { method getPresignedDownloadURL (line 205) | async getPresignedDownloadURL(_params: {bucket: string; key: string; e... method purgeBucket (line 210) | async purgeBucket(_bucket: string): Promise { method uploadAvatar (line 214) | async uploadAvatar(params: {prefix: string; key: string; body: Uint8Ar... method deleteAvatar (line 219) | async deleteAvatar(params: {prefix: string; key: string}): Promise { method getCopiedObjects (line 296) | getCopiedObjects(): Array<{ method hasObject (line 305) | hasObject(_bucket: string, key: string): boolean { method reset (line 309) | reset(): void { FILE: packages/api/src/test/mocks/MockSynchronousCsamScanner.tsx type MockSynchronousCsamScannerConfig (line 30) | interface MockSynchronousCsamScannerConfig { type ScanCall (line 37) | interface ScanCall { function createDefaultMatchResult (line 42) | function createDefaultMatchResult(): PhotoDnaMatchResult { class MockSynchronousCsamScanner (line 58) | class MockSynchronousCsamScanner implements ISynchronousCsamScanner { method constructor (line 65) | constructor(config: MockSynchronousCsamScannerConfig = {}) { method configure (line 69) | configure(config: MockSynchronousCsamScannerConfig): void { method scanMedia (line 73) | async scanMedia(params: ScanMediaParams): Promise { method reset (line 117) | reset(): void { FILE: packages/api/src/test/mocks/MockVirusScanService.tsx type MockVirusScanServiceConfig (line 25) | interface MockVirusScanServiceConfig { class MockVirusScanService (line 34) | class MockVirusScanService implements IVirusScanService { method constructor (line 43) | constructor(config: MockVirusScanServiceConfig = {}) { method configure (line 47) | configure(config: MockVirusScanServiceConfig): void { method initialize (line 51) | async initialize(): Promise { method scanFile (line 58) | async scanFile(filePath: string): Promise { method scanBuffer (line 70) | async scanBuffer(buffer: Buffer, filename: string): Promise { method cacheVirusHash (line 87) | async cacheVirusHash(fileHash: string): Promise { method reset (line 91) | reset(): void { FILE: packages/api/src/test/mocks/NoopLogger.tsx function noop (line 23) | function noop(): void {} class NoopLogger (line 25) | class NoopLogger implements ILogger, LoggerInterface { method child (line 33) | child(): this { FILE: packages/api/src/test/msw/handlers/ArachnidShieldHandlers.tsx type ArachnidShieldResponse (line 22) | interface ArachnidShieldResponse { type ArachnidShieldMockConfig (line 37) | interface ArachnidShieldMockConfig { type ArachnidShieldRequestCapture (line 47) | interface ArachnidShieldRequestCapture { function createArachnidShieldHandler (line 53) | function createArachnidShieldHandler( function createArachnidShieldErrorHandler (line 86) | function createArachnidShieldErrorHandler(status: number, body?: unknown... function createArachnidShieldRateLimitHandler (line 98) | function createArachnidShieldRateLimitHandler(resetSeconds = 1) { function createArachnidShieldSequenceHandler (line 109) | function createArachnidShieldSequenceHandler( FILE: packages/api/src/test/msw/handlers/BlueskyApiHandlers.tsx constant API_BASES (line 27) | const API_BASES = ['https://api.bsky.app/xrpc', 'https://public.api.bsky... type BlueskyApiMockConfig (line 29) | interface BlueskyApiMockConfig { function createBlueskyApiHandlers (line 39) | function createBlueskyApiHandlers(config: BlueskyApiMockConfig = {}) { function createBlueskyPost (line 142) | function createBlueskyPost(options: { FILE: packages/api/src/test/msw/handlers/DockerEngineHandlers.tsx constant DOCKER_ENGINE_LOCAL_URL_PATTERN (line 25) | const DOCKER_ENGINE_LOCAL_URL_PATTERN = function createDockerEnginePassthroughHandlers (line 28) | function createDockerEnginePassthroughHandlers() { FILE: packages/api/src/test/msw/handlers/MeilisearchHandlers.tsx constant MEILISEARCH_LOCAL_URL_PATTERN (line 25) | const MEILISEARCH_LOCAL_URL_PATTERN = function createMeilisearchPassthroughHandlers (line 28) | function createMeilisearchPassthroughHandlers() { FILE: packages/api/src/test/msw/handlers/NcmecHandlers.tsx constant NCMEC_BASE_URL (line 22) | const NCMEC_BASE_URL = 'https://exttest.cybertip.org/ispws'; type SubmissionRecord (line 24) | type SubmissionRecord = { function resetNcmecState (line 35) | function resetNcmecState(): void { function createNcmecHandlers (line 42) | function createNcmecHandlers() { function xmlResponse (line 172) | function xmlResponse(body: string) { function reportErrorResponse (line 182) | function reportErrorResponse(code: number, description: string): string { function hasXmlContentType (line 190) | function hasXmlContentType(request: Request): boolean { function hasBasicAuth (line 195) | function hasBasicAuth(request: Request): boolean { function isValidReportXml (line 200) | function isValidReportXml(body: string): boolean { function extractXmlTag (line 204) | function extractXmlTag(body: string, tag: string): string | null { FILE: packages/api/src/test/msw/handlers/PhotoDnaHandlers.tsx type MatchRequestItem (line 23) | interface MatchRequestItem { type MatchFlag (line 28) | interface MatchFlag { type MatchResponseResult (line 35) | interface MatchResponseResult { type MatchResponse (line 49) | interface MatchResponse { type PhotoDnaMockConfig (line 54) | interface PhotoDnaMockConfig { type PhotoDnaRequestCapture (line 65) | interface PhotoDnaRequestCapture { function createPhotoDnaMatchHandler (line 71) | function createPhotoDnaMatchHandler( function createPhotoDnaErrorHandler (line 128) | function createPhotoDnaErrorHandler(status: number, body?: unknown, head... function createPhotoDnaRateLimitHandler (line 140) | function createPhotoDnaRateLimitHandler(retryAfterSeconds = 1) { function createPhotoDnaSequenceHandler (line 151) | function createPhotoDnaSequenceHandler( FILE: packages/api/src/test/msw/handlers/PwnedPasswordsHandlers.tsx function createPwnedPasswordsRangeHandler (line 22) | function createPwnedPasswordsRangeHandler() { FILE: packages/api/src/test/msw/handlers/StripeApiHandlers.tsx constant STRIPE_API_BASE (line 22) | const STRIPE_API_BASE = 'https://api.stripe.com'; type CheckoutSessionParams (line 24) | interface CheckoutSessionParams { type PortalSessionParams (line 35) | interface PortalSessionParams { type StripeApiMockConfig (line 40) | interface StripeApiMockConfig { type StripeApiMockSpies (line 47) | interface StripeApiMockSpies { function parseFormDataToObject (line 57) | function parseFormDataToObject(formData: FormData): Record { FILE: packages/api/src/theme/tests/ThemeCreation.test.tsx type ThemeCreateResponse (line 26) | interface ThemeCreateResponse { FILE: packages/api/src/theme/tests/ThemeCssSizeLimit.test.tsx type ThemeCreateResponse (line 26) | interface ThemeCreateResponse { constant MAX_CSS_BYTES (line 30) | const MAX_CSS_BYTES = 8 * 1024 * 1024; FILE: packages/api/src/types/AttachmentDecayTypes.tsx type AttachmentDecayRow (line 22) | interface AttachmentDecayRow { constant ATTACHMENT_DECAY_COLUMNS (line 36) | const ATTACHMENT_DECAY_COLUMNS = [ FILE: packages/api/src/types/HonoEnv.tsx type HonoEnv (line 106) | interface HonoEnv { type HonoApp (line 212) | type HonoApp = Hono; FILE: packages/api/src/typing/tests/TypingTestUtils.tsx function sendTypingIndicator (line 23) | async function sendTypingIndicator(harness: ApiTestHarness, token: strin... FILE: packages/api/src/unfurler/resolvers/AudioResolver.tsx class AudioResolver (line 24) | class AudioResolver extends BaseResolver { method match (line 25) | match(_url: URL, mimeType: string, _content: Uint8Array): boolean { method resolve (line 29) | async resolve(url: URL, content: Uint8Array, isNSFWAllowed: boolean = ... FILE: packages/api/src/unfurler/resolvers/BaseResolver.tsx method constructor (line 27) | constructor(protected mediaService: IMediaService) {} method transformUrl (line 32) | transformUrl(_url: URL): URL | null { method resolveRelativeURL (line 36) | protected resolveRelativeURL(baseUrl: string, relativeUrl?: string): str... method resolveMediaURL (line 48) | protected async resolveMediaURL( FILE: packages/api/src/unfurler/resolvers/BlueskyResolver.tsx type BlueskyEmbedBuildInput (line 37) | interface BlueskyEmbedBuildInput { class BlueskyResolver (line 48) | class BlueskyResolver extends BaseResolver { method constructor (line 57) | constructor(cacheService: ICacheService, mediaService: IMediaService) { method formatCount (line 64) | static formatCount(count: number): string { method match (line 76) | match(url: URL, mimeType: string, _content: Uint8Array): boolean { method resolve (line 82) | async resolve(url: URL, _content: Uint8Array, isNSFWAllowed: boolean =... method resolvePost (line 115) | private async resolvePost(url: URL, isNSFWAllowed: boolean): Promise { method isProfileUrl (line 294) | private isProfileUrl(url: URL): boolean { method isPostUrl (line 301) | private isPostUrl(url: URL): boolean { method getAtUri (line 308) | private async getAtUri(url: URL): Promise { FILE: packages/api/src/unfurler/resolvers/DefaultResolver.tsx type OEmbedResponse (line 33) | interface OEmbedResponse { type DefaultResolverRequestContext (line 40) | interface DefaultResolverRequestContext { constant COLOR_REGEX (line 46) | const COLOR_REGEX = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; class DefaultResolver (line 48) | class DefaultResolver extends BaseResolver { method constructor (line 53) | constructor( method match (line 61) | match(_url: URL, mimeType: string, _content: Uint8Array): boolean { method resolve (line 68) | async resolve( method findActivityPubLink (line 229) | private findActivityPubLink(document: Document): string | null { method findCanonicalUrl (line 237) | private findCanonicalUrl(document: Document, url: URL): string | null { method areUrlsEquivalent (line 252) | private areUrlsEquivalent(leftUrl: string, rightUrl: string): boolean { method extractMetaField (line 258) | private extractMetaField(document: Document, property: string, attribu... method extractMetaFieldValues (line 265) | private extractMetaFieldValues(document: Document, property: string, a... method extractTitle (line 289) | private extractTitle(document: Document): string | undefined { method extractDescription (line 320) | private extractDescription(document: Document): string | undefined { method extractSiteName (line 330) | private extractSiteName(document: Document): string | undefined { method extractImageURLs (line 340) | private extractImageURLs(document: Document): Array { method normalizeUrl (line 360) | private normalizeUrl(value: string): string | null { method extractMediaURL (line 369) | private extractMediaURL(document: Document, type: 'video' | 'audio'): ... method extractColor (line 383) | private extractColor(color: string | undefined): number | undefined { method fetchOEmbedData (line 402) | private async fetchOEmbedData( FILE: packages/api/src/unfurler/resolvers/HackerNewsResolver.tsx type HnItem (line 28) | interface HnItem { class HackerNewsResolver (line 46) | class HackerNewsResolver extends BaseResolver { method match (line 53) | match(url: URL, mimeType: string, _content: Uint8Array): boolean { method resolve (line 59) | async resolve(url: URL, _content: Uint8Array, _isNSFWAllowed: boolean ... method fetchItem (line 80) | private async fetchItem(itemId: string): Promise { method buildEmbed (line 100) | private buildEmbed(item: HnItem): MessageEmbedResponse { method buildDescription (line 130) | private buildDescription(item: HnItem): string | undefined { method formatTimestamp (line 140) | private formatTimestamp(unixSeconds: number): string { method hasTitle (line 144) | private hasTitle(item: HnItem): boolean { method getItemUrl (line 148) | private getItemUrl(id: number): string { FILE: packages/api/src/unfurler/resolvers/ImageResolver.tsx class ImageResolver (line 24) | class ImageResolver extends BaseResolver { method match (line 25) | match(_url: URL, mimeType: string, _content: Uint8Array): boolean { method resolve (line 29) | async resolve(url: URL, content: Uint8Array, isNSFWAllowed: boolean = ... FILE: packages/api/src/unfurler/resolvers/KlipyResolver.tsx type KlipyMediaFormat (line 26) | interface KlipyMediaFormat { type KlipyFileFormats (line 32) | interface KlipyFileFormats { type KlipyFile (line 38) | interface KlipyFile { type KlipyMedia (line 44) | interface KlipyMedia { class KlipyResolver (line 53) | class KlipyResolver extends BaseResolver { method transformUrl (line 54) | override transformUrl(url: URL): URL | null { method match (line 67) | match(url: URL, mimeType: string, _content: Uint8Array): boolean { method resolve (line 71) | async resolve(url: URL, content: Uint8Array, isNSFWAllowed: boolean = ... method resolveKlipyMedia (line 90) | private async resolveKlipyMedia( method extractMediaFromPlayerPage (line 118) | private extractMediaFromPlayerPage(content: string): KlipyMedia | null { method parseNextFlightData (line 132) | private parseNextFlightData(encodedData: string): KlipyMedia | null { method isMediaContainer (line 152) | private isMediaContainer(item: unknown): item is {media: KlipyMedia} { method extractMediaFormats (line 163) | private extractMediaFormats(media: KlipyMedia): {thumbnail?: KlipyMedi... FILE: packages/api/src/unfurler/resolvers/TenorResolver.tsx type TenorJsonLd (line 27) | interface TenorJsonLd { class TenorResolver (line 32) | class TenorResolver extends BaseResolver { method match (line 33) | match(url: URL, mimeType: string, _content: Uint8Array): boolean { method resolve (line 37) | async resolve(url: URL, content: Uint8Array, isNSFWAllowed: boolean = ... method resolveFromOgImage (line 48) | private async resolveFromOgImage( method resolveFromJsonLd (line 71) | private async resolveFromJsonLd( method extractMetaContent (line 93) | private extractMetaContent(document: Document, property: string): stri... method isGifUrl (line 98) | private isGifUrl(url: string): boolean { method extractJsonLdContent (line 107) | private extractJsonLdContent(document: Document): TenorJsonLd | null { method extractURLsFromJsonLd (line 121) | private extractURLsFromJsonLd(jsonLdContent: TenorJsonLd): {thumbnailU... FILE: packages/api/src/unfurler/resolvers/VideoResolver.tsx class VideoResolver (line 24) | class VideoResolver extends BaseResolver { method match (line 25) | match(_url: URL, mimeType: string, _content: Uint8Array): boolean { method resolve (line 29) | async resolve(url: URL, content: Uint8Array, isNSFWAllowed: boolean = ... FILE: packages/api/src/unfurler/resolvers/WikipediaResolver.tsx type WikiSummaryResponse (line 27) | interface WikiSummaryResponse { type ProcessedThumbnail (line 45) | type ProcessedThumbnail = NonNullable; class WikipediaResolver (line 47) | class WikipediaResolver extends BaseResolver { method match (line 54) | match(url: URL, mimeType: string, _content: Uint8Array): boolean { method getLanguageFromURL (line 62) | private getLanguageFromURL(url: URL): string { method fetchArticleSummary (line 67) | private async fetchArticleSummary(title: string, baseUrl: string): Pro... method processThumbnail (line 85) | private async processThumbnail( method resolve (line 101) | async resolve(url: URL, _content: Uint8Array, isNSFWAllowed: boolean =... method deduplicateThumbnails (line 135) | private deduplicateThumbnails(images: Array... method normalizeUrl (line 156) | private normalizeUrl(url?: string): string | null { method normalizeWikipediaImagePath (line 169) | private normalizeWikipediaImagePath(imageUrl: URL): void { FILE: packages/api/src/unfurler/resolvers/XkcdResolver.tsx class XkcdResolver (line 27) | class XkcdResolver extends BaseResolver { method match (line 28) | match(url: URL, mimeType: string, _content: Uint8Array): boolean { method resolve (line 32) | async resolve(url: URL, content: Uint8Array, isNSFWAllowed: boolean = ... method extractTitle (line 53) | private extractTitle(document: Document): string | undefined { method extractImageURL (line 66) | private extractImageURL(document: Document): string | undefined { method extractImageAlt (line 70) | private extractImageAlt(document: Document): string | undefined { method extractFooterText (line 75) | private extractFooterText(document: Document): string | undefined { method extractMetaField (line 80) | private extractMetaField(document: Document, property: string, attribu... FILE: packages/api/src/unfurler/resolvers/YouTubeResolver.tsx type YouTubeApiResponse (line 29) | interface YouTubeApiResponse { class YouTubeResolver (line 62) | class YouTubeResolver extends BaseResolver { method match (line 66) | match(url: URL, _mimeType: string, _content: Uint8Array): boolean { method resolve (line 78) | async resolve(url: URL, _content: Uint8Array, isNSFWAllowed: boolean =... method extractVideoId (line 171) | private extractVideoId(url: URL): string { method extractTimestamp (line 184) | private extractTimestamp(url: URL): number | undefined { FILE: packages/api/src/unfurler/resolvers/bluesky/BlueskyApiClient.tsx class BlueskyApiClient (line 30) | class BlueskyApiClient { method constructor (line 33) | constructor(private cacheService: ICacheService) {} method resolveDid (line 35) | async resolveDid(handle: string): Promise { method getServiceEndpoint (line 63) | async getServiceEndpoint(did: string): Promise { method fetchPost (line 102) | async fetchPost(atUri: string): Promise { method fetchProfile (line 134) | async fetchProfile(handle: string): Promise { FILE: packages/api/src/unfurler/resolvers/bluesky/BlueskyEmbedProcessor.tsx class BlueskyEmbedProcessor (line 40) | class BlueskyEmbedProcessor { method constructor (line 44) | constructor( method processImage (line 49) | async processImage( method processPostEmbed (line 86) | async processPostEmbed(post: BlueskyPost, isNSFWAllowed: boolean): Pro... method processEmbeddedPost (line 94) | async processEmbeddedPost( method processEmbed (line 123) | private async processEmbed( method processVideoEmbed (line 172) | private async processVideoEmbed( method processExternalEmbed (line 211) | private async processExternalEmbed( method processEmbedImages (line 231) | private async processEmbedImages(embed: BlueskyPostEmbed, isNSFWAllowe... method collectImageEntries (line 254) | private collectImageEntries( method extractEmbeddedRecord (line 281) | private extractEmbeddedRecord(embed?: BlueskyPostEmbed): BlueskyRecord... method extractEmbeddedRecordMedia (line 295) | private extractEmbeddedRecordMedia(record: BlueskyRecordViewRecord): B... method normalizeUrl (line 313) | private normalizeUrl(url: string): string | null { FILE: packages/api/src/unfurler/resolvers/bluesky/BlueskyTextFormatter.tsx class BlueskyTextFormatter (line 30) | class BlueskyTextFormatter { method embedLinksInText (line 31) | embedLinksInText(text: string, facets?: Array): string { method getLinkDisplayText (line 71) | getLinkDisplayText(uri: string): string { method formatAuthor (line 85) | formatAuthor(author: BlueskyAuthor): string { method formatPostContent (line 92) | formatPostContent(post: BlueskyPost, thread: BlueskyPostThread): string { method extractReplyContext (line 107) | extractReplyContext(post: BlueskyPost, thread: BlueskyPostThread): Rep... FILE: packages/api/src/unfurler/resolvers/bluesky/BlueskyTypes.tsx type FacetFeatureType (line 20) | type FacetFeatureType = type FacetFeature (line 25) | interface FacetFeature { type FacetBytePosition (line 32) | interface FacetBytePosition { type Facet (line 37) | interface Facet { type BlueskyAuthor (line 42) | interface BlueskyAuthor { type BlueskyImageEmbed (line 49) | interface BlueskyImageEmbed { type BlueskyVideoEmbed (line 54) | interface BlueskyVideoEmbed { type BlueskyAspectRatio (line 61) | interface BlueskyAspectRatio { type BlueskyRecordEmbed (line 66) | interface BlueskyRecordEmbed { type BlueskyExternalEmbed (line 73) | interface BlueskyExternalEmbed { type BlueskyImageEmbedView (line 80) | interface BlueskyImageEmbedView { type BlueskyImagesEmbedView (line 87) | interface BlueskyImagesEmbedView { type BlueskyVideoEmbedView (line 92) | interface BlueskyVideoEmbedView { type BlueskyExternalEmbedView (line 100) | interface BlueskyExternalEmbedView { type BlueskyMediaEmbedView (line 105) | type BlueskyMediaEmbedView = BlueskyImagesEmbedView | BlueskyVideoEmbedV... type BlueskyRecordViewRecord (line 107) | interface BlueskyRecordViewRecord { type BlueskyRecordEmbedView (line 123) | interface BlueskyRecordEmbedView { type BlueskyRecordWithMediaEmbedView (line 128) | interface BlueskyRecordWithMediaEmbedView { type BlueskyPostEmbed (line 134) | type BlueskyPostEmbed = type BlueskyRecord (line 141) | interface BlueskyRecord { type BlueskyPost (line 149) | interface BlueskyPost { type BlueskyPostThread (line 162) | interface BlueskyPostThread { type BlueskyProfile (line 166) | interface BlueskyProfile { type HandleResolution (line 176) | interface HandleResolution { type ProcessedMedia (line 180) | interface ProcessedMedia { type ProcessedVideoResult (line 192) | interface ProcessedVideoResult { type BlueskyProcessedExternalEmbed (line 197) | interface BlueskyProcessedExternalEmbed { type BlueskyProcessedPostEmbed (line 204) | interface BlueskyProcessedPostEmbed { type BlueskyProcessedEmbeddedPost (line 212) | interface BlueskyProcessedEmbeddedPost { type ReplyContext (line 226) | interface ReplyContext { FILE: packages/api/src/unfurler/resolvers/media/MediaMetadataHelpers.tsx type BuildMediaOptions (line 24) | interface BuildMediaOptions { function buildEmbedMediaPayload (line 30) | function buildEmbedMediaPayload( FILE: packages/api/src/unfurler/resolvers/subresolvers/ActivityPubFetcher.tsx class ActivityPubFetcher (line 30) | class ActivityPubFetcher { method constructor (line 31) | constructor(private cacheService: ICacheService) {} method fetchInstanceInfo (line 33) | async fetchInstanceInfo(baseUrl: string): Promise = {}): Act... function createPost (line 39) | function createPost(overrides: Partial = {}): ActivityP... function createFetchedAuthorData (line 51) | function createFetchedAuthorData( FILE: packages/api/src/unfurler/tests/BaseResolver.test.tsx class TestableResolver (line 25) | class TestableResolver extends BaseResolver { method match (line 26) | match(_url: URL, _mimeType: string, _content: Uint8Array): boolean { method resolve (line 30) | async resolve(_url: URL, _content: Uint8Array, _isNSFWAllowed?: boolea... method testResolveRelativeURL (line 34) | testResolveRelativeURL(baseUrl: string, relativeUrl?: string): string ... method testResolveMediaURL (line 38) | async testResolveMediaURL( FILE: packages/api/src/unfurler/tests/BlueskyEmbedProcessor.test.tsx function createMockApiClient (line 27) | function createMockApiClient(): BlueskyApiClient { function createTestPost (line 36) | function createTestPost(overrides: Partial = {}): BlueskyPo... FILE: packages/api/src/unfurler/tests/BlueskyResolver.test.tsx constant TEST_DID (line 28) | const TEST_DID = 'did:plc:testuser123'; constant TEST_HANDLE (line 29) | const TEST_HANDLE = 'testuser.bsky.social'; constant TEST_POST_ID (line 30) | const TEST_POST_ID = 'abc123xyz'; constant TEST_POST_URI (line 31) | const TEST_POST_URI = `at://${TEST_DID}/app.bsky.feed.post/${TEST_POST_I... constant TEST_POST_URL (line 32) | const TEST_POST_URL = `https://bsky.app/profile/${TEST_HANDLE}/post/${TE... constant TEST_CREATED_AT (line 33) | const TEST_CREATED_AT = '2025-01-15T12:00:00.000Z'; FILE: packages/api/src/unfurler/tests/KlipyResolver.test.tsx type KlipyMediaData (line 24) | interface KlipyMediaData { function createKlipyPlayerContent (line 43) | function createKlipyPlayerContent(media: KlipyMediaData): Uint8Array { FILE: packages/api/src/unfurler/tests/ResolverTestUtils.tsx class MockMediaService (line 31) | class MockMediaService extends IMediaService { method markAsNsfw (line 37) | markAsNsfw(url: string): void { method markAsAnimated (line 41) | markAsAnimated(url: string): void { method setMetadata (line 45) | setMetadata(url: string, metadata: Partial... method markAsFailing (line 49) | markAsFailing(url: string): void { method reset (line 53) | reset(): void { method getMetadata (line 60) | async getMetadata(request: MediaProxyMetadataRequest): Promise { method extractFrames (line 91) | async extractFrames(_request: MediaProxyFrameRequest): Promise(key: string): Promise { method set (line 119) | async set(key: string, value: T, _ttlSeconds?: number): Promise { method getAndDelete (line 127) | async getAndDelete(key: string): Promise { method exists (line 135) | async exists(key: string): Promise { method expire (line 139) | async expire(_key: string, _ttlSeconds: number): Promise { method ttl (line 143) | async ttl(_key: string): Promise { method mget (line 147) | async mget(keys: Array): Promise> { method mset (line 155) | async mset(entries: Array<{key: string; value: T; ttlSeconds?: numb... method deletePattern (line 161) | async deletePattern(pattern: string): Promise { method acquireLock (line 173) | async acquireLock(key: string, ttlSeconds: number): Promise { method getAndRenewTtl (line 194) | async getAndRenewTtl(key: string, _newTtlSeconds: number): Promise<... method publish (line 198) | async publish(_channel: string, _message: string): Promise { method sadd (line 202) | async sadd(key: string, member: string, _ttlSeconds?: number): Promise... method srem (line 211) | async srem(key: string, member: string): Promise { method smembers (line 221) | async smembers(key: string): Promise> { method sismember (line 225) | async sismember(key: string, member: string): Promise { function createMockContent (line 231) | function createMockContent(html: string): Uint8Array { function createMinimalHtml (line 235) | function createMinimalHtml(options: { function escapeHtml (line 278) | function escapeHtml(str: string): string { constant PNG_MAGIC_BYTES (line 287) | const PNG_MAGIC_BYTES = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x... constant GIF_MAGIC_BYTES (line 288) | const GIF_MAGIC_BYTES = new Uint8Array([0x47, 0x49, 0x46, 0x38, 0x39, 0x... constant JPEG_MAGIC_BYTES (line 289) | const JPEG_MAGIC_BYTES = new Uint8Array([0xff, 0xd8, 0xff, 0xe0]); function createTestImageContent (line 291) | function createTestImageContent(type: 'png' | 'gif' | 'jpeg'): Uint8Array { function createTestAudioContent (line 299) | function createTestAudioContent(): Uint8Array { function createTestVideoContent (line 303) | function createTestVideoContent(): Uint8Array { FILE: packages/api/src/unfurler/tests/TenorResolver.test.tsx function createTenorHtml (line 25) | function createTenorHtml(options: {thumbnailUrl?: string; videoUrl?: str... FILE: packages/api/src/unfurler/tests/XkcdResolver.test.tsx function createXkcdHtml (line 24) | function createXkcdHtml(options: {title?: string; imageUrl?: string; ima... FILE: packages/api/src/user/IUserRepository.tsx type IUserRepository (line 22) | interface IUserRepository extends IUserRepositoryAggregate {} FILE: packages/api/src/user/UserCacheHelpers.tsx function getCachedUserPartialResponse (line 26) | async function getCachedUserPartialResponse(params: { function getCachedUserPartialResponses (line 35) | async function getCachedUserPartialResponses(params: { function mapUserToPartialResponseWithCache (line 44) | async function mapUserToPartialResponseWithCache(params: { function invalidateUserCache (line 57) | async function invalidateUserCache(params: {userId: UserID; userCacheSer... function updateUserCache (line 62) | async function updateUserCache(params: {user: User; userCacheService: Us... FILE: packages/api/src/user/UserHarvestModel.tsx class UserHarvest (line 25) | class UserHarvest { method constructor (line 39) | constructor(row: UserHarvestRow) { method toRow (line 54) | toRow(): UserHarvestRow { method toResponse (line 71) | toResponse(): { method getStatus (line 101) | getStatus(): 'pending' | 'processing' | 'completed' | 'failed' { type UserHarvestResponse (line 109) | type UserHarvestResponse = z.infer; FILE: packages/api/src/user/UserHarvestRepository.tsx constant FIND_HARVEST_CQL (line 27) | const FIND_HARVEST_CQL = UserHarvests.selectCql({ constant FIND_LATEST_HARVEST_CQL (line 37) | const FIND_LATEST_HARVEST_CQL = UserHarvests.selectCql({ class UserHarvestRepository (line 42) | class UserHarvestRepository { method create (line 43) | async create(harvest: UserHarvest): Promise { method update (line 48) | async update(harvest: UserHarvest): Promise { method findByUserAndHarvestId (line 69) | async findByUserAndHarvestId(userId: UserID, harvestId: bigint): Promi... method findByUserId (line 77) | async findByUserId(userId: UserID, limit: number = 10): Promise { method updateProgress (line 91) | async updateProgress( method markAsStarted (line 109) | async markAsStarted(userId: UserID, harvestId: bigint): Promise { method markAsCompleted (line 123) | async markAsCompleted( method markAsFailed (line 146) | async markAsFailed(userId: UserID, harvestId: bigint, errorMessage: st... FILE: packages/api/src/user/UserHelpers.tsx type PremiumCheckable (line 25) | interface PremiumCheckable { function checkIsPremium (line 32) | function checkIsPremium(user: PremiumCheckable): boolean { constant PREMIUM_CLEAR_FIELDS (line 59) | const PREMIUM_CLEAR_FIELDS = [ type PremiumClearField (line 67) | type PremiumClearField = (typeof PREMIUM_CLEAR_FIELDS)[number]; function shouldStripExpiredPremium (line 69) | function shouldStripExpiredPremium(user: PremiumCheckable): boolean { function mapExpiredPremiumFields (line 77) | function mapExpiredPremiumFields(mapper: (field: PremiumClearField) =... function createPremiumClearPatch (line 85) | function createPremiumClearPatch(): Partial { FILE: packages/api/src/user/UserMappers.tsx constant PUBLIC_USER_FLAGS_WITHOUT_STAFF (line 52) | const PUBLIC_USER_FLAGS_WITHOUT_STAFF = PUBLIC_USER_FLAGS & ~UserFlags.S... function getVisiblePublicUserFlags (line 54) | function getVisiblePublicUserFlags(userFlags: bigint): bigint { function mapUserFlagsToPublicBitfield (line 58) | function mapUserFlagsToPublicBitfield(user: User): number { function mapUserToPartialResponse (line 63) | function mapUserToPartialResponse(user: User): UserPartialResponse { function hasPartialUserFieldsChanged (line 107) | function hasPartialUserFieldsChanged(oldUser: User, newUser: User): bool... function mapUserToPrivateResponse (line 123) | function mapUserToPrivateResponse(user: User): UserPrivateResponse { function mapUserToProfileResponse (line 210) | function mapUserToProfileResponse(user: User): UserProfileResponse { function mapUserToOAuthResponse (line 225) | function mapUserToOAuthResponse(user: User, opts?: {includeEmail?: boole... function mapGuildMemberToProfileResponse (line 244) | function mapGuildMemberToProfileResponse( type GuildFolderResponse (line 257) | interface GuildFolderResponse { function reconcileGuildFolders (line 266) | function reconcileGuildFolders( function mapUserSettingsToResponse (line 311) | function mapUserSettingsToResponse(params: { function mapRelationshipToResponse (line 387) | async function mapRelationshipToResponse(params: { function mapChannelOverrideToResponse (line 412) | function mapChannelOverrideToResponse(override: GuildChannelOverride): { function mapUserGuildSettingsToResponse (line 426) | function mapUserGuildSettingsToResponse(settings: UserGuildSettings): Us... FILE: packages/api/src/user/controllers/UserAccountController.tsx function UserAccountController (line 90) | function UserAccountController(app: HonoApp) { FILE: packages/api/src/user/controllers/UserAuthController.tsx function UserAuthController (line 46) | function UserAuthController(app: HonoApp) { FILE: packages/api/src/user/controllers/UserChannelController.tsx function UserChannelController (line 32) | function UserChannelController(app: HonoApp) { FILE: packages/api/src/user/controllers/UserContentController.tsx function UserContentController (line 42) | function UserContentController(app: HonoApp) { FILE: packages/api/src/user/controllers/UserController.tsx function UserController (line 28) | function UserController(app: HonoApp) { FILE: packages/api/src/user/controllers/UserRelationshipController.tsx function UserRelationshipController (line 36) | function UserRelationshipController(app: HonoApp) { FILE: packages/api/src/user/controllers/UserScheduledMessageController.tsx function UserScheduledMessageController (line 34) | function UserScheduledMessageController(app: HonoApp) { FILE: packages/api/src/user/repositories/GiftCodeRepository.tsx constant FETCH_GIFT_CODES_BY_CREATOR_QUERY (line 26) | const FETCH_GIFT_CODES_BY_CREATOR_QUERY = GiftCodesByCreator.selectCql({ constant FETCH_GIFT_CODE_BY_PAYMENT_INTENT_QUERY (line 30) | const FETCH_GIFT_CODE_BY_PAYMENT_INTENT_QUERY = GiftCodesByPaymentIntent... constant FETCH_GIFT_CODE_QUERY (line 36) | const FETCH_GIFT_CODE_QUERY = GiftCodes.selectCql({ class GiftCodeRepository (line 41) | class GiftCodeRepository { method createGiftCode (line 42) | async createGiftCode(data: GiftCodeRow): Promise { method findGiftCode (line 64) | async findGiftCode(code: string): Promise { method findGiftCodeByPaymentIntent (line 74) | async findGiftCodeByPaymentIntent(paymentIntentId: string): Promise> { method redeemGiftCode (line 106) | async redeemGiftCode(code: string, userId: UserID): Promise<{applied: ... method updateGiftCode (line 132) | async updateGiftCode(code: string, data: Partial): Promis... method linkGiftCodeToCheckoutSession (line 159) | async linkGiftCodeToCheckoutSession(code: string, checkoutSessionId: s... FILE: packages/api/src/user/repositories/IUserAccountRepository.tsx type IUserAccountRepository (line 24) | interface IUserAccountRepository { FILE: packages/api/src/user/repositories/IUserAuthRepository.tsx type IUserAuthRepository (line 35) | interface IUserAuthRepository { FILE: packages/api/src/user/repositories/IUserChannelRepository.tsx type PrivateChannelSummary (line 23) | interface PrivateChannelSummary { type ListHistoricalDmChannelOptions (line 31) | interface ListHistoricalDmChannelOptions { type HistoricalDmChannelSummary (line 37) | interface HistoricalDmChannelSummary { type IUserChannelRepository (line 45) | interface IUserChannelRepository { FILE: packages/api/src/user/repositories/IUserContentRepository.tsx type IUserContentRepository (line 31) | interface IUserContentRepository { FILE: packages/api/src/user/repositories/IUserRelationshipRepository.tsx type IUserRelationshipRepository (line 25) | interface IUserRelationshipRepository { FILE: packages/api/src/user/repositories/IUserRepositoryAggregate.tsx type IUserRepositoryAggregate (line 27) | interface IUserRepositoryAggregate FILE: packages/api/src/user/repositories/IUserSettingsRepository.tsx type IUserSettingsRepository (line 26) | interface IUserSettingsRepository { FILE: packages/api/src/user/repositories/PaymentRepository.tsx constant FETCH_PAYMENT_BY_CHECKOUT_SESSION_QUERY (line 26) | const FETCH_PAYMENT_BY_CHECKOUT_SESSION_QUERY = Payments.selectCql({ constant FETCH_PAYMENT_BY_PAYMENT_INTENT_QUERY (line 31) | const FETCH_PAYMENT_BY_PAYMENT_INTENT_QUERY = PaymentsByPaymentIntent.se... constant FETCH_PAYMENT_BY_SUBSCRIPTION_QUERY (line 36) | const FETCH_PAYMENT_BY_SUBSCRIPTION_QUERY = PaymentsBySubscription.selec... constant FETCH_PAYMENTS_BY_USER_QUERY (line 40) | const FETCH_PAYMENTS_BY_USER_QUERY = PaymentsByUser.selectCql({ constant FETCH_PAYMENTS_BY_IDS_QUERY (line 45) | const FETCH_PAYMENTS_BY_IDS_QUERY = Payments.selectCql({ class PaymentRepository (line 49) | class PaymentRepository { method createPayment (line 50) | async createPayment(data: { method updatePayment (line 93) | async updatePayment(data: Partial & {checkout_session_id: ... method updatePaymentIndexes (line 142) | private async updatePaymentIndexes(data: Partial & {checko... method getPaymentByCheckoutSession (line 172) | async getPaymentByCheckoutSession(checkoutSessionId: string): Promise<... method getPaymentByPaymentIntent (line 179) | async getPaymentByPaymentIntent(paymentIntentId: string): Promise> { FILE: packages/api/src/user/repositories/PushSubscriptionRepository.tsx constant FETCH_PUSH_SUBSCRIPTIONS_CQL (line 26) | const FETCH_PUSH_SUBSCRIPTIONS_CQL = PushSubscriptions.selectCql({ constant FETCH_BULK_PUSH_SUBSCRIPTIONS_CQL (line 30) | const FETCH_BULK_PUSH_SUBSCRIPTIONS_CQL = PushSubscriptions.selectCql({ class PushSubscriptionRepository (line 34) | class PushSubscriptionRepository { method listPushSubscriptions (line 35) | async listPushSubscriptions(userId: UserID): Promise): Promise { FILE: packages/api/src/user/repositories/RecentMentionRepository.tsx constant FETCH_RECENT_MENTION_CQL (line 27) | const FETCH_RECENT_MENTION_CQL = RecentMentions.selectCql({ class RecentMentionRepository (line 38) | class RecentMentionRepository { method getRecentMention (line 39) | async getRecentMention(userId: UserID, messageId: MessageID): Promise<... method listRecentMentions (line 47) | async listRecentMentions( method createRecentMention (line 71) | async createRecentMention(mention: RecentMentionRow): Promise): Promise... method deleteRecentMention (line 109) | async deleteRecentMention(mention: RecentMention): Promise { method deleteAllRecentMentions (line 122) | async deleteAllRecentMentions(userId: UserID): Promise { FILE: packages/api/src/user/repositories/SavedMessageRepository.tsx class SavedMessageRepository (line 33) | class SavedMessageRepository { method listSavedMessages (line 34) | async listSavedMessages( method createSavedMessage (line 52) | async createSavedMessage(userId: UserID, channelId: ChannelID, message... method deleteSavedMessage (line 63) | async deleteSavedMessage(userId: UserID, messageId: MessageID): Promis... method deleteAllSavedMessages (line 67) | async deleteAllSavedMessages(userId: UserID): Promise { FILE: packages/api/src/user/repositories/ScheduledMessageRepository.tsx class ScheduledMessageRepository (line 26) | class ScheduledMessageRepository { method listScheduledMessages (line 31) | async listScheduledMessages(userId: UserID, limit: number = 25): Promi... method getScheduledMessage (line 40) | async getScheduledMessage(userId: UserID, scheduledMessageId: MessageI... method upsertScheduledMessage (line 53) | async upsertScheduledMessage(message: ScheduledMessage, _ttlSeconds: n... method deleteScheduledMessage (line 57) | async deleteScheduledMessage(userId: UserID, scheduledMessageId: Messa... method markInvalid (line 66) | async markInvalid(userId: UserID, scheduledMessageId: MessageID, reaso... FILE: packages/api/src/user/repositories/UserAccountRepository.tsx class UserAccountRepository (line 29) | class UserAccountRepository implements IUserAccountRepository { method constructor (line 35) | constructor() { method create (line 42) | async create(data: UserRow): Promise { method findUnique (line 46) | async findUnique(userId: UserID): Promise { method findUniqueAssert (line 50) | async findUniqueAssert(userId: UserID): Promise { method listAllUsersPaginated (line 54) | async listAllUsersPaginated(limit: number, lastUserId?: UserID): Promi... method listUsers (line 58) | async listUsers(userIds: Array): Promise> { method upsert (line 62) | async upsert(data: UserRow, oldData?: UserRow | null): Promise { method patchUpsert (line 66) | async patchUpsert(userId: UserID, patchData: Partial, oldData... method deleteUserSecondaryIndices (line 70) | async deleteUserSecondaryIndices(userId: UserID): Promise { method findByEmail (line 74) | async findByEmail(email: string): Promise { method findByPhone (line 78) | async findByPhone(phone: string): Promise { method findByStripeCustomerId (line 82) | async findByStripeCustomerId(stripeCustomerId: string): Promise> { method findUsersPendingDeletionByDate (line 111) | async findUsersPendingDeletionByDate( method isUserPendingDeletion (line 117) | async isUserPendingDeletion(userId: UserID, deletionDate: string): Pro... method removePendingDeletion (line 121) | async removePendingDeletion(userId: UserID, pendingDeletionAt: Date): ... method scheduleDeletion (line 125) | async scheduleDeletion(userId: UserID, pendingDeletionAt: Date, deleti... method getUserGuildIds (line 129) | async getUserGuildIds(userId: UserID): Promise> { method removeFromAllGuilds (line 133) | async removeFromAllGuilds(userId: UserID): Promise { method updateLastActiveAt (line 137) | async updateLastActiveAt(params: {userId: UserID; lastActiveAt: Date; ... method updateSubscriptionStatus (line 141) | async updateSubscriptionStatus( FILE: packages/api/src/user/repositories/UserAuthRepository.tsx class UserAuthRepository (line 42) | class UserAuthRepository implements IUserAuthRepository { method constructor (line 49) | constructor(userAccountRepository: IUserAccountRepository) { method listAuthSessions (line 57) | async listAuthSessions(userId: UserID): Promise> { method getAuthSessionByToken (line 61) | async getAuthSessionByToken(sessionIdHash: Buffer): Promise { method deleteAuthSessions (line 75) | async deleteAuthSessions(userId: UserID, sessionIdHashes: Array { method deleteAllAuthSessions (line 85) | async deleteAllAuthSessions(userId: UserID): Promise { method listMfaBackupCodes (line 89) | async listMfaBackupCodes(userId: UserID): Promise> { method createMfaBackupCodes (line 93) | async createMfaBackupCodes(userId: UserID, codes: Array): Prom... method clearMfaBackupCodes (line 97) | async clearMfaBackupCodes(userId: UserID): Promise { method consumeMfaBackupCode (line 101) | async consumeMfaBackupCode(userId: UserID, code: string): Promise { method deleteAllMfaBackupCodes (line 105) | async deleteAllMfaBackupCodes(userId: UserID): Promise { method getEmailVerificationToken (line 109) | async getEmailVerificationToken(token: string): Promise { method getPasswordResetToken (line 121) | async getPasswordResetToken(token: string): Promise { method getEmailRevertToken (line 133) | async getEmailRevertToken(token: string): Promise { method createPhoneToken (line 145) | async createPhoneToken(token: PhoneVerificationToken, phone: string, u... method getPhoneToken (line 149) | async getPhoneToken(token: PhoneVerificationToken): Promise { method updateUserActivity (line 157) | async updateUserActivity(userId: UserID, clientIp: string): Promise { method createAuthorizedIp (line 165) | async createAuthorizedIp(userId: UserID, ip: string): Promise { method createIpAuthorizationToken (line 169) | async createIpAuthorizationToken(userId: UserID, token: string, email:... method authorizeIpByToken (line 173) | async authorizeIpByToken(token: string): Promise<{userId: UserID; emai... method getAuthorizedIps (line 177) | async getAuthorizedIps(userId: UserID): Promise> { method deleteAllAuthorizedIps (line 181) | async deleteAllAuthorizedIps(userId: UserID): Promise { method listWebAuthnCredentials (line 185) | async listWebAuthnCredentials(userId: UserID): Promise { FILE: packages/api/src/user/repositories/UserChannelRepository.tsx type PinnedDmRow (line 40) | interface PinnedDmRow { type ChannelDetailsRow (line 46) | interface ChannelDetailsRow { constant CHECK_PRIVATE_CHANNEL_CQL (line 54) | const CHECK_PRIVATE_CHANNEL_CQL = PrivateChannels.selectCql({ constant FETCH_CHANNEL_CQL (line 59) | const FETCH_CHANNEL_CQL = Channels.selectCql({ constant FETCH_DM_STATE_CQL (line 87) | const FETCH_DM_STATE_CQL = DmStates.selectCql({ constant FETCH_PINNED_DMS_CQL (line 92) | const FETCH_PINNED_DMS_CQL = PinnedDms.selectCql({ constant FETCH_PRIVATE_CHANNELS_CQL (line 96) | const FETCH_PRIVATE_CHANNELS_CQL = PrivateChannels.selectCql({ constant FETCH_OPEN_PRIVATE_CHANNELS_BY_IDS_CQL (line 100) | const FETCH_OPEN_PRIVATE_CHANNELS_BY_IDS_CQL = PrivateChannels.selectCql({ constant HISTORICAL_DM_CHANNELS_CQL (line 105) | const HISTORICAL_DM_CHANNELS_CQL = UserDmHistory.selectCql({ constant FETCH_CHANNEL_METADATA_CQL (line 110) | const FETCH_CHANNEL_METADATA_CQL = Channels.selectCql({ constant FETCH_CHANNEL_DETAILS_CQL (line 115) | const FETCH_CHANNEL_DETAILS_CQL = Channels.selectCql({ constant FETCH_CHANNELS_IN_CQL (line 120) | const FETCH_CHANNELS_IN_CQL = Channels.selectCql({ function sortBySortOrder (line 124) | function sortBySortOrder(a: PinnedDmRow, b: PinnedDmRow): number { function fetchPinnedDms (line 128) | async function fetchPinnedDms(userId: UserID): Promise { method deleteAllReadStates (line 239) | async deleteAllReadStates(userId: UserID): Promise { method findExistingDmState (line 248) | async findExistingDmState(user1Id: UserID, user2Id: UserID): Promise> { method getPinnedDmsWithDetails (line 274) | async getPinnedDmsWithDetails(userId: UserID): Promise> { method listPrivateChannelSummaries (line 306) | async listPrivateChannelSummaries(userId: UserID): Promise { FILE: packages/api/src/user/repositories/UserContactChangeLogRepository.tsx type ContactChangeLogListParams (line 34) | interface ContactChangeLogListParams { type ContactChangeLogInsertParams (line 40) | interface ContactChangeLogInsertParams { class UserContactChangeLogRepository (line 50) | class UserContactChangeLogRepository { method insertLog (line 51) | async insertLog(params: ContactChangeLogInsertParams): Promise { method listLogs (line 69) | async listLogs(params: ContactChangeLogListParams): Promise { method findGiftCode (line 58) | async findGiftCode(code: string): Promise { method findGiftCodeByPaymentIntent (line 62) | async findGiftCodeByPaymentIntent(paymentIntentId: string): Promise> { method redeemGiftCode (line 70) | async redeemGiftCode(code: string, userId: UserID): Promise<{applied: ... method updateGiftCode (line 74) | async updateGiftCode(code: string, data: Partial): Promis... method linkGiftCodeToCheckoutSession (line 78) | async linkGiftCodeToCheckoutSession(code: string, checkoutSessionId: s... method createPayment (line 82) | async createPayment(data: { method updatePayment (line 94) | async updatePayment(data: Partial & {checkout_session_id: ... method getPaymentByCheckoutSession (line 98) | async getPaymentByCheckoutSession(checkoutSessionId: string): Promise<... method getPaymentByPaymentIntent (line 102) | async getPaymentByPaymentIntent(paymentIntentId: string): Promise): Promise { method getRecentMention (line 130) | async getRecentMention(userId: UserID, messageId: MessageID): Promise<... method listRecentMentions (line 134) | async listRecentMentions( method createRecentMention (line 152) | async createRecentMention(mention: RecentMentionRow): Promise): Promise... method deleteRecentMention (line 160) | async deleteRecentMention(mention: RecentMention): Promise { method deleteAllRecentMentions (line 164) | async deleteAllRecentMentions(userId: UserID): Promise { method listSavedMessages (line 168) | async listSavedMessages(userId: UserID, limit: number = 25, before?: M... method createSavedMessage (line 172) | async createSavedMessage(userId: UserID, channelId: ChannelID, message... method deleteSavedMessage (line 176) | async deleteSavedMessage(userId: UserID, messageId: MessageID): Promis... method deleteAllSavedMessages (line 180) | async deleteAllSavedMessages(userId: UserID): Promise { method listVisionarySlots (line 184) | async listVisionarySlots(): Promise> { method expandVisionarySlots (line 188) | async expandVisionarySlots(byCount: number): Promise { method shrinkVisionarySlots (line 192) | async shrinkVisionarySlots(toCount: number): Promise { method reserveVisionarySlot (line 196) | async reserveVisionarySlot(slotIndex: number, userId: UserID): Promise... method unreserveVisionarySlot (line 200) | async unreserveVisionarySlot(slotIndex: number, userId: UserID): Promi... FILE: packages/api/src/user/repositories/UserRelationshipRepository.tsx constant FETCH_ALL_NOTES_CQL (line 36) | const FETCH_ALL_NOTES_CQL = Notes.selectCql({ constant FETCH_NOTE_CQL (line 40) | const FETCH_NOTE_CQL = Notes.selectCql({ constant FETCH_RELATIONSHIPS_CQL (line 45) | const FETCH_RELATIONSHIPS_CQL = Relationships.selectCql({ constant FETCH_RELATIONSHIP_CQL (line 49) | const FETCH_RELATIONSHIP_CQL = Relationships.selectCql({ constant FETCH_ALL_NOTES_FOR_DELETE_QUERY (line 58) | const FETCH_ALL_NOTES_FOR_DELETE_QUERY = Notes.selectCql({ class UserRelationshipRepository (line 63) | class UserRelationshipRepository implements IUserRelationshipRepository { method clearUserNote (line 64) | async clearUserNote(sourceUserId: UserID, targetUserId: UserID): Promi... method deleteAllNotes (line 73) | async deleteAllNotes(userId: UserID): Promise { method deleteAllRelationships (line 102) | async deleteAllRelationships(userId: UserID): Promise { method deleteRelationship (line 140) | async deleteRelationship(sourceUserId: UserID, targetUserId: UserID, t... method getRelationship (line 159) | async getRelationship(sourceUserId: UserID, targetUserId: UserID, type... method getUserNote (line 168) | async getUserNote(sourceUserId: UserID, targetUserId: UserID): Promise... method getUserNotes (line 176) | async getUserNotes(sourceUserId: UserID): Promise> { method listRelationships (line 185) | async listRelationships(sourceUserId: UserID): Promise { method upsert (line 93) | async upsert(data: UserRow, oldData?: UserRow | null): Promise { method patchUpsert (line 97) | async patchUpsert(userId: UserID, patchData: Partial, oldData... method findUnique (line 101) | async findUnique(userId: UserID): Promise { method findUniqueAssert (line 105) | async findUniqueAssert(userId: UserID): Promise { method findByUsernameDiscriminator (line 109) | async findByUsernameDiscriminator(username: string, discriminator: num... method findDiscriminatorsByUsername (line 113) | async findDiscriminatorsByUsername(username: string): Promise { method findByPhone (line 121) | async findByPhone(phone: string): Promise { method findByStripeSubscriptionId (line 125) | async findByStripeSubscriptionId(stripeSubscriptionId: string): Promis... method findByStripeCustomerId (line 129) | async findByStripeCustomerId(stripeCustomerId: string): Promise): Promise> { method listAllUsersPaginated (line 137) | async listAllUsersPaginated(limit: number, lastUserId?: UserID): Promi... method getUserGuildIds (line 141) | async getUserGuildIds(userId: UserID): Promise> { method getActivityTracking (line 145) | async getActivityTracking(userId: UserID): Promise<{last_active_at: Da... method addPendingDeletion (line 149) | async addPendingDeletion(userId: UserID, pendingDeletionAt: Date, dele... method removePendingDeletion (line 153) | async removePendingDeletion(userId: UserID, pendingDeletionAt: Date): ... method findUsersPendingDeletion (line 157) | async findUsersPendingDeletion(now: Date): Promise> { method findUsersPendingDeletionByDate (line 161) | async findUsersPendingDeletionByDate( method isUserPendingDeletion (line 167) | async isUserPendingDeletion(userId: UserID, deletionDate: string): Pro... method scheduleDeletion (line 171) | async scheduleDeletion(userId: UserID, pendingDeletionAt: Date, deleti... method deleteUserSecondaryIndices (line 175) | async deleteUserSecondaryIndices(userId: UserID): Promise { method removeFromAllGuilds (line 179) | async removeFromAllGuilds(userId: UserID): Promise { method updateLastActiveAt (line 183) | async updateLastActiveAt(params: {userId: UserID; lastActiveAt: Date; ... method updateSubscriptionStatus (line 187) | async updateSubscriptionStatus( method findSettings (line 194) | async findSettings(userId: UserID): Promise { method upsertSettings (line 198) | async upsertSettings(settings: UserSettingsRow): Promise { method deleteUserSettings (line 202) | async deleteUserSettings(userId: UserID): Promise { method findGuildSettings (line 206) | async findGuildSettings(userId: UserID, guildId: GuildID | null): Prom... method findAllGuildSettings (line 210) | async findAllGuildSettings(userId: UserID): Promise { method listAuthSessions (line 226) | async listAuthSessions(userId: UserID): Promise> { method getAuthSessionByToken (line 230) | async getAuthSessionByToken(sessionIdHash: Buffer): Promise { method deleteAuthSessions (line 242) | async deleteAuthSessions(userId: UserID, sessionIdHashes: Array { method deleteAllAuthSessions (line 250) | async deleteAllAuthSessions(userId: UserID): Promise { method listMfaBackupCodes (line 254) | async listMfaBackupCodes(userId: UserID): Promise> { method createMfaBackupCodes (line 258) | async createMfaBackupCodes(userId: UserID, codes: Array): Prom... method clearMfaBackupCodes (line 262) | async clearMfaBackupCodes(userId: UserID): Promise { method consumeMfaBackupCode (line 266) | async consumeMfaBackupCode(userId: UserID, code: string): Promise { method deleteAllMfaBackupCodes (line 270) | async deleteAllMfaBackupCodes(userId: UserID): Promise { method getEmailVerificationToken (line 274) | async getEmailVerificationToken(token: string): Promise { method getPasswordResetToken (line 286) | async getPasswordResetToken(token: string): Promise { method getEmailRevertToken (line 298) | async getEmailRevertToken(token: string): Promise { method createPhoneToken (line 310) | async createPhoneToken(token: PhoneVerificationToken, phone: string, u... method getPhoneToken (line 314) | async getPhoneToken(token: PhoneVerificationToken): Promise { method updateUserActivity (line 322) | async updateUserActivity(userId: UserID, clientIp: string): Promise { method createAuthorizedIp (line 330) | async createAuthorizedIp(userId: UserID, ip: string): Promise { method createIpAuthorizationToken (line 334) | async createIpAuthorizationToken(userId: UserID, token: string, email:... method authorizeIpByToken (line 338) | async authorizeIpByToken(token: string): Promise<{userId: UserID; emai... method getAuthorizedIps (line 342) | async getAuthorizedIps(userId: UserID): Promise> { method deleteAllAuthorizedIps (line 346) | async deleteAllAuthorizedIps(userId: UserID): Promise { method listWebAuthnCredentials (line 350) | async listWebAuthnCredentials(userId: UserID): Promise { method listRelationships (line 393) | async listRelationships(sourceUserId: UserID): Promise { method backfillRelationshipsIndex (line 417) | async backfillRelationshipsIndex(userId: UserID, relationships: Array<... method getUserNote (line 421) | async getUserNote(sourceUserId: UserID, targetUserId: UserID): Promise... method getUserNotes (line 425) | async getUserNotes(sourceUserId: UserID): Promise> { method upsertUserNote (line 429) | async upsertUserNote(sourceUserId: UserID, targetUserId: UserID, note:... method clearUserNote (line 433) | async clearUserNote(sourceUserId: UserID, targetUserId: UserID): Promi... method deleteAllNotes (line 437) | async deleteAllNotes(userId: UserID): Promise { method listPrivateChannels (line 441) | async listPrivateChannels(userId: UserID): Promise> { method listHistoricalDmChannelIds (line 445) | async listHistoricalDmChannelIds(userId: UserID): Promise { method findExistingDmState (line 468) | async findExistingDmState(user1Id: UserID, user2Id: UserID): Promise> { method getPinnedDmsWithDetails (line 492) | async getPinnedDmsWithDetails(userId: UserID): Promise { method deleteAllReadStates (line 508) | async deleteAllReadStates(userId: UserID): Promise { method getReadStates (line 512) | async getReadStates(userId: UserID): Promise> { method getRecentMention (line 516) | async getRecentMention(userId: UserID, messageId: MessageID): Promise<... method listRecentMentions (line 520) | async listRecentMentions( method createRecentMention (line 531) | async createRecentMention(mention: RecentMentionRow): Promise): Promise... method deleteRecentMention (line 539) | async deleteRecentMention(mention: RecentMention): Promise { method deleteAllRecentMentions (line 543) | async deleteAllRecentMentions(userId: UserID): Promise { method listSavedMessages (line 547) | async listSavedMessages(userId: UserID, limit?: number, before?: Messa... method createSavedMessage (line 551) | async createSavedMessage(userId: UserID, channelId: ChannelID, message... method deleteSavedMessage (line 555) | async deleteSavedMessage(userId: UserID, messageId: MessageID): Promis... method deleteAllSavedMessages (line 559) | async deleteAllSavedMessages(userId: UserID): Promise { method createGiftCode (line 563) | async createGiftCode(data: GiftCodeRow): Promise { method findGiftCode (line 567) | async findGiftCode(code: string): Promise { method findGiftCodeByPaymentIntent (line 571) | async findGiftCodeByPaymentIntent(paymentIntentId: string): Promise> { method redeemGiftCode (line 579) | async redeemGiftCode(code: string, userId: UserID): Promise<{applied: ... method updateGiftCode (line 583) | async updateGiftCode(code: string, data: Partial): Promis... method linkGiftCodeToCheckoutSession (line 587) | async linkGiftCodeToCheckoutSession(code: string, checkoutSessionId: s... method listPushSubscriptions (line 591) | async listPushSubscriptions(userId: UserID): Promise): Promise { method createPayment (line 611) | async createPayment(data: { method updatePayment (line 623) | async updatePayment(data: Partial & {checkout_session_id: ... method getPaymentByCheckoutSession (line 627) | async getPaymentByCheckoutSession(checkoutSessionId: string): Promise<... method getPaymentByPaymentIntent (line 631) | async getPaymentByPaymentIntent(paymentIntentId: string): Promise> { method expandVisionarySlots (line 643) | async expandVisionarySlots(byCount: number): Promise { method shrinkVisionarySlots (line 647) | async shrinkVisionarySlots(toCount: number): Promise { method reserveVisionarySlot (line 651) | async reserveVisionarySlot(slotIndex: number, userId: UserID): Promise... method unreserveVisionarySlot (line 655) | async unreserveVisionarySlot(slotIndex: number, userId: UserID): Promi... FILE: packages/api/src/user/repositories/UserSettingsRepository.tsx constant FETCH_USER_SETTINGS_CQL (line 37) | const FETCH_USER_SETTINGS_CQL = UserSettingsTable.selectCql({ constant FETCH_USER_GUILD_SETTINGS_CQL (line 42) | const FETCH_USER_GUILD_SETTINGS_CQL = UserGuildSettingsTable.selectCql({ constant FETCH_ALL_USER_GUILD_SETTINGS_CQL (line 47) | const FETCH_ALL_USER_GUILD_SETTINGS_CQL = UserGuildSettingsTable.selectC... class UserSettingsRepository (line 51) | class UserSettingsRepository implements IUserSettingsRepository { method deleteAllUserGuildSettings (line 52) | async deleteAllUserGuildSettings(userId: UserID): Promise { method deleteGuildSettings (line 61) | async deleteGuildSettings(userId: UserID, guildId: GuildID): Promise { method findGuildSettings (line 74) | async findGuildSettings(userId: UserID, guildId: GuildID | null): Prom... method findAllGuildSettings (line 82) | async findAllGuildSettings(userId: UserID): Promise { method upsertGuildSettings (line 94) | async upsertGuildSettings(settings: ExactRow): P... method upsertSettings (line 119) | async upsertSettings(settings: ExactRow): Promise> { method getVisionarySlot (line 40) | async getVisionarySlot(slotIndex: number): Promise { method shrinkVisionarySlots (line 64) | async shrinkVisionarySlots(toCount: number): Promise { method reserveVisionarySlot (line 83) | async reserveVisionarySlot(slotIndex: number, userId: UserID): Promise... method swapVisionarySlotReservations (line 105) | async swapVisionarySlotReservations( method unreserveVisionarySlot (line 135) | async unreserveVisionarySlot(slotIndex: number, userId: UserID): Promi... FILE: packages/api/src/user/repositories/account/UserAccountRepository.tsx class UserAccountRepository (line 28) | class UserAccountRepository { method constructor (line 33) | constructor() { method create (line 39) | async create(data: UserRow): Promise { method findUnique (line 43) | async findUnique(userId: UserID): Promise { method findUniqueAssert (line 47) | async findUniqueAssert(userId: UserID): Promise { method listAllUsersPaginated (line 51) | async listAllUsersPaginated(limit: number, lastUserId?: UserID): Promi... method listUsers (line 55) | async listUsers(userIds: Array): Promise> { method upsert (line 59) | async upsert(data: UserRow, oldData?: UserRow | null): Promise { method patchUpsert (line 75) | async patchUpsert(userId: UserID, patchData: Partial, oldData... method deleteUserSecondaryIndices (line 120) | async deleteUserSecondaryIndices(userId: UserID): Promise { method updateLastActiveAt (line 134) | async updateLastActiveAt(params: {userId: UserID; lastActiveAt: Date; ... method getActivityTracking (line 138) | async getActivityTracking( method updateSubscriptionStatus (line 144) | async updateSubscriptionStatus( FILE: packages/api/src/user/repositories/account/UserDeletionRepository.tsx constant FETCH_USERS_PENDING_DELETION_BY_DATE_CQL (line 25) | const FETCH_USERS_PENDING_DELETION_BY_DATE_CQL = UsersPendingDeletion.se... constant FETCH_USERS_PENDING_DELETION_BY_DATE_ALL_CQL (line 30) | const FETCH_USERS_PENDING_DELETION_BY_DATE_ALL_CQL = UsersPendingDeletio... constant FETCH_USER_PENDING_DELETION_CHECK_CQL (line 35) | const FETCH_USER_PENDING_DELETION_CHECK_CQL = UsersPendingDeletion.selec... class UserDeletionRepository (line 40) | class UserDeletionRepository { method constructor (line 41) | constructor(private findUniqueUser: (userId: UserID) => Promise> { method findUsersPendingDeletionByDate (line 92) | async findUsersPendingDeletionByDate( method isUserPendingDeletion (line 102) | async isUserPendingDeletion(userId: UserID, deletionDate: string): Pro... method removePendingDeletion (line 110) | async removePendingDeletion(userId: UserID, pendingDeletionAt: Date): ... method scheduleDeletion (line 122) | async scheduleDeletion(userId: UserID, pendingDeletionAt: Date, deleti... FILE: packages/api/src/user/repositories/account/UserGuildRepository.tsx constant FETCH_GUILD_MEMBERS_BY_USER_CQL (line 25) | const FETCH_GUILD_MEMBERS_BY_USER_CQL = GuildMembersByUserId.selectCql({ class UserGuildRepository (line 29) | class UserGuildRepository { method getUserGuildIds (line 30) | async getUserGuildIds(userId: UserID): Promise> { method removeFromAllGuilds (line 37) | async removeFromAllGuilds(userId: UserID): Promise { FILE: packages/api/src/user/repositories/account/UserLookupRepository.tsx constant FETCH_DISCRIMINATORS_BY_USERNAME_QUERY (line 38) | const FETCH_DISCRIMINATORS_BY_USERNAME_QUERY = UserByUsername.select({ constant FETCH_USER_ID_BY_EMAIL_QUERY (line 43) | const FETCH_USER_ID_BY_EMAIL_QUERY = UserByEmail.select({ constant FETCH_USER_ID_BY_PHONE_QUERY (line 49) | const FETCH_USER_ID_BY_PHONE_QUERY = UserByPhone.select({ constant FETCH_USER_ID_BY_STRIPE_CUSTOMER_ID_QUERY (line 55) | const FETCH_USER_ID_BY_STRIPE_CUSTOMER_ID_QUERY = UserByStripeCustomerId... constant FETCH_USER_ID_BY_STRIPE_SUBSCRIPTION_ID_QUERY (line 61) | const FETCH_USER_ID_BY_STRIPE_SUBSCRIPTION_ID_QUERY = UserByStripeSubscr... constant FETCH_USER_ID_BY_USERNAME_DISCRIMINATOR_QUERY (line 67) | const FETCH_USER_ID_BY_USERNAME_DISCRIMINATOR_QUERY = UserByUsername.sel... class UserLookupRepository (line 73) | class UserLookupRepository { method constructor (line 74) | constructor(private findUniqueUser: (userId: UserID) => Promise { method findByPhone (line 85) | async findByPhone(phone: string): Promise { method findByStripeCustomerId (line 91) | async findByStripeCustomerId(stripeCustomerId: string): Promise { method findUniqueAssert (line 101) | async findUniqueAssert(userId: UserID): Promise { method listAllUsersPaginated (line 105) | async listAllUsersPaginated(limit: number, lastUserId?: UserID): Promi... method listUsers (line 119) | async listUsers(userIds: Array): Promise> { method upsertUserRow (line 125) | async upsertUserRow(data: UserRow, oldData?: UserRow | null): Promise<... method patchUser (line 144) | async patchUser(userId: UserID, patch: UserPatch, oldData?: UserRow | ... method updateLastActiveAt (line 161) | async updateLastActiveAt(params: {userId: UserID; lastActiveAt: Date; ... method getActivityTracking (line 174) | async getActivityTracking( method updateSubscriptionStatus (line 184) | async updateSubscriptionStatus( FILE: packages/api/src/user/repositories/account/crud/UserIndexRepository.tsx class UserIndexRepository (line 31) | class UserIndexRepository { method syncIndices (line 32) | async syncIndices(data: UserRow, oldData?: UserRow | null): Promise { method updateUser (line 34) | async updateUser(user: User): Promise { FILE: packages/api/src/user/repositories/auth/AuthSessionRepository.tsx constant FETCH_AUTH_SESSIONS_CQL (line 26) | const FETCH_AUTH_SESSIONS_CQL = AuthSessions.selectCql({ constant FETCH_AUTH_SESSION_BY_TOKEN_CQL (line 30) | const FETCH_AUTH_SESSION_BY_TOKEN_CQL = AuthSessions.selectCql({ constant FETCH_AUTH_SESSION_HASHES_BY_USER_ID_CQL (line 35) | const FETCH_AUTH_SESSION_HASHES_BY_USER_ID_CQL = AuthSessionsByUserId.se... class AuthSessionRepository (line 40) | class AuthSessionRepository { method createAuthSession (line 41) | async createAuthSession(sessionData: AuthSessionRow): Promise> { method updateAuthSessionLastUsed (line 71) | async updateAuthSessionLastUsed(sessionIdHash: Buffer): Promise { method deleteAuthSessions (line 82) | async deleteAuthSessions(userId: UserID, sessionIdHashes: Array { FILE: packages/api/src/user/repositories/auth/EmailChangeRepository.tsx constant FETCH_TICKET_CQL (line 24) | const FETCH_TICKET_CQL = EmailChangeTickets.selectCql({ constant FETCH_TOKEN_CQL (line 29) | const FETCH_TOKEN_CQL = EmailChangeTokens.selectCql({ class EmailChangeRepository (line 34) | class EmailChangeRepository { method createTicket (line 35) | async createTicket(row: EmailChangeTicketRow): Promise { method updateTicket (line 39) | async updateTicket(row: EmailChangeTicketRow): Promise { method findTicket (line 43) | async findTicket(ticket: string): Promise { method deleteTicket (line 47) | async deleteTicket(ticket: string): Promise { method createToken (line 51) | async createToken(row: EmailChangeTokenRow): Promise { method findToken (line 55) | async findToken(token: string): Promise { method deleteToken (line 59) | async deleteToken(token: string): Promise { FILE: packages/api/src/user/repositories/auth/IpAuthorizationRepository.tsx constant AUTHORIZE_IP_BY_TOKEN_CQL (line 27) | const AUTHORIZE_IP_BY_TOKEN_CQL = IpAuthorizationTokens.selectCql({ constant CHECK_IP_AUTHORIZED_CQL (line 32) | const CHECK_IP_AUTHORIZED_CQL = AuthorizedIps.selectCql({ constant GET_AUTHORIZED_IPS_CQL (line 37) | const GET_AUTHORIZED_IPS_CQL = AuthorizedIps.selectCql({ class IpAuthorizationRepository (line 41) | class IpAuthorizationRepository { method constructor (line 42) | constructor(private userAccountRepository: IUserAccountRepository) {} method checkIpAuthorized (line 44) | async checkIpAuthorized(userId: UserID, ip: string): Promise { method createAuthorizedIp (line 52) | async createAuthorizedIp(userId: UserID, ip: string): Promise { method createIpAuthorizationToken (line 56) | async createIpAuthorizationToken(userId: UserID, token: string, email:... method authorizeIpByToken (line 66) | async authorizeIpByToken(token: string): Promise<{userId: UserID; emai... method updateUserActivity (line 87) | async updateUserActivity(userId: UserID, clientIp: string): Promise> { method deleteAllAuthorizedIps (line 105) | async deleteAllAuthorizedIps(userId: UserID): Promise { FILE: packages/api/src/user/repositories/auth/MfaBackupCodeRepository.tsx constant FETCH_MFA_BACKUP_CODES_CQL (line 26) | const FETCH_MFA_BACKUP_CODES_CQL = MfaBackupCodes.selectCql({ class MfaBackupCodeRepository (line 30) | class MfaBackupCodeRepository { method listMfaBackupCodes (line 31) | async listMfaBackupCodes(userId: UserID): Promise> { method createMfaBackupCodes (line 36) | async createMfaBackupCodes(userId: UserID, codes: Array): Prom... method clearMfaBackupCodes (line 48) | async clearMfaBackupCodes(userId: UserID): Promise { method consumeMfaBackupCode (line 58) | async consumeMfaBackupCode(userId: UserID, code: string): Promise { method deleteAllMfaBackupCodes (line 69) | async deleteAllMfaBackupCodes(userId: UserID): Promise { FILE: packages/api/src/user/repositories/auth/PasswordChangeRepository.tsx constant FETCH_TICKET_CQL (line 24) | const FETCH_TICKET_CQL = PasswordChangeTickets.selectCql({ class PasswordChangeRepository (line 29) | class PasswordChangeRepository { method createTicket (line 30) | async createTicket(row: PasswordChangeTicketRow): Promise { method updateTicket (line 34) | async updateTicket(row: PasswordChangeTicketRow): Promise { method findTicket (line 38) | async findTicket(ticket: string): Promise { FILE: packages/api/src/user/repositories/auth/TokenRepository.tsx constant FETCH_EMAIL_VERIFICATION_TOKEN_CQL (line 39) | const FETCH_EMAIL_VERIFICATION_TOKEN_CQL = EmailVerificationTokens.selec... constant FETCH_PASSWORD_RESET_TOKEN_CQL (line 44) | const FETCH_PASSWORD_RESET_TOKEN_CQL = PasswordResetTokens.selectCql({ constant FETCH_EMAIL_REVERT_TOKEN_CQL (line 49) | const FETCH_EMAIL_REVERT_TOKEN_CQL = EmailRevertTokens.selectCql({ constant FETCH_PHONE_TOKEN_CQL (line 54) | const FETCH_PHONE_TOKEN_CQL = PhoneTokens.selectCql({ class TokenRepository (line 59) | class TokenRepository { method getEmailVerificationToken (line 60) | async getEmailVerificationToken(token: string): Promise { method getPasswordResetToken (line 79) | async getPasswordResetToken(token: string): Promise { method getEmailRevertToken (line 98) | async getEmailRevertToken(token: string): Promise { method createPhoneToken (line 117) | async createPhoneToken(token: PhoneVerificationToken, phone: string, u... method getPhoneToken (line 131) | async getPhoneToken(token: PhoneVerificationToken): Promise { FILE: packages/api/src/user/repositories/auth/WebAuthnRepository.tsx constant FETCH_USER_ID_BY_CREDENTIAL_ID_CQL (line 26) | const FETCH_USER_ID_BY_CREDENTIAL_ID_CQL = WebAuthnCredentialLookup.sele... constant FETCH_WEBAUTHN_CREDENTIALS_CQL (line 31) | const FETCH_WEBAUTHN_CREDENTIALS_CQL = WebAuthnCredentials.selectCql({ constant FETCH_WEBAUTHN_CREDENTIAL_CQL (line 35) | const FETCH_WEBAUTHN_CREDENTIAL_CQL = WebAuthnCredentials.selectCql({ constant FETCH_WEBAUTHN_CREDENTIALS_FOR_USER_CQL (line 40) | const FETCH_WEBAUTHN_CREDENTIALS_FOR_USER_CQL = WebAuthnCredentials.sele... class WebAuthnRepository (line 45) | class WebAuthnRepository { method listWebAuthnCredentials (line 46) | async listWebAuthnCredentials(userId: UserID): Promise { FILE: packages/api/src/user/services/BaseUserUpdatePropagator.tsx type BaseUserUpdatePropagatorDeps (line 27) | interface BaseUserUpdatePropagatorDeps { class BaseUserUpdatePropagator (line 32) | class BaseUserUpdatePropagator { method constructor (line 33) | constructor(protected readonly baseDeps: BaseUserUpdatePropagatorDeps) {} method dispatchUserUpdate (line 35) | async dispatchUserUpdate(user: User): Promise { method invalidateUserCache (line 43) | async invalidateUserCache(userId: UserID): Promise { method updateUserCache (line 50) | async updateUserCache(user: User): Promise { FILE: packages/api/src/user/services/CustomStatusValidator.tsx type ValidatedCustomStatus (line 32) | interface ValidatedCustomStatus { class CustomStatusValidator (line 40) | class CustomStatusValidator { method constructor (line 41) | constructor( method validate (line 48) | async validate(userId: UserID, payload: z.infer { method resendOriginal (line 122) | async resendOriginal(user: User, ticket: string): Promise { method verifyOriginal (line 147) | async verifyOriginal(user: User, ticket: string, code: string): Promis... method requestNewEmail (line 176) | async requestNewEmail( method resendNew (line 230) | async resendNew(user: User, ticket: string): Promise { method verifyNew (line 251) | async verifyNew(user: User, ticket: string, code: string, originalProo... method consumeToken (line 287) | async consumeToken(userId: bigint, token: string): Promise { method requestBouncedNewEmail (line 300) | async requestBouncedNewEmail(user: User, newEmail: string): Promise { method verifyBouncedNew (line 316) | async verifyBouncedNew(user: User, ticket: string, code: string): Prom... method getTicketForUser (line 348) | private async getTicketForUser(ticket: string, userId: bigint) { method ensureBouncedEmailRecoveryAllowed (line 359) | private ensureBouncedEmailRecoveryAllowed(user: User): void { method generateCode (line 369) | private generateCode(): string { method generateTicket (line 380) | private generateTicket(): string { method generateToken (line 384) | private generateToken(): string { method generateProof (line 388) | private generateProof(): string { method assertCooldown (line 392) | private assertCooldown(sentAt: Date | null | undefined) { method ensureRateLimit (line 406) | private async ensureRateLimit(identifier: string, maxAttempts: number,... FILE: packages/api/src/user/services/PasswordChangeService.tsx type IAuthServiceForPasswordChange (line 31) | interface IAuthServiceForPasswordChange { type StartPasswordChangeResult (line 36) | interface StartPasswordChangeResult { type VerifyPasswordChangeResult (line 42) | interface VerifyPasswordChangeResult { class PasswordChangeService (line 46) | class PasswordChangeService { method constructor (line 50) | constructor( method start (line 58) | async start(user: User): Promise { method resend (line 92) | async resend(user: User, ticket: string): Promise { method verify (line 114) | async verify(user: User, ticket: string, code: string): Promise { method selfDelete (line 71) | async selfDelete(userId: UserID): Promise { FILE: packages/api/src/user/services/UserAccountLookupService.tsx type UserAccountLookupServiceDeps (line 39) | interface UserAccountLookupServiceDeps { class UserAccountLookupService (line 49) | class UserAccountLookupService { method constructor (line 50) | constructor(private readonly deps: UserAccountLookupServiceDeps) {} method findUnique (line 52) | async findUnique(userId: UserID): Promise { method findUniqueAssert (line 56) | async findUniqueAssert(userId: UserID): Promise { method getUserProfile (line 60) | async getUserProfile(params: { method validateProfileAccess (line 142) | private async validateProfileAccess(userId: UserID, targetId: UserID, ... method hasSharedGroupDm (line 183) | private async hasSharedGroupDm(userId: UserID, targetId: UserID): Prom... method getMutualFriends (line 190) | private async getMutualFriends(userId: UserID, targetId: UserID): Prom... method compareUsersByIdDesc (line 215) | private compareUsersByIdDesc(a: User, b: User): number { method getMutualGuilds (line 221) | private async getMutualGuilds(userId: UserID, targetId: UserID): Promi... method generateUniqueDiscriminator (line 243) | async generateUniqueDiscriminator(username: string): Promise { method checkUsernameDiscriminatorAvailability (line 251) | async checkUsernameDiscriminatorAvailability(params: {username: string... method getVisibleConnections (line 260) | private async getVisibleConnections(viewerId: UserID, targetId: UserID... method areFriends (line 292) | private async areFriends(userId1: UserID, userId2: UserID): Promise> { method setUserNote (line 46) | async setUserNote(params: {userId: UserID; targetId: UserID; note: str... FILE: packages/api/src/user/services/UserAccountProfileService.tsx type UserUpdateMetadata (line 42) | interface UserUpdateMetadata { type UserFieldUpdates (line 46) | type UserFieldUpdates = Partial; type ProfileUpdateResult (line 48) | interface ProfileUpdateResult { type UserAccountProfileServiceDeps (line 55) | interface UserAccountProfileServiceDeps { class UserAccountProfileService (line 64) | class UserAccountProfileService { method constructor (line 65) | constructor(private readonly deps: UserAccountProfileServiceDeps) {} method processProfileUpdates (line 67) | async processProfileUpdates(params: {user: User; data: UserUpdateReque... method commitAssetChanges (line 116) | async commitAssetChanges(result: ProfileUpdateResult): Promise { method rollbackAssetChanges (line 132) | async rollbackAssetChanges(result: ProfileUpdateResult): Promise { method processBioUpdate (line 142) | private async processBioUpdate(params: {user: User; bio: string | null... method processPronounsUpdate (line 189) | private async processPronounsUpdate(params: { method processAccentColorUpdate (line 215) | private async processAccentColorUpdate(params: { method processAvatarUpdate (line 241) | private async processAvatarUpdate(params: { method processBannerUpdate (line 322) | private async processBannerUpdate(params: { method processPremiumBadgeFlags (line 387) | private processPremiumBadgeFlags(params: {user: User; data: UserUpdate... method processPremiumOnboardingDismissal (line 446) | private processPremiumOnboardingDismissal(params: { method processGiftInventoryRead (line 460) | private processGiftInventoryRead(params: {user: User; data: UserUpdate... method processUsedMobileClient (line 468) | private processUsedMobileClient(params: {user: User; data: UserUpdateR... FILE: packages/api/src/user/services/UserAccountRequestService.tsx type UserUpdateWithVerificationRequestData (line 53) | type UserUpdateWithVerificationRequestData = z.infer... FILE: packages/api/src/user/services/UserAccountSecurityService.tsx type UserUpdateMetadata (line 41) | interface UserUpdateMetadata { type UserFieldUpdates (line 45) | type UserFieldUpdates = Partial; type UserAccountSecurityServiceDeps (line 47) | interface UserAccountSecurityServiceDeps { class UserAccountSecurityService (line 55) | class UserAccountSecurityService { method constructor (line 56) | constructor(private readonly deps: UserAccountSecurityServiceDeps) {} method processSecurityUpdates (line 58) | async processSecurityUpdates(params: { method invalidateAndRecreateSessions (line 145) | async invalidateAndRecreateSessions({ method hashNewPassword (line 167) | private async hashNewPassword(newPassword: string): Promise { method updateUsername (line 174) | private async updateUsername({ method updateDiscriminator (line 274) | private async updateDiscriminator({user, discriminator}: {user: User; ... FILE: packages/api/src/user/services/UserAccountService.tsx type UpdateUserParams (line 64) | interface UpdateUserParams { class UserAccountService (line 73) | class UserAccountService { method constructor (line 84) | constructor( method findUnique (line 167) | async findUnique(userId: UserID): Promise { method findUniqueAssert (line 171) | async findUniqueAssert(userId: UserID): Promise { method getUserProfile (line 175) | async getUserProfile(params: { method generateUniqueDiscriminator (line 186) | async generateUniqueDiscriminator(username: string): Promise { method checkUsernameDiscriminatorAvailability (line 190) | async checkUsernameDiscriminatorAvailability(params: {username: string... method update (line 194) | async update(params: UpdateUserParams): Promise { method reindexGuildMembersForUser (line 255) | private async reindexGuildMembersForUser(updatedUser: User): Promise { method updateSettings (line 277) | async updateSettings(params: {userId: UserID; data: UserSettingsUpdate... method findGuildSettings (line 281) | async findGuildSettings(userId: UserID, guildId: GuildID | null): Prom... method updateGuildSettings (line 285) | async updateGuildSettings(params: { method getUserNote (line 293) | async getUserNote(params: {userId: UserID; targetId: UserID}): Promise... method getUserNotes (line 297) | async getUserNotes(userId: UserID): Promise> { method setUserNote (line 301) | async setUserNote(params: {userId: UserID; targetId: UserID; note: str... method selfDisable (line 305) | async selfDisable(userId: UserID): Promise { method selfDelete (line 309) | async selfDelete(userId: UserID): Promise { method resetCurrentUserPremiumState (line 313) | async resetCurrentUserPremiumState(user: User): Promise { method dispatchUserUpdate (line 332) | async dispatchUserUpdate(user: User): Promise { method dispatchUserSettingsUpdate (line 336) | async dispatchUserSettingsUpdate({userId, settings}: {userId: UserID; ... method dispatchUserGuildSettingsUpdate (line 340) | async dispatchUserGuildSettingsUpdate({ method dispatchUserNoteUpdate (line 350) | async dispatchUserNoteUpdate(params: {userId: UserID; targetId: UserID... FILE: packages/api/src/user/services/UserAccountSettingsService.tsx type UserAccountSettingsServiceDeps (line 47) | interface UserAccountSettingsServiceDeps { class UserAccountSettingsService (line 56) | class UserAccountSettingsService { method constructor (line 59) | constructor(private readonly deps: UserAccountSettingsServiceDeps) { method findSettings (line 68) | async findSettings(userId: UserID): Promise { method updateSettings (line 74) | async updateSettings(params: {userId: UserID; data: UserSettingsUpdate... method findGuildSettings (line 214) | async findGuildSettings(userId: UserID, guildId: GuildID | null): Prom... method updateGuildSettings (line 218) | async updateGuildSettings(params: { method normalizeFriendSourceFlags (line 290) | private normalizeFriendSourceFlags(flags: number): number { method normalizeIncomingCallFlags (line 306) | private normalizeIncomingCallFlags(flags: number): number { method normalizeGroupDmAddPermissionFlags (line 322) | private normalizeGroupDmAddPermissionFlags(flags: number): number { FILE: packages/api/src/user/services/UserAccountUpdatePropagator.tsx type UserAccountUpdatePropagatorDeps (line 30) | interface UserAccountUpdatePropagatorDeps { class UserAccountUpdatePropagator (line 37) | class UserAccountUpdatePropagator extends BaseUserUpdatePropagator { method constructor (line 38) | constructor(private readonly deps: UserAccountUpdatePropagatorDeps) { method dispatchUserSettingsUpdate (line 45) | async dispatchUserSettingsUpdate({userId, settings}: {userId: UserID; ... method dispatchUserGuildSettingsUpdate (line 54) | async dispatchUserGuildSettingsUpdate({ method dispatchUserNoteUpdate (line 68) | async dispatchUserNoteUpdate(params: {userId: UserID; targetId: UserID... FILE: packages/api/src/user/services/UserAuthRequestService.tsx type UserAuthWithSudoRequest (line 42) | interface UserAuthWithSudoRequest { type UserAuthRequest (line 48) | interface UserAuthRequest { type UserAuthPhoneTokenRequest (line 53) | interface UserAuthPhoneTokenRequest { type UserAuthWebAuthnUpdateRequest (line 58) | interface UserAuthWebAuthnUpdateRequest { type UserAuthWebAuthnRegisterRequest (line 64) | interface UserAuthWebAuthnRegisterRequest { type UserAuthWebAuthnDeleteRequest (line 69) | interface UserAuthWebAuthnDeleteRequest { class UserAuthRequestService (line 74) | class UserAuthRequestService { method constructor (line 75) | constructor( method enableTotp (line 82) | async enableTotp({ method disableTotp (line 96) | async disableTotp({user, data, sudoContext}: UserAuthWithSudoRequest { method enableSmsMfa (line 136) | async enableSmsMfa(user: User): Promise { method disableSmsMfa (line 140) | async disableSmsMfa(user: User): Promise { method forgetAuthorizedIps (line 144) | async forgetAuthorizedIps(user: User): Promise { method listWebAuthnCredentials (line 148) | async listWebAuthnCredentials(user: User): Promise { method sendSudoSmsCode (line 179) | async sendSudoSmsCode(user: User): Promise { method getSudoWebAuthnOptions (line 183) | async getSudoWebAuthnOptions(user: User): Promise { method resendVerificationEmail (line 182) | async resendVerificationEmail(user: User): Promise { method dispatchUserUpdate (line 200) | async dispatchUserUpdate(user: User): Promise { FILE: packages/api/src/user/services/UserChannelRequestService.tsx type UserChannelListParams (line 28) | interface UserChannelListParams { type UserChannelCreateParams (line 33) | interface UserChannelCreateParams { type UserChannelPinParams (line 39) | interface UserChannelPinParams { class UserChannelRequestService (line 44) | class UserChannelRequestService { method constructor (line 45) | constructor( method listPrivateChannels (line 50) | async listPrivateChannels(params: UserChannelListParams): Promise { method unpinChannel (line 83) | async unpinChannel(params: UserChannelPinParams): Promise { FILE: packages/api/src/user/services/UserChannelService.tsx class UserChannelService (line 57) | class UserChannelService { method constructor (line 58) | constructor( method getPrivateChannels (line 71) | async getPrivateChannels(userId: UserID): Promise> { method createOrOpenDMChannel (line 75) | async createOrOpenDMChannel({ method pinDmChannel (line 114) | async pinDmChannel({userId, channelId}: {userId: UserID; channelId: Ch... method unpinDmChannel (line 130) | async unpinDmChannel({userId, channelId}: {userId: UserID; channelId: ... method preloadDMMessages (line 146) | async preloadDMMessages(params: { method getExistingDmForUsers (line 183) | async getExistingDmForUsers(userId: UserID, recipientId: UserID): Prom... method ensureDmOpenForBothUsers (line 187) | async ensureDmOpenForBothUsers({ method reopenDmForBothUsers (line 227) | async reopenDmForBothUsers({ method createNewDmForBothUsers (line 249) | async createNewDmForBothUsers({ method reopenExistingDMChannel (line 271) | private async reopenExistingDMChannel({ method createNewDMChannel (line 287) | private async createNewDMChannel({ method createGroupDMChannel (line 305) | private async createGroupDMChannel({ method dispatchSystemMessage (line 440) | private async dispatchSystemMessage({ method dispatchChannelCreate (line 462) | private async dispatchChannelCreate({ method ensureUsersWithinGroupDmLimit (line 486) | private async ensureUsersWithinGroupDmLimit(userIds: Iterable)... method ensureUserWithinGroupDmLimit (line 492) | private async ensureUserWithinGroupDmLimit(userId: UserID): Promise { method listLogs (line 103) | async listLogs(params: ListLogsParams): Promise; type HarvestLatestResponse (line 42) | type HarvestLatestResponse = HarvestStatusResponse | null; type UserMentionsParams (line 44) | interface UserMentionsParams { type UserMentionDeleteParams (line 54) | interface UserMentionDeleteParams { type SavedMessagesParams (line 59) | interface SavedMessagesParams { type SaveMessageParams (line 65) | interface SaveMessageParams { type UnsaveMessageParams (line 72) | interface UnsaveMessageParams { type HarvestRequestParams (line 77) | interface HarvestRequestParams { type HarvestStatusParams (line 81) | interface HarvestStatusParams { type HarvestDownloadParams (line 86) | interface HarvestDownloadParams { class UserContentRequestService (line 92) | class UserContentRequestService { method constructor (line 93) | constructor( method listMentions (line 99) | async listMentions(params: UserMentionsParams): Promise { method listSavedMessages (line 125) | async listSavedMessages(params: SavedMessagesParams): Promise { method unsaveMessage (line 140) | async unsaveMessage(params: UnsaveMessageParams): Promise { method requestHarvest (line 144) | async requestHarvest(params: HarvestRequestParams): Promise { method countBulkDeletionTargets (line 404) | private async countBulkDeletionTargets( method dispatchRecentMentionDelete (line 443) | async dispatchRecentMentionDelete({userId, messageId}: {userId: UserID... method dispatchSavedMessageCreate (line 451) | async dispatchSavedMessageCreate({ method dispatchSavedMessageDelete (line 475) | async dispatchSavedMessageDelete({userId, messageId}: {userId: UserID;... FILE: packages/api/src/user/services/UserDeletionEligibilityService.tsx class UserDeletionEligibilityService (line 27) | class UserDeletionEligibilityService { method constructor (line 31) | constructor(private kvClient: IKVProvider) {} method isEligibleForInactivityDeletion (line 33) | async isEligibleForInactivityDeletion(user: User): Promise { method isEligibleForWarningEmail (line 64) | async isEligibleForWarningEmail(user: User): Promise { method markWarningSent (line 78) | async markWarningSent(userId: UserID): Promise { method hasWarningSent (line 86) | async hasWarningSent(userId: UserID): Promise { method getWarningSentTimestamp (line 92) | async getWarningSentTimestamp(userId: UserID): Promise { method hasWarningGracePeriodExpired (line 102) | async hasWarningGracePeriodExpired(userId: UserID): Promise { method getInactivityThresholdMs (line 114) | private getInactivityThresholdMs(): number { method getWarningKey (line 119) | private getWarningKey(userId: UserID): string { method isAppStoreReviewer (line 123) | private isAppStoreReviewer(user: User): boolean { FILE: packages/api/src/user/services/UserDeletionService.tsx constant CHUNK_SIZE (line 50) | const CHUNK_SIZE = 100; type UserDeletionDependencies (line 52) | interface UserDeletionDependencies { function processUserDeletion (line 69) | async function processUserDeletion( FILE: packages/api/src/user/services/UserRelationshipRequestService.tsx type RelationshipListParams (line 34) | interface RelationshipListParams { type RelationshipSendByTagParams (line 39) | interface RelationshipSendByTagParams { type RelationshipSendParams (line 45) | interface RelationshipSendParams { type RelationshipUpdateTypeParams (line 51) | interface RelationshipUpdateTypeParams { type RelationshipDeleteParams (line 58) | interface RelationshipDeleteParams { type RelationshipNicknameParams (line 63) | interface RelationshipNicknameParams { class UserRelationshipRequestService (line 70) | class UserRelationshipRequestService { method constructor (line 71) | constructor( method listRelationships (line 76) | async listRelationships(params: RelationshipListParams): Promise> { method sendFriendRequestByTag (line 63) | async sendFriendRequestByTag({ method sendFriendRequest (line 97) | async sendFriendRequest({ method acceptFriendRequest (line 155) | async acceptFriendRequest({ method blockUser (line 230) | async blockUser({ method removeRelationship (line 303) | async removeRelationship({userId, targetId}: {userId: UserID; targetId... method updateFriendNickname (line 340) | async updateFriendNickname({ method validateFriendRequest (line 381) | private async validateFriendRequest({userId, targetId}: {userId: UserI... method validateRelationshipCounts (line 435) | private async validateRelationshipCounts({userId, targetId}: {userId: ... method createFriendRequest (line 456) | private async createFriendRequest({ method dispatchRelationshipCreate (line 494) | async dispatchRelationshipCreate({ method dispatchRelationshipUpdate (line 514) | async dispatchRelationshipUpdate({ method dispatchRelationshipRemove (line 534) | async dispatchRelationshipRemove({userId, targetId}: {userId: UserID; ... method resolveLimitForUser (line 542) | private resolveLimitForUser(user: User | null, key: LimitKey, fallback... method isDeletedUser (line 547) | private isDeletedUser(user: User | null | undefined): boolean { FILE: packages/api/src/user/services/UserService.tsx type UpdateUserParams (line 79) | interface UpdateUserParams { class UserService (line 88) | class UserService { method constructor (line 95) | constructor( method findUnique (line 192) | async findUnique(userId: UserID): Promise { method findUniqueAssert (line 196) | async findUniqueAssert(userId: UserID): Promise { method getUserProfile (line 200) | async getUserProfile(params: { method update (line 221) | async update(params: UpdateUserParams): Promise { method generateUniqueDiscriminator (line 225) | async generateUniqueDiscriminator(username: string): Promise { method checkUsernameDiscriminatorAvailability (line 229) | async checkUsernameDiscriminatorAvailability(params: {username: string... method findSettings (line 233) | async findSettings(userId: UserID): Promise { method updateSettings (line 237) | async updateSettings(params: {userId: UserID; data: UserSettingsUpdate... method findGuildSettings (line 241) | async findGuildSettings(userId: UserID, guildId: GuildID | null): Prom... method updateGuildSettings (line 245) | async updateGuildSettings(params: { method getUserNote (line 253) | async getUserNote(params: {userId: UserID; targetId: UserID}): Promise... method getUserNotes (line 257) | async getUserNotes(userId: UserID): Promise> { method setUserNote (line 261) | async setUserNote(params: {userId: UserID; targetId: UserID; note: str... method selfDisable (line 265) | async selfDisable(userId: UserID): Promise { method selfDelete (line 269) | async selfDelete(userId: UserID): Promise { method resetCurrentUserPremiumState (line 273) | async resetCurrentUserPremiumState(user: User): Promise { method dispatchUserUpdate (line 277) | async dispatchUserUpdate(user: User): Promise { method dispatchUserSettingsUpdate (line 281) | async dispatchUserSettingsUpdate({userId, settings}: {userId: UserID; ... method dispatchUserGuildSettingsUpdate (line 285) | async dispatchUserGuildSettingsUpdate({ method dispatchUserNoteUpdate (line 295) | async dispatchUserNoteUpdate(params: {userId: UserID; targetId: UserID... method enableMfaTotp (line 299) | async enableMfaTotp(params: { method disableMfaTotp (line 308) | async disableMfaTotp(params: { method getMfaBackupCodes (line 317) | async getMfaBackupCodes(params: { method regenerateMfaBackupCodes (line 326) | async regenerateMfaBackupCodes(user: User): Promise { method resendVerificationEmail (line 334) | async resendVerificationEmail(user: User): Promise { method getRelationships (line 338) | async getRelationships(userId: UserID): Promise> { method sendFriendRequestByTag (line 342) | async sendFriendRequestByTag({ method sendFriendRequest (line 356) | async sendFriendRequest({ method acceptFriendRequest (line 370) | async acceptFriendRequest({ method blockUser (line 398) | async blockUser({ method updateFriendNickname (line 412) | async updateFriendNickname({ method removeRelationship (line 434) | async removeRelationship({userId, targetId}: {userId: UserID; targetId... method dispatchRelationshipCreate (line 438) | async dispatchRelationshipCreate({ method dispatchRelationshipUpdate (line 457) | async dispatchRelationshipUpdate({ method dispatchRelationshipRemove (line 476) | async dispatchRelationshipRemove({userId, targetId}: {userId: UserID; ... method getPrivateChannels (line 480) | async getPrivateChannels(userId: UserID): Promise> { method createOrOpenDMChannel (line 484) | async createOrOpenDMChannel({ method pinDmChannel (line 498) | async pinDmChannel({userId, channelId}: {userId: UserID; channelId: Ch... method unpinDmChannel (line 502) | async unpinDmChannel({userId, channelId}: {userId: UserID; channelId: ... method preloadDMMessages (line 506) | async preloadDMMessages(params: { method getRecentMentions (line 513) | async getRecentMentions(params: { method deleteRecentMention (line 524) | async deleteRecentMention({userId, messageId}: {userId: UserID; messag... method getSavedMessages (line 528) | async getSavedMessages({userId, limit}: {userId: UserID; limit: number... method saveMessage (line 532) | async saveMessage({ method unsaveMessage (line 548) | async unsaveMessage({userId, messageId}: {userId: UserID; messageId: M... method registerPushSubscription (line 552) | async registerPushSubscription(params: { method listPushSubscriptions (line 561) | async listPushSubscriptions(userId: UserID): Promise { method dispatchRecentMentionDelete (line 601) | async dispatchRecentMentionDelete({userId, messageId}: {userId: UserID... method dispatchSavedMessageCreate (line 605) | async dispatchSavedMessageCreate({ method dispatchSavedMessageDelete (line 619) | async dispatchSavedMessageDelete({userId, messageId}: {userId: UserID;... FILE: packages/api/src/user/tests/FavoriteMemeTestUtils.tsx type MessageWithAttachment (line 26) | interface MessageWithAttachment { function listFavoriteMemes (line 37) | async function listFavoriteMemes(harness: ApiTestHarness, token: string)... function getFavoriteMeme (line 41) | async function getFavoriteMeme( function createFavoriteMemeFromMessage (line 49) | async function createFavoriteMemeFromMessage( function createFavoriteMemeFromUrl (line 69) | async function createFavoriteMemeFromUrl( function updateFavoriteMeme (line 87) | async function updateFavoriteMeme( function deleteFavoriteMeme (line 100) | async function deleteFavoriteMeme(harness: ApiTestHarness, token: string... function createMessageWithImageAttachment (line 107) | async function createMessageWithImageAttachment( FILE: packages/api/src/user/tests/HarvestTestUtils.tsx type HarvestStatusResponse (line 31) | type HarvestStatusResponse = z.infer; type HarvestRequestResponse (line 32) | interface HarvestRequestResponse { function requestHarvest (line 36) | async function requestHarvest(harness: ApiTestHarness, token: string): P... function fetchHarvestStatus (line 40) | async function fetchHarvestStatus( function fetchHarvestDownload (line 48) | async function fetchHarvestDownload( function setHarvestExpiration (line 58) | async function setHarvestExpiration( function waitForHarvestCompletion (line 70) | async function waitForHarvestCompletion( function expectHarvestDownloadFailsWithError (line 91) | async function expectHarvestDownloadFailsWithError( function markHarvestCompleted (line 106) | async function markHarvestCompleted(userId: string, harvestId: string, e... FILE: packages/api/src/user/tests/InactivityDeletion.test.tsx type InactivityCheckResult (line 26) | interface InactivityCheckResult { function setUserActivity (line 32) | async function setUserActivity(harness: ApiTestHarness, userId: string, ... function setBotFlag (line 39) | async function setBotFlag(harness: ApiTestHarness, userId: string, isBot... function setSystemFlag (line 43) | async function setSystemFlag(harness: ApiTestHarness, userId: string, is... function processInactivityDeletions (line 50) | async function processInactivityDeletions(harness: ApiTestHarness): Prom... FILE: packages/api/src/user/tests/PasswordChangeFlow.test.tsx type PasswordChangeStartResult (line 32) | interface PasswordChangeStartResult { type PasswordChangeVerifyResult (line 38) | interface PasswordChangeVerifyResult { function startPasswordChange (line 42) | async function startPasswordChange(harness: ApiTestHarness, token: strin... function verifyPasswordChangeCode (line 49) | async function verifyPasswordChangeCode( function completePasswordChange (line 61) | async function completePasswordChange( function getVerificationCode (line 75) | async function getVerificationCode(harness: ApiTestHarness, email: strin... function runFullVerification (line 84) | async function runFullVerification( FILE: packages/api/src/user/tests/ProfileImageUpload.test.tsx constant PREMIUM_TYPE_SUBSCRIPTION (line 34) | const PREMIUM_TYPE_SUBSCRIPTION = 2; constant AVATAR_MAX_SIZE (line 35) | const AVATAR_MAX_SIZE = 10 * 1024 * 1024; type ValidationErrorResponse (line 37) | interface ValidationErrorResponse { function getTooLargeImageDataUrl (line 42) | function getTooLargeImageDataUrl(): string { FILE: packages/api/src/user/tests/RelationshipTestUtils.tsx function sendFriendRequest (line 27) | async function sendFriendRequest( function sendFriendRequestByTag (line 42) | async function sendFriendRequestByTag( function acceptFriendRequest (line 59) | async function acceptFriendRequest( function blockUser (line 75) | async function blockUser( function removeRelationship (line 91) | async function removeRelationship(harness: ApiTestHarness, token: string... function listRelationships (line 95) | async function listRelationships( function updateFriendNickname (line 109) | async function updateFriendNickname( function assertRelationshipType (line 126) | function assertRelationshipType(relationship: RelationshipResponse, expe... function assertRelationshipId (line 130) | function assertRelationshipId(relationship: RelationshipResponse, expect... function findRelationship (line 134) | function findRelationship(relations: Array, userId... FILE: packages/api/src/user/tests/UserAuthorizedIps.test.tsx type LoginResponse (line 32) | interface LoginResponse { function seedAuthorizedIp (line 37) | async function seedAuthorizedIp(params: { FILE: packages/api/src/user/tests/UserChannelService.test.tsx type PrivateChannelsResponse (line 41) | interface PrivateChannelsResponse extends Array {} FILE: packages/api/src/user/tests/UserContactChangeLogService.test.tsx type UserMeResponse (line 27) | interface UserMeResponse { function updateUserUsername (line 34) | async function updateUserUsername( FILE: packages/api/src/user/tests/UserCustomStatusEmojiPremium.test.tsx type ValidationErrorResponse (line 33) | interface ValidationErrorResponse { type EmojiResponse (line 38) | interface EmojiResponse { FILE: packages/api/src/user/tests/UserDeletionEligibilityService.test.tsx type InactivityCheckResult (line 26) | interface InactivityCheckResult { function setUserActivity (line 32) | async function setUserActivity(harness: ApiTestHarness, userId: string, ... function setBotFlag (line 39) | async function setBotFlag(harness: ApiTestHarness, userId: string, isBot... function setSystemFlag (line 43) | async function setSystemFlag(harness: ApiTestHarness, userId: string, is... function setAppStoreReviewerFlag (line 50) | async function setAppStoreReviewerFlag(harness: ApiTestHarness, userId: ... function processInactivityDeletions (line 58) | async function processInactivityDeletions(harness: ApiTestHarness): Prom... FILE: packages/api/src/user/tests/UserFlagsResponse.test.tsx function setUserFlags (line 28) | async function setUserFlags(harness: ApiTestHarness, userId: string, fla... FILE: packages/api/src/user/tests/UserPremiumReset.test.tsx type CurrentUserPremiumState (line 27) | interface CurrentUserPremiumState { FILE: packages/api/src/user/tests/UserProfileConnectionVisibility.test.tsx function getUserProfile (line 36) | async function getUserProfile( FILE: packages/api/src/user/tests/UserProfileImageValidation.test.tsx constant PREMIUM_TYPE_SUBSCRIPTION (line 36) | const PREMIUM_TYPE_SUBSCRIPTION = 2; constant AVATAR_MAX_SIZE (line 37) | const AVATAR_MAX_SIZE = 10 * 1024 * 1024; type ValidationErrorResponse (line 39) | interface ValidationErrorResponse { function getCorruptedImageDataUrl (line 45) | function getCorruptedImageDataUrl(): string { function getTooLargeImageDataUrl (line 50) | function getTooLargeImageDataUrl(): string { function getInvalidBase64DataUrl (line 56) | function getInvalidBase64DataUrl(): string { FILE: packages/api/src/user/tests/UserProfileTextValidation.test.tsx type ValidationErrorResponse (line 28) | interface ValidationErrorResponse { FILE: packages/api/src/user/tests/UserRelationshipStateTransitions.test.tsx function markUserDeleted (line 39) | async function markUserDeleted(harness: ApiTestHarness, userId: string):... FILE: packages/api/src/user/tests/UserSettingsGuildFolders.test.tsx type SettingsResponse (line 266) | type SettingsResponse = { type SettingsResponse (line 304) | type SettingsResponse = { type SettingsResponse (line 350) | type SettingsResponse = { FILE: packages/api/src/user/tests/UserTestUtils.tsx function fetchUserMe (line 34) | async function fetchUserMe( function fetchUser (line 48) | async function fetchUser( function fetchUserProfile (line 63) | async function fetchUserProfile( function updateUserProfile (line 78) | async function updateUserProfile( function updateUserSettings (line 100) | async function updateUserSettings( function fetchUserSettings (line 116) | async function fetchUserSettings( function checkUsernameDiscriminatorAvailability (line 130) | async function checkUsernameDiscriminatorAvailability( function disableAccount (line 146) | async function disableAccount(harness: ApiTestHarness, token: string, pa... function deleteAccount (line 150) | async function deleteAccount(harness: ApiTestHarness, token: string, pas... function setUserNote (line 154) | async function setUserNote( function fetchUserNote (line 163) | async function fetchUserNote( function preloadMessages (line 178) | async function preloadMessages( function requestBulkMessageDelete (line 194) | async function requestBulkMessageDelete( function cancelBulkMessageDelete (line 202) | async function cancelBulkMessageDelete(harness: ApiTestHarness, token: s... function updateGuildSettings (line 206) | async function updateGuildSettings( function expectDataExists (line 222) | async function expectDataExists( function triggerDeletionWorker (line 257) | async function triggerDeletionWorker(harness: ApiTestHarness): Promise<{... function setPendingDeletionAt (line 263) | async function setPendingDeletionAt(harness: ApiTestHarness, userId: str... function waitForDeletionCompletion (line 272) | async function waitForDeletionCompletion( function assertUserDisabled (line 300) | function assertUserDisabled(user: UserPrivateResponse): void { function assertUserNotDisabled (line 304) | function assertUserNotDisabled(user: UserPrivateResponse): void { type UserProfileUpdateResult (line 308) | interface UserProfileUpdateResult { function updateAvatar (line 315) | async function updateAvatar( function updateBanner (line 326) | async function updateBanner( type VerifyAssetResponse (line 337) | interface VerifyAssetResponse { function verifyUserAvatarInS3 (line 343) | async function verifyUserAvatarInS3(harness: ApiTestHarness, userId: str... function verifyUserBannerInS3 (line 347) | async function verifyUserBannerInS3(harness: ApiTestHarness, userId: str... function grantPremium (line 351) | async function grantPremium(harness: ApiTestHarness, userId: string, pre... function subscribePush (line 358) | async function subscribePush( function listPushSubscriptions (line 377) | async function listPushSubscriptions( function deletePushSubscription (line 384) | async function deletePushSubscription( FILE: packages/api/src/user/tests/UserUsernameCaseUpdate.test.tsx function runCaseUpdateTest (line 25) | async function runCaseUpdateTest( FILE: packages/api/src/user/utils/GuildFolderUtils.tsx function removeGuildFromUserFolders (line 26) | async function removeGuildFromUserFolders(params: { FILE: packages/api/src/utils/AgeUtils.tsx function calculateAge (line 20) | function calculateAge(dateOfBirth: {year: number; month: number; day: nu... function isUserAdult (line 39) | function isUserAdult(dateOfBirth?: {year: number; month: number; day: nu... FILE: packages/api/src/utils/AttachmentDecay.tsx type AttachmentDecayInput (line 22) | interface AttachmentDecayInput { type AttachmentDecayResult (line 29) | interface AttachmentDecayResult { constant DEFAULT_DECAY_CONSTANTS (line 35) | const DEFAULT_DECAY_CONSTANTS = { constant DEFAULT_RENEWAL_CONSTANTS (line 45) | const DEFAULT_RENEWAL_CONSTANTS = { function toMb (line 54) | function toMb(sizeBytes: bigint | number): number { function computeDecay (line 59) | function computeDecay({ constant MS_PER_DAY (line 96) | const MS_PER_DAY = ms('1 day'); function computeRenewalWindowDays (line 98) | function computeRenewalWindowDays( function computeRenewalThresholdDays (line 117) | function computeRenewalThresholdDays( function computeCost (line 132) | function computeCost({ function getExpiryBucket (line 146) | function getExpiryBucket(expiresAt: Date): number { function extendExpiry (line 154) | function extendExpiry(currentExpiry: Date | null, newlyComputed: Date): ... function maybeRenewExpiry (line 159) | function maybeRenewExpiry({ FILE: packages/api/src/utils/AuditSerializationUtils.tsx function serializeGuildForAudit (line 26) | function serializeGuildForAudit(guild: Guild): Record { function serializeChannelForAudit (line 60) | function serializeChannelForAudit(channel: Channel): Record; constant CUSTOM_EMOJI_MARKDOWN_REGEX (line 37) | const CUSTOM_EMOJI_MARKDOWN_REGEX = /<(a)?:([^:]+):(\d+)>/g; constant CUSTOM_EMOJI_MARKDOWN_REGEX_GLOBAL (line 38) | const CUSTOM_EMOJI_MARKDOWN_REGEX_GLOBAL = new RegExp(CUSTOM_EMOJI_MARKD... type SanitizeCustomEmojisParams (line 40) | interface SanitizeCustomEmojisParams { type EmojiMatch (line 52) | interface EmojiMatch { type CodeBlock (line 60) | interface CodeBlock { function sanitizeCustomEmojis (line 65) | async function sanitizeCustomEmojis(params: SanitizeCustomEmojisParams):... function parseEscapedContexts (line 115) | function parseEscapedContexts(content: string): Array { function collectEmojiMatches (line 135) | function collectEmojiMatches(content: string, isInEscapedContext: (index... function checkUserGlobalExpressions (line 156) | async function checkUserGlobalExpressions( type EmojiLookupResult (line 166) | interface EmojiLookupResult { function batchFetchEmojis (line 172) | async function batchFetchEmojis( type Replacement (line 197) | interface Replacement { function determineReplacements (line 203) | async function determineReplacements(params: { function shouldReplaceEmoji (line 239) | async function shouldReplaceEmoji(params: { function resolvePackAccessStatus (line 273) | async function resolvePackAccessStatus( function applyReplacements (line 281) | function applyReplacements(content: string, replacements: Array(values: Array | Se... function toSortedIdArray (line 37) | function toSortedIdArray( FILE: packages/api/src/utils/InviteUtils.tsx function getInvitePattern (line 25) | function getInvitePattern(): RegExp { function findInvites (line 42) | function findInvites(content: string | null): Array { function findInvite (line 63) | function findInvite(content: string | null): string | null { FILE: packages/api/src/utils/IpRangeUtils.tsx type ParsedBase (line 24) | interface ParsedBase { type ParsedIpSingle (line 29) | interface ParsedIpSingle extends ParsedBase { type ParsedIpRange (line 34) | interface ParsedIpRange extends ParsedBase { type IpBanEntry (line 41) | type IpBanEntry = ParsedIpSingle | ParsedIpRange; constant BIT_LENGTHS (line 43) | const BIT_LENGTHS: Record = { function bufferToBigInt (line 48) | function bufferToBigInt(bytes: Buffer): bigint { function formatNormalizedAddress (line 56) | function formatNormalizedAddress(family: IpAddressFamily, bytes: Buffer)... type ParsedIP (line 71) | interface ParsedIP { type ParsedCIDR (line 77) | interface ParsedCIDR { function parseRange (line 83) | function parseRange(value: string): ParsedIpRange | null { function parseSingle (line 108) | function parseSingle(value: string): ParsedIpSingle | null { function parseIP (line 125) | function parseIP(value: string): ParsedIP | null { function resolveMappedIpv4 (line 155) | function resolveMappedIpv4(parsed: ParsedIP): {family: IpAddressFamily; ... function extractMappedIpv4 (line 163) | function extractMappedIpv4(bytes: Buffer): Buffer | null { function convertEmbeddedIpv4 (line 175) | function convertEmbeddedIpv4(value: string): string | null { function parseIPv4 (line 188) | function parseIPv4(ip: string): Buffer | null { function parseIPv6 (line 203) | function parseIPv6(ip: string): Buffer | null { function parseCIDR (line 257) | function parseCIDR(cidr: string): ParsedCIDR | null { function parseIpBanEntry (line 310) | function parseIpBanEntry(value: string): IpBanEntry | null { function tryParseSingleIp (line 314) | function tryParseSingleIp(value: string): ParsedIpSingle | null { function isValidIpOrRange (line 319) | function isValidIpOrRange(value: string): boolean { FILE: packages/api/src/utils/IpUtils.tsx constant REVERSE_DNS_CACHE_TTL_SECONDS (line 28) | const REVERSE_DNS_CACHE_TTL_SECONDS = seconds('1 day'); constant REVERSE_DNS_CACHE_PREFIX (line 29) | const REVERSE_DNS_CACHE_PREFIX = 'reverse-dns:'; function lookupGeoip (line 33) | async function lookupGeoip(input: string | Request): Promise { function getIpAddressReverse (line 44) | async function getIpAddressReverse(ip: string, cacheService?: ICacheServ... function getLocationLabelFromIp (line 66) | async function getLocationLabelFromIp(ip: string): Promise { FILE: packages/api/src/utils/LosslessJsonParser.tsx constant MAX_SAFE_INTEGER_DECIMAL (line 27) | const MAX_SAFE_INTEGER_DECIMAL = Number.MAX_SAFE_INTEGER.toString(); function isDigit (line 29) | function isDigit(char: string): boolean { function isValidJsonIntegerToken (line 33) | function isValidJsonIntegerToken(token: string): boolean { function isUnsafeIntegerToken (line 42) | function isUnsafeIntegerToken(token: string): boolean { function coerceUnsafeIntegersToStrings (line 53) | function coerceUnsafeIntegersToStrings(jsonText: string): string { function parseJsonPreservingLargeIntegers (line 124) | function parseJsonPreservingLargeIntegers(jsonText: string): unknown { FILE: packages/api/src/utils/PasswordUtils.tsx constant TEST_ARGON2_OPTIONS (line 23) | const TEST_ARGON2_OPTIONS: argon2.Options = { function hashPassword (line 29) | async function hashPassword(password: string): Promise { function verifyPassword (line 34) | async function verifyPassword({ FILE: packages/api/src/utils/PermissionUtils.tsx type PermissionsDiff (line 26) | interface PermissionsDiff { function computePermissionsDiff (line 31) | function computePermissionsDiff(oldPermissions: bigint, newPermissions: ... function requirePermission (line 49) | async function requirePermission( function hasPermission (line 82) | async function hasPermission( FILE: packages/api/src/utils/RandomUtils.tsx constant RANDOM_STRING_ALPHABET (line 22) | const RANDOM_STRING_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn... function randomString (line 24) | function randomString(length: number) { FILE: packages/api/src/utils/RegexUtils.tsx function escapeRegex (line 20) | function escapeRegex(str: string) { FILE: packages/api/src/utils/RequestPathUtils.tsx constant VERSION_PATTERN (line 20) | const VERSION_PATTERN = /^\/v\d+/; function stripApiPrefix (line 22) | function stripApiPrefix(path: string): string { function normalizeRequestPath (line 50) | function normalizeRequestPath(path: string): string { FILE: packages/api/src/utils/StringUtils.tsx function parseString (line 23) | function parseString(value: string, maxLength: number) { FILE: packages/api/src/utils/SudoCookieUtils.tsx constant SUDO_COOKIE_PREFIX (line 26) | const SUDO_COOKIE_PREFIX = '__flx_sudo'; constant SUDO_COOKIE_MAX_AGE (line 28) | const SUDO_COOKIE_MAX_AGE = seconds('5 minutes'); function getCookieDomain (line 30) | function getCookieDomain(): string { function getSudoCookieOptions (line 51) | function getSudoCookieOptions() { function sudoCookieName (line 62) | function sudoCookieName(userId?: string | number): string { function setSudoCookie (line 69) | function setSudoCookie(ctx: Context, token: string, userId?: st... function getSudoCookie (line 76) | function getSudoCookie(ctx: Context, userId?: string | number):... FILE: packages/api/src/utils/TotpGenerator.tsx type HashAlgorithm (line 22) | type HashAlgorithm = 'SHA-1' | 'SHA-256' | 'SHA-512'; type TotpOptions (line 23) | interface TotpOptions { class TotpGenerator (line 31) | class TotpGenerator { method constructor (line 41) | constructor(secretBase32: string, options: TotpOptions = {}) { method normalizeBase32 (line 77) | private static normalizeBase32(input: string): string { method base32ToBytes (line 85) | private static base32ToBytes(base32: string): Uint8Array { method getCounter (line 112) | private getCounter(nowMs: number): bigint { method encodeCounter (line 120) | private encodeCounter(counter: bigint): ArrayBuffer { method otpForCounter (line 130) | private async otpForCounter(counter: bigint): Promise { method generateTotp (line 149) | async generateTotp(): Promise> { method validateTotp (line 163) | async validateTotp(code: string): Promise { FILE: packages/api/src/utils/UnfurlerUtils.tsx constant MARKETING_PATH_PREFIXES (line 26) | const MARKETING_PATH_PREFIXES = ['/channels/', '/theme/']; function normalizeHostname (line 28) | function normalizeHostname(hostname: string | undefined) { function getMarketingHostname (line 33) | function getMarketingHostname() { function getWebAppHostname (line 43) | function getWebAppHostname() { function getExcludedHostnames (line 52) | function getExcludedHostnames(): Set { function idnaEncodeURL (line 69) | function idnaEncodeURL(url: string) { function isValidURL (line 83) | function isValidURL(url: string) { function isFluxerAppExcludedURL (line 92) | function isFluxerAppExcludedURL(url: string) { function extractURLs (line 104) | function extractURLs(inputText: string) { FILE: packages/api/src/utils/UrlSanitizer.tsx function sanitizeOptionalAbsoluteUrl (line 20) | function sanitizeOptionalAbsoluteUrl(url: string | null | undefined): st... function sanitizeOptionalAbsoluteUrlOrNull (line 37) | function sanitizeOptionalAbsoluteUrlOrNull(url: string | null | undefine... FILE: packages/api/src/utils/UserAgentUtils.tsx type UserAgentInfo (line 23) | interface UserAgentInfo { constant UNKNOWN_LABEL (line 28) | const UNKNOWN_LABEL = 'Unknown'; function formatName (line 30) | function formatName(name?: string | null): string { function parseUserAgentSafe (line 35) | function parseUserAgentSafe(userAgentRaw: string): UserAgentInfo { function resolveSessionClientInfo (line 51) | function resolveSessionClientInfo(args: {userAgent: string | null; isDes... FILE: packages/api/src/utils/UserPermissionUtils.tsx type UserPermissionRepository (line 34) | type UserPermissionRepository = Pick, targetGuildIds: Array<... method getMutualFriends (line 280) | async getMutualFriends({userId, targetId}: {userId: UserID; targetId: ... method getMutualGuildIds (line 293) | async getMutualGuildIds({userId, targetId}: {userId: UserID; targetId:... FILE: packages/api/src/utils/UsernameGenerator.tsx function generateRandomUsername (line 22) | function generateRandomUsername(): string { FILE: packages/api/src/utils/UsernameSuggestionUtils.tsx constant MAX_USERNAME_LENGTH (line 23) | const MAX_USERNAME_LENGTH = 32; function sanitizeDisplayName (line 25) | function sanitizeDisplayName(globalName: string): string | null { function deriveUsernameFromDisplayName (line 45) | function deriveUsernameFromDisplayName(globalName: string): string | null { function generateUsernameSuggestions (line 49) | function generateUsernameSuggestions(globalName: string): Array { FILE: packages/api/src/utils/featureUtils.tsx function areFeatureSetsEqual (line 20) | function areFeatureSetsEqual( FILE: packages/api/src/utils/tests/BucketUtils.test.tsx constant TEN_DAYS_MS (line 24) | const TEN_DAYS_MS = 10 * 24 * 60 * 60 * 1000; function createSnowflake (line 26) | function createSnowflake(timestamp: number): bigint { FILE: packages/api/src/voice/IVoiceRepository.tsx type IVoiceRepository (line 22) | interface IVoiceRepository { FILE: packages/api/src/voice/VoiceAvailabilityService.tsx type VoiceAccessContext (line 30) | interface VoiceAccessContext { class VoiceAvailabilityService (line 36) | class VoiceAvailabilityService { method constructor (line 39) | constructor(private topology: VoiceTopology) {} method getRegionMetadata (line 41) | getRegionMetadata(): Array { method isRegionAccessible (line 45) | isRegionAccessible(region: VoiceRegionRecord, context: VoiceAccessCont... method isServerAccessible (line 94) | isServerAccessible(server: VoiceServerRecord, context: VoiceAccessCont... method getAvailableRegions (line 147) | getAvailableRegions(context: VoiceAccessContext): Array { method resolveLivekitEndpoint (line 120) | private resolveLivekitEndpoint(): string { FILE: packages/api/src/voice/VoiceModel.tsx type VoiceRestriction (line 22) | interface VoiceRestriction { type VoiceRegionRecord (line 29) | interface VoiceRegionRecord { type VoiceServerRecord (line 41) | interface VoiceServerRecord { type VoiceRegionWithServers (line 53) | interface VoiceRegionWithServers extends VoiceRegionRecord { type VoiceRegionMetadata (line 57) | interface VoiceRegionMetadata { type VoiceRegionAvailability (line 68) | interface VoiceRegionAvailability extends VoiceRegionMetadata { FILE: packages/api/src/voice/VoiceReconciliationWorker.tsx type GatewayVoiceStateEntry (line 30) | interface GatewayVoiceStateEntry { type GatewayPendingJoinEntry (line 36) | interface GatewayPendingJoinEntry { type VoiceReconciliationWorkerOptions (line 43) | interface VoiceReconciliationWorkerOptions { type RoomReconciliationResult (line 54) | interface RoomReconciliationResult { constant DEFAULT_INTERVAL_MS (line 62) | const DEFAULT_INTERVAL_MS = 60_000; constant DEFAULT_STAGGER_DELAY_MS (line 63) | const DEFAULT_STAGGER_DELAY_MS = 100; constant ROOM_KEY_PREFIX (line 64) | const ROOM_KEY_PREFIX = 'voice:room:server:'; class VoiceReconciliationWorker (line 66) | class VoiceReconciliationWorker { method constructor (line 78) | constructor(options: VoiceReconciliationWorkerOptions) { method start (line 89) | start(): void { method stop (line 104) | stop(): void { method reconcile (line 112) | async reconcile(): Promise { method runReconciliation (line 167) | private runReconciliation(): void { method discoverActiveRooms (line 183) | private async discoverActiveRooms(): Promise> { method reconcileRoom (line 206) | private async reconcileRoom(roomName: string): Promise(value: unknown): Array { constant LIST_REGIONS_CQL (line 57) | const LIST_REGIONS_CQL = VoiceRegions.selectCql(); constant GET_REGION_CQL (line 59) | const GET_REGION_CQL = VoiceRegions.selectCql({ constant LIST_SERVERS_FOR_REGION_CQL (line 63) | const LIST_SERVERS_FOR_REGION_CQL = VoiceServers.selectCql({ constant GET_SERVER_CQL (line 67) | const GET_SERVER_CQL = VoiceServers.selectCql({ class VoiceRepository (line 71) | class VoiceRepository implements IVoiceRepository { method listRegions (line 72) | async listRegions(): Promise> { method listRegionsWithServers (line 77) | async listRegionsWithServers(): Promise> { method getRegion (line 92) | async getRegion(id: string): Promise { method getRegionWithServers (line 97) | async getRegionWithServers(id: string): Promise { method deleteRegion (line 125) | async deleteRegion(regionId: string): Promise { method createRegion (line 137) | async createRegion(region: Omit> { method getServer (line 157) | async getServer(regionId: string, serverId: string): Promise { method deleteServer (line 192) | async deleteServer(regionId: string, serverId: string): Promise { method mapRegionRow (line 196) | private mapRegionRow(row: VoiceRegionRow): VoiceRegionRecord { method mapServerRow (line 215) | private mapServerRow(row: VoiceServerRow): VoiceServerRecord { FILE: packages/api/src/voice/VoiceService.tsx type GetVoiceTokenParams (line 39) | interface GetVoiceTokenParams { type VoicePermissions (line 53) | interface VoicePermissions { type UpdateVoiceStateParams (line 59) | interface UpdateVoiceStateParams { class VoiceService (line 68) | class VoiceService { method constructor (line 69) | constructor( method getVoiceToken (line 78) | async getVoiceToken(params: GetVoiceTokenParams): Promise<{ method resolvePinnedServer (line 277) | private async resolvePinnedServer({ method selectServerForRegion (line 314) | private selectServerForRegion({ method updateVoiceState (line 345) | async updateVoiceState(params: UpdateVoiceStateParams): Promise { method updateParticipant (line 365) | async updateParticipant(params: { method disconnectParticipant (line 433) | async disconnectParticipant(params: { method updateParticipantPermissions (line 456) | async updateParticipantPermissions(params: { method disconnectChannel (line 485) | async disconnectChannel(params: { FILE: packages/api/src/voice/VoiceTopology.tsx type Subscriber (line 26) | type Subscriber = () => void; class VoiceTopology (line 28) | class VoiceTopology { method constructor (line 39) | constructor( method initialize (line 44) | async initialize(): Promise { method getDefaultRegion (line 73) | getDefaultRegion(): VoiceRegionRecord | null { method getDefaultRegionId (line 80) | getDefaultRegionId(): string | null { method getRegion (line 84) | getRegion(regionId: string): VoiceRegionRecord | null { method getAllRegions (line 88) | getAllRegions(): Array { method getRegionMetadataList (line 92) | getRegionMetadataList(): Array { method getServersForRegion (line 105) | getServersForRegion(regionId: string): Array { method getServer (line 109) | getServer(regionId: string, serverId: string): VoiceServerRecord | null { method registerSubscriber (line 117) | registerSubscriber(subscriber: Subscriber): void { method unregisterSubscriber (line 121) | unregisterSubscriber(subscriber: Subscriber): void { method getNextServer (line 125) | getNextServer(regionId: string): VoiceServerRecord | null { method reload (line 137) | private async reload(): Promise { method recalculateServerRotation (line 202) | private recalculateServerRotation(): void { method recalculateDefaultRegion (line 214) | private recalculateDefaultRegion(): void { method notifySubscribers (line 233) | private notifySubscribers(): void { method shutdown (line 243) | shutdown(): void { FILE: packages/api/src/voice/tests/VoiceAvailabilityService.test.tsx function createMockRegion (line 28) | function createMockRegion(overrides: Partial = {}): V... function createMockServer (line 48) | function createMockServer(overrides: Partial = {}): V... function createMockTopology (line 68) | function createMockTopology( FILE: packages/api/src/voice/tests/VoiceCallEligibility.test.tsx function setupUsersWithMutualGuild (line 52) | async function setupUsersWithMutualGuild() { FILE: packages/api/src/voice/tests/VoiceCallRinging.test.tsx type ErrorResponse (line 36) | interface ErrorResponse { function setupUsersWithMutualGuild (line 56) | async function setupUsersWithMutualGuild() { function setupGroupDmUsers (line 70) | async function setupGroupDmUsers() { FILE: packages/api/src/voice/tests/VoiceCallUpdate.test.tsx function setupUsersWithMutualGuild (line 49) | async function setupUsersWithMutualGuild() { FILE: packages/api/src/voice/tests/VoiceRegionSelection.test.tsx function createRegionAvailability (line 24) | function createRegionAvailability({ FILE: packages/api/src/voice/tests/VoiceTestUtils.tsx function createTestAccount (line 36) | async function createTestAccount(harness: ApiTestHarness): Promise { method handleHardBounceOrComplaint (line 145) | private async handleHardBounceOrComplaint(event: SweegoEvent): Promise... FILE: packages/api/src/webhook/WebhookController.tsx function validateWebhookMessagePayload (line 56) | function validateWebhookMessagePayload(data: unknown): WebhookMessageReq... function parseWebhookJsonMessageData (line 64) | async function parseWebhookJsonMessageData(ctx: Context): Promi... function parseWebhookMultipartMessageData (line 75) | async function parseWebhookMultipartMessageData( function WebhookController (line 120) | function WebhookController(app: HonoApp) { FILE: packages/api/src/webhook/WebhookModel.tsx function mapWebhookToTokenResponse (line 27) | function mapWebhookToTokenResponse(webhook: Webhook): z.infer { method findByToken (line 62) | async findByToken(webhookId: WebhookID, token: WebhookToken): Promise<... method create (line 70) | async create(data: { method update (line 128) | async update( method delete (line 211) | async delete(webhookId: WebhookID): Promise { method listByGuild (line 245) | async listByGuild(guildId: GuildID): Promise> { method listByChannel (line 258) | async listByChannel(channelId: ChannelID): Promise> { method countByGuild (line 273) | async countByGuild(guildId: GuildID): Promise { method countByChannel (line 278) | async countByChannel(channelId: ChannelID): Promise { FILE: packages/api/src/webhook/WebhookRequestService.tsx type WebhookExecutionResponse (line 49) | type WebhookExecutionResponse = MessageResponse | null; type WebhookListGuildParams (line 51) | interface WebhookListGuildParams { type WebhookListChannelParams (line 57) | interface WebhookListChannelParams { type WebhookCreateParams (line 63) | interface WebhookCreateParams { type WebhookGetByUserParams (line 71) | interface WebhookGetByUserParams { type WebhookGetByTokenParams (line 77) | interface WebhookGetByTokenParams { type WebhookGetParams (line 83) | type WebhookGetParams = WebhookGetByUserParams | WebhookGetByTokenParams; type WebhookUpdateByUserParams (line 85) | interface WebhookUpdateByUserParams { type WebhookUpdateByTokenParams (line 93) | interface WebhookUpdateByTokenParams { type WebhookUpdateParams (line 100) | type WebhookUpdateParams = WebhookUpdateByUserParams | WebhookUpdateByTo... type WebhookDeleteByUserParams (line 102) | interface WebhookDeleteByUserParams { type WebhookDeleteByTokenParams (line 108) | interface WebhookDeleteByTokenParams { type WebhookDeleteParams (line 113) | type WebhookDeleteParams = WebhookDeleteByUserParams | WebhookDeleteByTo... type WebhookExecuteParams (line 115) | interface WebhookExecuteParams { type WebhookExecuteGitHubParams (line 123) | interface WebhookExecuteGitHubParams { type WebhookExecuteSentryParams (line 132) | interface WebhookExecuteSentryParams { type WebhookExecuteSlackParams (line 140) | interface WebhookExecuteSlackParams { type LiveKitWebhookParams (line 147) | interface LiveKitWebhookParams { type SweegoWebhookParams (line 152) | interface SweegoWebhookParams { class WebhookRequestService (line 159) | class WebhookRequestService { method constructor (line 162) | constructor( method listGuildWebhooks (line 171) | async listGuildWebhooks(params: WebhookListGuildParams): Promise { method executeWebhook (line 269) | async executeWebhook(params: WebhookExecuteParams): Promise |... method serializeWebhookForAudit (line 581) | private serializeWebhookForAudit(webhook: Webhook): Record | null, ke... FILE: packages/api/src/webhook/tests/GitHubCheckTransformer.test.tsx function createBaseSender (line 29) | function createBaseSender() { function createBaseRepository (line 38) | function createBaseRepository() { FILE: packages/api/src/webhook/tests/GitHubCommitTransformer.test.tsx function createBaseSender (line 28) | function createBaseSender() { function createBaseRepository (line 37) | function createBaseRepository() { FILE: packages/api/src/webhook/tests/GitHubIssueTransformer.test.tsx function createBaseSender (line 24) | function createBaseSender() { function createBaseRepository (line 33) | function createBaseRepository() { function createBaseIssue (line 42) | function createBaseIssue() { FILE: packages/api/src/webhook/tests/GitHubPullRequestTransformer.test.tsx function createBaseSender (line 28) | function createBaseSender() { function createBaseRepository (line 37) | function createBaseRepository() { function createBasePullRequest (line 46) | function createBasePullRequest() { FILE: packages/api/src/webhook/tests/GitHubPushTransformer.test.tsx function createBaseSender (line 24) | function createBaseSender() { function createBaseRepository (line 33) | function createBaseRepository() { FILE: packages/api/src/webhook/tests/GitHubRepositoryTransformer.test.tsx function createBaseSender (line 31) | function createBaseSender() { function createBaseRepository (line 40) | function createBaseRepository() { FILE: packages/api/src/webhook/tests/GitHubTransformer.test.tsx function createBaseSender (line 24) | function createBaseSender() { function createBaseRepository (line 33) | function createBaseRepository() { FILE: packages/api/src/webhook/tests/SentryTransformer.test.tsx function createBaseIssue (line 24) | function createBaseIssue(overrides: Partial[n... type SlackAttachmentField (line 28) | type SlackAttachmentField = NonNullable[number]; type WebhookEmbed (line 29) | type WebhookEmbed = NonNullable[number]; type WebhookEmbedField (line 30) | type WebhookEmbedField = NonNullable... function transformSlackWebhookRequest (line 32) | function transformSlackWebhookRequest(payload: SlackWebhookRequest): Web... function transformSlackAttachmentToEmbed (line 49) | function transformSlackAttachmentToEmbed(att: SlackAttachment): WebhookE... function toEmbedField (line 93) | function toEmbedField(field: SlackAttachmentField): WebhookEmbedField | ... function buildAttachmentDescription (line 103) | function buildAttachmentDescription(att: SlackAttachment): string | unde... function safeUrl (line 116) | function safeUrl(value: unknown): string | undefined { function safeHexColor (line 124) | function safeHexColor(value: unknown): number | undefined { FILE: packages/api/src/words/Words.tsx function getTails (line 30) | function getTails(): Array { function getScales (line 37) | function getScales(): Array { function generateConnectionId (line 44) | function generateConnectionId(): string { function initWords (line 54) | function initWords(): void { function parseWordsFile (line 60) | function parseWordsFile(filePath: string): Array { FILE: packages/api/src/worker/CronScheduler.tsx type CronDefinition (line 24) | interface CronDefinition { function parseCronField (line 32) | function parseCronField(field: string, min: number, max: number): Array<... function matchesCronExpression (line 71) | function matchesCronExpression(expression: string, date: Date): boolean { class CronScheduler (line 100) | class CronScheduler { method constructor (line 106) | constructor(queue: JetStreamWorkerQueue, logger: LoggerInterface) { method upsert (line 111) | upsert(id: string, taskType: string, payload: WorkerJobPayload, cronEx... method start (line 121) | start(): void { method stop (line 135) | stop(): void { method tick (line 142) | private async tick(): Promise { FILE: packages/api/src/worker/DirectWorkerService.tsx type DirectWorkerServiceOptions (line 25) | interface DirectWorkerServiceOptions { class DirectWorkerService (line 30) | class DirectWorkerService implements IWorkerService { method constructor (line 34) | constructor(options: DirectWorkerServiceOptions) { method addJob (line 39) | async addJob( method cancelJob (line 57) | async cancelJob(jobId: string): Promise { method retryDeadLetterJob (line 72) | async retryDeadLetterJob(jobId: string): Promise { FILE: packages/api/src/worker/HttpWorkerQueue.tsx function getQueueBaseUrl (line 26) | function getQueueBaseUrl(): string { function getRequestHeaders (line 33) | function getRequestHeaders(): Record { function getAuthHeaders (line 41) | function getAuthHeaders(): Record | undefined { type QueueJob (line 48) | interface QueueJob { type LeasedQueueJob (line 61) | interface LeasedQueueJob { class HttpWorkerQueue (line 67) | class HttpWorkerQueue { method createTimeoutController (line 68) | private createTimeoutController(): AbortController { method fetchWithTimeout (line 77) | private async fetchWithTimeout(input: string | URL | Request, init?: R... method enqueue (line 93) | async enqueue( method dequeue (line 140) | async dequeue(taskTypes: Array, limit = 1): Promise { method extendVisibility (line 218) | async extendVisibility(receipt: string, additionalMs: number): Promise... method fail (line 242) | async fail(receipt: string, error: string): Promise { method cancelJob (line 266) | async cancelJob(jobId: string): Promise { method retryDeadLetterJob (line 284) | async retryDeadLetterJob(jobId: string): Promise { FILE: packages/api/src/worker/JetStreamWorkerQueue.tsx constant STREAM_NAME (line 26) | const STREAM_NAME = 'JOBS'; constant CONSUMER_NAME (line 27) | const CONSUMER_NAME = 'workers'; constant SUBJECT_PREFIX (line 28) | const SUBJECT_PREFIX = 'jobs.'; constant MAX_AGE_MS (line 29) | const MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000; constant MAX_DELIVER (line 30) | const MAX_DELIVER = 5; constant ACK_WAIT_MS (line 31) | const ACK_WAIT_MS = 30_000; constant MAX_ACK_PENDING (line 32) | const MAX_ACK_PENDING = 100; class JetStreamWorkerQueue (line 34) | class JetStreamWorkerQueue { method constructor (line 39) | constructor(connectionManager: JetStreamConnectionManager) { method ensureStream (line 43) | async ensureStream(): Promise { method ensureConsumer (line 63) | async ensureConsumer(): Promise { method ensureInfrastructure (line 83) | async ensureInfrastructure(): Promise { method enqueue (line 88) | async enqueue( method getStreamName (line 126) | getStreamName(): string { method getConsumerName (line 130) | getConsumerName(): string { method getConnectionManager (line 134) | getConnectionManager(): JetStreamConnectionManager { FILE: packages/api/src/worker/WorkerContext.tsx function setWorkerDependencies (line 28) | function setWorkerDependencies(dependencies: WorkerDependencies): void { function setWorkerDependenciesForTest (line 32) | function setWorkerDependenciesForTest(dependencies: Partial { FILE: packages/api/src/worker/WorkerMetricsCollector.tsx type WorkerMetricsCollectorOptions (line 29) | interface WorkerMetricsCollectorOptions { class WorkerMetricsCollector (line 39) | class WorkerMetricsCollector { method constructor (line 50) | constructor(options: WorkerMetricsCollectorOptions) { method start (line 60) | start(): void { method stop (line 76) | stop(): void { method collectAndReport (line 84) | private async collectAndReport(): Promise { method collectKVQueueSizes (line 94) | private async collectKVQueueSizes(): Promise<{ method reportKVQueueSizes (line 115) | private reportKVQueueSizes(sizes: { method collectKVConnectionStatus (line 139) | private async collectKVConnectionStatus(): Promise { method reportKVHealthMetrics (line 149) | private reportKVHealthMetrics(isConnected: boolean): void { FILE: packages/api/src/worker/WorkerRunner.tsx type WorkerRunnerOptions (line 29) | interface WorkerRunnerOptions { class WorkerRunner (line 36) | class WorkerRunner { method constructor (line 45) | constructor(options: WorkerRunnerOptions) { method start (line 53) | async start(): Promise { method stop (line 76) | async stop(): Promise { method processMessages (line 91) | private async processMessages(): Promise { method processJob (line 122) | private async processJob(taskType: string, msg: JsMsg): Promise( method cancelJob (line 50) | async cancelJob(_jobId: string): Promise { method retryDeadLetterJob (line 54) | async retryDeadLetterJob(_jobId: string): Promise { FILE: packages/api/src/worker/executors/ScheduledMessageExecutor.tsx type WorkerLogger (line 27) | interface WorkerLogger { type SendScheduledMessageParams (line 34) | interface SendScheduledMessageParams { class ScheduledMessageExecutor (line 40) | class ScheduledMessageExecutor { method constructor (line 41) | constructor( method execute (line 47) | async execute(params: SendScheduledMessageParams): Promise { method markInvalid (line 119) | private async markInvalid(userId: UserID, scheduledMessageId: MessageI... method parseUserID (line 132) | private parseUserID(value: string): UserID | null { method parseMessageID (line 140) | private parseMessageID(value: string): MessageID | null { method parseScheduledAt (line 148) | private parseScheduledAt(value: string): Date | null { FILE: packages/api/src/worker/executors/SystemDmExecutor.tsx type WorkerLogger (line 28) | interface WorkerLogger { type SendSystemDmParams (line 35) | interface SendSystemDmParams { class SystemDmExecutor (line 39) | class SystemDmExecutor { method constructor (line 43) | constructor( method execute (line 61) | async execute(params: SendSystemDmParams): Promise { method ensureDmChannel (line 146) | private async ensureDmChannel(recipientId: UserID, requestCache: Reque... method convertExcludedGuildIds (line 156) | private convertExcludedGuildIds(value?: ReadonlySet): Set { FILE: packages/api/src/worker/tasks/ExtractEmbeds.tsx type NormalizedEmbedAuthor (line 49) | interface NormalizedEmbedAuthor { type NormalizedEmbedField (line 55) | interface NormalizedEmbedField { type NormalizedEmbedMedia (line 61) | interface NormalizedEmbedMedia { type NormalizedEmbedChild (line 73) | interface NormalizedEmbedChild { type NormalizedEmbed (line 90) | interface NormalizedEmbed extends NormalizedEmbedChild { function normalizeEmbedAuthor (line 94) | function normalizeEmbedAuthor( function normalizeEmbedMedia (line 110) | function normalizeEmbedMedia(media?: MessageEmbed['image']): NormalizedE... function normalizeEmbedChildForComparison (line 128) | function normalizeEmbedChildForComparison(embed: MessageEmbed | MessageE... function normalizeEmbedForComparison (line 156) | function normalizeEmbedForComparison(embed: MessageEmbed): NormalizedEmb... function areEmbedsEquivalent (line 163) | function areEmbedsEquivalent(existingEmbeds: Array, newEmb... function partitionUrlsByCache (line 174) | async function partitionUrlsByCache( function unfurlUrls (line 195) | async function unfurlUrls( function buildOrderedEmbeds (line 222) | function buildOrderedEmbeds( function updateMessageEmbeds (line 240) | async function updateMessageEmbeds( type DispatchEmbedUpdateParams (line 267) | interface DispatchEmbedUpdateParams { function dispatchEmbedUpdate (line 277) | async function dispatchEmbedUpdate({ FILE: packages/api/src/worker/tasks/HarvestGuildData.tsx constant MESSAGE_BATCH_SIZE (line 47) | const MESSAGE_BATCH_SIZE = 100; constant MESSAGE_LIMIT_PER_CHANNEL (line 48) | const MESSAGE_LIMIT_PER_CHANNEL = 1000; constant INITIAL_PROGRESS (line 49) | const INITIAL_PROGRESS = 5; constant METADATA_PROGRESS (line 50) | const METADATA_PROGRESS = 25; constant MESSAGE_PROGRESS_MAX (line 51) | const MESSAGE_PROGRESS_MAX = 75; constant ZIP_PROGRESS (line 52) | const ZIP_PROGRESS = 90; constant COMPLETE_PROGRESS (line 53) | const COMPLETE_PROGRESS = 100; FILE: packages/api/src/worker/tasks/HarvestUserData.tsx type HarvestedMessage (line 64) | interface HarvestedMessage { type ChannelHarvestResult (line 71) | interface ChannelHarvestResult { type GuildMembershipEntry (line 76) | interface GuildMembershipEntry { type HarvestMessageResult (line 82) | interface HarvestMessageResult { type UserDataJsonParams (line 87) | interface UserDataJsonParams { type ArchiveParams (line 110) | interface ArchiveParams { type ArchiveResult (line 124) | interface ArchiveResult { constant CONCURRENT_MESSAGE_LIMIT (line 131) | const CONCURRENT_MESSAGE_LIMIT = 10; constant INITIAL_PROGRESS (line 132) | const INITIAL_PROGRESS = 5; constant MESSAGES_PROGRESS_MAX (line 133) | const MESSAGES_PROGRESS_MAX = 55; constant METADATA_PROGRESS (line 134) | const METADATA_PROGRESS = 60; constant ZIP_PROGRESS (line 135) | const ZIP_PROGRESS = 70; constant COMPLETE_PROGRESS (line 136) | const COMPLETE_PROGRESS = 100; constant ZIP_EXPIRY_MS (line 138) | const ZIP_EXPIRY_MS = ms('7 days'); function mapPayment (line 140) | function mapPayment(payment: Payment) { function mapOAuthApplication (line 156) | function mapOAuthApplication(app: Application) { function mapSecurityData (line 164) | function mapSecurityData(params: { function harvestMessages (line 177) | async function harvestMessages( function buildUserDataJson (line 274) | function buildUserDataJson(params: UserDataJsonParams) { function createAndUploadArchive (line 485) | async function createAndUploadArchive(params: ArchiveParams): Promise; constant BATCH_SIZE (line 71) | const BATCH_SIZE = 100; constant PROGRESS_TTL (line 72) | const PROGRESS_TTL = seconds('1 hour'); function requireSearchService (line 74) | function requireSearchService(service: T | null): T { function setProgress (line 81) | async function setProgress(kvClient: IKVProvider, progressKey: string, d... function reportInProgress (line 85) | async function reportInProgress( type PaginateAndIndexOptions (line 100) | interface PaginateAndIndexOptions { function paginateAndIndex (line 110) | async function paginateAndIndex(options: PaginateAndInde... type IndexHandler (line 133) | type IndexHandler = ( constant DISCOVERY_BATCH_SIZE (line 272) | const DISCOVERY_BATCH_SIZE = 50; constant INDEX_HANDLERS (line 315) | const INDEX_HANDLERS: Record = { FILE: packages/api/src/worker/tasks/SendScheduledMessage.tsx function sendScheduledMessage (line 36) | async function sendScheduledMessage(payload: unknown, helpers: WorkerTas... FILE: packages/api/src/worker/tasks/SendSystemDm.tsx function sendSystemDm (line 29) | async function sendSystemDm(payload: unknown, helpers: WorkerTaskHelpers... FILE: packages/api/src/worker/tasks/SyncDiscoveryIndex.tsx constant BATCH_SIZE (line 26) | const BATCH_SIZE = 50; FILE: packages/api/src/worker/tasks/tests/CsamScanConsumerWorker.test.tsx constant LOCK_KEY (line 34) | const LOCK_KEY = 'csam:scan:consumer:lock'; constant LOCK_TTL_SECONDS (line 35) | const LOCK_TTL_SECONDS = 5; constant QUEUE_KEY (line 36) | const QUEUE_KEY = 'csam:scan:queue'; function createQueueEntry (line 38) | function createQueueEntry(overrides: Partial = {}): ... FILE: packages/api/src/worker/tasks/utils/MessageDeletion.tsx function chunkArray (line 24) | function chunkArray(items: Array, chunkSize: number): Array; type CreateAppProxyAppOptions (line 47) | interface CreateAppProxyAppOptions { FILE: packages/app_proxy/src/AppServer.tsx function createAppServer (line 26) | function createAppServer(options: AppServerOptions): AppServerResult { FILE: packages/app_proxy/src/AppServerTypes.tsx type AppTelemetryOptions (line 26) | interface AppTelemetryOptions { type AppServerOptions (line 31) | interface AppServerOptions { type AppServerResult (line 41) | interface AppServerResult { type HonoEnv (line 46) | interface HonoEnv { FILE: packages/app_proxy/src/ErrorClassification.tsx function isExpectedError (line 20) | function isExpectedError(error: Error): boolean { FILE: packages/app_proxy/src/app_proxy/AppProxyMiddleware.tsx type ApplyAppProxyMiddlewareOptions (line 29) | interface ApplyAppProxyMiddlewareOptions { function applyAppProxyMiddleware (line 37) | function applyAppProxyMiddleware(options: ApplyAppProxyMiddlewareOptions... FILE: packages/app_proxy/src/app_proxy/AppProxyRoutes.tsx type RegisterAppProxyRoutesOptions (line 28) | interface RegisterAppProxyRoutesOptions { function registerAppProxyRoutes (line 37) | function registerAppProxyRoutes(options: RegisterAppProxyRoutesOptions):... FILE: packages/app_proxy/src/app_proxy/proxy/AssetsProxy.tsx type ProxyAssetsOptions (line 25) | interface ProxyAssetsOptions { function proxyAssets (line 30) | async function proxyAssets(c: Context, options: ProxyAssetsOptions): Pro... FILE: packages/app_proxy/src/app_proxy/proxy/ProxyRequest.tsx constant BLOCKED_PROXY_REQUEST_HEADERS (line 20) | const BLOCKED_PROXY_REQUEST_HEADERS = [ constant BLOCKED_PROXY_RESPONSE_HEADERS (line 35) | const BLOCKED_PROXY_RESPONSE_HEADERS = [ type NodeFetchRequestInit (line 47) | interface NodeFetchRequestInit extends RequestInit { type CreateProxyRequestHeadersOptions (line 51) | interface CreateProxyRequestHeadersOptions { type ForwardProxyRequestOptions (line 56) | interface ForwardProxyRequestOptions { function createProxyRequestHeaders (line 64) | function createProxyRequestHeaders(options: CreateProxyRequestHeadersOpt... function forwardProxyRequest (line 75) | async function forwardProxyRequest(options: ForwardProxyRequestOptions):... FILE: packages/app_proxy/src/app_server/AppServerMiddleware.tsx type ApplyAppServerMiddlewareOptions (line 26) | interface ApplyAppServerMiddlewareOptions { function applyAppServerMiddleware (line 34) | function applyAppServerMiddleware(options: ApplyAppServerMiddlewareOptio... FILE: packages/app_proxy/src/app_server/AppServerRoutes.tsx type RegisterAppServerRoutesOptions (line 27) | interface RegisterAppServerRoutesOptions { function registerAppServerRoutes (line 35) | function registerAppServerRoutes(options: RegisterAppServerRoutesOptions... FILE: packages/app_proxy/src/app_server/routes/SpaIndexRoute.tsx type SpaIndexRouteOptions (line 30) | interface SpaIndexRouteOptions { function createSpaIndexRoute (line 36) | function createSpaIndexRoute(app: Hono, options: SpaIn... FILE: packages/app_proxy/src/app_server/routes/SpaRoute.tsx type SpaRouteOptions (line 24) | interface SpaRouteOptions { function createSpaRoute (line 29) | function createSpaRoute(app: Hono, options: SpaRouteOp... function readStaticTextFile (line 75) | function readStaticTextFile(staticDir: string, filename: string): string... FILE: packages/app_proxy/src/app_server/utils/CSP.tsx constant CSP_HOSTS (line 23) | const CSP_HOSTS = { type CSPOptions (line 82) | interface CSPOptions { type SentryCSPConfig (line 96) | interface SentryCSPConfig { function generateNonce (line 100) | function generateNonce(): string { function buildSentryReportURI (line 104) | function buildSentryReportURI(config: SentryCSPConfig): string { function buildCSP (line 119) | function buildCSP(nonce: string, options?: CSPOptions): string { function buildFluxerCSPOptions (line 154) | function buildFluxerCSPOptions(config: SentryCSPConfig): CSPOptions { function buildFluxerCSP (line 176) | function buildFluxerCSP(nonce: string, config: SentryCSPConfig): string { FILE: packages/app_proxy/src/app_server/utils/Mime.tsx constant MIME_TYPES (line 20) | const MIME_TYPES: Record = { function getMimeType (line 63) | function getMimeType(path: string): string { function isStaticAsset (line 68) | function isStaticAsset(path: string): boolean { function isHashedAsset (line 74) | function isHashedAsset(path: string): boolean { FILE: packages/app_proxy/src/app_server/utils/SentryDSN.tsx type SentryDSN (line 20) | interface SentryDSN { function parseSentryDSN (line 27) | function parseSentryDSN(dsn: string | undefined): SentryDSN | null { FILE: packages/app_proxy/src/app_server/utils/StaticFileUtils.tsx function isPathSafe (line 28) | function isPathSafe(filePath: string, resolvedStaticDir: string): boolean { type ServeStaticFileOptions (line 32) | interface ServeStaticFileOptions { type ServeStaticFileResult (line 38) | type ServeStaticFileResult = function serveStaticFile (line 42) | function serveStaticFile(options: ServeStaticFileOptions): ServeStaticFi... type ServeSpaFallbackOptions (line 69) | interface ServeSpaFallbackOptions { type ServeSpaFallbackResult (line 75) | type ServeSpaFallbackResult = function serveSpaFallback (line 79) | function serveSpaFallback(options: ServeSpaFallbackOptions): ServeSpaFal... function applySpaHeaders (line 102) | function applySpaHeaders(c: Context, csp: string): void { FILE: packages/cache/src/CacheKeyClassification.tsx function classifyKeyType (line 20) | function classifyKeyType(key: string): string { FILE: packages/cache/src/CacheLockValidation.tsx constant LOCK_KEY_PATTERN (line 22) | const LOCK_KEY_PATTERN = /^[a-zA-Z0-9:_-]+$/; constant LOCK_TOKEN_PATTERN (line 23) | const LOCK_TOKEN_PATTERN = /^[a-z0-9]+$/; function validateLockKey (line 25) | function validateLockKey(key: string): void { function validateLockToken (line 31) | function validateLockToken(token: string): void { function generateLockToken (line 37) | function generateLockToken(): string { function formatLockKey (line 41) | function formatLockKey(key: string): string { FILE: packages/cache/src/CacheProviderTypes.tsx type CacheLogger (line 20) | interface CacheLogger { type CacheTelemetry (line 24) | interface CacheTelemetry { type CacheKeyClassifier (line 29) | type CacheKeyClassifier = (key: string) => string; FILE: packages/cache/src/CacheSerialization.tsx function safeJsonParse (line 22) | function safeJsonParse(value: string, logger?: CacheLogger): T | null { function serializeValue (line 35) | function serializeValue(value: T): string { FILE: packages/cache/src/ICacheService.tsx type CacheMSetEntry (line 20) | interface CacheMSetEntry { method getOrSet (line 46) | async getOrSet(key: string, valueFactory: () => Promise, ttlSecond... FILE: packages/cache/src/RedisClientTypes.tsx type RedisClient (line 20) | interface RedisClient { type RedisPipeline (line 41) | interface RedisPipeline { FILE: packages/cache/src/providers/InMemoryProvider.tsx type CacheEntry (line 28) | interface CacheEntry { type InMemoryProviderConfig (line 33) | interface InMemoryProviderConfig { class InMemoryProvider (line 38) | class InMemoryProvider extends ICacheService { method constructor (line 45) | constructor(config: InMemoryProviderConfig = {}) { method cleanup (line 54) | private cleanup(): void { method isExpired (line 70) | private isExpired(entry: CacheEntry): boolean { method evictIfNeeded (line 75) | private evictIfNeeded(): void { method get (line 84) | async get(key: string): Promise { method set (line 96) | async set(key: string, value: T, ttlSeconds?: number): Promise { method delete (line 107) | async delete(key: string): Promise { method getAndDelete (line 111) | async getAndDelete(key: string): Promise { method exists (line 119) | async exists(key: string): Promise { method expire (line 129) | async expire(key: string, ttlSeconds: number): Promise { method ttl (line 136) | async ttl(key: string): Promise { method mget (line 150) | async mget(keys: Array): Promise> { method mset (line 158) | async mset(entries: Array<{key: string; value: T; ttlSeconds?: numb... method deletePattern (line 164) | async deletePattern(pattern: string): Promise { method acquireLock (line 178) | async acquireLock(key: string, ttlSeconds: number): Promise { method getAndRenewTtl (line 212) | async getAndRenewTtl(key: string, newTtlSeconds: number): Promise { method sadd (line 224) | async sadd(key: string, member: string, ttlSeconds?: number): Promise<... method srem (line 238) | async srem(key: string, member: string): Promise { method smembers (line 248) | async smembers(key: string): Promise> { method sismember (line 257) | async sismember(key: string, member: string): Promise { method destroy (line 269) | destroy(): void { FILE: packages/cache/src/providers/KVCacheProvider.tsx type KVCacheProviderConfig (line 32) | interface KVCacheProviderConfig { class KVCacheProvider (line 39) | class KVCacheProvider extends ICacheService { method constructor (line 45) | constructor(config: KVCacheProviderConfig) { method instrumented (line 53) | private async instrumented( method get (line 91) | async get(key: string): Promise { method set (line 104) | async set(key: string, value: T, ttlSeconds?: number): Promise { method delete (line 115) | async delete(key: string): Promise { method getAndDelete (line 121) | async getAndDelete(key: string): Promise { method exists (line 129) | async exists(key: string): Promise { method expire (line 134) | async expire(key: string, ttlSeconds: number): Promise { method ttl (line 138) | async ttl(key: string): Promise { method mget (line 142) | async mget(keys: Array): Promise> { method mset (line 152) | async mset(entries: Array<{key: string; value: T; ttlSeconds?: numb... method deletePattern (line 190) | async deletePattern(pattern: string): Promise { method acquireLock (line 196) | async acquireLock(key: string, ttlSeconds: number): Promise { method getAndRenewTtl (line 212) | async getAndRenewTtl(key: string, newTtlSeconds: number): Promise { method sadd (line 222) | async sadd(key: string, member: string, ttlSeconds?: number): Promise<... method srem (line 231) | async srem(key: string, member: string): Promise { method smembers (line 235) | async smembers(key: string): Promise> { method sismember (line 240) | async sismember(key: string, member: string): Promise { FILE: packages/cache/src/providers/RedisCacheProvider.tsx type RedisCacheProviderConfig (line 25) | interface RedisCacheProviderConfig { class RedisCacheProvider (line 30) | class RedisCacheProvider extends ICacheService { method constructor (line 33) | constructor(config: RedisCacheProviderConfig) { method get (line 38) | async get(key: string): Promise { method set (line 44) | async set(key: string, value: T, ttlSeconds?: number): Promise { method delete (line 53) | async delete(key: string): Promise { method getAndDelete (line 57) | async getAndDelete(key: string): Promise { method exists (line 65) | async exists(key: string): Promise { method expire (line 70) | async expire(key: string, ttlSeconds: number): Promise { method ttl (line 74) | async ttl(key: string): Promise { method mget (line 78) | async mget(keys: Array): Promise> { method mset (line 88) | async mset(entries: Array<{key: string; value: T; ttlSeconds?: numb... method deletePattern (line 126) | async deletePattern(pattern: string): Promise { method acquireLock (line 132) | async acquireLock(key: string, ttlSeconds: number): Promise { method getAndRenewTtl (line 146) | async getAndRenewTtl(key: string, newTtlSeconds: number): Promise { method sadd (line 156) | async sadd(key: string, member: string, ttlSeconds?: number): Promise<... method srem (line 165) | async srem(key: string, member: string): Promise { method smembers (line 169) | async smembers(key: string): Promise> { method sismember (line 174) | async sismember(key: string, member: string): Promise { FILE: packages/cache/src/providers/tests/KVCacheProvider.test.tsx class MockKVPipeline (line 25) | class MockKVPipeline implements IKVPipeline { method constructor (line 28) | constructor( method get (line 34) | get(key: string) { method set (line 39) | set(key: string, value: string) { method setex (line 44) | setex(key: string, ttlSeconds: number, value: string) { method del (line 49) | del(key: string) { method expire (line 54) | expire(key: string, ttlSeconds: number) { method sadd (line 59) | sadd(key: string, ...members: Array) { method srem (line 64) | srem(key: string, ...members: Array) { method zadd (line 69) | zadd(key: string, score: number, value: string) { method zrem (line 74) | zrem(key: string, ...members: Array) { method mset (line 79) | mset(...args: Array) { method exec (line 84) | async exec(): Promise> { class MockKVProvider (line 131) | class MockKVProvider implements IKVProvider { method pipeline (line 136) | pipeline() { method get (line 140) | async get(key: string): Promise { method set (line 144) | async set(key: string, value: string, ...args: Array)... method setex (line 156) | async setex(key: string, ttlSeconds: number, value: string): Promise): Promise> { method mset (line 174) | async mset(...args: Array): Promise { method del (line 180) | async del(...keys: Array): Promise { method exists (line 188) | async exists(key: string): Promise { method expire (line 192) | async expire(key: string, ttlSeconds: number): Promise { method ttl (line 198) | async ttl(key: string): Promise { method incr (line 206) | async incr(key: string): Promise { method getex (line 212) | async getex(key: string, ttlSeconds: number): Promise { method getdel (line 220) | async getdel(key: string): Promise { method sadd (line 226) | async sadd(key: string, ...members: Array): Promise { method srem (line 242) | async srem(key: string, ...members: Array): Promise { method smembers (line 252) | async smembers(key: string): Promise> { method sismember (line 257) | async sismember(key: string, member: string): Promise { method scard (line 262) | async scard(key: string): Promise { method spop (line 266) | async spop(key: string, count = 1): Promise> { method zadd (line 280) | async zadd(_key: string, ..._scoreMembers: Array): Pr... method zrem (line 284) | async zrem(_key: string, ..._members: Array): Promise { method zcard (line 288) | async zcard(_key: string): Promise { method zrangebyscore (line 292) | async zrangebyscore( method rpush (line 301) | async rpush(_key: string, ..._values: Array): Promise { method lpop (line 305) | async lpop(_key: string, _count?: number): Promise> { method llen (line 309) | async llen(_key: string): Promise { method hset (line 313) | async hset(_key: string, _field: string, _value: string): Promise): Promise { method hget (line 321) | async hget(_key: string, _field: string): Promise { method hgetall (line 325) | async hgetall(_key: string): Promise> { method publish (line 329) | async publish(_channel: string, _message: string): Promise { method duplicate (line 333) | duplicate(): IKVSubscription { method releaseLock (line 337) | async releaseLock(_key: string, _token: string): Promise { method renewSnowflakeNode (line 341) | async renewSnowflakeNode(_key: string, _instanceId: string, _ttlSecond... method tryConsumeTokens (line 345) | async tryConsumeTokens( method scheduleBulkDeletion (line 355) | async scheduleBulkDeletion(_queueKey: string, _secondaryKey: string, _... method removeBulkDeletion (line 357) | async removeBulkDeletion(_queueKey: string, _secondaryKey: string): Pr... method scan (line 361) | async scan(pattern: string, _count: number): Promise> { method multi (line 366) | multi(): IKVPipeline { method health (line 370) | async health(): Promise { method clear (line 374) | clear(): void { function createNoopLogger (line 381) | function createNoopLogger(): CacheLogger { function createNoopTelemetry (line 387) | function createNoopTelemetry(): CacheTelemetry { FILE: packages/cache/src/utils/Coalescer.tsx class Coalescer (line 20) | class Coalescer { method coalesce (line 23) | async coalesce(key: string, fn: () => Promise): Promise { FILE: packages/cache/src/utils/tests/Coalescer.test.tsx type User (line 239) | interface User { FILE: packages/captcha/src/CaptchaProviderFactory.tsx type BaseCaptchaProviderFactoryParams (line 30) | interface BaseCaptchaProviderFactoryParams { type CreateUnavailableCaptchaProviderParams (line 34) | interface CreateUnavailableCaptchaProviderParams extends BaseCaptchaProv... type CreateTestCaptchaProviderParams (line 38) | interface CreateTestCaptchaProviderParams extends BaseCaptchaProviderFac... type CreateHcaptchaProviderParams (line 42) | interface CreateHcaptchaProviderParams extends BaseCaptchaProviderFactor... type CreateTurnstileProviderParams (line 50) | interface CreateTurnstileProviderParams extends BaseCaptchaProviderFacto... type CreateRecaptchaProviderParams (line 58) | interface CreateRecaptchaProviderParams extends BaseCaptchaProviderFacto... type CreateCaptchaProviderParams (line 67) | type CreateCaptchaProviderParams = function buildHttpOptions (line 74) | function buildHttpOptions( function createCaptchaProvider (line 86) | function createCaptchaProvider(params: CreateCaptchaProviderParams): ICa... FILE: packages/captcha/src/ICaptchaProvider.tsx type VerifyCaptchaParams (line 20) | interface VerifyCaptchaParams { type CaptchaProviderType (line 25) | type CaptchaProviderType = 'hcaptcha' | 'recaptcha' | 'turnstile' | 'tes... type ICaptchaProvider (line 27) | interface ICaptchaProvider { FILE: packages/captcha/src/providers/HcaptchaProvider.tsx class HcaptchaProvider (line 23) | class HcaptchaProvider extends HttpCaptchaProvider { FILE: packages/captcha/src/providers/HttpCaptchaProvider.tsx constant DEFAULT_USER_AGENT (line 24) | const DEFAULT_USER_AGENT = 'Mozilla/5.0 (compatible; Fluxerbot/1.0; +htt... constant DEFAULT_TIMEOUT (line 25) | const DEFAULT_TIMEOUT = ms('10 seconds'); type HttpCaptchaProviderOptions (line 27) | interface HttpCaptchaProviderOptions { type CaptchaVerifyResponse (line 35) | interface CaptchaVerifyResponse { method constructor (line 54) | constructor(options: HttpCaptchaProviderOptions) { method verify (line 62) | async verify({token, remoteIp}: VerifyCaptchaParams): Promise { method validateResponse (line 104) | protected validateResponse(_data: CaptchaVerifyResponse): boolean { FILE: packages/captcha/src/providers/RecaptchaProvider.tsx constant DEFAULT_MINIMUM_SCORE (line 24) | const DEFAULT_MINIMUM_SCORE = 0.5; type RecaptchaVerifyResponse (line 26) | interface RecaptchaVerifyResponse { type RecaptchaProviderOptions (line 32) | interface RecaptchaProviderOptions extends HttpCaptchaProviderOptions { class RecaptchaProvider (line 36) | class RecaptchaProvider extends HttpCaptchaProvider { method constructor (line 43) | constructor(options: RecaptchaProviderOptions) { method validateResponse (line 48) | protected override validateResponse(data: RecaptchaVerifyResponse): bo... FILE: packages/captcha/src/providers/TestProvider.tsx class TestCaptchaProvider (line 22) | class TestCaptchaProvider implements ICaptchaProvider { method verify (line 25) | async verify(_params: VerifyCaptchaParams): Promise { FILE: packages/captcha/src/providers/TurnstileProvider.tsx class TurnstileProvider (line 23) | class TurnstileProvider extends HttpCaptchaProvider { FILE: packages/captcha/src/providers/UnavailableCaptchaProvider.tsx class UnavailableCaptchaProvider (line 22) | class UnavailableCaptchaProvider implements ICaptchaProvider { method verify (line 25) | async verify(_params: VerifyCaptchaParams): Promise { FILE: packages/cassandra/src/CassandraRuntime.tsx type CassandraRuntimeOptions (line 29) | interface CassandraRuntimeOptions { type ICassandraRuntime (line 33) | interface ICassandraRuntime { class CassandraRuntime (line 40) | class CassandraRuntime implements ICassandraRuntime { method constructor (line 44) | public constructor(config: CassandraConfig, options: CassandraRuntimeO... method connect (line 51) | public async connect(): Promise { method shutdown (line 55) | public async shutdown(): Promise { function createCassandraRuntime (line 60) | function createCassandraRuntime( FILE: packages/cassandra/src/CassandraTypes.tsx type CassandraValue (line 22) | type CassandraValue = type CassandraParams (line 36) | type CassandraParams = Record; type PreparedQuery (line 38) | interface PreparedQuery

{ type QueryTemplate (line 43) | interface QueryTemplate

{ type ConditionalQueryResult (line 48) | interface ConditionalQueryResult { FILE: packages/cassandra/src/Client.tsx type CassandraConfig (line 24) | interface CassandraConfig { type CassandraClientOptions (line 32) | interface CassandraClientOptions { type CassandraExecuteOptions (line 36) | interface CassandraExecuteOptions { type CassandraBatchOptions (line 40) | interface CassandraBatchOptions { type ICassandraClient (line 44) | interface ICassandraClient { type DefaultClientState (line 57) | interface DefaultClientState { class CassandraClient (line 67) | class CassandraClient implements ICassandraClient { method constructor (line 72) | public constructor(config: CassandraConfig, options: CassandraClientOp... method connect (line 84) | public async connect(): Promise { method shutdown (line 118) | public async shutdown(): Promise { method isConnected (line 129) | public isConnected(): boolean { method execute (line 133) | public async execute

( method batch (line 142) | public async batch(queries: Array, options: CassandraBa... method getNativeClient (line 153) | public getNativeClient(): cassandra.Client { method setLogger (line 161) | public setLogger(logger: Logger): void { function createCassandraClient (line 166) | function createCassandraClient(config: CassandraConfig, options: Cassand... function setLogger (line 171) | function setLogger(loggerInstance: Logger): void { function getLogger (line 178) | function getLogger(): Logger { function initCassandra (line 182) | async function initCassandra(config: CassandraConfig): Promise { function shutdownCassandra (line 192) | async function shutdownCassandra(): Promise { function getDefaultCassandraClient (line 201) | function getDefaultCassandraClient(): ICassandraClient { function getClient (line 209) | function getClient(): cassandra.Client { FILE: packages/cassandra/src/Logger.tsx type Logger (line 20) | interface Logger { method info (line 27) | info(): void {} method debug (line 28) | debug(): void {} method error (line 29) | error(): void {} FILE: packages/cassandra/src/Queries.tsx type ICassandraQueryExecutor (line 25) | interface ICassandraQueryExecutor { class CassandraQueryExecutor (line 33) | class CassandraQueryExecutor implements ICassandraQueryExecutor { method constructor (line 37) | public constructor(client: ICassandraClient, logger: Logger = NoopLogg... method fetchMany (line 42) | public async fetchMany(query: PreparedQuery): Promise> { method fetchOne (line 55) | public async fetchOne(query: PreparedQuery): Promise { method execute (line 60) | public async execute(query: PreparedQuery): Promise { method executeBatch (line 71) | public async executeBatch(queries: Array): Promise { method executeConditional (line 101) | public async executeConditional(query: PreparedQuery): Promise( method validateRows (line 152) | private static validateRows(rows: unknown): Array { function createDefaultQueryExecutor (line 167) | function createDefaultQueryExecutor(): CassandraQueryExecutor { function fetchMany (line 171) | async function fetchMany(query: PreparedQuery): Promise> { function fetchOne (line 175) | async function fetchOne(query: PreparedQuery): Promise { function execute (line 179) | async function execute(query: PreparedQuery): Promise { function executeBatch (line 183) | async function executeBatch(queries: Array): Promise { function executeConditional (line 187) | async function executeConditional(query: PreparedQuery): Promise = {kind: 'set'; value: T} | {kind: 'clear'}; method set (line 25) | set(value: T): DbOp { method clear (line 28) | clear(): DbOp { type ColumnName (line 33) | type ColumnName = Extract; type RowValue (line 34) | type RowValue> = Row[K & keyof Row]; type WhereExpr (line 36) | type WhereExpr = type OrderBy (line 46) | type OrderBy = {col: ColumnName; direction?: 'A... type QueryTemplate (line 48) | interface QueryTemplate

{ type TableSelectOptions (line 53) | interface TableSelectOptions { type TableDeleteOptions (line 60) | interface TableDeleteOptions { type TableCountOptions (line 64) | interface TableCountOptions { type TableDefinition (line 68) | interface TableDefinition... type TablePatch (line 75) | type TablePatch> = Partial<{ type Table (line 79) | interface Table, PartKey ... function prepared (line 128) | function prepared

(cql: string, params: P): Pr... function asWhereArray (line 132) | function asWhereArray( function compileWhere (line 146) | function compileWhere(where: WhereExpr): string { function compileWhereClause (line 178) | function compileWhereClause( function toCassandraValue (line 189) | function toCassandraValue(op: DbOp, tableName: string, columnNa... function ensureUnique (line 201) | function ensureUnique(values: ReadonlyArray, fieldName: string, ... function assertValidTableDefinition (line 211) | function assertValidTableDefinition { class CassandraTable (line 254) | class CassandraTable, Par... method constructor (line 267) | public constructor(definition: TableDefinition) { method selectCql (line 312) | public selectCql(options: TableSelectOptions = {}): string { method select (line 322) | public select(options: TableSelectOptions = {}): QueryTemplate { method updateAllCql (line 327) | public updateAllCql(): string { method paramsFromRow (line 331) | public paramsFromRow(row: Row): CassandraParams { method upsertAll (line 335) | public upsertAll(row: Row): PreparedQuery { method patchByPk (line 343) | public patchByPk(pk: Pick, patch: TablePatch): Prepa... method deleteCql (line 351) | public deleteCql(options: TableDeleteOptions = {}): string { method delete (line 356) | public delete(options: TableDeleteOptions = {}): QueryTemplate { method deleteByPk (line 361) | public deleteByPk(pk: Pick): PreparedQuery { method deletePartition (line 365) | public deletePartition(pk: Pick): PreparedQuery { method insertCql (line 374) | public insertCql(options: {ttlParam?: string | undefined} = {}): string { method insert (line 382) | public insert(row: Row): PreparedQuery { method insertWithTtl (line 386) | public insertWithTtl(row: Row, ttlSeconds: number): PreparedQuery { method insertWithTtlParam (line 391) | public insertWithTtlParam(row: Row, ttlParamName: string): PreparedQue... method insertIfNotExists (line 405) | public insertIfNotExists(row: Row): PreparedQuery { method selectCountCql (line 410) | public selectCountCql(options: TableCountOptions = {}): string { method selectCount (line 415) | public selectCount(options: TableCountOptions = {}): QueryTemplate { method insertWithNow (line 420) | public insertWithNow>(row: Omit, patch: TablePatch,... method patchByPkWithTtlParam (line 449) | public patchByPkWithTtlParam( method upsertAllWithTtl (line 463) | public upsertAllWithTtl(row: Row, ttlSeconds: number): PreparedQuery { method upsertAllWithTtlParam (line 470) | public upsertAllWithTtlParam(row: Row, ttlParamName: string, ttlValue:... method patchByPkIf (line 479) | public patchByPkIf, PK>>( method toTemplate (line 497) | private toTemplate(cql: string): QueryTemplate { method buildUpdateAllStatement (line 506) | private buildUpdateAllStatement(): string { method collectRowParams (line 515) | private collectRowParams(row: Row, requireAllColumns: boolean): Cassan... method hasAllColumns (line 533) | private hasAllColumns(row: Row): boolean { method buildDynamicUpsert (line 543) | private buildDynamicUpsert(row: Row): PreparedQuery { method patchColumns (line 575) | private patchColumns(patch: TablePatch, actionName: string): ... method buildPatchStatement (line 587) | private buildPatchStatement( method appendPatchParams (line 604) | private appendPatchParams( method primaryKeyParams (line 618) | private primaryKeyParams(pk: Pick): CassandraParams { method partitionKeyParams (line 631) | private partitionKeyParams(pk: Pick): CassandraParams { method primaryKeyWhereClause (line 644) | private primaryKeyWhereClause(): string { method partitionKeyWhereClause (line 648) | private partitionKeyWhereClause(): string { method limitClause (line 652) | private limitClause(limit: number | undefined): string { function defineTable (line 663) | function defineTable, Par... FILE: packages/config/src/BuildMetadata.tsx type ReleaseChannel (line 22) | type ReleaseChannel = 'stable' | 'canary' | 'nightly'; type BuildMetadata (line 24) | interface BuildMetadata { constant FALLBACK_VALUES (line 31) | const FALLBACK_VALUES = { function isDevEnvironment (line 39) | function isDevEnvironment(): boolean { function logFallbackWarning (line 48) | function logFallbackWarning(usedFallbacks: Array): void { function getEnvOrDefault (line 59) | function getEnvOrDefault(name: string, defaultValue: string, usedFallbac... function resolveReleaseChannel (line 68) | function resolveReleaseChannel(usedFallbacks: Array): ReleaseCha... function getBuildMetadata (line 82) | function getBuildMetadata(): BuildMetadata { function isDevBuild (line 96) | function isDevBuild(): boolean { function getServiceVersionLabel (line 100) | function getServiceVersionLabel(): string | undefined { function getSentryBuildContext (line 105) | function getSentryBuildContext(): BuildMetadata { FILE: packages/config/src/ConfigLoader.tsx constant DEFAULT_CONFIG_PATHS (line 27) | const DEFAULT_CONFIG_PATHS = [process.env['FLUXER_CONFIG']].filter((path... function loadConfig (line 31) | async function loadConfig(configPaths: Array = DEFAULT_CONFIG_PA... function getConfig (line 60) | function getConfig(): MasterConfig { function resetConfig (line 67) | function resetConfig(): void { FILE: packages/config/src/EndpointDerivation.tsx type DomainConfig (line 22) | interface DomainConfig { type DerivedEndpoints (line 33) | interface DerivedEndpoints { function buildUrl (line 46) | function buildUrl(scheme: string, domain: string, port?: number, path?: ... function deriveDomain (line 59) | function deriveDomain( function deriveEndpointsFromDomain (line 85) | function deriveEndpointsFromDomain(config: DomainConfig): DerivedEndpoin... FILE: packages/config/src/JsonValidation.tsx type JsonSchema (line 27) | interface JsonSchema { constant CONFIG_SCHEMA_ROOT (line 39) | const CONFIG_SCHEMA_ROOT = ConfigSchema as unknown as JsonSchema; function formatErrorPaths (line 41) | function formatErrorPaths(errors: Array<{instancePath?: string; message?... function extractRefName (line 51) | function extractRefName(ref: string): string { function resolveSchema (line 59) | function resolveSchema(schema: JsonSchema): JsonSchema { function formatJsonPointer (line 72) | function formatJsonPointer(segments: Array): string { function collectKnownProperties (line 79) | function collectKnownProperties( function collectUnknownConfigKeys (line 110) | function collectUnknownConfigKeys( function warnOnUnknownConfigKeys (line 165) | function warnOnUnknownConfigKeys(config: ConfigObject): void { function assertValidJsonConfig (line 187) | function assertValidJsonConfig(config: ConfigObject): void { FILE: packages/config/src/MasterZodSchema.tsx type SentryConfig (line 23) | type SentryConfig = z.infer; type TelemetryConfig (line 24) | type TelemetryConfig = z.infer; FILE: packages/config/src/ServiceConfigSlices.tsx function extractBaseServiceConfig (line 23) | function extractBaseServiceConfig(master: MasterConfig) { function extractKVClientConfig (line 31) | function extractKVClientConfig(master: MasterConfig) { function extractBuildInfoConfig (line 40) | function extractBuildInfoConfig() { function extractRateLimit (line 48) | function extractRateLimit( FILE: packages/config/src/__tests__/ConfigLoader.test.tsx function createTempConfig (line 27) | function createTempConfig(config: Record): string { function makeMinimalConfig (line 34) | function makeMinimalConfig(overrides: Record = {}): Rec... FILE: packages/config/src/__tests__/ServiceConfigSlices.test.tsx function createMasterStub (line 29) | function createMasterStub(overrides: Partial = {}): Master... FILE: packages/config/src/config_loader/ConfigObjectMerge.tsx type ConfigObject (line 20) | type ConfigObject = Record; function isPlainObject (line 22) | function isPlainObject(value: unknown): value is ConfigObject { function deepMerge (line 26) | function deepMerge(target: ConfigObject, source: ConfigObject): ConfigOb... FILE: packages/config/src/config_loader/EnvironmentOverrides.tsx function toChildObject (line 22) | function toChildObject(value: unknown): ConfigObject { function parseEnvValue (line 29) | function parseEnvValue(raw: string): unknown { function setNestedValue (line 53) | function setNestedValue(target: ConfigObject, keys: Array, value... function buildEnvOverrides (line 68) | function buildEnvOverrides(env: NodeJS.ProcessEnv, prefix: string): Conf... FILE: packages/config/src/config_loader/JsonConfigReader.tsx function loadJsonFile (line 24) | function loadJsonFile(path: string): ConfigObject { FILE: packages/config/src/schema/bundle.ts type JsonSchema (line 23) | interface JsonSchema { type DefFile (line 47) | interface DefFile { constant SCHEMA_DIR (line 51) | const SCHEMA_DIR = path.dirname(new URL(import.meta.url).pathname); constant DEFS_DIR (line 52) | const DEFS_DIR = path.join(SCHEMA_DIR, 'defs'); constant ROOT_SCHEMA_PATH (line 53) | const ROOT_SCHEMA_PATH = path.join(SCHEMA_DIR, 'root.json'); constant OUTPUT_SCHEMA_PATH (line 54) | const OUTPUT_SCHEMA_PATH = path.join(SCHEMA_DIR, '..', 'ConfigSchema.jso... constant OUTPUT_ZOD_PATH (line 55) | const OUTPUT_ZOD_PATH = path.join(SCHEMA_DIR, '..', 'MasterZodSchema.gen... function readJsonFile (line 57) | function readJsonFile(filePath: string): T { function collectDefFiles (line 62) | function collectDefFiles(dir: string): Array { function bundleSchema (line 78) | function bundleSchema(): JsonSchema { function stripAdditionalPropertiesFalse (line 97) | function stripAdditionalPropertiesFalse(schema: JsonSchema): void { function extractRefName (line 151) | function extractRefName(ref: string): string { function snakeToPascal (line 159) | function snakeToPascal(str: string): string { function buildDependencyGraph (line 166) | function buildDependencyGraph(defs: Record): Map>): Array { function generateZodType (line 234) | function generateZodType(schema: JsonSchema, defs: Record; FILE: packages/constants/src/AppConstants.tsx constant API_CODE_VERSION (line 20) | const API_CODE_VERSION = 1; constant DEFAULT_API_VERSION (line 21) | const DEFAULT_API_VERSION = 1; constant FLUXERBOT_ID (line 22) | const FLUXERBOT_ID = '0'; constant FAVORITES_GUILD_ID (line 24) | const FAVORITES_GUILD_ID = '@favorites'; constant DEFAULT_ACCENT_COLOR (line 25) | const DEFAULT_ACCENT_COLOR = '#4641D9'; FILE: packages/constants/src/AuditLogActionType.tsx type AuditLogActionType (line 20) | enum AuditLogActionType { constant ALL_AUDIT_LOG_ACTION_TYPES (line 66) | const ALL_AUDIT_LOG_ACTION_TYPES: ReadonlyArray = [ FILE: packages/constants/src/Authentication.tsx constant SESSION_MAX_AGE_SECONDS (line 20) | const SESSION_MAX_AGE_SECONDS = 60 * 60 * 24 * 7; constant CSRF_TOKEN_LENGTH (line 21) | const CSRF_TOKEN_LENGTH = 32; constant CSRF_TOKEN_MAX_AGE_SECONDS (line 22) | const CSRF_TOKEN_MAX_AGE_SECONDS = 60 * 60 * 24; constant SUDO_MODE_MAX_AGE_SECONDS (line 23) | const SUDO_MODE_MAX_AGE_SECONDS = 60 * 5; FILE: packages/constants/src/Cache.tsx constant CACHE_IMMUTABLE (line 20) | const CACHE_IMMUTABLE = 'public, max-age=31536000, immutable'; constant CACHE_NO_STORE (line 21) | const CACHE_NO_STORE = 'no-cache, no-store, must-revalidate'; constant CACHE_NO_CACHE (line 22) | const CACHE_NO_CACHE = 'no-cache'; FILE: packages/constants/src/ChannelConstants.tsx type ChannelType (line 32) | type ChannelType = ValueOf; constant TEXT_BASED_CHANNEL_TYPES (line 34) | const TEXT_BASED_CHANNEL_TYPES = new Set([ type MessageTypeValue (line 84) | type MessageTypeValue = ValueOf; constant MESSAGE_TYPE_DELETABLE (line 86) | const MESSAGE_TYPE_DELETABLE = { function isMessageTypeDeletable (line 99) | function isMessageTypeDeletable(type: number): boolean { constant SENDABLE_MESSAGE_FLAGS (line 139) | const SENDABLE_MESSAGE_FLAGS = constant ALL_PERMISSIONS (line 268) | const ALL_PERMISSIONS = Object.values(Permissions).reduce((acc, p) => ac... constant DEFAULT_PERMISSIONS (line 270) | const DEFAULT_PERMISSIONS = constant CHANNEL_REINDEX_AFTER_TIMESTAMP (line 299) | const CHANNEL_REINDEX_AFTER_TIMESTAMP = 1769813072; FILE: packages/constants/src/ConnectionConstants.tsx type ConnectionType (line 27) | type ConnectionType = ValueOf; type ConnectionVisibilityFlag (line 40) | type ConnectionVisibilityFlag = ValueOf; constant MAX_CONNECTIONS_PER_USER (line 48) | const MAX_CONNECTIONS_PER_USER = 20; constant CONNECTION_VERIFICATION_TOKEN_LENGTH (line 50) | const CONNECTION_VERIFICATION_TOKEN_LENGTH = 32; constant CONNECTION_REVALIDATION_INTERVAL_HOURS (line 52) | const CONNECTION_REVALIDATION_INTERVAL_HOURS = 24; constant CONNECTION_INITIATION_TOKEN_EXPIRY_MS (line 54) | const CONNECTION_INITIATION_TOKEN_EXPIRY_MS = 30 * 60 * 1000; FILE: packages/constants/src/Cookies.tsx constant CSRF_COOKIE_NAME (line 20) | const CSRF_COOKIE_NAME = 'csrf_token'; constant CSRF_HEADER_NAME (line 21) | const CSRF_HEADER_NAME = 'x-csrf-token'; constant CSRF_FORM_FIELD (line 22) | const CSRF_FORM_FIELD = '_csrf'; constant FLASH_COOKIE_NAME (line 23) | const FLASH_COOKIE_NAME = 'flash'; constant SESSION_COOKIE_NAME (line 24) | const SESSION_COOKIE_NAME = 'session'; FILE: packages/constants/src/Core.tsx constant FLUXER_EPOCH (line 20) | const FLUXER_EPOCH = 1420070400000; constant FLUXER_USER_AGENT (line 21) | const FLUXER_USER_AGENT = 'Mozilla/5.0 (compatible; Fluxerbot/1.0; +http... constant ADMIN_OAUTH2_APPLICATION_ID (line 23) | const ADMIN_OAUTH2_APPLICATION_ID = 1234567890123456789n; constant USER_MENTION_REGEX (line 25) | const USER_MENTION_REGEX = /<@!?(?\d+)>/g; constant ROLE_MENTION_REGEX (line 26) | const ROLE_MENTION_REGEX = /<@&(?\d+)>/g; constant URL_REGEX (line 27) | const URL_REGEX = /https?:\/\/[^\s/$.?#].[^\s]*/g; FILE: packages/constants/src/DiscoveryConstants.tsx type DiscoveryCategory (line 34) | type DiscoveryCategory = ValueOf; type DiscoveryApplicationStatusValue (line 55) | type DiscoveryApplicationStatusValue = ValueOf([ FILE: packages/constants/src/DonationConstants.tsx constant DONATION_MAGIC_LINK_EXPIRY_MS (line 20) | const DONATION_MAGIC_LINK_EXPIRY_MS = 15 * 60 * 1000; FILE: packages/constants/src/EmojiConstants.tsx constant SKIN_TONE_SURROGATES (line 20) | const SKIN_TONE_SURROGATES = ['🏻', '🏼', '🏽', '🏾', '🏿']; FILE: packages/constants/src/Errors.tsx type CommonErrorCodeValue (line 50) | type CommonErrorCodeValue = ValueOf; FILE: packages/constants/src/Federation.tsx constant FEDERATION_PROTOCOL_VERSION (line 20) | const FEDERATION_PROTOCOL_VERSION = 1; FILE: packages/constants/src/GatewayConstants.tsx constant LARGE_GUILD_THRESHOLD (line 39) | const LARGE_GUILD_THRESHOLD = 250; constant MEMBER_CHUNK_SIZE (line 40) | const MEMBER_CHUNK_SIZE = 1000; type GatewayErrorCode (line 84) | type GatewayErrorCode = ValueOf; FILE: packages/constants/src/GuildConstants.tsx type GuildSplashCardAlignmentValue (line 41) | type GuildSplashCardAlignmentValue = ValueOf; constant DEFAULT_RULE_COUNT (line 137) | const DEFAULT_RULE_COUNT = 0; constant MAX_RULE_COUNT (line 138) | const MAX_RULE_COUNT = 100; type MemberSortTypeValue (line 145) | type MemberSortTypeValue = ValueOf; constant GUILD_MEMBERS_REINDEX_AFTER_TIMESTAMP (line 147) | const GUILD_MEMBERS_REINDEX_AFTER_TIMESTAMP = 1769813072; FILE: packages/constants/src/Headers.tsx type HeaderName (line 55) | type HeaderName = ValueOf; type HeaderValue (line 72) | type HeaderValue = ValueOf; FILE: packages/constants/src/HttpConstants.tsx type HttpStatusCode (line 60) | type HttpStatusCode = ValueOf; type MimeTypeValue (line 93) | type MimeTypeValue = ValueOf; type HttpMethodValue (line 105) | type HttpMethodValue = ValueOf; constant REDIRECT_STATUS_CODES (line 107) | const REDIRECT_STATUS_CODES = [ type RedirectStatusCode (line 115) | type RedirectStatusCode = (typeof REDIRECT_STATUS_CODES)[number]; FILE: packages/constants/src/JumpConstants.tsx type JumpType (line 27) | type JumpType = ValueOf; FILE: packages/constants/src/LimitBounds.tsx constant LIMIT_KEY_BOUNDS (line 23) | const LIMIT_KEY_BOUNDS: Record = { FILE: packages/constants/src/LimitConfigMetadata.tsx constant LIMIT_KEYS (line 20) | const LIMIT_KEYS = [ type LimitKey (line 68) | type LimitKey = (typeof LIMIT_KEYS)[number]; type LimitScope (line 70) | type LimitScope = 'user' | 'guild' | 'both'; constant LIMIT_KEY_SCOPES (line 72) | const LIMIT_KEY_SCOPES: Record = { type LimitCategory (line 120) | type LimitCategory = 'messages' | 'guilds' | 'channels' | 'expressions' ... type LimitKeyMetadata (line 122) | interface LimitKeyMetadata { constant LIMIT_CATEGORY_LABELS (line 134) | const LIMIT_CATEGORY_LABELS: Record = { constant LIMIT_KEY_METADATA (line 144) | const LIMIT_KEY_METADATA: Record = { FILE: packages/constants/src/LimitConstants.tsx constant MAX_GUILDS_PREMIUM (line 20) | const MAX_GUILDS_PREMIUM = 200; constant MAX_GUILDS_NON_PREMIUM (line 21) | const MAX_GUILDS_NON_PREMIUM = 100; constant MAX_GUILD_CHANNELS (line 22) | const MAX_GUILD_CHANNELS = 500; constant MAX_CHANNELS_PER_CATEGORY (line 23) | const MAX_CHANNELS_PER_CATEGORY = 50; constant VOICE_CHANNEL_BITRATE_MIN (line 24) | const VOICE_CHANNEL_BITRATE_MIN = 8000; constant VOICE_CHANNEL_BITRATE_MAX (line 25) | const VOICE_CHANNEL_BITRATE_MAX = 320000; constant VOICE_CHANNEL_USER_LIMIT_MIN (line 26) | const VOICE_CHANNEL_USER_LIMIT_MIN = 0; constant VOICE_CHANNEL_USER_LIMIT_MAX (line 27) | const VOICE_CHANNEL_USER_LIMIT_MAX = 99; constant VOICE_CHANNEL_CAMERA_USER_LIMIT (line 28) | const VOICE_CHANNEL_CAMERA_USER_LIMIT = 25; constant CHANNEL_RATE_LIMIT_PER_USER_MIN (line 29) | const CHANNEL_RATE_LIMIT_PER_USER_MIN = 0; constant CHANNEL_RATE_LIMIT_PER_USER_MAX (line 30) | const CHANNEL_RATE_LIMIT_PER_USER_MAX = 21600; constant CHANNEL_TOPIC_MIN_LENGTH (line 31) | const CHANNEL_TOPIC_MIN_LENGTH = 1; constant CHANNEL_TOPIC_MAX_LENGTH (line 32) | const CHANNEL_TOPIC_MAX_LENGTH = 1024; constant RTC_REGION_ID_MIN_LENGTH (line 33) | const RTC_REGION_ID_MIN_LENGTH = 1; constant RTC_REGION_ID_MAX_LENGTH (line 34) | const RTC_REGION_ID_MAX_LENGTH = 64; constant MAX_CHANNEL_PERMISSION_OVERWRITES (line 35) | const MAX_CHANNEL_PERMISSION_OVERWRITES = 500; constant MAX_DM_RECIPIENTS (line 36) | const MAX_DM_RECIPIENTS = 10; constant MAX_GUILD_EMOJIS_ANIMATED (line 37) | const MAX_GUILD_EMOJIS_ANIMATED = 50; constant MAX_GUILD_EMOJIS_STATIC (line 38) | const MAX_GUILD_EMOJIS_STATIC = 50; constant MAX_GUILD_EMOJIS_ANIMATED_MORE_EMOJI (line 39) | const MAX_GUILD_EMOJIS_ANIMATED_MORE_EMOJI = 250; constant MAX_GUILD_EMOJIS_STATIC_MORE_EMOJI (line 40) | const MAX_GUILD_EMOJIS_STATIC_MORE_EMOJI = 250; constant MAX_GUILD_STICKERS (line 41) | const MAX_GUILD_STICKERS = 50; constant MAX_GUILD_STICKERS_MORE_STICKERS (line 42) | const MAX_GUILD_STICKERS_MORE_STICKERS = 250; constant MAX_GUILD_EXPRESSION_SLOTS_UNLIMITED (line 43) | const MAX_GUILD_EXPRESSION_SLOTS_UNLIMITED = 999_999; constant MAX_GUILD_INVITES (line 44) | const MAX_GUILD_INVITES = 1000; constant MAX_GUILD_MEMBERS (line 45) | const MAX_GUILD_MEMBERS = 1_000_000; constant MAX_GUILD_MEMBERS_VERY_LARGE_GUILD (line 46) | const MAX_GUILD_MEMBERS_VERY_LARGE_GUILD = 10_000_000; constant MAX_INVITE_USES (line 47) | const MAX_INVITE_USES = 100; constant MAX_INVITE_AGE_SECONDS (line 48) | const MAX_INVITE_AGE_SECONDS = 604800; constant MAX_GUILD_ROLES (line 49) | const MAX_GUILD_ROLES = 250; constant MAX_WEBHOOKS_PER_CHANNEL (line 50) | const MAX_WEBHOOKS_PER_CHANNEL = 15; constant MAX_WEBHOOKS_PER_GUILD (line 51) | const MAX_WEBHOOKS_PER_GUILD = 1000; constant MAX_MESSAGE_LENGTH_PREMIUM (line 53) | const MAX_MESSAGE_LENGTH_PREMIUM = 4000; constant MAX_MESSAGE_LENGTH_NON_PREMIUM (line 54) | const MAX_MESSAGE_LENGTH_NON_PREMIUM = 2000; constant MAX_ATTACHMENTS_PER_MESSAGE (line 55) | const MAX_ATTACHMENTS_PER_MESSAGE = 10; constant MAX_EMBEDS_PER_MESSAGE (line 56) | const MAX_EMBEDS_PER_MESSAGE = 10; constant MAX_REACTIONS_PER_MESSAGE (line 57) | const MAX_REACTIONS_PER_MESSAGE = 30; constant MAX_USERS_PER_MESSAGE_REACTION (line 58) | const MAX_USERS_PER_MESSAGE_REACTION = 5000; constant MAX_READ_STATES_BULK_ACK (line 59) | const MAX_READ_STATES_BULK_ACK = 100; constant MIN_READ_STATES_BULK_ACK (line 60) | const MIN_READ_STATES_BULK_ACK = 1; constant MAX_ATTACHMENT_ALT_TEXT_LENGTH (line 61) | const MAX_ATTACHMENT_ALT_TEXT_LENGTH = 4096; constant MAX_BIO_LENGTH (line 63) | const MAX_BIO_LENGTH = 320; constant AVATAR_MAX_SIZE (line 64) | const AVATAR_MAX_SIZE = 10 * 1024 * 1024; constant AVATAR_EXTENSIONS (line 65) | const AVATAR_EXTENSIONS = new Set(['jpeg', 'png', 'apng', 'webp', 'gif',... constant MAX_RELATIONSHIPS (line 67) | const MAX_RELATIONSHIPS = 1000; constant MAX_GROUP_DM_RECIPIENTS (line 68) | const MAX_GROUP_DM_RECIPIENTS = 25; constant MAX_PRIVATE_CHANNELS_PER_USER (line 69) | const MAX_PRIVATE_CHANNELS_PER_USER = 250; constant MAX_PRIVATE_CHANNELS_PER_USER_ALTERNATE (line 70) | const MAX_PRIVATE_CHANNELS_PER_USER_ALTERNATE = 200; constant MAX_GROUP_DMS_PER_USER (line 71) | const MAX_GROUP_DMS_PER_USER = 150; constant MAX_BOOKMARKS_PREMIUM (line 73) | const MAX_BOOKMARKS_PREMIUM = 300; constant MAX_BOOKMARKS_NON_PREMIUM (line 74) | const MAX_BOOKMARKS_NON_PREMIUM = 50; constant MAX_FAVORITE_MEMES_PREMIUM (line 75) | const MAX_FAVORITE_MEMES_PREMIUM = 500; constant MAX_FAVORITE_MEMES_NON_PREMIUM (line 76) | const MAX_FAVORITE_MEMES_NON_PREMIUM = 50; constant MAX_FAVORITE_MEME_TAGS (line 77) | const MAX_FAVORITE_MEME_TAGS = 10; constant MAX_PACK_EXPRESSIONS (line 79) | const MAX_PACK_EXPRESSIONS = 200; constant MAX_CREATED_PACKS_NON_PREMIUM (line 80) | const MAX_CREATED_PACKS_NON_PREMIUM = 0; constant MAX_CREATED_PACKS_PREMIUM (line 81) | const MAX_CREATED_PACKS_PREMIUM = 50; constant MAX_INSTALLED_PACKS_NON_PREMIUM (line 82) | const MAX_INSTALLED_PACKS_NON_PREMIUM = 0; constant MAX_INSTALLED_PACKS_PREMIUM (line 83) | const MAX_INSTALLED_PACKS_PREMIUM = 50; constant MAX_VOICE_MESSAGE_DURATION (line 84) | const MAX_VOICE_MESSAGE_DURATION = 1200; constant EMOJI_MAX_SIZE (line 86) | const EMOJI_MAX_SIZE = 384 * 1024; constant EMOJI_EXTENSIONS (line 87) | const EMOJI_EXTENSIONS = new Set(['jpeg', 'png', 'apng', 'webp', 'gif', ... constant STICKER_MAX_SIZE (line 88) | const STICKER_MAX_SIZE = 512 * 1024; constant STICKER_EXTENSIONS (line 89) | const STICKER_EXTENSIONS = new Set(['png', 'gif', 'apng', 'webp', 'avif']); constant ATTACHMENT_MAX_SIZE_PREMIUM (line 90) | const ATTACHMENT_MAX_SIZE_PREMIUM = 500 * 1024 * 1024; constant ATTACHMENT_MAX_SIZE_NON_PREMIUM (line 91) | const ATTACHMENT_MAX_SIZE_NON_PREMIUM = 25 * 1024 * 1024; constant MAX_MESSAGES_PER_CHANNEL (line 93) | const MAX_MESSAGES_PER_CHANNEL = 30; constant MAX_LOADED_MESSAGES (line 94) | const MAX_LOADED_MESSAGES = MAX_MESSAGES_PER_CHANNEL * 4; constant TRUNCATED_MESSAGE_VIEW_SIZE (line 95) | const TRUNCATED_MESSAGE_VIEW_SIZE = MAX_LOADED_MESSAGES * 0.5; constant MAX_MESSAGE_CACHE_SIZE (line 96) | const MAX_MESSAGE_CACHE_SIZE = MAX_MESSAGES_PER_CHANNEL * 5; constant NEW_MESSAGES_BAR_BUFFER (line 98) | const NEW_MESSAGES_BAR_BUFFER = 32; constant VALID_TEMP_BAN_DURATIONS (line 100) | const VALID_TEMP_BAN_DURATIONS: ReadonlySet = new Set([ FILE: packages/constants/src/Locales.tsx type LocaleCode (line 59) | type LocaleCode = ValueOf; FILE: packages/constants/src/MediaProxyAssetSizes.tsx constant MEDIA_PROXY_AVATAR_SIZE_DEFAULT (line 22) | const MEDIA_PROXY_AVATAR_SIZE_DEFAULT: MediaProxyImageSize = 160; constant MEDIA_PROXY_AVATAR_SIZE_PROFILE (line 23) | const MEDIA_PROXY_AVATAR_SIZE_PROFILE: MediaProxyImageSize = 240; constant MEDIA_PROXY_ICON_SIZE_DEFAULT (line 25) | const MEDIA_PROXY_ICON_SIZE_DEFAULT: MediaProxyImageSize = 160; constant MEDIA_PROXY_PROFILE_BANNER_SIZE_POPOUT (line 27) | const MEDIA_PROXY_PROFILE_BANNER_SIZE_POPOUT: MediaProxyImageSize = 600; constant MEDIA_PROXY_PROFILE_BANNER_SIZE_MODAL (line 28) | const MEDIA_PROXY_PROFILE_BANNER_SIZE_MODAL: MediaProxyImageSize = 1024; constant MEDIA_PROXY_GUILD_BANNER_SIZE_DEFAULT (line 30) | const MEDIA_PROXY_GUILD_BANNER_SIZE_DEFAULT: MediaProxyImageSize = 1024; constant MEDIA_PROXY_GUILD_SPLASH_SIZE_DEFAULT (line 31) | const MEDIA_PROXY_GUILD_SPLASH_SIZE_DEFAULT: MediaProxyImageSize = 1024; constant MEDIA_PROXY_GUILD_EMBED_SPLASH_SIZE_DEFAULT (line 32) | const MEDIA_PROXY_GUILD_EMBED_SPLASH_SIZE_DEFAULT: MediaProxyImageSize =... FILE: packages/constants/src/MediaProxyImageSizes.tsx constant MEDIA_PROXY_IMAGE_SIZE_QUERY_VALUES (line 20) | const MEDIA_PROXY_IMAGE_SIZE_QUERY_VALUES = [ constant DEFAULT_MEDIA_PROXY_IMAGE_SIZE_QUERY_VALUE (line 54) | const DEFAULT_MEDIA_PROXY_IMAGE_SIZE_QUERY_VALUE = '128' as const; type MediaProxyImageSizeQueryValue (line 56) | type MediaProxyImageSizeQueryValue = (typeof MEDIA_PROXY_IMAGE_SIZE_QUER... type ParseNumericLiteral (line 58) | type ParseNumericLiteral = T extends `${infer N extend... type MediaProxyImageSize (line 59) | type MediaProxyImageSize = ParseNumericLiteral = constant DEFAULT_MEDIA_PROXY_IMAGE_SIZE (line 64) | const DEFAULT_MEDIA_PROXY_IMAGE_SIZE = 128 as MediaProxyImageSize; FILE: packages/constants/src/OAuth2Constants.tsx type OAuth2Scope (line 20) | type OAuth2Scope = 'identify' | 'email' | 'guilds' | 'connections' | 'bo... FILE: packages/constants/src/Pagination.tsx constant DEFAULT_PAGE_SIZE (line 20) | const DEFAULT_PAGE_SIZE = 25; constant MAX_PAGE_SIZE (line 21) | const MAX_PAGE_SIZE = 100; constant MIN_PAGE_SIZE (line 22) | const MIN_PAGE_SIZE = 1; FILE: packages/constants/src/PlutoniumPerks.tsx type PerkStatus (line 22) | type PerkStatus = 'available' | 'coming_soon' | 'beta'; type PerkType (line 23) | type PerkType = 'boolean' | 'numeric' | 'text'; type BasePerk (line 25) | interface BasePerk { type BooleanPerk (line 32) | interface BooleanPerk extends BasePerk { type NumericPerk (line 38) | interface NumericPerk extends BasePerk { type TextPerk (line 46) | interface TextPerk extends BasePerk { type PlutoniumPerk (line 52) | type PlutoniumPerk = BooleanPerk | NumericPerk | TextPerk; function isBooleanPerk (line 54) | function isBooleanPerk(perk: PlutoniumPerk): perk is BooleanPerk { function isNumericPerk (line 58) | function isNumericPerk(perk: PlutoniumPerk): perk is NumericPerk { function isTextPerk (line 62) | function isTextPerk(perk: PlutoniumPerk): perk is TextPerk { constant PLUTONIUM_PERKS (line 66) | const PLUTONIUM_PERKS: ReadonlyArray = [ function getPerksByStatus (line 225) | function getPerksByStatus(status: PerkStatus): ReadonlyArray { function getBetaPerks (line 233) | function getBetaPerks(): ReadonlyArray { function getComingSoonPerks (line 237) | function getComingSoonPerks(): ReadonlyArray { FILE: packages/constants/src/PressAssets.tsx type PressAssetId (line 31) | type PressAssetId = ValueOf; type PressAssetDefinition (line 33) | interface PressAssetDefinition { function isPressAssetId (line 72) | function isPressAssetId(value: string): value is PressAssetId { FILE: packages/constants/src/QuickSwitcherConstants.tsx type QuickSwitcherResultType (line 35) | type QuickSwitcherResultType = ValueOf; FILE: packages/constants/src/ReportCategories.tsx constant CATEGORY_HARASSMENT (line 20) | const CATEGORY_HARASSMENT = 'harassment' as const; constant CATEGORY_HATE_SPEECH (line 21) | const CATEGORY_HATE_SPEECH = 'hate_speech' as const; constant CATEGORY_SPAM (line 22) | const CATEGORY_SPAM = 'spam' as const; constant CATEGORY_ILLEGAL_ACTIVITY (line 23) | const CATEGORY_ILLEGAL_ACTIVITY = 'illegal_activity' as const; constant CATEGORY_IMPERSONATION (line 24) | const CATEGORY_IMPERSONATION = 'impersonation' as const; constant CATEGORY_CHILD_SAFETY (line 25) | const CATEGORY_CHILD_SAFETY = 'child_safety' as const; constant CATEGORY_OTHER (line 26) | const CATEGORY_OTHER = 'other' as const; constant CATEGORY_VIOLENT_CONTENT (line 27) | const CATEGORY_VIOLENT_CONTENT = 'violent_content' as const; constant CATEGORY_NSFW_VIOLATION (line 28) | const CATEGORY_NSFW_VIOLATION = 'nsfw_violation' as const; constant CATEGORY_DOXXING (line 29) | const CATEGORY_DOXXING = 'doxxing' as const; constant CATEGORY_SELF_HARM (line 30) | const CATEGORY_SELF_HARM = 'self_harm' as const; constant CATEGORY_MALICIOUS_LINKS (line 31) | const CATEGORY_MALICIOUS_LINKS = 'malicious_links' as const; constant CATEGORY_SPAM_ACCOUNT (line 32) | const CATEGORY_SPAM_ACCOUNT = 'spam_account' as const; constant CATEGORY_UNDERAGE_USER (line 33) | const CATEGORY_UNDERAGE_USER = 'underage_user' as const; constant CATEGORY_INAPPROPRIATE_PROFILE (line 34) | const CATEGORY_INAPPROPRIATE_PROFILE = 'inappropriate_profile' as const; constant CATEGORY_RAID_COORDINATION (line 35) | const CATEGORY_RAID_COORDINATION = 'raid_coordination' as const; constant CATEGORY_MALWARE_DISTRIBUTION (line 36) | const CATEGORY_MALWARE_DISTRIBUTION = 'malware_distribution' as const; constant CATEGORY_EXTREMIST_COMMUNITY (line 37) | const CATEGORY_EXTREMIST_COMMUNITY = 'extremist_community' as const; constant REPORT_CATEGORY_GROUPS (line 39) | const REPORT_CATEGORY_GROUPS = { constant MESSAGE_REPORT_CATEGORIES (line 76) | const MESSAGE_REPORT_CATEGORIES = REPORT_CATEGORY_GROUPS.message; constant USER_REPORT_CATEGORIES (line 77) | const USER_REPORT_CATEGORIES = REPORT_CATEGORY_GROUPS.user; constant GUILD_REPORT_CATEGORIES (line 78) | const GUILD_REPORT_CATEGORIES = REPORT_CATEGORY_GROUPS.guild; FILE: packages/constants/src/Services.tsx type ServiceNameValue (line 33) | type ServiceNameValue = ValueOf; type DefaultPortValue (line 46) | type DefaultPortValue = ValueOf; FILE: packages/constants/src/SmsVerificationConstants.tsx constant SMS_VERIFICATION_CODE_LENGTH (line 20) | const SMS_VERIFICATION_CODE_LENGTH = 6; constant SMS_VERIFICATION_TTL_SECONDS (line 21) | const SMS_VERIFICATION_TTL_SECONDS = 600; constant SMS_VERIFICATION_CACHE_PREFIX (line 22) | const SMS_VERIFICATION_CACHE_PREFIX = 'sms:verification:'; constant SMS_VERIFICATION_MESSAGE_TEMPLATE (line 23) | const SMS_VERIFICATION_MESSAGE_TEMPLATE = constant SMS_TWILIO_DEFAULT_VERIFY_API_URL (line 25) | const SMS_TWILIO_DEFAULT_VERIFY_API_URL = 'https://verify.twilio.com/v2'; constant SMS_MASK_VISIBLE_PREFIX_LENGTH (line 26) | const SMS_MASK_VISIBLE_PREFIX_LENGTH = 6; constant SMS_TEST_VERIFICATION_CODE (line 27) | const SMS_TEST_VERIFICATION_CODE = '123456'; FILE: packages/constants/src/StatusConstants.tsx type StatusType (line 30) | type StatusType = ValueOf; constant STATUS_VALUES (line 32) | const STATUS_VALUES = Object.values(StatusTypes) as Array; constant STATUS_SET (line 33) | const STATUS_SET = new Set(STATUS_VALUES); function isStatusType (line 35) | function isStatusType(value: unknown): value is StatusType { function normalizeStatus (line 39) | function normalizeStatus(value: unknown): StatusType { constant OFFLINE_STATUS_TYPES (line 43) | const OFFLINE_STATUS_TYPES: Set = new Set([StatusTypes.OFFLI... function isOfflineStatus (line 45) | function isOfflineStatus( FILE: packages/constants/src/StorageConstants.tsx constant DIRECT_S3_EXPIRATION_DB_FILENAME (line 20) | const DIRECT_S3_EXPIRATION_DB_FILENAME = 'direct_s3_metadata.db'; constant DIRECT_S3_EXPIRATION_TABLE (line 21) | const DIRECT_S3_EXPIRATION_TABLE = 'direct_s3_object_expirations'; constant DIRECT_S3_EXPIRATION_RETRY_DELAY_MS (line 22) | const DIRECT_S3_EXPIRATION_RETRY_DELAY_MS = 60000; constant DIRECT_S3_EXPIRATION_TIMER_MAX_DELAY_MS (line 23) | const DIRECT_S3_EXPIRATION_TIMER_MAX_DELAY_MS = 2147483647; FILE: packages/constants/src/StreamConstants.tsx constant STREAM_PREVIEW_MAX_BYTES (line 20) | const STREAM_PREVIEW_MAX_BYTES = 1_000_000; constant STREAM_PREVIEW_MAX_DIMENSION_PX (line 21) | const STREAM_PREVIEW_MAX_DIMENSION_PX = 640; constant STREAM_PREVIEW_MIN_DIMENSION_PX (line 22) | const STREAM_PREVIEW_MIN_DIMENSION_PX = 160; constant STREAM_PREVIEW_INITIAL_UPLOAD_INTERVAL_MS (line 23) | const STREAM_PREVIEW_INITIAL_UPLOAD_INTERVAL_MS = 1000; constant STREAM_PREVIEW_INITIAL_UPLOAD_MAX_ATTEMPTS (line 24) | const STREAM_PREVIEW_INITIAL_UPLOAD_MAX_ATTEMPTS = 10; constant STREAM_PREVIEW_UPLOAD_INTERVAL_MS (line 25) | const STREAM_PREVIEW_UPLOAD_INTERVAL_MS = 4 * 60 * 1000; constant STREAM_PREVIEW_UPLOAD_JITTER_MS (line 26) | const STREAM_PREVIEW_UPLOAD_JITTER_MS = 60 * 1000; constant STREAM_PREVIEW_REFRESH_INTERVAL_MS (line 27) | const STREAM_PREVIEW_REFRESH_INTERVAL_MS = 5000; constant STREAM_PREVIEW_CONTENT_TYPE_JPEG (line 28) | const STREAM_PREVIEW_CONTENT_TYPE_JPEG = 'image/jpeg'; constant STREAM_PREVIEW_JPEG_DATA_URL_PREFIX (line 29) | const STREAM_PREVIEW_JPEG_DATA_URL_PREFIX = 'data:image/jpeg;base64,'; constant STREAM_PREVIEW_JPEG_QUALITY_START (line 30) | const STREAM_PREVIEW_JPEG_QUALITY_START = 0.7; constant STREAM_PREVIEW_JPEG_QUALITY_MIN (line 31) | const STREAM_PREVIEW_JPEG_QUALITY_MIN = 0.4; constant STREAM_PREVIEW_JPEG_QUALITY_STEP (line 32) | const STREAM_PREVIEW_JPEG_QUALITY_STEP = 0.15; constant STREAM_PREVIEW_DIMENSION_SCALE_STEP (line 33) | const STREAM_PREVIEW_DIMENSION_SCALE_STEP = 0.8; constant STREAM_PREVIEW_ENCODE_ATTEMPTS (line 34) | const STREAM_PREVIEW_ENCODE_ATTEMPTS = 6; constant STREAM_AUDIO_PREFS_TTL_MS (line 35) | const STREAM_AUDIO_PREFS_TTL_MS = 6 * 60 * 60 * 1000; constant STREAM_AUDIO_PREFS_PRUNE_INTERVAL_MS (line 36) | const STREAM_AUDIO_PREFS_PRUNE_INTERVAL_MS = 10 * 60 * 1000; constant STREAM_AUDIO_PREFS_TOUCH_INTERVAL_MS (line 37) | const STREAM_AUDIO_PREFS_TOUCH_INTERVAL_MS = 5 * 60 * 1000; FILE: packages/constants/src/Timeouts.tsx constant DEFAULT_KV_TIMEOUT_MS (line 20) | const DEFAULT_KV_TIMEOUT_MS = 5000; constant DEFAULT_EXPORT_TIMEOUT_MS (line 21) | const DEFAULT_EXPORT_TIMEOUT_MS = 30000; constant DEFAULT_SENTRY_FLUSH_TIMEOUT_MS (line 22) | const DEFAULT_SENTRY_FLUSH_TIMEOUT_MS = 2000; constant DEFAULT_QUEUE_VISIBILITY_TIMEOUT_MS (line 23) | const DEFAULT_QUEUE_VISIBILITY_TIMEOUT_MS = 30000; constant DEFAULT_HTTP_WORKER_TIMEOUT_MS (line 24) | const DEFAULT_HTTP_WORKER_TIMEOUT_MS = 30000; constant DEFAULT_SEARCH_CLIENT_TIMEOUT_MS (line 25) | const DEFAULT_SEARCH_CLIENT_TIMEOUT_MS = 30000; constant DEFAULT_CSAM_SCAN_TIMEOUT_MS (line 26) | const DEFAULT_CSAM_SCAN_TIMEOUT_MS = 30000; constant DEFAULT_FFPROBE_TIMEOUT_MS (line 27) | const DEFAULT_FFPROBE_TIMEOUT_MS = 30000; constant DEFAULT_THUMBNAIL_TIMEOUT_MS (line 28) | const DEFAULT_THUMBNAIL_TIMEOUT_MS = 30000; constant DEFAULT_FRAME_EXTRACTION_TIMEOUT_MS (line 29) | const DEFAULT_FRAME_EXTRACTION_TIMEOUT_MS = 60000; constant QUEUE_SNAPSHOT_INTERVAL_MS (line 30) | const QUEUE_SNAPSHOT_INTERVAL_MS = 2000; constant QUEUE_SNAPSHOT_AFTER_OPS (line 31) | const QUEUE_SNAPSHOT_AFTER_OPS = 50000; FILE: packages/constants/src/UserConstants.tsx constant UNCATEGORIZED_FOLDER_ID (line 22) | const UNCATEGORIZED_FOLDER_ID = -1; type GuildFolderIcon (line 42) | type GuildFolderIcon = ValueOf; constant DEFAULT_GUILD_FOLDER_ICON (line 44) | const DEFAULT_GUILD_FOLDER_ICON: GuildFolderIcon = GuildFolderIcons.FOLDER; constant PUBLIC_USER_FLAGS (line 138) | const PUBLIC_USER_FLAGS = constant DELETED_USER_USERNAME (line 146) | const DELETED_USER_USERNAME = 'DeletedUser'; constant DELETED_USER_GLOBAL_NAME (line 147) | const DELETED_USER_GLOBAL_NAME = 'Deleted User'; constant DELETED_USER_DISCRIMINATOR (line 148) | const DELETED_USER_DISCRIMINATOR = 0; type ThemeType (line 197) | type ThemeType = ValueOf; FILE: packages/constants/src/ValidationErrorCodes.tsx type ValidationErrorCode (line 257) | type ValidationErrorCode = ValueOf; FILE: packages/constants/src/ValueOf.tsx type ValueOf (line 20) | type ValueOf = T[keyof T]; FILE: packages/constants/src/VoiceMessageConstants.tsx constant VOICE_MESSAGE_HOLD_TOOLTIP_DURATION_MS (line 20) | const VOICE_MESSAGE_HOLD_TOOLTIP_DURATION_MS = 2000; constant VOICE_MESSAGE_MIN_SEND_DURATION_MS (line 21) | const VOICE_MESSAGE_MIN_SEND_DURATION_MS = 500; constant VOICE_MESSAGE_RECORDING_TICK_MS (line 22) | const VOICE_MESSAGE_RECORDING_TICK_MS = 120; constant VOICE_MESSAGE_WAVEFORM_BAR_COUNT (line 23) | const VOICE_MESSAGE_WAVEFORM_BAR_COUNT = 24; constant VOICE_MESSAGE_WAVEFORM_UPDATE_INTERVAL_MS (line 24) | const VOICE_MESSAGE_WAVEFORM_UPDATE_INTERVAL_MS = 70; constant VOICE_MESSAGE_LOCK_DRAG_MIN_VERTICAL_DELTA_PX (line 25) | const VOICE_MESSAGE_LOCK_DRAG_MIN_VERTICAL_DELTA_PX = 52; constant VOICE_MESSAGE_LOCK_DRAG_MAX_HORIZONTAL_DELTA_PX (line 26) | const VOICE_MESSAGE_LOCK_DRAG_MAX_HORIZONTAL_DELTA_PX = 96; FILE: packages/date_utils/src/DateComparison.tsx function isSameDay (line 24) | function isSameDay(date1: DateInput, date2?: DateInput): boolean { function isYesterday (line 30) | function isYesterday(date: DateInput, now?: Date): boolean { function getDaysBetween (line 37) | function getDaysBetween(date1: DateInput, date2: DateInput): number { function getDaysDiff (line 45) | function getDaysDiff(date1: DateInput, date2: DateInput): number { function getHoursDiff (line 49) | function getHoursDiff(date1: DateInput, date2: DateInput): number { function getMinutesDiff (line 53) | function getMinutesDiff(date1: DateInput, date2: DateInput): number { function getSecondsDiff (line 57) | function getSecondsDiff(date1: DateInput, date2: DateInput): number { FILE: packages/date_utils/src/DateConstants.tsx constant DEFAULT_LOCALE (line 22) | const DEFAULT_LOCALE = Locales.EN_US; constant MS_PER_SECOND (line 24) | const MS_PER_SECOND = 1000; constant SECONDS_PER_MINUTE (line 25) | const SECONDS_PER_MINUTE = 60; constant MINUTES_PER_HOUR (line 26) | const MINUTES_PER_HOUR = 60; constant HOURS_PER_DAY (line 27) | const HOURS_PER_DAY = 24; constant DAYS_PER_WEEK (line 28) | const DAYS_PER_WEEK = 7; constant DAYS_PER_MONTH (line 29) | const DAYS_PER_MONTH = 30; constant DAYS_PER_YEAR (line 30) | const DAYS_PER_YEAR = 365; constant MS_PER_MINUTE (line 32) | const MS_PER_MINUTE = SECONDS_PER_MINUTE * MS_PER_SECOND; constant MS_PER_HOUR (line 33) | const MS_PER_HOUR = MINUTES_PER_HOUR * MS_PER_MINUTE; constant MS_PER_DAY (line 34) | const MS_PER_DAY = HOURS_PER_DAY * MS_PER_HOUR; constant SECONDS_PER_HOUR (line 35) | const SECONDS_PER_HOUR = MINUTES_PER_HOUR * SECONDS_PER_MINUTE; constant SECONDS_PER_DAY (line 36) | const SECONDS_PER_DAY = HOURS_PER_DAY * SECONDS_PER_HOUR; FILE: packages/date_utils/src/DateDuration.tsx function formatDuration (line 32) | function formatDuration(seconds: number): string { function formatShortRelativeTime (line 48) | function formatShortRelativeTime(timestamp: DateInput, minUnit: '1m' | '... FILE: packages/date_utils/src/DateFormatterCache.tsx function buildCacheKey (line 22) | function buildCacheKey(locale: string, options: Intl.DateTimeFormatOptio... function getDateFormatter (line 26) | function getDateFormatter(locale: string, options: Intl.DateTimeFormatOp... FILE: packages/date_utils/src/DateFormatting.tsx function resolveHour12 (line 27) | function resolveHour12(locale: string, hour12?: boolean): boolean { function formatDate (line 31) | function formatDate( function formatTimestamp (line 49) | function formatTimestamp( function getFormattedDateTime (line 67) | function getFormattedDateTime(timestamp: DateInput, locale: string = DEF... function getFormattedDateTimeInZone (line 79) | function getFormattedDateTimeInZone( function getFormattedShortDate (line 104) | function getFormattedShortDate(timestamp: DateInput, locale: string = DE... function getFormattedLongDate (line 108) | function getFormattedLongDate(timestamp: DateInput, locale: string = DEF... function getFormattedTime (line 112) | function getFormattedTime(timestamp: DateInput, locale: string = DEFAULT... function getFormattedCompactDateTime (line 120) | function getFormattedCompactDateTime( function getFormattedFullDate (line 135) | function getFormattedFullDate(timestamp: DateInput, locale: string = DEF... function getFormattedDateTimeWithSeconds (line 144) | function getFormattedDateTimeWithSeconds( function getRelativeDateString (line 166) | function getRelativeDateString( function formatLastActive (line 201) | function formatLastActive(date: DateInput, locale: string = DEFAULT_LOCA... function formatScheduledMessage (line 209) | function formatScheduledMessage(date: DateInput, locale: string = DEFAUL... FILE: packages/date_utils/src/DateHourCycle.tsx constant TWELVE_HOUR_LOCALES (line 20) | const TWELVE_HOUR_LOCALES = [ function localeUses12Hour (line 40) | function localeUses12Hour(locale: string): boolean { FILE: packages/date_utils/src/DateIntrospection.tsx function getSystemTimeZone (line 23) | function getSystemTimeZone(): string { function getDateFieldOrder (line 27) | function getDateFieldOrder(locale: string): Array { function getMonthNames (line 50) | function getMonthNames(locale: string, format: 'long' | 'short' = 'long'... FILE: packages/date_utils/src/DateParsing.tsx function parseDate (line 22) | function parseDate(input: DateInput): Date { function isValidDate (line 42) | function isValidDate(input: DateInput): boolean { function extractDatePart (line 55) | function extractDatePart(isoString: string): string { function extractTimePart (line 64) | function extractTimePart(isoString: string): string { FILE: packages/date_utils/src/DateTimestampStyle.tsx constant TIMESTAMP_STYLE_OPTIONS (line 24) | const TIMESTAMP_STYLE_OPTIONS: Record = new Set([ function formatTimestampWithStyle (line 68) | function formatTimestampWithStyle( FILE: packages/date_utils/src/DateTypes.tsx type DateInput (line 20) | type DateInput = Date | number | string; type DateFormatOptions (line 22) | interface DateFormatOptions { type DateFieldType (line 28) | type DateFieldType = 'month' | 'day' | 'year'; FILE: packages/elasticsearch_search/src/ElasticsearchClient.tsx type ElasticsearchClientConfig (line 22) | interface ElasticsearchClientConfig { function createElasticsearchClient (line 32) | function createElasticsearchClient(config: ElasticsearchClientConfig): C... FILE: packages/elasticsearch_search/src/ElasticsearchFilterUtils.tsx type ElasticsearchFilter (line 20) | type ElasticsearchFilter = Record; type ElasticsearchRangeOptions (line 22) | interface ElasticsearchRangeOptions { function esTermFilter (line 29) | function esTermFilter(field: string, value: string | number | boolean): ... function esTermsFilter (line 33) | function esTermsFilter(field: string, values: Array)... FILE: packages/elasticsearch_search/src/ElasticsearchIndexDefinitions.tsx type ElasticsearchFieldType (line 20) | type ElasticsearchFieldType = 'text' | 'keyword' | 'boolean' | 'long' | ... type FluxerSearchIndexName (line 22) | type FluxerSearchIndexName = 'messages' | 'guilds' | 'users' | 'reports'... type ElasticsearchFieldMapping (line 24) | interface ElasticsearchFieldMapping { type ElasticsearchIndexSettings (line 30) | interface ElasticsearchIndexSettings { type ElasticsearchIndexDefinition (line 35) | interface ElasticsearchIndexDefinition { function textWithKeyword (line 43) | function textWithKeyword(): ElasticsearchFieldMapping { function keyword (line 47) | function keyword(): ElasticsearchFieldMapping { function bool (line 51) | function bool(): ElasticsearchFieldMapping { function long (line 55) | function long(): ElasticsearchFieldMapping { function integer (line 59) | function integer(): ElasticsearchFieldMapping { constant ELASTICSEARCH_INDEX_DEFINITIONS (line 63) | const ELASTICSEARCH_INDEX_DEFINITIONS: Record { class ElasticsearchIndexAdapter (line 34) | class ElasticsearchIndexAdapter method constructor (line 45) | constructor(options: ElasticsearchIndexAdapterOptions) { method initialize (line 53) | async initialize(): Promise { method shutdown (line 79) | async shutdown(): Promise { method isAvailable (line 83) | isAvailable(): boolean { method indexDocument (line 87) | async indexDocument(doc: TResult): Promise { method indexDocuments (line 91) | async indexDocuments(docs: Array): Promise { method updateDocument (line 101) | async updateDocument(doc: TResult): Promise { method deleteDocument (line 112) | async deleteDocument(id: string): Promise { method deleteDocuments (line 116) | async deleteDocuments(ids: Array): Promise { method deleteAllDocuments (line 126) | async deleteAllDocuments(): Promise { method search (line 136) | async search(query: string, filters: TFilters, options?: SearchOptions... method assertInitialised (line 174) | private assertInitialised(): void { function isResourceAlreadyExistsError (line 181) | function isResourceAlreadyExistsError(error: unknown): boolean { FILE: packages/elasticsearch_search/src/adapters/ElasticsearchMessageAdapter.tsx constant DEFAULT_HITS_PER_PAGE (line 34) | const DEFAULT_HITS_PER_PAGE = 25; constant FETCH_MULTIPLIER (line 35) | const FETCH_MULTIPLIER = 3; constant HAS_FIELD_MAP (line 37) | const HAS_FIELD_MAP: Record = { function buildMessageFilters (line 49) | function buildMessageFilters(filters: MessageSearchFilters): Array, filters: M... function applyExactPhraseFilter (line 191) | function applyExactPhraseFilter(hits: Array, phrases:... function applySortByIdTiebreaker (line 198) | function applySortByIdTiebreaker( type ElasticsearchMessageAdapterOptions (line 220) | interface ElasticsearchMessageAdapterOptions { class ElasticsearchMessageAdapter (line 224) | class ElasticsearchMessageAdapter extends ElasticsearchIndexAdapter( FILE: packages/email/src/EmailProviderTypes.tsx type EmailConfig (line 20) | interface EmailConfig { type EmailMessage (line 28) | interface EmailMessage { type IEmailProvider (line 38) | interface IEmailProvider { type UserBouncedEmailChecker (line 42) | interface UserBouncedEmailChecker { FILE: packages/email/src/EmailService.tsx class EmailService (line 30) | class EmailService implements IEmailService { method constructor (line 36) | constructor( method sendPasswordResetEmail (line 48) | async sendPasswordResetEmail( method sendEmailVerification (line 60) | async sendEmailVerification( method sendIpAuthorizationEmail (line 72) | async sendIpAuthorizationEmail( method sendAccountDisabledForSuspiciousActivityEmail (line 88) | async sendAccountDisabledForSuspiciousActivityEmail( method sendAccountTempBannedEmail (line 101) | async sendAccountTempBannedEmail( method sendAccountScheduledForDeletionEmail (line 119) | async sendAccountScheduledForDeletionEmail( method sendSelfDeletionScheduledEmail (line 135) | async sendSelfDeletionScheduledEmail( method sendUnbanNotification (line 144) | async sendUnbanNotification( method sendScheduledDeletionNotification (line 153) | async sendScheduledDeletionNotification( method sendInactivityWarningEmail (line 163) | async sendInactivityWarningEmail( method sendHarvestCompletedEmail (line 178) | async sendHarvestCompletedEmail( method sendGiftChargebackNotification (line 197) | async sendGiftChargebackNotification( method sendReportResolvedEmail (line 205) | async sendReportResolvedEmail( method sendDsaReportVerificationCode (line 215) | async sendDsaReportVerificationCode( method sendRegistrationApprovedEmail (line 224) | async sendRegistrationApprovedEmail(email: string, username: string, l... method sendPasswordChangeVerification (line 231) | async sendPasswordChangeVerification( method sendEmailChangeOriginal (line 244) | async sendEmailChangeOriginal( method sendEmailChangeNew (line 257) | async sendEmailChangeNew( method sendEmailChangeRevert (line 270) | async sendEmailChangeRevert( method sendDonationMagicLink (line 284) | async sendDonationMagicLink( method sendDonationConfirmation (line 294) | async sendDonationConfirmation( method sendTemplatedEmail (line 310) | private async sendTemplatedEmail( FILE: packages/email/src/IEmailService.tsx type IEmailService (line 20) | interface IEmailService { FILE: packages/email/src/ITestEmailService.tsx type SentEmailRecord (line 22) | interface SentEmailRecord { type ITestEmailService (line 29) | interface ITestEmailService extends IEmailService { FILE: packages/email/src/SmtpEmailProvider.tsx type SmtpEmailConfig (line 26) | interface SmtpEmailConfig { class SmtpEmailProvider (line 37) | class SmtpEmailProvider implements IEmailProvider { method constructor (line 40) | constructor(config: SmtpEmailConfig) { method sendEmail (line 55) | async sendEmail(message: EmailMessage): Promise { FILE: packages/email/src/TestEmailService.tsx function maskToken (line 22) | function maskToken(token: string): string { class TestEmailService (line 31) | class TestEmailService implements ITestEmailService { method constructor (line 35) | constructor(options?: {logger?: {info: (message: string) => void}}) { method listSentEmails (line 39) | listSentEmails(): Array { method clearSentEmails (line 43) | clearSentEmails(): void { method sendPasswordResetEmail (line 47) | async sendPasswordResetEmail( method sendEmailVerification (line 57) | async sendEmailVerification( method sendIpAuthorizationEmail (line 69) | async sendIpAuthorizationEmail( method sendAccountDisabledForSuspiciousActivityEmail (line 83) | async sendAccountDisabledForSuspiciousActivityEmail( method sendAccountTempBannedEmail (line 93) | async sendAccountTempBannedEmail( method sendAccountScheduledForDeletionEmail (line 111) | async sendAccountScheduledForDeletionEmail( method sendSelfDeletionScheduledEmail (line 127) | async sendSelfDeletionScheduledEmail( method sendUnbanNotification (line 137) | async sendUnbanNotification( method sendScheduledDeletionNotification (line 147) | async sendScheduledDeletionNotification( method sendInactivityWarningEmail (line 160) | async sendInactivityWarningEmail( method sendHarvestCompletedEmail (line 176) | async sendHarvestCompletedEmail( method sendGiftChargebackNotification (line 196) | async sendGiftChargebackNotification(email: string, username: string, ... method sendReportResolvedEmail (line 201) | async sendReportResolvedEmail( method sendDsaReportVerificationCode (line 212) | async sendDsaReportVerificationCode( method sendRegistrationApprovedEmail (line 222) | async sendRegistrationApprovedEmail(email: string, username: string, _... method sendPasswordChangeVerification (line 227) | async sendPasswordChangeVerification( method sendEmailChangeOriginal (line 237) | async sendEmailChangeOriginal( method sendEmailChangeNew (line 247) | async sendEmailChangeNew(email: string, username: string, code: string... method sendEmailChangeRevert (line 252) | async sendEmailChangeRevert( method sendDonationMagicLink (line 263) | async sendDonationMagicLink( method sendDonationConfirmation (line 280) | async sendDonationConfirmation( method record (line 299) | private record(to: string, type: string, metadata: Record>; FILE: packages/errors/src/CaptchaErrors.tsx class CaptchaRequiredError (line 23) | class CaptchaRequiredError extends BadRequestError { method constructor (line 24) | constructor() { class InvalidCaptchaError (line 30) | class InvalidCaptchaError extends BadRequestError { method constructor (line 31) | constructor() { FILE: packages/errors/src/ErrorHandler.tsx constant HTTP_STATUS_TO_ERROR_CODE (line 26) | const HTTP_STATUS_TO_ERROR_CODE: Record = { type ResponseFormat (line 40) | type ResponseFormat = 'json' | 'xml'; type ErrorHandlerOptions (line 41) | interface ErrorHandlerOptions { function createErrorHandler (line 48) | function createErrorHandler(options: ErrorHandlerOptions = {}): ErrorHan... FILE: packages/errors/src/FluxerError.tsx type FluxerErrorData (line 22) | type FluxerErrorData = Record; type FluxerErrorStatus (line 23) | type FluxerErrorStatus = HTTPException['status']; type FluxerErrorOptions (line 24) | interface FluxerErrorOptions { class FluxerError (line 34) | class FluxerError extends HTTPException { method constructor (line 42) | constructor(options: FluxerErrorOptions) { method getResponse (line 54) | override getResponse(): Response { method toJSON (line 71) | toJSON(): Record { FILE: packages/errors/src/HttpErrors.tsx type HttpErrorOptions (line 24) | interface HttpErrorOptions { class BadRequestError (line 32) | class BadRequestError extends FluxerError { method constructor (line 33) | constructor(options: HttpErrorOptions = {}) { class UnauthorizedError (line 46) | class UnauthorizedError extends FluxerError { method constructor (line 47) | constructor(options: HttpErrorOptions = {}) { class ForbiddenError (line 60) | class ForbiddenError extends FluxerError { method constructor (line 61) | constructor(options: HttpErrorOptions = {}) { class NotFoundError (line 74) | class NotFoundError extends FluxerError { method constructor (line 75) | constructor(options: HttpErrorOptions = {}) { class MethodNotAllowedError (line 88) | class MethodNotAllowedError extends FluxerError { method constructor (line 89) | constructor(options: HttpErrorOptions = {}) { class ConflictError (line 102) | class ConflictError extends FluxerError { method constructor (line 103) | constructor(options: HttpErrorOptions = {}) { class GoneError (line 116) | class GoneError extends FluxerError { method constructor (line 117) | constructor(options: HttpErrorOptions = {}) { class InternalServerError (line 130) | class InternalServerError extends FluxerError { method constructor (line 131) | constructor(options: HttpErrorOptions = {}) { class NotImplementedError (line 144) | class NotImplementedError extends FluxerError { method constructor (line 145) | constructor(options: HttpErrorOptions = {}) { class ServiceUnavailableError (line 158) | class ServiceUnavailableError extends FluxerError { method constructor (line 159) | constructor(options: HttpErrorOptions = {}) { class BadGatewayError (line 172) | class BadGatewayError extends FluxerError { method constructor (line 173) | constructor(options: HttpErrorOptions = {}) { class GatewayTimeoutError (line 186) | class GatewayTimeoutError extends FluxerError { method constructor (line 187) | constructor(options: HttpErrorOptions = {}) { FILE: packages/errors/src/ValidationError.tsx type FieldError (line 24) | interface FieldError { type ValidationErrorOptions (line 30) | interface ValidationErrorOptions { class ValidationError (line 36) | class ValidationError extends FluxerError { method constructor (line 39) | constructor(options: ValidationErrorOptions) { method getResponse (line 50) | override getResponse(): Response { method fromField (line 66) | static fromField(field: string, code: string, message: string): Valida... method fromFields (line 72) | static fromFields(errors: Array): ValidationError { FILE: packages/errors/src/__tests__/AppErrorHandlers.test.tsx type ErrorResponse (line 28) | interface ErrorResponse { function createApp (line 33) | function createApp(): Hono { FILE: packages/errors/src/__tests__/DomainErrors.test.tsx type ErrorResponse (line 34) | interface ErrorResponse { FILE: packages/errors/src/__tests__/ErrorHandler.test.tsx type ErrorResponse (line 27) | interface ErrorResponse { function createTestApp (line 34) | function createTestApp(options: ErrorHandlerOptions = {}) { FILE: packages/errors/src/__tests__/RateLimitError.test.tsx type RateLimitResponseBody (line 23) | interface RateLimitResponseBody { FILE: packages/errors/src/__tests__/ValidationError.test.tsx type ValidationErrorBody (line 25) | interface ValidationErrorBody { FILE: packages/errors/src/domains/admin/AdminApiKeyNotFoundError.tsx class AdminApiKeyNotFoundError (line 23) | class AdminApiKeyNotFoundError extends NotFoundError { method constructor (line 24) | constructor(messageVariables?: Record) { FILE: packages/errors/src/domains/admin/NotOwnerOfAdminApiKeyError.tsx class NotOwnerOfAdminApiKeyError (line 23) | class NotOwnerOfAdminApiKeyError extends ForbiddenError { method constructor (line 24) | constructor(messageVariables?: Record) { FILE: packages/errors/src/domains/auth/BotUserAuthEndpointAccessDeniedError.tsx class BotUserAuthEndpointAccessDeniedError (line 23) | class BotUserAuthEndpointAccessDeniedError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/BotUserAuthSessionCreationDeniedError.tsx class BotUserAuthSessionCreationDeniedError (line 23) | class BotUserAuthSessionCreationDeniedError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/EmailServiceNotTestableError.tsx class EmailServiceNotTestableError (line 23) | class EmailServiceNotTestableError extends InternalServerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/EmailVerificationRequiredError.tsx class EmailVerificationRequiredError (line 23) | class EmailVerificationRequiredError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/GuildPhoneVerificationRequiredError.tsx class GuildPhoneVerificationRequiredError (line 23) | class GuildPhoneVerificationRequiredError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/HandoffCodeExpiredError.tsx class HandoffCodeExpiredError (line 23) | class HandoffCodeExpiredError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/HttpGetAuthorizeNotSupportedError.tsx class HttpGetAuthorizeNotSupportedError (line 22) | class HttpGetAuthorizeNotSupportedError extends OAuth2Error { method constructor (line 23) | constructor(message = 'GET /oauth2/authorize is not supported. Use POS... FILE: packages/errors/src/domains/auth/InvalidGatewayAuthTokenError.tsx class InvalidGatewayAuthTokenError (line 23) | class InvalidGatewayAuthTokenError extends UnauthorizedError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/InvalidHandoffCodeError.tsx class InvalidHandoffCodeError (line 23) | class InvalidHandoffCodeError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/InvalidPhoneNumberError.tsx class InvalidPhoneNumberError (line 23) | class InvalidPhoneNumberError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/InvalidPhoneVerificationCodeError.tsx class InvalidPhoneVerificationCodeError (line 23) | class InvalidPhoneVerificationCodeError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/InvalidWebAuthnAuthenticationCounterError.tsx class InvalidWebAuthnAuthenticationCounterError (line 23) | class InvalidWebAuthnAuthenticationCounterError extends InternalServerEr... method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/InvalidWebAuthnCredentialCounterError.tsx class InvalidWebAuthnCredentialCounterError (line 23) | class InvalidWebAuthnCredentialCounterError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/InvalidWebAuthnCredentialError.tsx class InvalidWebAuthnCredentialError (line 23) | class InvalidWebAuthnCredentialError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/InvalidWebAuthnPublicKeyFormatError.tsx class InvalidWebAuthnPublicKeyFormatError (line 23) | class InvalidWebAuthnPublicKeyFormatError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/IpAuthorizationRequiredError.tsx class IpAuthorizationRequiredError (line 23) | class IpAuthorizationRequiredError extends ForbiddenError { method constructor (line 24) | constructor({ FILE: packages/errors/src/domains/auth/IpAuthorizationResendCooldownError.tsx class IpAuthorizationResendCooldownError (line 23) | class IpAuthorizationResendCooldownError extends ThrottledError { method constructor (line 24) | constructor(resendAvailableIn: number) { FILE: packages/errors/src/domains/auth/IpAuthorizationResendLimitExceededError.tsx class IpAuthorizationResendLimitExceededError (line 23) | class IpAuthorizationResendLimitExceededError extends ThrottledError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/MfaNotDisabledError.tsx class MfaNotDisabledError (line 23) | class MfaNotDisabledError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/MfaNotEnabledError.tsx class MfaNotEnabledError (line 23) | class MfaNotEnabledError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/MissingGatewayAuthorizationError.tsx class MissingGatewayAuthorizationError (line 23) | class MissingGatewayAuthorizationError extends UnauthorizedError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/MissingOAuthFieldsError.tsx class MissingOAuthFieldsError (line 23) | class MissingOAuthFieldsError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/NoPasskeysRegisteredError.tsx class NoPasskeysRegisteredError (line 23) | class NoPasskeysRegisteredError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/OAuth2Error.tsx type ErrorStatusCode (line 22) | type ErrorStatusCode = 400 | 401 | 403; class OAuth2Error (line 24) | class OAuth2Error extends HTTPException { method constructor (line 29) | constructor({ method getResponse (line 45) | override getResponse(): Response { FILE: packages/errors/src/domains/auth/PasskeyAuthenticationFailedError.tsx class PasskeyAuthenticationFailedError (line 23) | class PasskeyAuthenticationFailedError extends UnauthorizedError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/PhoneAlreadyUsedError.tsx class PhoneAlreadyUsedError (line 23) | class PhoneAlreadyUsedError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/PhoneRequiredForSmsMfaError.tsx class PhoneRequiredForSmsMfaError (line 23) | class PhoneRequiredForSmsMfaError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/PhoneVerificationRequiredError.tsx class PhoneVerificationRequiredError (line 23) | class PhoneVerificationRequiredError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/SessionTokenMismatchError.tsx class SessionTokenMismatchError (line 23) | class SessionTokenMismatchError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/SmsMfaNotEnabledError.tsx class SmsMfaNotEnabledError (line 23) | class SmsMfaNotEnabledError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/SmsMfaRequiresTotpError.tsx class SmsMfaRequiresTotpError (line 23) | class SmsMfaRequiresTotpError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/SmsVerificationUnavailableError.tsx class SmsVerificationUnavailableError (line 23) | class SmsVerificationUnavailableError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/SsoRequiredError.tsx class SsoRequiredError (line 23) | class SsoRequiredError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/SudoModeRequiredError.tsx class SudoModeRequiredError (line 23) | class SudoModeRequiredError extends ForbiddenError { method constructor (line 24) | constructor(hasMfa: boolean) { FILE: packages/errors/src/domains/auth/UnknownWebAuthnCredentialError.tsx class UnknownWebAuthnCredentialError (line 23) | class UnknownWebAuthnCredentialError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/auth/WebAuthnCredentialLimitReachedError.tsx class WebAuthnCredentialLimitReachedError (line 23) | class WebAuthnCredentialLimitReachedError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/CallAlreadyExistsError.tsx class CallAlreadyExistsError (line 23) | class CallAlreadyExistsError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/CannotEditOtherUserMessageError.tsx class CannotEditOtherUserMessageError (line 23) | class CannotEditOtherUserMessageError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/CannotEditSystemMessageError.tsx class CannotEditSystemMessageError (line 23) | class CannotEditSystemMessageError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/CannotReportOwnMessageError.tsx class CannotReportOwnMessageError (line 23) | class CannotReportOwnMessageError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/CannotSendEmptyMessageError.tsx class CannotSendEmptyMessageError (line 23) | class CannotSendEmptyMessageError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/CannotSendMessageToNonTextChannelError.tsx class CannotSendMessageToNonTextChannelError (line 23) | class CannotSendMessageToNonTextChannelError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/CannotSendMessagesToUserError.tsx class CannotSendMessagesToUserError (line 23) | class CannotSendMessagesToUserError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/ChannelIndexingError.tsx class ChannelIndexingError (line 23) | class ChannelIndexingError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/EmptyStreamThumbnailPayloadError.tsx class EmptyStreamThumbnailPayloadError (line 23) | class EmptyStreamThumbnailPayloadError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/InvalidChannelTypeError.tsx class InvalidChannelTypeError (line 23) | class InvalidChannelTypeError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/InvalidChannelTypeForCallError.tsx class InvalidChannelTypeForCallError (line 23) | class InvalidChannelTypeForCallError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/InvalidStreamKeyFormatError.tsx class InvalidStreamKeyFormatError (line 23) | class InvalidStreamKeyFormatError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/InvalidStreamThumbnailPayloadError.tsx class InvalidStreamThumbnailPayloadError (line 23) | class InvalidStreamThumbnailPayloadError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/MaxCategoryChannelsError.tsx class MaxCategoryChannelsError (line 23) | class MaxCategoryChannelsError extends BadRequestError { method constructor (line 24) | constructor(maxChannels: number) { FILE: packages/errors/src/domains/channel/MaxGroupDmRecipientsError.tsx class MaxGroupDmRecipientsError (line 23) | class MaxGroupDmRecipientsError extends BadRequestError { method constructor (line 24) | constructor(limit: number) { FILE: packages/errors/src/domains/channel/MaxGroupDmsError.tsx class MaxGroupDmsError (line 23) | class MaxGroupDmsError extends BadRequestError { method constructor (line 24) | constructor(limit: number) { FILE: packages/errors/src/domains/channel/MaxReactionsPerMessageError.tsx class MaxReactionsPerMessageError (line 23) | class MaxReactionsPerMessageError extends BadRequestError { method constructor (line 24) | constructor(limit: number) { FILE: packages/errors/src/domains/channel/MaxUsersPerMessageReactionError.tsx class MaxUsersPerMessageReactionError (line 23) | class MaxUsersPerMessageReactionError extends BadRequestError { method constructor (line 24) | constructor(limit: number) { FILE: packages/errors/src/domains/channel/MaxWebhooksPerChannelError.tsx class MaxWebhooksPerChannelError (line 23) | class MaxWebhooksPerChannelError extends BadRequestError { method constructor (line 24) | constructor(limit: number) { FILE: packages/errors/src/domains/channel/MessageTotalSizeTooLargeError.tsx class MessageTotalSizeTooLargeError (line 23) | class MessageTotalSizeTooLargeError extends BadRequestError { method constructor (line 24) | constructor(maxSize: number) { FILE: packages/errors/src/domains/channel/NoActiveCallError.tsx class NoActiveCallError (line 23) | class NoActiveCallError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/StreamKeyChannelMismatchError.tsx class StreamKeyChannelMismatchError (line 23) | class StreamKeyChannelMismatchError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/UnclaimedAccountCannotAddReactionsError.tsx class UnclaimedAccountCannotAddReactionsError (line 23) | class UnclaimedAccountCannotAddReactionsError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/UnclaimedAccountCannotJoinGroupDmsError.tsx class UnclaimedAccountCannotJoinGroupDmsError (line 23) | class UnclaimedAccountCannotJoinGroupDmsError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/UnclaimedAccountCannotJoinOneOnOneVoiceCallsError.tsx class UnclaimedAccountCannotJoinOneOnOneVoiceCallsError (line 23) | class UnclaimedAccountCannotJoinOneOnOneVoiceCallsError extends BadReque... method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/UnclaimedAccountCannotJoinVoiceChannelsError.tsx class UnclaimedAccountCannotJoinVoiceChannelsError (line 23) | class UnclaimedAccountCannotJoinVoiceChannelsError extends BadRequestErr... method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/UnclaimedAccountCannotSendDirectMessagesError.tsx class UnclaimedAccountCannotSendDirectMessagesError (line 23) | class UnclaimedAccountCannotSendDirectMessagesError extends BadRequestEr... method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/UnclaimedAccountCannotSendMessagesError.tsx class UnclaimedAccountCannotSendMessagesError (line 23) | class UnclaimedAccountCannotSendMessagesError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/UnknownChannelError.tsx class UnknownChannelError (line 23) | class UnknownChannelError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/channel/UnknownMessageError.tsx class UnknownMessageError (line 23) | class UnknownMessageError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/connection/ConnectionAlreadyExistsError.tsx class ConnectionAlreadyExistsError (line 23) | class ConnectionAlreadyExistsError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/connection/ConnectionInvalidIdentifierError.tsx class ConnectionInvalidIdentifierError (line 23) | class ConnectionInvalidIdentifierError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/connection/ConnectionInvalidTypeError.tsx class ConnectionInvalidTypeError (line 23) | class ConnectionInvalidTypeError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/connection/ConnectionLimitReachedError.tsx class ConnectionLimitReachedError (line 23) | class ConnectionLimitReachedError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/connection/ConnectionNotFoundError.tsx class ConnectionNotFoundError (line 23) | class ConnectionNotFoundError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/connection/ConnectionVerificationFailedError.tsx class ConnectionVerificationFailedError (line 23) | class ConnectionVerificationFailedError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/content/ContentBlockedError.tsx class ContentBlockedError (line 23) | class ContentBlockedError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/AccessDeniedError.tsx class AccessDeniedError (line 23) | class AccessDeniedError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/AclsMustBeNonEmptyError.tsx class AclsMustBeNonEmptyError (line 23) | class AclsMustBeNonEmptyError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/AuditLogIndexingError.tsx class AuditLogIndexingError (line 23) | class AuditLogIndexingError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/BadGatewayError.tsx class BadGatewayError (line 24) | class BadGatewayError extends FluxerError { method constructor (line 25) | constructor({ FILE: packages/errors/src/domains/core/BadRequestError.tsx class BadRequestError (line 23) | class BadRequestError extends FluxerError { method constructor (line 24) | constructor({ FILE: packages/errors/src/domains/core/CannotExecuteOnDmError.tsx class CannotExecuteOnDmError (line 23) | class CannotExecuteOnDmError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/CannotRemoveOtherRecipientsError.tsx class CannotRemoveOtherRecipientsError (line 23) | class CannotRemoveOtherRecipientsError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/CannotShrinkReservedSlotsError.tsx class CannotShrinkReservedSlotsError (line 23) | class CannotShrinkReservedSlotsError extends BadRequestError { method constructor (line 24) | constructor(reservedSlotIndices: Array) { FILE: packages/errors/src/domains/core/CaptchaVerificationRequiredError.tsx class CaptchaVerificationRequiredError (line 23) | class CaptchaVerificationRequiredError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/ConflictError.tsx class ConflictError (line 23) | class ConflictError extends FluxerError { method constructor (line 24) | constructor({ FILE: packages/errors/src/domains/core/CreationFailedError.tsx class CreationFailedError (line 23) | class CreationFailedError extends InternalServerError { method constructor (line 24) | constructor(detail?: string) { FILE: packages/errors/src/domains/core/DeletionFailedError.tsx class DeletionFailedError (line 23) | class DeletionFailedError extends InternalServerError { method constructor (line 24) | constructor(detail?: string) { FILE: packages/errors/src/domains/core/ErrorHandlers.tsx constant LOCALE_LOOKUP (line 47) | const LOCALE_LOOKUP = new Map(Object.values(Locales).map... function isExpectedError (line 49) | function isExpectedError(err: Error): boolean { function resolveLocaleFromAcceptLanguage (line 53) | function resolveLocaleFromAcceptLanguage(acceptLanguageHeader: string | ... function getI18nContext (line 87) | function getI18nContext( function resolveLocalizedMessageWithoutService (line 102) | function resolveLocalizedMessageWithoutService( function resolveLocalizedMessage (line 112) | function resolveLocalizedMessage( function handleLocalizedValidationErrors (line 125) | function handleLocalizedValidationErrors( function handleFluxerError (line 181) | function handleFluxerError(err: FluxerError, ctx:... function handleKnownErrorCode (line 207) | function handleKnownErrorCode(err: unknown, error... constant HTTP_STATUS_TO_ERROR_CODE (line 228) | const HTTP_STATUS_TO_ERROR_CODE: Partial> = { function handleHTTPException (line 242) | function handleHTTPException(err: HTTPException, ... function handleUnexpectedError (line 274) | function handleUnexpectedError(ctx: Context): ... function AppErrorHandler (line 286) | function AppErrorHandler( function AppNotFoundHandler (line 324) | function AppNotFoundHandler(ctx: Co... FILE: packages/errors/src/domains/core/FeatureAccessError.tsx class FeatureAccessError (line 23) | class FeatureAccessError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/FeatureNotAvailableSelfHostedError.tsx class FeatureNotAvailableSelfHostedError (line 23) | class FeatureNotAvailableSelfHostedError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/FeatureTemporarilyDisabledError.tsx class FeatureTemporarilyDisabledError (line 23) | class FeatureTemporarilyDisabledError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/FileSizeTooLargeError.tsx class FileSizeTooLargeError (line 23) | class FileSizeTooLargeError extends BadRequestError { method constructor (line 24) | constructor(maxSize?: number) { FILE: packages/errors/src/domains/core/ForbiddenError.tsx class ForbiddenError (line 23) | class ForbiddenError extends FluxerError { method constructor (line 24) | constructor({ FILE: packages/errors/src/domains/core/GatewayTimeoutError.tsx class GatewayTimeoutError (line 24) | class GatewayTimeoutError extends FluxerError { method constructor (line 25) | constructor({ FILE: packages/errors/src/domains/core/GoneError.tsx class GoneError (line 23) | class GoneError extends FluxerError { method constructor (line 24) | constructor({ FILE: packages/errors/src/domains/core/InputValidationError.tsx type LocalizedValidationError (line 25) | interface LocalizedValidationError { class InputValidationError (line 31) | class InputValidationError extends BadRequestError { method constructor (line 34) | constructor(errors: Array, localizedErrors?: Array | null { method create (line 43) | static create(path: string, message: string): InputValidationError { method createMultiple (line 47) | static createMultiple(errors: Array<{field: string; message: string}>)... method fromCode (line 51) | static fromCode(path: string, code: ValidationErrorCode, variables?: R... method fromCodes (line 55) | static fromCodes(errors: Array): InputValida... FILE: packages/errors/src/domains/core/InternalServerError.tsx class InternalServerError (line 23) | class InternalServerError extends FluxerError { method constructor (line 24) | constructor({ FILE: packages/errors/src/domains/core/InvalidAclsFormatError.tsx class InvalidAclsFormatError (line 23) | class InvalidAclsFormatError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/InvalidApiOriginError.tsx class InvalidApiOriginError (line 23) | class InvalidApiOriginError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/InvalidCaptchaError.tsx class InvalidCaptchaError (line 23) | class InvalidCaptchaError extends BadRequestError { method constructor (line 24) | constructor(detail?: string) { FILE: packages/errors/src/domains/core/InvalidFlagsFormatError.tsx class InvalidFlagsFormatError (line 23) | class InvalidFlagsFormatError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/InvalidPermissionsIntegerError.tsx class InvalidPermissionsIntegerError (line 23) | class InvalidPermissionsIntegerError extends OAuth2Error { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/InvalidPermissionsNegativeError.tsx class InvalidPermissionsNegativeError (line 23) | class InvalidPermissionsNegativeError extends OAuth2Error { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/InvalidRequestError.tsx class InvalidRequestError (line 23) | class InvalidRequestError extends OAuth2Error { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/InvalidSuspiciousFlagsFormatError.tsx class InvalidSuspiciousFlagsFormatError (line 23) | class InvalidSuspiciousFlagsFormatError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/InvalidSystemFlagError.tsx class InvalidSystemFlagError (line 23) | class InvalidSystemFlagError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/InvalidTimestampError.tsx class InvalidTimestampError (line 23) | class InvalidTimestampError extends BadRequestError { method constructor (line 24) | constructor(detail?: string) { FILE: packages/errors/src/domains/core/InvalidTokenError.tsx class InvalidTokenError (line 23) | class InvalidTokenError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/LockedError.tsx class LockedError (line 23) | class LockedError extends FluxerError { method constructor (line 24) | constructor({ FILE: packages/errors/src/domains/core/MaxBookmarksError.tsx class MaxBookmarksError (line 24) | class MaxBookmarksError extends BadRequestError { method constructor (line 25) | constructor(params: {maxBookmarks: number; isPremium?: boolean}) { FILE: packages/errors/src/domains/core/MaxFavoriteMemesError.tsx class MaxFavoriteMemesError (line 23) | class MaxFavoriteMemesError extends BadRequestError { method constructor (line 24) | constructor(limit: number) { FILE: packages/errors/src/domains/core/MediaMetadataError.tsx class MediaMetadataError (line 23) | class MediaMetadataError extends BadRequestError { method constructor (line 24) | constructor(source: string) { FILE: packages/errors/src/domains/core/MethodNotAllowedError.tsx class MethodNotAllowedError (line 24) | class MethodNotAllowedError extends FluxerError { method constructor (line 25) | constructor({ FILE: packages/errors/src/domains/core/MissingACLError.tsx class MissingACLError (line 23) | class MissingACLError extends ForbiddenError { method constructor (line 24) | constructor(requiredACL: string) { FILE: packages/errors/src/domains/core/MissingAccessError.tsx class MissingAccessError (line 23) | class MissingAccessError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/MissingOAuthAdminScopeError.tsx class MissingOAuthAdminScopeError (line 23) | class MissingOAuthAdminScopeError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/MissingPermissionsError.tsx class MissingPermissionsError (line 23) | class MissingPermissionsError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/NoPendingDeletionError.tsx class NoPendingDeletionError (line 23) | class NoPendingDeletionError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/NotFoundError.tsx class NotFoundError (line 23) | class NotFoundError extends FluxerError { method constructor (line 24) | constructor({ FILE: packages/errors/src/domains/core/NotImplementedError.tsx class NotImplementedError (line 24) | class NotImplementedError extends FluxerError { method constructor (line 25) | constructor({ FILE: packages/errors/src/domains/core/PreviewMustBeJpegError.tsx class PreviewMustBeJpegError (line 23) | class PreviewMustBeJpegError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/ProcessingFailedError.tsx class ProcessingFailedError (line 23) | class ProcessingFailedError extends InternalServerError { method constructor (line 24) | constructor(detail?: string) { FILE: packages/errors/src/domains/core/RateLimitError.tsx function sanitizeRetryAfter (line 24) | function sanitizeRetryAfter(value: number | undefined | null): number { function sanitizeRetryAfterDecimal (line 31) | function sanitizeRetryAfterDecimal(value: number | undefined | null, fal... function sanitizeResetTime (line 38) | function sanitizeResetTime(resetTime: Date): number { class RateLimitError (line 51) | class RateLimitError extends ThrottledError { method constructor (line 52) | constructor({ FILE: packages/errors/src/domains/core/ResourceLockedError.tsx class ResourceLockedError (line 23) | class ResourceLockedError extends LockedError { method constructor (line 24) | constructor(detail?: string) { FILE: packages/errors/src/domains/core/ServiceUnavailableError.tsx class ServiceUnavailableError (line 23) | class ServiceUnavailableError extends FluxerError { method constructor (line 24) | constructor({ FILE: packages/errors/src/domains/core/SlowmodeRateLimitError.tsx class SlowmodeRateLimitError (line 23) | class SlowmodeRateLimitError extends BadRequestError { method constructor (line 24) | constructor({retryAfter, retryAfterDecimal}: {retryAfter: number; retr... FILE: packages/errors/src/domains/core/TestHarnessDisabledError.tsx class TestHarnessDisabledError (line 23) | class TestHarnessDisabledError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/TestHarnessForbiddenError.tsx class TestHarnessForbiddenError (line 23) | class TestHarnessForbiddenError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/ThrottledError.tsx class ThrottledError (line 22) | class ThrottledError extends FluxerError { method constructor (line 23) | constructor({ FILE: packages/errors/src/domains/core/UnauthorizedError.tsx class UnauthorizedError (line 24) | class UnauthorizedError extends FluxerError { method constructor (line 25) | constructor({ FILE: packages/errors/src/domains/core/UnknownFavoriteMemeError.tsx class UnknownFavoriteMemeError (line 23) | class UnknownFavoriteMemeError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/UnknownSuspiciousFlagError.tsx class UnknownSuspiciousFlagError (line 23) | class UnknownSuspiciousFlagError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/core/UpdateFailedError.tsx class UpdateFailedError (line 23) | class UpdateFailedError extends InternalServerError { method constructor (line 24) | constructor(detail?: string) { FILE: packages/errors/src/domains/core/ValidationError.tsx type ValidationError (line 22) | interface ValidationError { FILE: packages/errors/src/domains/csam/CsamScanErrors.tsx class CsamScanTimeoutError (line 23) | class CsamScanTimeoutError extends InternalServerError { method constructor (line 24) | constructor() { class CsamScanFailedError (line 29) | class CsamScanFailedError extends InternalServerError { method constructor (line 30) | constructor() { class CsamScanParseError (line 35) | class CsamScanParseError extends InternalServerError { method constructor (line 36) | constructor() { class CsamScanSubscriptionError (line 41) | class CsamScanSubscriptionError extends InternalServerError { method constructor (line 42) | constructor() { FILE: packages/errors/src/domains/discovery/DiscoveryAlreadyAppliedError.tsx class DiscoveryAlreadyAppliedError (line 23) | class DiscoveryAlreadyAppliedError extends ConflictError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/discovery/DiscoveryApplicationAlreadyReviewedError.tsx class DiscoveryApplicationAlreadyReviewedError (line 23) | class DiscoveryApplicationAlreadyReviewedError extends ConflictError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/discovery/DiscoveryApplicationNotFoundError.tsx class DiscoveryApplicationNotFoundError (line 23) | class DiscoveryApplicationNotFoundError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/discovery/DiscoveryDisabledError.tsx class DiscoveryDisabledError (line 23) | class DiscoveryDisabledError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/discovery/DiscoveryInsufficientMembersError.tsx class DiscoveryInsufficientMembersError (line 23) | class DiscoveryInsufficientMembersError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/discovery/DiscoveryInvalidCategoryError.tsx class DiscoveryInvalidCategoryError (line 23) | class DiscoveryInvalidCategoryError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/discovery/DiscoveryNotDiscoverableError.tsx class DiscoveryNotDiscoverableError (line 23) | class DiscoveryNotDiscoverableError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/donation/DonationAmountInvalidError.tsx class DonationAmountInvalidError (line 23) | class DonationAmountInvalidError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/donation/DonationMagicLinkExpiredError.tsx class DonationMagicLinkExpiredError (line 23) | class DonationMagicLinkExpiredError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/donation/DonationMagicLinkInvalidError.tsx class DonationMagicLinkInvalidError (line 23) | class DonationMagicLinkInvalidError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/donation/DonationMagicLinkUsedError.tsx class DonationMagicLinkUsedError (line 23) | class DonationMagicLinkUsedError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/donation/DonorNotFoundError.tsx class DonorNotFoundError (line 23) | class DonorNotFoundError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/federation/DecryptionFailedError.tsx class DecryptionFailedError (line 23) | class DecryptionFailedError extends InternalServerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/federation/EmptyEncryptedBodyError.tsx class EmptyEncryptedBodyError (line 23) | class EmptyEncryptedBodyError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/federation/EncryptionErrors.tsx class MissingEphemeralKeyError (line 24) | class MissingEphemeralKeyError extends BadRequestError { method constructor (line 25) | constructor() { class MissingIvError (line 30) | class MissingIvError extends BadRequestError { method constructor (line 31) | constructor() { class InvalidEphemeralKeyError (line 36) | class InvalidEphemeralKeyError extends BadRequestError { method constructor (line 37) | constructor() { class InvalidIvError (line 42) | class InvalidIvError extends BadRequestError { method constructor (line 43) | constructor() { class EmptyEncryptedBodyError (line 48) | class EmptyEncryptedBodyError extends BadRequestError { method constructor (line 49) | constructor() { class DecryptionFailedError (line 54) | class DecryptionFailedError extends InternalServerError { method constructor (line 55) | constructor() { class EncryptionFailedError (line 60) | class EncryptionFailedError extends InternalServerError { method constructor (line 61) | constructor() { class InvalidDecryptedJsonError (line 66) | class InvalidDecryptedJsonError extends BadRequestError { method constructor (line 67) | constructor() { FILE: packages/errors/src/domains/federation/EncryptionFailedError.tsx class EncryptionFailedError (line 23) | class EncryptionFailedError extends InternalServerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/federation/InvalidDecryptedJsonError.tsx class InvalidDecryptedJsonError (line 23) | class InvalidDecryptedJsonError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/federation/InvalidEphemeralKeyError.tsx class InvalidEphemeralKeyError (line 23) | class InvalidEphemeralKeyError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/federation/InvalidIvError.tsx class InvalidIvError (line 23) | class InvalidIvError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/federation/MissingEphemeralKeyError.tsx class MissingEphemeralKeyError (line 23) | class MissingEphemeralKeyError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/federation/MissingIvError.tsx class MissingIvError (line 23) | class MissingIvError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/guild/AccountTooNewForGuildError.tsx class AccountTooNewForGuildError (line 23) | class AccountTooNewForGuildError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/guild/BannedFromGuildError.tsx class BannedFromGuildError (line 23) | class BannedFromGuildError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/guild/CannotReportOwnGuildError.tsx class CannotReportOwnGuildError (line 23) | class CannotReportOwnGuildError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/guild/CannotTransferOwnershipToBotError.tsx class CannotTransferOwnershipToBotError (line 23) | class CannotTransferOwnershipToBotError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/guild/GuildVerificationRequiredError.tsx class GuildVerificationRequiredError (line 23) | class GuildVerificationRequiredError extends ForbiddenError { method constructor (line 24) | constructor(detail?: string) { FILE: packages/errors/src/domains/guild/IpBannedFromGuildError.tsx class IpBannedFromGuildError (line 23) | class IpBannedFromGuildError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/guild/MaxGuildChannelsError.tsx class MaxGuildChannelsError (line 23) | class MaxGuildChannelsError extends BadRequestError { method constructor (line 24) | constructor(maxChannels: number) { FILE: packages/errors/src/domains/guild/MaxGuildEmojisAnimatedError.tsx class MaxGuildEmojisAnimatedError (line 23) | class MaxGuildEmojisAnimatedError extends BadRequestError { method constructor (line 24) | constructor(maxAnimated: number) { FILE: packages/errors/src/domains/guild/MaxGuildEmojisStaticError.tsx class MaxGuildEmojisStaticError (line 23) | class MaxGuildEmojisStaticError extends BadRequestError { method constructor (line 24) | constructor(maxStatic: number) { FILE: packages/errors/src/domains/guild/MaxGuildInvitesError.tsx class MaxGuildInvitesError (line 23) | class MaxGuildInvitesError extends BadRequestError { method constructor (line 24) | constructor(limit: number) { FILE: packages/errors/src/domains/guild/MaxGuildMembersError.tsx class MaxGuildMembersError (line 23) | class MaxGuildMembersError extends BadRequestError { method constructor (line 24) | constructor(maxMembers: number) { FILE: packages/errors/src/domains/guild/MaxGuildRolesError.tsx class MaxGuildRolesError (line 23) | class MaxGuildRolesError extends BadRequestError { method constructor (line 24) | constructor(limit: number) { FILE: packages/errors/src/domains/guild/MaxGuildStickersStaticError.tsx class MaxGuildStickersStaticError (line 23) | class MaxGuildStickersStaticError extends BadRequestError { method constructor (line 24) | constructor(maxStickers: number) { FILE: packages/errors/src/domains/guild/MaxGuildsError.tsx class MaxGuildsError (line 23) | class MaxGuildsError extends BadRequestError { method constructor (line 24) | constructor(limit: number) { FILE: packages/errors/src/domains/guild/MaxWebhooksPerGuildError.tsx class MaxWebhooksPerGuildError (line 23) | class MaxWebhooksPerGuildError extends BadRequestError { method constructor (line 24) | constructor(limit: number) { FILE: packages/errors/src/domains/guild/UnknownGuildEmojiError.tsx class UnknownGuildEmojiError (line 23) | class UnknownGuildEmojiError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/guild/UnknownGuildError.tsx class UnknownGuildError (line 23) | class UnknownGuildError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/guild/UnknownGuildMemberError.tsx class UnknownGuildMemberError (line 23) | class UnknownGuildMemberError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/guild/UnknownGuildRoleError.tsx class UnknownGuildRoleError (line 23) | class UnknownGuildRoleError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/guild/UnknownGuildStickerError.tsx class UnknownGuildStickerError (line 23) | class UnknownGuildStickerError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/guild/UserOwnsGuildsError.tsx class UserOwnsGuildsError (line 23) | class UserOwnsGuildsError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/invite/InvitesDisabledError.tsx class InvitesDisabledError (line 23) | class InvitesDisabledError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/invite/TemporaryInviteRequiresPresenceError.tsx class TemporaryInviteRequiresPresenceError (line 23) | class TemporaryInviteRequiresPresenceError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/invite/UnknownInviteError.tsx class UnknownInviteError (line 23) | class UnknownInviteError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/CannotReportYourselfError.tsx class CannotReportYourselfError (line 23) | class CannotReportYourselfError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/CommunicationDisabledError.tsx class CommunicationDisabledError (line 23) | class CommunicationDisabledError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/ExplicitContentCannotBeSentError.tsx class ExplicitContentCannotBeSentError (line 23) | class ExplicitContentCannotBeSentError extends BadRequestError { method constructor (line 24) | constructor(probability: number, predictions: Record) { FILE: packages/errors/src/domains/moderation/HarvestExpiredError.tsx class HarvestExpiredError (line 23) | class HarvestExpiredError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/HarvestFailedError.tsx class HarvestFailedError (line 23) | class HarvestFailedError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/HarvestNotReadyError.tsx class HarvestNotReadyError (line 23) | class HarvestNotReadyError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/HarvestOnCooldownError.tsx class HarvestOnCooldownError (line 23) | class HarvestOnCooldownError extends FluxerError { method constructor (line 24) | constructor({retryAfter}: {retryAfter: Date}) { FILE: packages/errors/src/domains/moderation/InvalidDsaReportTargetError.tsx class InvalidDsaReportTargetError (line 23) | class InvalidDsaReportTargetError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/InvalidDsaTicketError.tsx class InvalidDsaTicketError (line 23) | class InvalidDsaTicketError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/InvalidDsaVerificationCodeError.tsx class InvalidDsaVerificationCodeError (line 23) | class InvalidDsaVerificationCodeError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/IpBannedError.tsx class IpBannedError (line 23) | class IpBannedError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/NcmecAlreadySubmittedError.tsx class NcmecAlreadySubmittedError (line 23) | class NcmecAlreadySubmittedError extends ConflictError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/NcmecSubmissionFailedError.tsx class NcmecSubmissionFailedError (line 23) | class NcmecSubmissionFailedError extends InternalServerError { method constructor (line 24) | constructor(reason?: string) { FILE: packages/errors/src/domains/moderation/NsfwContentRequiresAgeVerificationError.tsx class NsfwContentRequiresAgeVerificationError (line 23) | class NsfwContentRequiresAgeVerificationError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/ReportAlreadyResolvedError.tsx class ReportAlreadyResolvedError (line 23) | class ReportAlreadyResolvedError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/ReportBannedError.tsx class ReportBannedError (line 23) | class ReportBannedError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/UnknownHarvestError.tsx class UnknownHarvestError (line 23) | class UnknownHarvestError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/moderation/UnknownReportError.tsx class UnknownReportError (line 23) | class UnknownReportError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/oauth/ApplicationNotFoundError.tsx class ApplicationNotFoundError (line 23) | class ApplicationNotFoundError extends NotFoundError { method constructor (line 24) | constructor(messageVariables?: Record) { FILE: packages/errors/src/domains/oauth/BotAlreadyInGuildError.tsx class BotAlreadyInGuildError (line 23) | class BotAlreadyInGuildError extends BadRequestError { method constructor (line 24) | constructor(messageVariables?: Record) { FILE: packages/errors/src/domains/oauth/BotApplicationNotFoundError.tsx class BotApplicationNotFoundError (line 23) | class BotApplicationNotFoundError extends NotFoundError { method constructor (line 24) | constructor(messageVariables?: Record) { FILE: packages/errors/src/domains/oauth/BotIsPrivateError.tsx class BotIsPrivateError (line 23) | class BotIsPrivateError extends ForbiddenError { method constructor (line 24) | constructor(messageVariables?: Record) { FILE: packages/errors/src/domains/oauth/BotUserNotFoundError.tsx class BotUserNotFoundError (line 23) | class BotUserNotFoundError extends NotFoundError { method constructor (line 24) | constructor(messageVariables?: Record) { FILE: packages/errors/src/domains/oauth/BotsCannotSendFriendRequestsError.tsx class BotsCannotSendFriendRequestsError (line 23) | class BotsCannotSendFriendRequestsError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/oauth/InvalidBotFlagError.tsx class InvalidBotFlagError (line 23) | class InvalidBotFlagError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/oauth/InvalidClientError.tsx class InvalidClientError (line 22) | class InvalidClientError extends OAuth2Error { method constructor (line 23) | constructor(message = 'Invalid client credentials') { FILE: packages/errors/src/domains/oauth/InvalidClientSecretError.tsx class InvalidClientSecretError (line 22) | class InvalidClientSecretError extends OAuth2Error { method constructor (line 23) | constructor(message = 'Invalid client_secret') { FILE: packages/errors/src/domains/oauth/InvalidGrantError.tsx class InvalidGrantError (line 22) | class InvalidGrantError extends OAuth2Error { method constructor (line 23) | constructor(message = 'The provided authorization grant is invalid, ex... FILE: packages/errors/src/domains/oauth/InvalidRedirectUriError.tsx class InvalidRedirectUriError (line 22) | class InvalidRedirectUriError extends OAuth2Error { method constructor (line 23) | constructor(message = 'Invalid redirect_uri') { FILE: packages/errors/src/domains/oauth/InvalidResponseTypeForNonBotError.tsx class InvalidResponseTypeForNonBotError (line 22) | class InvalidResponseTypeForNonBotError extends OAuth2Error { method constructor (line 23) | constructor(message = 'response_type must be code for non-bot scopes') { FILE: packages/errors/src/domains/oauth/InvalidScopeError.tsx class InvalidScopeError (line 22) | class InvalidScopeError extends OAuth2Error { method constructor (line 23) | constructor(message = 'The requested scope is invalid or unsupported') { FILE: packages/errors/src/domains/oauth/MissingClientSecretError.tsx class MissingClientSecretError (line 22) | class MissingClientSecretError extends OAuth2Error { method constructor (line 23) | constructor(message = 'Missing client_secret') { FILE: packages/errors/src/domains/oauth/MissingOAuthScopeError.tsx class MissingOAuthScopeError (line 23) | class MissingOAuthScopeError extends ForbiddenError { method constructor (line 24) | constructor(scope: string) { FILE: packages/errors/src/domains/oauth/MissingRedirectUriError.tsx class MissingRedirectUriError (line 22) | class MissingRedirectUriError extends OAuth2Error { method constructor (line 23) | constructor(message = 'Missing redirect_uri') { FILE: packages/errors/src/domains/oauth/NotABotApplicationError.tsx class NotABotApplicationError (line 23) | class NotABotApplicationError extends BadRequestError { method constructor (line 24) | constructor(messageVariables?: Record) { FILE: packages/errors/src/domains/oauth/RedirectUriRequiredForNonBotError.tsx class RedirectUriRequiredForNonBotError (line 22) | class RedirectUriRequiredForNonBotError extends OAuth2Error { method constructor (line 23) | constructor(message = 'redirect_uri required for non-bot scopes') { FILE: packages/errors/src/domains/oauth/StreamKeyScopeMismatchError.tsx class StreamKeyScopeMismatchError (line 23) | class StreamKeyScopeMismatchError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/oauth/UnclaimedAccountCannotCreateApplicationsError.tsx class UnclaimedAccountCannotCreateApplicationsError (line 23) | class UnclaimedAccountCannotCreateApplicationsError extends BadRequestEr... method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/oauth/UnknownApplicationError.tsx class UnknownApplicationError (line 23) | class UnknownApplicationError extends NotFoundError { method constructor (line 24) | constructor(messageVariables?: Record) { FILE: packages/errors/src/domains/oauth/UnsupportedGrantTypeError.tsx class UnsupportedGrantTypeError (line 22) | class UnsupportedGrantTypeError extends OAuth2Error { method constructor (line 23) | constructor(message = 'The authorization grant type is not supported') { FILE: packages/errors/src/domains/pack/InvalidPackTypeError.tsx class InvalidPackTypeError (line 23) | class InvalidPackTypeError extends BadRequestError { method constructor (line 24) | constructor(expectedType: 'emoji' | 'sticker') { FILE: packages/errors/src/domains/pack/MaxPackExpressionsError.tsx class MaxPackExpressionsError (line 23) | class MaxPackExpressionsError extends BadRequestError { method constructor (line 24) | constructor(maxExpressions: number) { FILE: packages/errors/src/domains/pack/MaxPackLimitError.tsx class MaxPackLimitError (line 23) | class MaxPackLimitError extends BadRequestError { method constructor (line 24) | constructor(packType: 'emoji' | 'sticker', limit: number, action: 'cre... FILE: packages/errors/src/domains/pack/PackAccessDeniedError.tsx class PackAccessDeniedError (line 23) | class PackAccessDeniedError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/pack/UnknownPackError.tsx class UnknownPackError (line 23) | class UnknownPackError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/CannotRedeemPlutoniumWithVisionaryError.tsx class CannotRedeemPlutoniumWithVisionaryError (line 23) | class CannotRedeemPlutoniumWithVisionaryError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/GiftCodeAlreadyRedeemedError.tsx class GiftCodeAlreadyRedeemedError (line 23) | class GiftCodeAlreadyRedeemedError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/NoActiveSubscriptionError.tsx class NoActiveSubscriptionError (line 23) | class NoActiveSubscriptionError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/NoVisionarySlotsAvailableError.tsx class NoVisionarySlotsAvailableError (line 23) | class NoVisionarySlotsAvailableError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/PremiumPurchaseBlockedError.tsx class PremiumPurchaseBlockedError (line 23) | class PremiumPurchaseBlockedError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeError.tsx class StripeError (line 23) | class StripeError extends FluxerError { method constructor (line 24) | constructor(detail?: string) { FILE: packages/errors/src/domains/payment/StripeGiftRedemptionInProgressError.tsx class StripeGiftRedemptionInProgressError (line 23) | class StripeGiftRedemptionInProgressError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeInvalidProductConfigurationError.tsx class StripeInvalidProductConfigurationError (line 23) | class StripeInvalidProductConfigurationError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeInvalidProductError.tsx class StripeInvalidProductError (line 23) | class StripeInvalidProductError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeNoActiveSubscriptionError.tsx class StripeNoActiveSubscriptionError (line 23) | class StripeNoActiveSubscriptionError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeNoPurchaseHistoryError.tsx class StripeNoPurchaseHistoryError (line 23) | class StripeNoPurchaseHistoryError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeNoSubscriptionError.tsx class StripeNoSubscriptionError (line 23) | class StripeNoSubscriptionError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripePaymentNotAvailableError.tsx class StripePaymentNotAvailableError (line 23) | class StripePaymentNotAvailableError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeSubscriptionAlreadyCancelingError.tsx class StripeSubscriptionAlreadyCancelingError (line 23) | class StripeSubscriptionAlreadyCancelingError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeSubscriptionNotCancelingError.tsx class StripeSubscriptionNotCancelingError (line 23) | class StripeSubscriptionNotCancelingError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeSubscriptionPeriodEndMissingError.tsx class StripeSubscriptionPeriodEndMissingError (line 23) | class StripeSubscriptionPeriodEndMissingError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeWebhookNotAvailableError.tsx class StripeWebhookNotAvailableError (line 23) | class StripeWebhookNotAvailableError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeWebhookSignatureInvalidError.tsx class StripeWebhookSignatureInvalidError (line 23) | class StripeWebhookSignatureInvalidError extends FluxerError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/StripeWebhookSignatureMissingError.tsx class StripeWebhookSignatureMissingError (line 23) | class StripeWebhookSignatureMissingError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/payment/UnknownGiftCodeError.tsx class UnknownGiftCodeError (line 23) | class UnknownGiftCodeError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/AccountPermanentlySuspendedError.tsx class AccountPermanentlySuspendedError (line 23) | class AccountPermanentlySuspendedError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/AccountSuspiciousActivityError.tsx class AccountSuspiciousActivityError (line 23) | class AccountSuspiciousActivityError extends ForbiddenError { method constructor (line 24) | constructor(suspiciousActivityFlags: number) { FILE: packages/errors/src/domains/user/AccountTemporarilySuspendedError.tsx class AccountTemporarilySuspendedError (line 23) | class AccountTemporarilySuspendedError extends ForbiddenError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/AlreadyFriendsError.tsx class AlreadyFriendsError (line 23) | class AlreadyFriendsError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/CannotSendFriendRequestToBlockedUserError.tsx class CannotSendFriendRequestToBlockedUserError (line 23) | class CannotSendFriendRequestToBlockedUserError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/CannotSendFriendRequestToSelfError.tsx class CannotSendFriendRequestToSelfError (line 23) | class CannotSendFriendRequestToSelfError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/FriendRequestBlockedError.tsx class FriendRequestBlockedError (line 23) | class FriendRequestBlockedError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/InvalidDiscriminatorError.tsx class InvalidDiscriminatorError (line 23) | class InvalidDiscriminatorError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/MaxRelationshipsError.tsx class MaxRelationshipsError (line 23) | class MaxRelationshipsError extends BadRequestError { method constructor (line 24) | constructor(limit: number) { FILE: packages/errors/src/domains/user/NoUsersWithFluxertagError.tsx class NoUsersWithFluxertagError (line 23) | class NoUsersWithFluxertagError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/NotFriendsWithUserError.tsx class NotFriendsWithUserError (line 23) | class NotFriendsWithUserError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/TagAlreadyTakenError.tsx class TagAlreadyTakenError (line 23) | class TagAlreadyTakenError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/UnclaimedAccountCannotAcceptFriendRequestsError.tsx class UnclaimedAccountCannotAcceptFriendRequestsError (line 23) | class UnclaimedAccountCannotAcceptFriendRequestsError extends BadRequest... method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/UnclaimedAccountCannotMakePurchasesError.tsx class UnclaimedAccountCannotMakePurchasesError (line 23) | class UnclaimedAccountCannotMakePurchasesError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/UnclaimedAccountCannotSendFriendRequestsError.tsx class UnclaimedAccountCannotSendFriendRequestsError (line 23) | class UnclaimedAccountCannotSendFriendRequestsError extends BadRequestEr... method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/UnknownUserError.tsx class UnknownUserError (line 23) | class UnknownUserError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/UnknownUserFlagError.tsx class UnknownUserFlagError (line 23) | class UnknownUserFlagError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/user/UserNotInVoiceError.tsx class UserNotInVoiceError (line 23) | class UserNotInVoiceError extends BadRequestError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/voice/UnknownVoiceRegionError.tsx class UnknownVoiceRegionError (line 23) | class UnknownVoiceRegionError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/voice/UnknownVoiceServerError.tsx class UnknownVoiceServerError (line 23) | class UnknownVoiceServerError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/domains/webhook/UnknownWebhookError.tsx class UnknownWebhookError (line 23) | class UnknownWebhookError extends NotFoundError { method constructor (line 24) | constructor() { FILE: packages/errors/src/error_handling/ErrorIntrospection.tsx function isRecord (line 26) | function isRecord(value: unknown): value is Record { function isApiErrorCode (line 30) | function isApiErrorCode(value: unknown): value is string { function getErrorRecord (line 34) | function getErrorRecord(err: unknown): Record | null { function resolveApiErrorCode (line 41) | function resolveApiErrorCode(err: unknown): string | null { function resolveErrorStatus (line 68) | function resolveErrorStatus(err: unknown): number | null { function resolveErrorData (line 81) | function resolveErrorData(err: unknown): Record | undef... function resolveErrorHeaders (line 98) | function resolveErrorHeaders(err: unknown): Record | und... function resolveMessageVariables (line 124) | function resolveMessageVariables(err: unknown): Record ... function resolveErrorMessage (line 137) | function resolveErrorMessage(err: unknown): string | undefined { function hasApiErrorCode (line 146) | function hasApiErrorCode(value: string): boolean { FILE: packages/errors/src/error_handling/ErrorResponse.tsx type JsonResponseOptions (line 22) | interface JsonResponseOptions { type JsonErrorResponseOptions (line 28) | interface JsonErrorResponseOptions { function createJsonResponse (line 36) | function createJsonResponse(options: JsonResponseOptions): Response { function createJsonErrorResponse (line 46) | function createJsonErrorResponse(options: JsonErrorResponseOptions): Res... function createXmlErrorResponse (line 58) | function createXmlErrorResponse(status: number, code: string, message: s... function escapeXml (line 73) | function escapeXml(value: string): string { FILE: packages/errors/src/i18n/ErrorCodeMappings.tsx type AllErrorCodes (line 26) | type AllErrorCodes = APIErrorCode | ValidationErrorCode; type ErrorCodeMapping (line 578) | type ErrorCodeMapping = typeof ErrorCodeToI18nKey; FILE: packages/errors/src/i18n/ErrorI18n.tsx constant LOCALES_PATH (line 26) | const LOCALES_PATH = path.join(import.meta.dirname, 'locales'); constant DEFAULT_LOCALE (line 27) | const DEFAULT_LOCALE = 'en-US'; constant DEFAULT_MESSAGES_FILE (line 28) | const DEFAULT_MESSAGES_FILE = path.join(LOCALES_PATH, 'messages.yaml'); function getErrorMessageResult (line 64) | function getErrorMessageResult( function getErrorMessage (line 72) | function getErrorMessage( function hasErrorLocale (line 89) | function hasErrorLocale(locale: string): boolean { function resetErrorI18n (line 93) | function resetErrorI18n(): void { FILE: packages/errors/src/i18n/ErrorI18nService.tsx class ErrorI18nService (line 23) | class ErrorI18nService { method getMessage (line 24) | getMessage( method hasLocale (line 33) | hasLocale(locale: string): boolean { FILE: packages/errors/src/i18n/ErrorI18nTypes.generated.tsx type ErrorI18nKey (line 20) | type ErrorI18nKey = FILE: packages/geo_utils/src/RegionCodeValidation.tsx constant ASCII_UPPER_A (line 20) | const ASCII_UPPER_A = 65; constant ASCII_UPPER_Z (line 21) | const ASCII_UPPER_Z = 90; constant REGION_CODE_LENGTH (line 22) | const REGION_CODE_LENGTH = 2; function isAsciiUpperAlpha2 (line 24) | function isAsciiUpperAlpha2(value: string): boolean { function normalizeRegionCode (line 34) | function normalizeRegionCode(regionCode: string): string | undefined { function isRegionCode (line 48) | function isRegionCode(value: string): boolean { FILE: packages/geo_utils/src/RegionDisplayNameResolver.tsx constant DISPLAY_NAME_TYPE (line 23) | const DISPLAY_NAME_TYPE: Intl.DisplayNamesOptions['type'] = 'region'; constant DISPLAY_NAME_FALLBACK (line 24) | const DISPLAY_NAME_FALLBACK: Intl.DisplayNamesOptions['fallback'] = 'none'; function resolveLocale (line 28) | function resolveLocale(locale?: string): string { function getDisplayNames (line 37) | function getDisplayNames(locale?: string): Intl.DisplayNames { function resolveRegionDisplayNameFromFormatter (line 52) | function resolveRegionDisplayNameFromFormatter( function resolveRegionDisplayName (line 64) | function resolveRegionDisplayName(regionCode: string, locale?: string): ... function resolveRegionDisplayNames (line 69) | function resolveRegionDisplayNames( FILE: packages/geo_utils/src/RegionFormatting.tsx type RegionDisplayNameOptions (line 23) | interface RegionDisplayNameOptions { function applyRegionCodeFallback (line 28) | function applyRegionCodeFallback( function getRegionDisplayName (line 49) | function getRegionDisplayName(regionCode: string, options?: RegionDispla... function getRegionDisplayNames (line 54) | function getRegionDisplayNames( FILE: packages/geoip/src/GeoipLookup.tsx constant UNKNOWN_LOCATION (line 24) | const UNKNOWN_LOCATION = 'Unknown Location'; type GeoipResult (line 26) | interface GeoipResult { type CacheEntry (line 34) | type CacheEntry = { constant CACHE_TTL_MS (line 39) | const CACHE_TTL_MS = 10 * 60 * 1000; function buildFallbackResult (line 46) | function buildFallbackResult(normalizedIp: string): GeoipResult { function ensureReader (line 56) | async function ensureReader(dbPath: string): Promise(app: Hono, options: ... type UpgradeHandler (line 44) | type UpgradeHandler = (req: IncomingMessage, socket: Duplex, head: Buffe... type NodeServerOptions (line 46) | interface NodeServerOptions extends ServerOptions { function resolveServerAddress (line 51) | function resolveServerAddress( function createServerWithUpgrade (line 63) | function createServerWithUpgrade(app: Hono... type CleanupFunction (line 85) | type CleanupFunction = () => void | Promise; type ShutdownLogger (line 87) | interface ShutdownLogger { method info (line 95) | info(objOrMsg: Record | string, msg?: string): void { method error (line 102) | error(objOrMsg: Record | string, msg?: string): void { type GracefulShutdownOptions (line 111) | interface GracefulShutdownOptions { function setupGracefulShutdown (line 116) | function setupGracefulShutdown(cleanupFn: CleanupFunction, options?: Gra... FILE: packages/hono/src/Session.tsx type SessionConfig (line 22) | interface SessionConfig { constant DEFAULT_MAX_AGE_SECONDS (line 27) | const DEFAULT_MAX_AGE_SECONDS = 60 * 60 * 24 * 7; function signData (line 29) | function signData(data: string, secretKey: string): string { function verifySignature (line 34) | function verifySignature(signedData: string, secretKey: string): string ... function createSession (line 62) | function createSession(data: T, secretKey: string): st... function parseSession (line 71) | function parseSession( FILE: packages/hono/src/middleware/CacheHeaders.tsx constant CACHEABLE_CONTENT_TYPES (line 22) | const CACHEABLE_CONTENT_TYPES = [ function shouldCache (line 32) | function shouldCache(contentType: string): boolean { type CacheHeadersOptions (line 36) | interface CacheHeadersOptions { function cacheHeaders (line 41) | function cacheHeaders(options: CacheHeadersOptions = {}): MiddlewareHand... FILE: packages/hono/src/middleware/Cors.tsx type CorsOptions (line 22) | interface CorsOptions { constant DEFAULT_METHODS (line 32) | const DEFAULT_METHODS = ['GET', 'HEAD', 'PUT', 'PATCH', 'POST', 'DELETE'... constant DEFAULT_HEADERS (line 33) | const DEFAULT_HEADERS = ['Content-Type', 'Authorization', 'X-Requested-W... function cors (line 35) | function cors(options: CorsOptions = {}): MiddlewareHandler { FILE: packages/hono/src/middleware/ErrorHandler.tsx type ErrorHandlerOptions (line 23) | interface ErrorHandlerOptions { function createErrorHandler (line 29) | function createErrorHandler(options: ErrorHandlerOptions = {}): ErrorHan... FILE: packages/hono/src/middleware/InternalAuth.tsx type InternalAuthOptions (line 25) | interface InternalAuthOptions { function timingSafeCompare (line 30) | function timingSafeCompare(a: string, b: string): boolean { function createInternalAuth (line 41) | function createInternalAuth(options: InternalAuthOptions): MiddlewareHan... FILE: packages/hono/src/middleware/Metrics.tsx type MetricsOptions (line 24) | interface MetricsOptions { function metrics (line 33) | function metrics(options: MetricsOptions = {}): MiddlewareHandler { FILE: packages/hono/src/middleware/MiddlewareStack.tsx type MiddlewareStackOptions (line 37) | interface MiddlewareStackOptions { type ApplyMiddlewareStackOptions (line 48) | interface ApplyMiddlewareStackOptions extends MiddlewareStackOptions { function createStandardMiddlewareStack (line 58) | function createStandardMiddlewareStack(options: MiddlewareStackOptions =... function buildStackOptions (line 97) | function buildStackOptions(options: ApplyMiddlewareStackOptions): Middle... function applyMiddlewareStack (line 109) | function applyMiddlewareStack( function createDefaultLogger (line 125) | function createDefaultLogger(options: {serviceName: string; skip?: Array... function createDefaultErrorLogger (line 143) | function createDefaultErrorLogger(options: {serviceName: string}): (erro... FILE: packages/hono/src/middleware/RateLimit.tsx type RateLimitResult (line 24) | interface RateLimitResult { type RateLimitService (line 32) | interface RateLimitService { type KeyGenerator (line 36) | type KeyGenerator = (request: Request) => string | Promise; type RateLimitOptions (line 38) | interface RateLimitOptions { function getClientIp (line 49) | function getClientIp(req: Request, trustCfConnectingIp?: boolean): string { function createDefaultKeyGenerator (line 54) | function createDefaultKeyGenerator(trustCfConnectingIp?: boolean): KeyGe... function rateLimit (line 60) | function rateLimit(options: RateLimitOptions = {}): MiddlewareHandler { FILE: packages/hono/src/middleware/RequestId.tsx type RequestIdGenerator (line 24) | type RequestIdGenerator = () => string; type RequestIdOptions (line 25) | interface RequestIdOptions { constant REQUEST_ID_KEY (line 31) | const REQUEST_ID_KEY = 'requestId'; function requestId (line 33) | function requestId(options: RequestIdOptions = {}): MiddlewareHandler { FILE: packages/hono/src/middleware/RequestLogger.tsx type LogFunction (line 23) | type LogFunction = (data: {method: string; path: string; status: number;... type RequestLoggerOptions (line 24) | interface RequestLoggerOptions { function requestLogger (line 29) | function requestLogger(options: RequestLoggerOptions): MiddlewareHandler { FILE: packages/hono/src/middleware/TelemetryAdapters.tsx type TelemetryTracingOptions (line 26) | interface TelemetryTracingOptions { function createTelemetryMetricsCollector (line 32) | function createTelemetryMetricsCollector(): MetricsCollector { function createTelemetryTracingOptions (line 55) | function createTelemetryTracingOptions(options: TelemetryTracingOptions)... function createServiceTelemetry (line 73) | function createServiceTelemetry(options: TelemetryTracingOptions): { FILE: packages/hono/src/middleware/Tracing.tsx function tracing (line 24) | function tracing(options: TracingOptions = {}): MiddlewareHandler { FILE: packages/hono/src/middleware/tests/ErrorHandler.test.tsx type ErrorResponse (line 25) | interface ErrorResponse { FILE: packages/hono/src/middleware/tests/InternalAuth.test.tsx type ErrorResponse (line 25) | interface ErrorResponse { FILE: packages/hono/src/middleware/tests/Metrics.test.tsx function createMockCollector (line 25) | function createMockCollector(): MetricsCollector { FILE: packages/hono/src/middleware/tests/MiddlewareStack.test.tsx function createMockRateLimitService (line 34) | function createMockRateLimitService(result: Partial = {... function createMockCollector (line 48) | function createMockCollector(): MetricsCollector { FILE: packages/hono/src/middleware/tests/RateLimit.test.tsx function createMockRateLimitService (line 25) | function createMockRateLimitService(result: Partial = {... FILE: packages/hono/src/middleware/tests/RequestId.test.tsx type AppEnv (line 25) | type AppEnv = { FILE: packages/hono/src/middleware/utils/PathMatchers.tsx function matchesPathPattern (line 20) | function matchesPathPattern(path: string, pattern: string): boolean { function matchesAnyPathPattern (line 28) | function matchesAnyPathPattern(path: string, patterns: Array): b... function matchesExactOrNestedPath (line 38) | function matchesExactOrNestedPath(path: string, prefix: string): boolean { function matchesAnyExactOrNestedPath (line 42) | function matchesAnyExactOrNestedPath(path: string, prefixes: Array { FILE: packages/hono/src/security/OutboundEndpoint.tsx type ValidateOutboundEndpointOptions (line 22) | interface ValidateOutboundEndpointOptions { function validateOutboundEndpointUrl (line 29) | function validateOutboundEndpointUrl(rawEndpoint: string, options: Valid... function normalizeEndpointOrigin (line 69) | function normalizeEndpointOrigin(endpointUrl: URL): string { function buildEndpointUrl (line 75) | function buildEndpointUrl(endpointUrl: URL, path: string): string { function isLocalhostHostname (line 90) | function isLocalhostHostname(hostname: string): boolean { function isPrivateOrSpecialIpLiteral (line 94) | function isPrivateOrSpecialIpLiteral(hostname: string): boolean { function isPrivateOrSpecialIPv4 (line 107) | function isPrivateOrSpecialIPv4(hostname: string): boolean { function isPrivateOrSpecialIPv6 (line 124) | function isPrivateOrSpecialIPv6(hostname: string): boolean { FILE: packages/hono_types/src/HonoTypes.tsx type ErrorI18nService (line 20) | interface ErrorI18nService { type BaseHonoEnv (line 29) | interface BaseHonoEnv { FILE: packages/hono_types/src/MetricsTypes.tsx type MetricsCollector (line 20) | interface MetricsCollector { FILE: packages/hono_types/src/TracingTypes.tsx type TracingOptions (line 20) | interface TracingOptions { FILE: packages/http_client/src/HttpClient.tsx constant DEFAULT_TIMEOUT_MS (line 45) | const DEFAULT_TIMEOUT_MS = 30_000; constant DEFAULT_MAX_REDIRECTS (line 46) | const DEFAULT_MAX_REDIRECTS = 5; constant DEFAULT_SERVICE_NAME (line 47) | const DEFAULT_SERVICE_NAME = 'unknown'; type ResolvedClientConfig (line 49) | interface ResolvedClientConfig { function createDefaultHeaders (line 57) | function createDefaultHeaders(userAgent: string, defaultHeaders?: Record... function resolveClientConfig (line 74) | function resolveClientConfig( function createFetchInit (line 106) | function createFetchInit( function isRedirectStatus (line 121) | function isRedirectStatus(status: number): boolean { constant SENSITIVE_REDIRECT_HEADERS (line 125) | const SENSITIVE_REDIRECT_HEADERS = new Set(['authorization', 'cookie', '... constant BODY_RELATED_HEADERS (line 126) | const BODY_RELATED_HEADERS = new Set(['content-type', 'content-length', ... function shouldSwitchToGet (line 128) | function shouldSwitchToGet(status: number, method: HttpMethod): boolean { function buildRedirectHeaders (line 140) | function buildRedirectHeaders( function fetchWithRedirects (line 161) | async function fetchWithRedirects( function validateRequestUrlPolicy (line 218) | async function validateRequestUrlPolicy( function runWithTracing (line 230) | async function runWithTracing( function recordSuccessfulRequestMetrics (line 254) | function recordSuccessfulRequestMetrics( function recordHttpErrorMetrics (line 281) | function recordHttpErrorMetrics( function recordUnhandledErrorMetrics (line 303) | function recordUnhandledErrorMetrics( function createHttpClient (line 328) | function createHttpClient( FILE: packages/http_client/src/HttpClientRequestInternals.tsx constant NETWORK_ERROR_CODES (line 22) | const NETWORK_ERROR_CODES = new Set([ constant NETWORK_ERROR_MESSAGE_FRAGMENTS (line 32) | const NETWORK_ERROR_MESSAGE_FRAGMENTS = [ type NodeErrorLike (line 43) | interface NodeErrorLike { type NodeCauseLike (line 48) | interface NodeCauseLike { type ClassifiedRequestError (line 52) | interface ClassifiedRequestError { type RequestSignalContext (line 58) | interface RequestSignalContext { function isNodeErrorLike (line 63) | function isNodeErrorLike(error: unknown): error is NodeErrorLike { function resolveErrorCode (line 67) | function resolveErrorCode(error: unknown): string | undefined { function buildRequestHeaders (line 88) | function buildRequestHeaders( function resolveRequestBody (line 98) | function resolveRequestBody(body: unknown, headers: Record | null; type HttpMethod (line 24) | type HttpMethod = 'GET' | 'POST' | 'HEAD' | 'PUT' | 'PATCH' | 'DELETE' |... type RequestUrlValidationPhase (line 26) | type RequestUrlValidationPhase = 'initial' | 'redirect'; type RequestUrlValidationContext (line 28) | interface RequestUrlValidationContext { type RequestUrlPolicy (line 34) | interface RequestUrlPolicy { type RequestOptions (line 38) | interface RequestOptions { type StreamResponse (line 48) | interface StreamResponse { type HttpClient (line 55) | interface HttpClient { type HttpClientFactoryOptions (line 61) | interface HttpClientFactoryOptions { FILE: packages/http_client/src/HttpError.tsx type HttpErrorType (line 20) | type HttpErrorType = 'aborted' | 'network_error' | 'unknown'; class HttpError (line 22) | class HttpError extends Error { method constructor (line 23) | constructor( FILE: packages/http_client/src/PublicInternetRequestUrlPolicy.tsx constant DEFAULT_DNS_CACHE_TTL_MS (line 25) | const DEFAULT_DNS_CACHE_TTL_MS = 60_000; constant ALLOWED_PROTOCOLS (line 26) | const ALLOWED_PROTOCOLS = new Set(['http:', 'https:']); constant HOSTNAME_LABEL_REGEX (line 27) | const HOSTNAME_LABEL_REGEX = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/; type BlockedSubnet (line 29) | interface BlockedSubnet { type CachedLookupResult (line 35) | interface CachedLookupResult { type PublicInternetRequestUrlPolicyOptions (line 40) | interface PublicInternetRequestUrlPolicyOptions { constant BLOCKED_IPV4_SUBNETS (line 45) | const BLOCKED_IPV4_SUBNETS: Array = [ constant BLOCKED_IPV6_SUBNETS (line 64) | const BLOCKED_IPV6_SUBNETS: Array = [ function createBlockList (line 76) | function createBlockList(subnets: Array): BlockList { function stripIpv6Brackets (line 84) | function stripIpv6Brackets(value: string): string { function normalizeHostname (line 91) | function normalizeHostname(hostname: string): string { function isFqdnHostname (line 96) | function isFqdnHostname(hostname: string): boolean { function parseIpv4MappedIpv6Address (line 112) | function parseIpv4MappedIpv6Address(ipv6Address: string): string | null { function parseHexGroup (line 141) | function parseHexGroup(value: string | undefined): number | null { function isBlockedIpAddress (line 148) | function isBlockedIpAddress(address: string): boolean { function getPolicyErrorContext (line 166) | function getPolicyErrorContext(context: RequestUrlValidationContext): st... function createBlockedRequestError (line 174) | function createBlockedRequestError(url: URL, context: RequestUrlValidati... function defaultLookupHost (line 179) | async function defaultLookupHost(hostname: string): Promise): Array { function createPublicInternetRequestUrlPolicy (line 197) | function createPublicInternetRequestUrlPolicy( FILE: packages/http_client/src/__tests__/HttpClient.test.tsx constant TEST_USER_AGENT (line 32) | const TEST_USER_AGENT = 'FluxerHttpClient/1.0 (Test)'; method validate (line 611) | async validate(_url, context) { FILE: packages/http_client/src/__tests__/PublicInternetRequestUrlPolicy.test.tsx function createContext (line 24) | function createContext(overrides?: Partial)... FILE: packages/http_client/src/__tests__/TestHttpServer.tsx type RouteHandler (line 22) | type RouteHandler = (req: IncomingMessage, res: ServerResponse) => void ... type TestServer (line 24) | interface TestServer { function createTestServer (line 32) | async function createTestServer(): Promise { function readRequestBody (line 80) | function readRequestBody(req: IncomingMessage): Promise { FILE: packages/i18n/scripts/GenerateI18nTypes.ts constant ROOT_DIR (line 27) | const ROOT_DIR = path.resolve(__dirname, '../..'); type PackageConfig (line 29) | interface PackageConfig { constant PACKAGES (line 36) | const PACKAGES: Array = [ function extractKeysFromYaml (line 55) | function extractKeysFromYaml(filePath: string, isEmail = false): Array): string { function generateEmailI18nTypes (line 77) | function generateEmailI18nTypes(keys: Array): string { function generateMarketingI18nTypes (line 92) | function generateMarketingI18nTypes(keys: Array): string { function getLicenceHeader (line 102) | function getLicenceHeader(): string { function generatePackageTypes (line 124) | function generatePackageTypes(config: PackageConfig): void { function main (line 154) | function main(): void { FILE: packages/i18n/scripts/PruneUnusedI18nKeys.ts constant ROOT_DIR (line 28) | const ROOT_DIR = path.resolve(__dirname, '../..'); type PackageConfig (line 30) | interface PackageConfig { constant PACKAGES (line 38) | const PACKAGES: Array = [ constant GET_MESSAGE_REGEX (line 62) | const GET_MESSAGE_REGEX = /ctx\.i18n\.getMessage\s*\([^)]*\)/g; constant GET_MESSAGE_REGEX2 (line 63) | const GET_MESSAGE_REGEX2 = /i18n\.getMessage\s*\([^)]*\)/g; constant GET_MESSAGE_REGEX3 (line 64) | const GET_MESSAGE_REGEX3 = /ctx\.i18n\.getMessage\s*\((?:[^()]|\([^()]*\... constant GET_MESSAGE_REGEX4 (line 65) | const GET_MESSAGE_REGEX4 = /i18n\.getMessage\s*\((?:[^()]|\([^()]*\))*\)/g; constant GET_TEMPLATE_REGEX (line 66) | const GET_TEMPLATE_REGEX = /getTemplate\s*\((?:[^()]|\([^()]*\))*\)/g; constant STRING_LITERAL_REGEX (line 68) | const STRING_LITERAL_REGEX = /['"`]([^'"`]+)['"`]/g; function findTypeScriptFiles (line 70) | function findTypeScriptFiles(dir: string, filePaths: Array = [])... function extractUsedKeys (line 92) | function extractUsedKeys(packagePath: string, method: 'getMessage' | 'ge... function flattenObject (line 130) | function flattenObject( function getYamlKeys (line 161) | function getYamlKeys(filePath: string): Map... function prunePackage (line 174) | function prunePackage( function removeQuotesFromScalars (line 275) | function removeQuotesFromScalars(node: unknown): void { function deleteKeysFromYamlFile (line 297) | function deleteKeysFromYamlFile(filePath: string, keysToDelete: Set): Promise { type LocaleValidationResult (line 371) | interface LocaleValidationResult { function validateLocaleConsistency (line 378) | function validateLocaleConsistency(localesPath: string, messagesFile: st... function main (line 417) | async function main(): Promise { FILE: packages/i18n/src/interpolation/SimpleInterpolator.tsx class SimpleInterpolator (line 20) | class SimpleInterpolator { method interpolate (line 21) | interpolate(template: string, variables: Record | Rea... FILE: packages/i18n/src/io/LocaleFilePath.tsx function localeFilePath (line 23) | function localeFilePath(locale: string, localesPath: string): string { function hasLocaleFile (line 27) | function hasLocaleFile(locale: string, localesPath: string, defaultLocal... FILE: packages/i18n/src/io/ParseYamlRecord.tsx function parseYamlRecord (line 22) | function parseYamlRecord(raw: string): Record { FILE: packages/i18n/src/normalization/IdentityLocale.tsx function identityLocale (line 20) | function identityLocale(locale: string): string { FILE: packages/i18n/src/runtime/BuildTemplates.tsx function buildTemplates (line 22) | function buildTemplates( FILE: packages/i18n/src/runtime/CompileTemplate.tsx function compileTemplate (line 23) | function compileTemplate( FILE: packages/i18n/src/runtime/CreateI18n.tsx type I18nModule (line 27) | interface I18nModule { function createI18n (line 35) | function createI18n( FILE: packages/i18n/src/runtime/GetEffectiveLocale.tsx function getEffectiveLocale (line 23) | function getEffectiveLocale( FILE: packages/i18n/src/runtime/GetTemplate.tsx function getTemplate (line 26) | function getTemplate( function getMessageFormat (line 82) | function getMessageFormat( FILE: packages/i18n/src/runtime/I18nTypes.tsx type I18nErrorKind (line 22) | type I18nErrorKind = 'missing-template' | 'invalid-variables' | 'compile... type I18nError (line 24) | interface I18nError { type I18nResult (line 30) | type I18nResult = type I18nState (line 34) | interface I18nState { type I18nConfig (line 41) | interface I18nConfig { type TemplateCompiler (line 51) | type TemplateCompiler = ( FILE: packages/i18n/src/runtime/LoadLocale.tsx function loadLocaleIfNotLoaded (line 26) | function loadLocaleIfNotLoaded( FILE: packages/i18n/src/runtime/tests/CreateI18n.test.tsx type TestKey (line 27) | type TestKey = 'greeting' | 'farewell' | 'with_vars'; function writeFile (line 29) | function writeFile(filePath: string, content: string): void { function unwrapResult (line 34) | function unwrapResult(result: I18nResult): string { FILE: packages/initialization/src/CreateServiceInstrumentation.tsx type CreateServiceInstrumentationOptions (line 24) | interface CreateServiceInstrumentationOptions { function createServiceInstrumentation (line 43) | function createServiceInstrumentation(options: CreateServiceInstrumentat... FILE: packages/initialization/src/Init.tsx constant SENTRY_FLUSH_TIMEOUT_MS (line 31) | const SENTRY_FLUSH_TIMEOUT_MS = 2000; function initializeService (line 35) | async function initializeService(config: ServiceInitConfig): Promise { function isServiceInitialized (line 90) | function isServiceInitialized(): boolean { function startServiceInitialization (line 94) | function startServiceInitialization(config: ServiceInitConfig): Shutdown... FILE: packages/initialization/src/ServiceInitializationTypes.tsx type ServiceInitConfig (line 22) | interface ServiceInitConfig { type TelemetryInitConfig (line 30) | interface TelemetryInitConfig { type SentryInitConfig (line 40) | interface SentryInitConfig { type ShutdownFn (line 50) | type ShutdownFn = () => Promise; FILE: packages/ip_utils/src/ClientIp.tsx type ClientIpExtractionOptions (line 22) | interface ClientIpExtractionOptions { type ClientIpSource (line 26) | type ClientIpSource = 'cf-connecting-ip' | 'x-forwarded-for'; type ExtractedClientIp (line 28) | interface ExtractedClientIp { type HeadersLike (line 33) | interface HeadersLike { class MissingClientIpError (line 37) | class MissingClientIpError extends Error { method constructor (line 38) | constructor() { type HeaderReader (line 44) | interface HeaderReader { function toStringHeaderValue (line 48) | function toStringHeaderValue(value: string | Array | null | unde... function parseSingleIpHeader (line 56) | function parseSingleIpHeader(value: string | null): string | null { function parseForwardedForHeader (line 70) | function parseForwardedForHeader(value: string | null): string | null { function createRequestHeaderReader (line 83) | function createRequestHeaderReader(request: Request): HeaderReader { function getHeaderValue (line 91) | function getHeaderValue(headers: HeadersLike, name: string): string | nu... function createNodeHeaderReader (line 107) | function createNodeHeaderReader(headers: HeadersLike): HeaderReader { function extractClientIpDetailsFromReader (line 115) | function extractClientIpDetailsFromReader( function extractClientIpDetails (line 140) | function extractClientIpDetails(req: Request, options?: ClientIpExtracti... function extractClientIp (line 144) | function extractClientIp(req: Request, options?: ClientIpExtractionOptio... function requireClientIp (line 149) | function requireClientIp(req: Request, options?: ClientIpExtractionOptio... function extractClientIpDetailsFromHeaders (line 157) | function extractClientIpDetailsFromHeaders( function extractClientIpFromHeaders (line 164) | function extractClientIpFromHeaders(headers: HeadersLike, options?: Clie... FILE: packages/ip_utils/src/IpAddress.tsx type IpAddressFamily (line 22) | type IpAddressFamily = 'ipv4' | 'ipv6'; type ParsedIpAddress (line 24) | interface ParsedIpAddress { function stripIpv6Brackets (line 30) | function stripIpv6Brackets(value: string): string { function stripIpv6ZoneIdentifier (line 37) | function stripIpv6ZoneIdentifier(value: string): string { function normalizeIpv6 (line 51) | function normalizeIpv6(value: string): string { function getAddressFamily (line 67) | function getAddressFamily(value: string): IpAddressFamily | null { function normalizeIpString (line 77) | function normalizeIpString(value: string): string { function parseIpAddress (line 84) | function parseIpAddress(value: string): ParsedIpAddress | null { function isValidIp (line 99) | function isValidIp(value: string): boolean { FILE: packages/ip_utils/src/__tests__/IpAddress.test.tsx method constructor (line 74) | constructor(input: string | URL, base?: string | URL) { FILE: packages/kv_client/src/IKVProvider.tsx type IKVPipeline (line 20) | interface IKVPipeline { type IKVSubscription (line 34) | interface IKVSubscription { type IKVProvider (line 45) | interface IKVProvider { FILE: packages/kv_client/src/KVClient.tsx constant RELEASE_LOCK_SCRIPT (line 39) | const RELEASE_LOCK_SCRIPT = ` constant RENEW_SNOWFLAKE_SCRIPT (line 46) | const RENEW_SNOWFLAKE_SCRIPT = ` constant TRY_CONSUME_TOKENS_SCRIPT (line 54) | const TRY_CONSUME_TOKENS_SCRIPT = ` constant SCHEDULE_BULK_DELETION_SCRIPT (line 97) | const SCHEDULE_BULK_DELETION_SCRIPT = ` constant REMOVE_BULK_DELETION_SCRIPT (line 103) | const REMOVE_BULK_DELETION_SCRIPT = ` class KVClient (line 113) | class KVClient implements IKVProvider { method constructor (line 120) | constructor(config: KVClientConfig | string) { method createClusterClient (line 139) | private createClusterClient(clusterConfig: ResolvedKVClientConfig): Cl... method health (line 158) | async health(): Promise { method get (line 167) | async get(key: string): Promise { method set (line 171) | async set(key: string, value: string, ...args: Array)... method setex (line 198) | async setex(key: string, ttlSeconds: number, value: string): Promise): Promise> { method mset (line 220) | async mset(...args: Array): Promise { method del (line 232) | async del(...keys: Array): Promise { method exists (line 239) | async exists(key: string): Promise { method expire (line 243) | async expire(key: string, ttlSeconds: number): Promise { method ttl (line 247) | async ttl(key: string): Promise { method incr (line 251) | async incr(key: string): Promise { method getex (line 255) | async getex(key: string, ttlSeconds: number): Promise { method getdel (line 262) | async getdel(key: string): Promise { method sadd (line 269) | async sadd(key: string, ...members: Array): Promise { method srem (line 276) | async srem(key: string, ...members: Array): Promise { method smembers (line 283) | async smembers(key: string): Promise> { method sismember (line 287) | async sismember(key: string, member: string): Promise { method scard (line 291) | async scard(key: string): Promise { method spop (line 295) | async spop(key: string, count: number = 1): Promise> { method zadd (line 309) | async zadd(key: string, ...scoreMembers: Array): Prom... method zrem (line 318) | async zrem(key: string, ...members: Array): Promise { method zcard (line 325) | async zcard(key: string): Promise { method zrangebyscore (line 329) | async zrangebyscore( method rpush (line 349) | async rpush(key: string, ...values: Array): Promise { method lpop (line 356) | async lpop(key: string, count?: number): Promise> { method llen (line 378) | async llen(key: string): Promise { method hset (line 382) | async hset(key: string, field: string, value: string): Promise { method hdel (line 386) | async hdel(key: string, ...fields: Array): Promise { method hget (line 393) | async hget(key: string, field: string): Promise { method hgetall (line 397) | async hgetall(key: string): Promise> { method publish (line 401) | async publish(channel: string, message: string): Promise { method duplicate (line 405) | duplicate(): IKVSubscription { method releaseLock (line 415) | async releaseLock(key: string, token: string): Promise { method renewSnowflakeNode (line 420) | async renewSnowflakeNode(key: string, instanceId: string, ttlSeconds: ... method tryConsumeTokens (line 427) | async tryConsumeTokens( method scheduleBulkDeletion (line 441) | async scheduleBulkDeletion(queueKey: string, secondaryKey: string, sco... method removeBulkDeletion (line 447) | async removeBulkDeletion(queueKey: string, secondaryKey: string): Prom... method scan (line 454) | async scan(pattern: string, count: number): Promise> { method pipeline (line 473) | pipeline(): IKVPipeline { method multi (line 481) | multi(): IKVPipeline { method execute (line 489) | private async execute(command: string, fn: () => Promise): Promi... method normalizeError (line 497) | private normalizeError(command: string, error: unknown): KVClientError { function parseClusterNodesFromUrl (line 516) | function parseClusterNodesFromUrl(url: string): Array<{host: string; por... function createRetryStrategy (line 525) | function createRetryStrategy(): (times: number) => number { function normalizeStringOrNull (line 532) | function normalizeStringOrNull(value: unknown): string | null { function isTimeoutError (line 539) | function isTimeoutError(error: unknown): boolean { function getErrorMessage (line 553) | function getErrorMessage(error: unknown): string { FILE: packages/kv_client/src/KVClientConfig.tsx type IKVLogger (line 22) | interface IKVLogger { type KVClientMode (line 27) | type KVClientMode = 'standalone' | 'cluster'; type KVClusterNode (line 29) | interface KVClusterNode { type KVClientConfig (line 34) | interface KVClientConfig { type ResolvedKVClientConfig (line 43) | interface ResolvedKVClientConfig { method debug (line 53) | debug() {} method error (line 54) | error() {} function resolveKVClientConfig (line 57) | function resolveKVClientConfig(config: KVClientConfig | string): Resolve... function normalizeUrl (line 79) | function normalizeUrl(url: string): string { FILE: packages/kv_client/src/KVClientError.tsx type KVClientErrorInit (line 30) | interface KVClientErrorInit { class KVClientError (line 36) | class KVClientError extends FluxerError { method constructor (line 37) | constructor(init: KVClientErrorInit) { FILE: packages/kv_client/src/KVCommandArguments.tsx type KVSetOptions (line 22) | interface KVSetOptions { type KVRangeByScoreOptions (line 27) | interface KVRangeByScoreOptions { function parseSetArguments (line 34) | function parseSetArguments(args: Array): KVSetOptions { function createStringEntriesFromPairs (line 72) | function createStringEntriesFromPairs(args: Array): Array<{key: ... function createZSetMembersFromScorePairs (line 88) | function createZSetMembersFromScorePairs( function normalizeScoreBound (line 113) | function normalizeScoreBound(score: string | number): string | number { function parseRangeByScoreArguments (line 121) | function parseRangeByScoreArguments(args: Array): KVRan... function parseNumberArgument (line 147) | function parseNumberArgument(value: string | number | undefined, label: ... function parseFiniteNumber (line 162) | function parseFiniteNumber(value: string | number, label: string): number { function parseNonNegativeInteger (line 171) | function parseNonNegativeInteger(value: string | number | undefined, lab... function createInvalidArgumentError (line 181) | function createInvalidArgumentError(message: string): KVClientError { FILE: packages/kv_client/src/KVPipeline.tsx type PipelineExecResult (line 24) | type PipelineExecResult = [Error | null, unknown]; type KVPipelineOptions (line 26) | interface KVPipelineOptions { class KVPipeline (line 32) | class KVPipeline implements IKVPipeline { method constructor (line 38) | constructor(options: KVPipelineOptions) { method get (line 45) | get(key: string): this { method set (line 50) | set(key: string, value: string): this { method setex (line 55) | setex(key: string, ttlSeconds: number, value: string): this { method del (line 60) | del(key: string): this { method expire (line 65) | expire(key: string, ttlSeconds: number): this { method sadd (line 70) | sadd(key: string, ...members: Array): this { method srem (line 75) | srem(key: string, ...members: Array): this { method zadd (line 80) | zadd(key: string, score: number, value: string): this { method zrem (line 85) | zrem(key: string, ...members: Array): this { method mset (line 90) | mset(...args: Array): this { method exec (line 100) | async exec(): Promise> { function normalizePipelineError (line 121) | function normalizePipelineError(error: unknown): Error { FILE: packages/kv_client/src/KVSubscription.tsx type KVSubscriptionConfig (line 24) | interface KVSubscriptionConfig { class KVSubscription (line 32) | class KVSubscription implements IKVSubscription { method constructor (line 43) | constructor(config: KVSubscriptionConfig) { method connect (line 51) | async connect(): Promise { method on (line 87) | on( method subscribe (line 99) | async subscribe(...channels: Array): Promise { method unsubscribe (line 115) | async unsubscribe(...channels: Array): Promise { method quit (line 125) | async quit(): Promise { method disconnect (line 135) | async disconnect(): Promise { method removeAllListeners (line 145) | removeAllListeners(event?: 'message' | 'error'): void { method resolveSubscriptionUrl (line 155) | private resolveSubscriptionUrl(): string { function createRetryStrategy (line 165) | function createRetryStrategy(): (times: number) => number { FILE: packages/limits/src/ILimitConfigCodec.tsx type LimitConfigCodecOptions (line 23) | interface LimitConfigCodecOptions { type ILimitConfigCodec (line 28) | interface ILimitConfigCodec { FILE: packages/limits/src/ILimitEvaluator.tsx type ILimitEvaluator (line 23) | interface ILimitEvaluator { FILE: packages/limits/src/LimitConfigCodec.tsx class LimitConfigCodec (line 26) | class LimitConfigCodec implements ILimitConfigCodec { method computeOverrides (line 27) | computeOverrides( method toWireFormat (line 47) | toWireFormat(config: LimitConfigSnapshot, options?: LimitConfigCodecOp... method fromWireFormat (line 68) | fromWireFormat(wireFormat: LimitConfigWireFormat, options?: LimitConfi... FILE: packages/limits/src/LimitDefaults.tsx constant DEFAULT_FREE_LIMITS (line 64) | const DEFAULT_FREE_LIMITS: Record = { constant DEFAULT_PREMIUM_LIMITS (line 112) | const DEFAULT_PREMIUM_LIMITS: Record = { FILE: packages/limits/src/LimitDiffer.tsx function createLimitConfigCodec (line 27) | function createLimitConfigCodec(): ILimitConfigCodec { function computeOverrides (line 31) | function computeOverrides( function computeWireFormat (line 38) | function computeWireFormat(config: LimitConfigSnapshot): LimitConfigWire... function expandWireFormat (line 42) | function expandWireFormat(wireFormat: LimitConfigWireFormat): LimitConfi... FILE: packages/limits/src/LimitEvaluator.tsx class LimitEvaluator (line 32) | class LimitEvaluator implements ILimitEvaluator { method constructor (line 35) | constructor(snapshot: LimitConfigSnapshot) { method resolveAll (line 39) | resolveAll(ctx: LimitMatchContext, options?: LimitEvaluationOptions): ... method resolveOne (line 57) | resolveOne(ctx: LimitMatchContext, key: LimitKey, options?: LimitEvalu... FILE: packages/limits/src/LimitHashing.tsx function simpleHash (line 22) | function simpleHash(str: string): string { function computeDefaultsHash (line 32) | function computeDefaultsHash(): string { FILE: packages/limits/src/LimitMatcher.tsx function ruleMatches (line 23) | function ruleMatches(filters: LimitFilter | undefined, ctx: LimitMatchCo... FILE: packages/limits/src/LimitMerger.tsx function mergeRuleIntoResolved (line 24) | function mergeRuleIntoResolved( FILE: packages/limits/src/LimitResolver.tsx function createLimitEvaluator (line 30) | function createLimitEvaluator(snapshot: LimitConfigSnapshot): ILimitEval... function resolveLimits (line 34) | function resolveLimits( function resolveLimit (line 43) | function resolveLimit( FILE: packages/limits/src/LimitRuleRuntime.tsx type RankedRule (line 23) | interface RankedRule { function areRequiredEntriesPresent (line 29) | function areRequiredEntriesPresent(required: Array | undefined, ... function shouldApplyLimitForContext (line 43) | function shouldApplyLimitForContext( function isValidLimitValue (line 68) | function isValidLimitValue(value: number | undefined): value is number { function ruleMatches (line 80) | function ruleMatches(filters: LimitFilter | undefined, ctx: LimitMatchCo... function calculateSpecificity (line 96) | function calculateSpecificity(filters: LimitFilter | undefined): number { function compareSpecificity (line 106) | function compareSpecificity(a: LimitFilter | undefined, b: LimitFilter |... function sortRulesBySpecificity (line 110) | function sortRulesBySpecificity(rules: Array): Array, config: ResolvedLi... function formatItems (line 70) | function formatItems(items: ReadonlyArray, config: ResolvedListF... function formatListWithConfig (line 86) | function formatListWithConfig(items: ReadonlyArray, config: List... function createListFormatter (line 91) | function createListFormatter(config: ListFormatterConfig = {}): IListFor... function formatList (line 101) | function formatList( FILE: packages/list_utils/src/ListFormattingCache.tsx function getCachedListFormatter (line 24) | function getCachedListFormatter(config: ResolvedListFormatterConfig): In... FILE: packages/list_utils/src/ListFormattingFallback.tsx function getFallbackConjunction (line 22) | function getFallbackConjunction(type: ListFormatType): string { function formatListWithFallback (line 29) | function formatListWithFallback(items: ReadonlyArray, type: List... FILE: packages/list_utils/src/ListFormattingSupport.tsx function isIntlListFormatSupported (line 20) | function isIntlListFormatSupported(): boolean { function isIntlListFormatLocaleSupported (line 24) | function isIntlListFormatLocaleSupported(locale: string): boolean { FILE: packages/list_utils/src/ListFormattingTypes.tsx type ListFormatStyle (line 20) | type ListFormatStyle = 'long' | 'short' | 'narrow'; type ListFormatType (line 22) | type ListFormatType = 'conjunction' | 'disjunction' | 'unit'; type ListFormatOptions (line 24) | interface ListFormatOptions { type ListFormatterConfig (line 29) | interface ListFormatterConfig extends ListFormatOptions { type ResolvedListFormatterConfig (line 33) | interface ResolvedListFormatterConfig { type IListFormatter (line 39) | interface IListFormatter { FILE: packages/locale/src/LocaleService.tsx type LocaleMetadata (line 29) | interface LocaleMetadata { function getLocaleMetadata (line 36) | function getLocaleMetadata(locale: LocaleCode): LocaleMetadata { function getLocaleName (line 45) | function getLocaleName(locale: LocaleCode): string { function getFlagCode (line 49) | function getFlagCode(locale: LocaleCode): string { function getLocaleFromCode (line 53) | function getLocaleFromCode(code: string): LocaleCode | null { function getLocaleCode (line 57) | function getLocaleCode(locale: LocaleCode): string { function parseAcceptLanguage (line 61) | function parseAcceptLanguage(acceptLanguageHeader: string | null | undef... FILE: packages/locale/src/catalog/LocaleCatalog.tsx type LocaleMetadata (line 22) | interface LocaleMetadata { constant DEFAULT_LOCALE (line 28) | const DEFAULT_LOCALE: LocaleCode = Locales.EN_US; constant SUPPORTED_LOCALES (line 29) | const SUPPORTED_LOCALES: ReadonlyArray = AllLocales; constant SUPPORTED_LOCALE_SET (line 31) | const SUPPORTED_LOCALE_SET: ReadonlySet = new Set = { constant LOCALE_METADATA_BY_CODE (line 41) | const LOCALE_METADATA_BY_CODE: Record = { constant NORMALIZED_LOCALE_TO_CODE (line 182) | const NORMALIZED_LOCALE_TO_CODE = createNormalizedLocaleLookup(); function normalizeLocaleCode (line 184) | function normalizeLocaleCode(code: string): string { function isSupportedLocale (line 188) | function isSupportedLocale(locale: LocaleCode): boolean { function getLocaleDisplayName (line 192) | function getLocaleDisplayName(locale: LocaleCode): string { function getLocaleFlagCode (line 196) | function getLocaleFlagCode(locale: LocaleCode): string { function getLocaleByCode (line 200) | function getLocaleByCode(code: string): LocaleCode | null { function getLocaleLanguageCode (line 210) | function getLocaleLanguageCode(locale: LocaleCode): string { function getPreferredLocaleForLanguageCode (line 214) | function getPreferredLocaleForLanguageCode(languageCode: string): Locale... function findLocaleByLanguagePrefix (line 232) | function findLocaleByLanguagePrefix(languageCode: string): LocaleCode | ... function createNormalizedLocaleLookup (line 248) | function createNormalizedLocaleLookup(): ReadonlyMap { FILE: packages/locale/src/resolution/AcceptLanguageNegotiation.tsx type AcceptLanguagePreference (line 29) | interface AcceptLanguagePreference { function resolveLocaleFromAcceptLanguageHeader (line 34) | function resolveLocaleFromAcceptLanguageHeader(acceptLanguageHeader: str... function parseAcceptLanguagePreferences (line 57) | function parseAcceptLanguagePreferences(acceptLanguageHeader: string): A... function parseLanguagePreference (line 64) | function parseLanguagePreference(languageToken: string): AcceptLanguageP... function parseQualityValue (line 74) | function parseQualityValue(rawQuality: string | undefined): number { function findExactLocaleMatch (line 88) | function findExactLocaleMatch(preferences: ReadonlyArray): Array { function createPinoLogger (line 83) | function createPinoLogger(serviceName: string, options: LoggerOptions = ... class Logger (line 217) | class Logger { method constructor (line 220) | constructor(serviceName: string, options: LoggerOptions = {}) { method getPinoLogger (line 224) | getPinoLogger(): PinoLogger { method setPinoLogger (line 228) | setPinoLogger(logger: PinoLogger): void { method createWithLogger (line 232) | static createWithLogger(logger: PinoLogger): Logger { method trace (line 240) | trace(objOrMsg: Record | string, msg?: string): void { method debug (line 252) | debug(objOrMsg: Record | string, msg?: string): void { method info (line 264) | info(objOrMsg: Record | string, msg?: string): void { method warn (line 276) | warn(objOrMsg: Record | string, msg?: string): void { method error (line 288) | error(objOrMsg: Record | string, msg?: string): void { method fatal (line 300) | fatal(objOrMsg: Record | string, msg?: string): void { method child (line 310) | child(bindings: Record): Logger { method pino (line 315) | get pino(): PinoLogger { function createLogger (line 320) | function createLogger(serviceName: string, options?: LoggerOptions): Log... FILE: packages/logger/src/LoggerInterface.tsx type LoggerInterface (line 20) | interface LoggerInterface { type LoggerFactory (line 34) | type LoggerFactory = (name: string) => LoggerInterface; FILE: packages/logger/src/mock.tsx function createMockLogger (line 22) | function createMockLogger(): LoggerInterface { FILE: packages/markdown_parser/src/__tests__/TestEmojiSetup.tsx type EmojiData (line 27) | interface EmojiData { constant EMOJI_DATA (line 34) | const EMOJI_DATA: Map = new Map([ constant SKIN_TONE_SURROGATES (line 92) | const SKIN_TONE_SURROGATES: ReadonlyArray = ['🏻', '🏼', '🏽', '🏾',... constant SURROGATE_TO_NAME (line 94) | const SURROGATE_TO_NAME: Map = new Map(); constant NAME_TO_EMOJI (line 95) | const NAME_TO_EMOJI: Map = new Map(); constant SKIN_TONE_EMOJI (line 96) | const SKIN_TONE_EMOJI: Map = new Map(); method getSurrogateName (line 117) | getSurrogateName(surrogate: string): string | null { method findEmojiByName (line 120) | findEmojiByName(name: string): UnicodeEmoji | null { method findEmojiWithSkinTone (line 123) | findEmojiWithSkinTone(baseName: string, skinToneSurrogate: string): Unic... function setupTestEmojiProvider (line 129) | function setupTestEmojiProvider(): void { function clearTestEmojiProvider (line 137) | function clearTestEmojiProvider(): void { FILE: packages/markdown_parser/src/parser/FormattingContext.tsx class FormattingContext (line 22) | class FormattingContext { method canEnterFormatting (line 27) | canEnterFormatting(delimiter: string, isDouble: boolean): boolean { method isFormattingActive (line 33) | isFormattingActive(delimiter: string, isDouble: boolean): boolean { method pushFormatting (line 37) | pushFormatting(delimiter: string, isDouble: boolean): void { method popFormatting (line 43) | popFormatting(): [string, boolean] | undefined { method setCurrentText (line 52) | setCurrentText(_text: string): void {} method getFormattingKey (line 54) | private getFormattingKey(delimiter: string, isDouble: boolean): string { FILE: packages/markdown_parser/src/parser/Parser.tsx class Parser (line 23) | class Parser { method constructor (line 27) | constructor(input: string, flags: number) { method parse (line 32) | parse(): {nodes: Array} { FILE: packages/markdown_parser/src/parser/ParserEngine.tsx type ParserRuntimeState (line 30) | interface ParserRuntimeState { function parseMarkdownAst (line 38) | function parseMarkdownAst(input: string, parserFlags: number): {nodes: A... function parseWithRuntimeState (line 51) | function parseWithRuntimeState(state: ParserRuntimeState): {nodes: Array... function createBlockParserDependencies (line 119) | function createBlockParserDependencies(state: ParserRuntimeState): Block... function countBlankLines (line 130) | function countBlankLines(lines: Array, startLine: number, totalL... function parseInlineLine (line 140) | function parseInlineLine( function isBlockStart (line 185) | function isBlockStart(line: string, parserFlags: number): boolean { constant MAX_HEADING_LEVEL (line 196) | const MAX_HEADING_LEVEL = 4; function isHeadingStart (line 198) | function isHeadingStart(trimmedLine: string, parserFlags: number): boole... FILE: packages/markdown_parser/src/parser/ParserInput.tsx type ParserInput (line 22) | interface ParserInput { function createParserInput (line 27) | function createParserInput(input: string): ParserInput { FILE: packages/markdown_parser/src/parsers/BlockParsers.tsx constant ALERT_PATTERN (line 37) | const ALERT_PATTERN = /^\[!([A-Z]+)\]\s*\n?/; type BlockParseResult (line 39) | interface BlockParseResult { type BlockParserDependencies (line 46) | interface BlockParserDependencies { function hasOpenInlineCode (line 53) | function hasOpenInlineCode(text: string): boolean { function cachedStartsWith (line 82) | function cachedStartsWith(str: string, search: string): boolean { function parseBlock (line 90) | function parseBlock( function handleLineAsText (line 325) | function handleLineAsText(lines: Array, currentLineIndex: number... function parseBlockAsText (line 330) | function parseBlockAsText(lines: Array, currentLineIndex: number... constant MAX_HEADING_LEVEL (line 346) | const MAX_HEADING_LEVEL = 4; function parseHeading (line 348) | function parseHeading(trimmed: string, parseInline: (text: string) => Ar... function parseSubtext (line 371) | function parseSubtext(trimmed: string, parseInline: (text: string) => Ar... function parseBlockquote (line 391) | function parseBlockquote( function parseMultilineBlockquote (line 453) | function parseMultilineBlockquote( function parseCodeBlock (line 494) | function parseCodeBlock( function parseSpoiler (line 637) | function parseSpoiler( function parseAlert (line 695) | function parseAlert(blockquoteText: string, parserFlags: number): AlertN... function postProcessAlertNodes (line 778) | function postProcessAlertNodes(nodes: Array): Array { FILE: packages/markdown_parser/src/parsers/EmojiParsers.tsx type UnicodeEmoji (line 23) | interface UnicodeEmoji { type EmojiProvider (line 27) | interface EmojiProvider { type EmojiParserConfig (line 33) | interface EmojiParserConfig { constant VALID_EMOJI_NAME_REGEX (line 40) | const VALID_EMOJI_NAME_REGEX = /^[a-zA-Z0-9_-]+$/; constant CUSTOM_EMOJI_REGEX (line 41) | const CUSTOM_EMOJI_REGEX = /^<(a)?:([a-zA-Z0-9_-]+):(\d+)>/; constant PLAINTEXT_SYMBOLS (line 43) | const PLAINTEXT_SYMBOLS = new Set(['™', '™️', '©', '©️', '®', '®️']); constant TEXT_PRESENTATION_MAP (line 45) | const TEXT_PRESENTATION_MAP: Record = { constant NEEDS_VARIATION_SELECTOR_CACHE (line 51) | const NEEDS_VARIATION_SELECTOR_CACHE = new Map(); constant SPECIAL_SHORTCODES (line 53) | const SPECIAL_SHORTCODES: Record = { constant EMOJI_NAME_CACHE (line 59) | const EMOJI_NAME_CACHE = new Map(); constant EMOJI_BY_NAME_CACHE (line 60) | const EMOJI_BY_NAME_CACHE = new Map(); function setEmojiParserConfig (line 64) | function setEmojiParserConfig(config: EmojiParserConfig): void { function getEmojiParserConfig (line 68) | function getEmojiParserConfig(): EmojiParserConfig | null { function needsVariationSelector (line 72) | function needsVariationSelector(codePoint: number): boolean { function removeVariationSelectors (line 87) | function removeVariationSelectors(text: string): string { function defaultConvertToCodePoints (line 112) | function defaultConvertToCodePoints(emoji: string): string { function parseStandardEmoji (line 120) | function parseStandardEmoji(text: string, start: number): ParserResult |... constant SKIN_TONE_SUFFIX_REGEX (line 210) | const SKIN_TONE_SUFFIX_REGEX = /^:skin-tone-([1-5]):/; function parseEmojiShortcode (line 212) | function parseEmojiShortcode(text: string): ParserResult | null { function parseCustomEmoji (line 309) | function parseCustomEmoji(text: string): ParserResult | null { function applyTextPresentation (line 354) | function applyTextPresentation(node: Node): void { FILE: packages/markdown_parser/src/parsers/InlineParsers.tsx constant BACKSLASH (line 31) | const BACKSLASH = 92; constant UNDERSCORE (line 32) | const UNDERSCORE = 95; constant ASTERISK (line 33) | const ASTERISK = 42; constant TILDE (line 34) | const TILDE = 126; constant PIPE (line 35) | const PIPE = 124; constant BACKTICK (line 36) | const BACKTICK = 96; constant LESS_THAN (line 37) | const LESS_THAN = 60; constant AT_SIGN (line 38) | const AT_SIGN = 64; constant HASH (line 39) | const HASH = 35; constant SLASH (line 40) | const SLASH = 47; constant OPEN_BRACKET (line 41) | const OPEN_BRACKET = 91; constant COLON (line 42) | const COLON = 58; constant LETTER_A (line 43) | const LETTER_A = 97; constant LETTER_I (line 44) | const LETTER_I = 105; constant LETTER_M (line 45) | const LETTER_M = 109; constant LETTER_S (line 46) | const LETTER_S = 115; constant LETTER_T (line 47) | const LETTER_T = 116; constant PLUS_SIGN (line 48) | const PLUS_SIGN = 43; constant FORMATTING_CHARS (line 50) | const FORMATTING_CHARS = new Set([ASTERISK, UNDERSCORE, TILDE, PIPE, BAC... constant MAX_CACHE_SIZE (line 54) | const MAX_CACHE_SIZE = 500; function parseInline (line 57) | function parseInline(text: string, parserFlags: number): Array { function parseInlineWithContext (line 97) | function parseInlineWithContext(text: string, context: FormattingContext... function parseSpecialSequence (line 444) | function parseSpecialSequence(text: string, context: FormattingContext, ... function parseFormatting (line 552) | function parseFormatting(text: string, context: FormattingContext, parse... type FormattingMarkerInfo (line 610) | interface FormattingMarkerInfo { function getFormattingMarkerInfo (line 616) | function getFormattingMarkerInfo(text: string): FormattingMarkerInfo | n... function findFormattingEnd (line 663) | function findFormattingEnd( type NodeWithChildren (line 812) | type NodeWithChildren = Extract}>; type FormattingNodeType (line 813) | type FormattingNodeType = NodeWithChildren['type']; function createFormattingNode (line 815) | function createFormattingNode( FILE: packages/markdown_parser/src/parsers/LinkParsers.tsx constant SPOOFED_LINK_PATTERN (line 27) | const SPOOFED_LINK_PATTERN = /^\[https?:\/\/[^\s[\]]+\]\(https?:\/\/[^\s... constant EMAIL_PATTERN (line 28) | const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; constant OPEN_BRACKET (line 30) | const OPEN_BRACKET = 91; constant CLOSE_BRACKET (line 31) | const CLOSE_BRACKET = 93; constant OPEN_PAREN (line 32) | const OPEN_PAREN = 40; constant CLOSE_PAREN (line 33) | const CLOSE_PAREN = 41; constant BACKSLASH (line 34) | const BACKSLASH = 92; constant LESS_THAN (line 35) | const LESS_THAN = 60; constant GREATER_THAN (line 36) | const GREATER_THAN = 62; constant DOUBLE_QUOTE (line 37) | const DOUBLE_QUOTE = 34; constant SINGLE_QUOTE (line 38) | const SINGLE_QUOTE = 39; constant PLUS_SIGN (line 39) | const PLUS_SIGN = 43; function containsLinkSyntax (line 41) | function containsLinkSyntax(text: string): boolean { function parseLink (line 55) | function parseLink( function extractLinkParts (line 148) | function extractLinkParts(text: string): {linkText: string; url: string;... function findClosingBracket (line 189) | function findClosingBracket(text: string): {bracketPosition: number; lin... function extractUrl (line 222) | function extractUrl(text: string, startPos: number): {url: string; isEsc... function extractEscapedUrl (line 230) | function extractEscapedUrl( function extractUnescapedUrl (line 258) | function extractUnescapedUrl( function extractUrlSegment (line 293) | function extractUrlSegment(text: string, parserFlags: number): ParserRes... function parseAutolink (line 372) | function parseAutolink(text: string, parserFlags: number): ParserResult ... function parseEmailLink (line 410) | function parseEmailLink(text: string, parserFlags: number): ParserResult... function parsePhoneLink (line 441) | function parsePhoneLink(text: string, parserFlags: number): ParserResult... function parseSmsLink (line 472) | function parseSmsLink(text: string, parserFlags: number): ParserResult |... function shouldTreatAsMaskedLink (line 502) | function shouldTreatAsMaskedLink(trimmedLinkText: string, url: string): ... FILE: packages/markdown_parser/src/parsers/ListParsers.tsx type ListParseResult (line 25) | interface ListParseResult { function parseList (line 31) | function parseList( function isBlockBreak (line 165) | function isBlockBreak(trimmed: string): boolean { function createSimpleList (line 169) | function createSimpleList(content: string): ListNode { function handleSameIndentLevel (line 177) | function handleSameIndentLevel( function handleNestedIndentLevel (line 239) | function handleNestedIndentLevel( function handleBulletPointText (line 281) | function handleBulletPointText( function handleListContinuation (line 306) | function handleListContinuation( function tryParseNestedContent (line 331) | function tryParseNestedContent( function isListContinuation (line 368) | function isListContinuation(line: string, indentLevel: number): boolean { function isBulletPointText (line 377) | function isBulletPointText(text: string): boolean { function getNormalisedOrdinal (line 385) | function getNormalisedOrdinal( function matchListItem (line 397) | function matchListItem(line: string): [boolean, number, string, number?]... function handleUnorderedListMarker (line 422) | function handleUnorderedListMarker( function handleOrderedListMarker (line 433) | function handleOrderedListMarker( FILE: packages/markdown_parser/src/parsers/MentionParsers.tsx constant LESS_THAN (line 23) | const LESS_THAN = 60; constant AT_SIGN (line 24) | const AT_SIGN = 64; constant HASH (line 25) | const HASH = 35; constant AMPERSAND (line 26) | const AMPERSAND = 38; constant SLASH (line 27) | const SLASH = 47; constant LETTER_I (line 28) | const LETTER_I = 105; constant LETTER_D (line 29) | const LETTER_D = 100; constant COLON (line 30) | const COLON = 58; constant DIGIT_ZERO (line 31) | const DIGIT_ZERO = 48; constant DIGIT_NINE (line 32) | const DIGIT_NINE = 57; function parseMention (line 34) | function parseMention(text: string, parserFlags: number): ParserResult |... function isDigitOnly (line 66) | function isDigitOnly(text: string): boolean { function parseUserOrRoleMention (line 76) | function parseUserOrRoleMention(inner: string, parserFlags: number): Men... function parseChannelMention (line 102) | function parseChannelMention(inner: string, parserFlags: number): Mentio... function parseCommandMention (line 118) | function parseCommandMention(inner: string, parserFlags: number): Mentio... function parseGuildNavigation (line 146) | function parseGuildNavigation(inner: string, parserFlags: number): Menti... function getNavigationType (line 172) | function getNavigationType(navTypeLower: string): GuildNavKind | null { function createLinkedRolesNavigation (line 187) | function createLinkedRolesNavigation(id?: string): MentionNode { function createBasicNavigation (line 198) | function createBasicNavigation(navigationType: GuildNavKind): MentionNode { FILE: packages/markdown_parser/src/parsers/TableParsers.tsx type TableParseResult (line 23) | interface TableParseResult { constant PIPE (line 28) | const PIPE = 124; constant SPACE (line 29) | const SPACE = 32; constant BACKSLASH (line 30) | const BACKSLASH = 92; constant DASH (line 31) | const DASH = 45; constant COLON (line 32) | const COLON = 58; constant HASH (line 33) | const HASH = 35; constant GREATER_THAN (line 34) | const GREATER_THAN = 62; constant ASTERISK (line 35) | const ASTERISK = 42; constant DIGIT_0 (line 36) | const DIGIT_0 = 48; constant DIGIT_9 (line 37) | const DIGIT_9 = 57; constant PERIOD (line 38) | const PERIOD = 46; constant MAX_CACHE_SIZE (line 40) | const MAX_CACHE_SIZE = 1000; function parseTable (line 44) | function parseTable( function containsPipe (line 147) | function containsPipe(text: string): boolean { function hasContent (line 151) | function hasContent(cells: Array): boolean { function hasRowContent (line 160) | function hasRowContent(row: TableRowNode): boolean { function validateAlignmentRow (line 172) | function validateAlignmentRow(cells: Array): boolean { function fastSplitTableCells (line 193) | function fastSplitTableCells(line: string): Array { function parseAlignments (line 236) | function parseAlignments(cells: Array): Array | ... function createTableRow (line 262) | function createTableRow(cellContents: Array, parseInline: (text:... function normalizeColumnCount (line 285) | function normalizeColumnCount(cells: Array, expectedColumns: num... function isBlockBreakFast (line 297) | function isBlockBreakFast(text: string): boolean { FILE: packages/markdown_parser/src/parsers/TimestampParsers.tsx constant LESS_THAN (line 23) | const LESS_THAN = 60; constant LETTER_T (line 24) | const LETTER_T = 116; constant COLON (line 25) | const COLON = 58; function parseTimestamp (line 27) | function parseTimestamp(text: string): ParserResult | null { function getTimestampStyle (line 99) | function getTimestampStyle(char: string): TimestampStyle | null { FILE: packages/markdown_parser/src/types/Enums.tsx type ParserFlags (line 40) | type ParserFlags = ValueOf; type NodeType (line 65) | type NodeType = ValueOf; type AlertType (line 74) | type AlertType = ValueOf; type TableAlignment (line 82) | type TableAlignment = ValueOf; type TimestampStyle (line 95) | type TimestampStyle = ValueOf; type GuildNavKind (line 103) | type GuildNavKind = ValueOf; type MentionKind (line 114) | type MentionKind = ValueOf; type EmojiKind (line 120) | type EmojiKind = ValueOf; FILE: packages/markdown_parser/src/types/MarkdownConstants.tsx constant MAX_AST_NODES (line 20) | const MAX_AST_NODES = 10000; constant MAX_INLINE_DEPTH (line 21) | const MAX_INLINE_DEPTH = 10; constant MAX_LINES (line 22) | const MAX_LINES = 10000; constant MAX_LINE_LENGTH (line 23) | const MAX_LINE_LENGTH = 4096; constant MAX_LINK_URL_LENGTH (line 24) | const MAX_LINK_URL_LENGTH = 2048; FILE: packages/markdown_parser/src/types/Nodes.tsx type BaseNode (line 22) | interface BaseNode { type TextNode (line 26) | interface TextNode extends BaseNode { type BlockquoteNode (line 31) | interface BlockquoteNode extends BaseNode { type FormattingNode (line 36) | interface FormattingNode extends BaseNode { type HeadingNode (line 41) | interface HeadingNode extends BaseNode { type SubtextNode (line 47) | interface SubtextNode extends BaseNode { type ListNode (line 52) | interface ListNode extends BaseNode { type ListItem (line 58) | interface ListItem { type CodeBlockNode (line 63) | interface CodeBlockNode extends BaseNode { type InlineCodeNode (line 69) | interface InlineCodeNode extends BaseNode { type LinkNode (line 74) | interface LinkNode extends BaseNode { type MentionNode (line 81) | interface MentionNode extends BaseNode { type TimestampNode (line 86) | interface TimestampNode extends BaseNode { type EmojiNode (line 92) | interface EmojiNode extends BaseNode { type SequenceNode (line 97) | interface SequenceNode extends BaseNode { type TableNode (line 102) | interface TableNode extends BaseNode { type TableRowNode (line 109) | interface TableRowNode extends BaseNode { type TableCellNode (line 114) | interface TableCellNode extends BaseNode { type AlertNode (line 119) | interface AlertNode extends BaseNode { type SpoilerNode (line 125) | interface SpoilerNode extends BaseNode { type Node (line 131) | type Node = type MentionType (line 151) | type MentionType = type EmojiType (line 161) | type EmojiType = type ParserResult (line 165) | interface ParserResult { FILE: packages/markdown_parser/src/utils/AstUtils.tsx constant NT_TEXT (line 37) | const NT_TEXT = NodeType.Text; constant NT_STRONG (line 38) | const NT_STRONG = NodeType.Strong; constant NT_EMPHASIS (line 39) | const NT_EMPHASIS = NodeType.Emphasis; constant NT_UNDERLINE (line 40) | const NT_UNDERLINE = NodeType.Underline; constant NT_STRIKETHROUGH (line 41) | const NT_STRIKETHROUGH = NodeType.Strikethrough; constant NT_SPOILER (line 42) | const NT_SPOILER = NodeType.Spoiler; constant NT_SEQUENCE (line 43) | const NT_SEQUENCE = NodeType.Sequence; constant NT_HEADING (line 44) | const NT_HEADING = NodeType.Heading; constant NT_SUBTEXT (line 45) | const NT_SUBTEXT = NodeType.Subtext; constant NT_BLOCKQUOTE (line 46) | const NT_BLOCKQUOTE = NodeType.Blockquote; constant NT_LIST (line 47) | const NT_LIST = NodeType.List; constant NT_LINK (line 48) | const NT_LINK = NodeType.Link; constant NT_TABLE (line 49) | const NT_TABLE = NodeType.Table; constant NT_TABLE_ROW (line 50) | const NT_TABLE_ROW = NodeType.TableRow; constant NT_TABLE_CELL (line 51) | const NT_TABLE_CELL = NodeType.TableCell; constant NT_ALERT (line 52) | const NT_ALERT = NodeType.Alert; constant FORMATTING_NODE_TYPES (line 54) | const FORMATTING_NODE_TYPES: Set = new Set([ function flattenAST (line 63) | function flattenAST(nodes: Array): void { function flattenNode (line 76) | function flattenNode(node: Node): void { function flattenTableRow (line 211) | function flattenTableRow(row: TableRowNode): void { function flattenChildren (line 230) | function flattenChildren(nodes: Array, insideBlockquote = false): ... function flattenFormattingNodes (line 243) | function flattenFormattingNodes(nodes: Array): void { function isFormattingNode (line 259) | function isFormattingNode(node: Node): boolean { function flattenSameType (line 263) | function flattenSameType(children: Array, nodeType: NodeType): void { function combineAdjacentTextNodes (line 302) | function combineAdjacentTextNodes(nodes: Array, insideBlockquote =... function removeEmptyTextNodesBetweenAlerts (line 409) | function removeEmptyTextNodesBetweenAlerts(nodes: Array): void { function mergeTextNodes (line 473) | function mergeTextNodes(nodes: Array): Array { function addTextNode (line 518) | function addTextNode(nodes: Array, text: string): void { FILE: packages/markdown_parser/src/utils/StringUtils.tsx constant HTTP_PREFIX (line 20) | const HTTP_PREFIX = 'http://'; constant HTTPS_PREFIX (line 21) | const HTTPS_PREFIX = 'https://'; constant WORD_CHARS (line 23) | const WORD_CHARS = new Set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR... constant ESCAPABLE_CHARS (line 25) | const ESCAPABLE_CHARS = new Set('[]()\\*_~`@!#$%^&+-={}|:;"\'<>,.?/'); constant URL_TERMINATION_CHARS (line 27) | const URL_TERMINATION_CHARS = new Set(' \t\n\r)\'"'); function isWordCharacter (line 29) | function isWordCharacter(char: string): boolean { function isEscapableCharacter (line 33) | function isEscapableCharacter(char: string): boolean { function isUrlTerminationChar (line 37) | function isUrlTerminationChar(char: string): boolean { function isWordUnderscore (line 41) | function isWordUnderscore(chars: Array, pos: number): boolean { function isAlphaNumeric (line 50) | function isAlphaNumeric(charCode: number): boolean { function isAlphaNumericChar (line 56) | function isAlphaNumericChar(char: string): boolean { function startsWithUrl (line 60) | function startsWithUrl(text: string): boolean { function matchMarker (line 76) | function matchMarker(chars: Array, pos: number, marker: string):... FILE: packages/markdown_parser/src/utils/UrlUtils.tsx constant HTTP_PROTOCOL (line 22) | const HTTP_PROTOCOL = 'http:'; constant HTTPS_PROTOCOL (line 23) | const HTTPS_PROTOCOL = 'https:'; constant MAILTO_PROTOCOL (line 24) | const MAILTO_PROTOCOL = 'mailto:'; constant TEL_PROTOCOL (line 25) | const TEL_PROTOCOL = 'tel:'; constant SMS_PROTOCOL (line 26) | const SMS_PROTOCOL = 'sms:'; constant EMAIL_REGEX (line 28) | const EMAIL_REGEX = constant PHONE_REGEX (line 31) | const PHONE_REGEX = /^\+[1-9][\d\s\-()]+$/; constant SPECIAL_PROTOCOLS_REGEX (line 33) | const SPECIAL_PROTOCOLS_REGEX = /^(mailto:|tel:|sms:)/; constant PROTOCOL_REGEX (line 35) | const PROTOCOL_REGEX = /:\/\//; constant TRAILING_SLASH_REGEX (line 37) | const TRAILING_SLASH_REGEX = /\/+$/; constant NORMALIZE_PHONE_REGEX (line 39) | const NORMALIZE_PHONE_REGEX = /[\s\-()]/g; function createUrlObject (line 41) | function createUrlObject(url: string): URL | null { function isValidEmail (line 55) | function isValidEmail(email: string): boolean { function normalizePhoneNumber (line 59) | function normalizePhoneNumber(phoneNumber: string): string { function isValidPhoneNumber (line 63) | function isValidPhoneNumber(phoneNumber: string): boolean { function normalizeUrl (line 69) | function normalizeUrl(url: string): string { function idnaEncodeURL (line 80) | function idnaEncodeURL(url: string): string { function convertToAsciiUrl (line 96) | function convertToAsciiUrl(url: string): string { function isValidUrl (line 103) | function isValidUrl(urlStr: string): boolean { FILE: packages/marketing/src/App.tsx type CreateMarketingAppOptions (line 40) | interface CreateMarketingAppOptions { type MarketingAppResult (line 49) | interface MarketingAppResult { function createMarketingApp (line 54) | function createMarketingApp(options: CreateMarketingAppOptions): Marketi... function normalizeMarketingSecurityConfig (line 99) | function normalizeMarketingSecurityConfig(rawConfig: MarketingConfig): M... FILE: packages/marketing/src/DeviceUtils.tsx function detectPlatform (line 25) | function detectPlatform(userAgent: string): MarketingPlatform { function detectArchitecture (line 36) | function detectArchitecture(userAgent: string, platform: MarketingPlatfo... FILE: packages/marketing/src/GeoIp.tsx type GeoIpConfig (line 23) | interface GeoIpConfig { constant DEFAULT_COUNTRY_CODE (line 28) | const DEFAULT_COUNTRY_CODE = 'US'; function getCountryCode (line 30) | async function getCountryCode(req: Request, config: GeoIpConfig): Promis... FILE: packages/marketing/src/HonoJsx.d.ts type Element (line 24) | type Element = HonoJSX.Element; type IntrinsicAttributes (line 25) | interface IntrinsicAttributes extends HonoJSX.IntrinsicAttributes {} type IntrinsicElements (line 26) | interface IntrinsicElements extends HonoJSX.IntrinsicElements {} FILE: packages/marketing/src/I18n.tsx function createI18n (line 22) | function createI18n(): MarketingI18nService { FILE: packages/marketing/src/InstallScripts.tsx function livekitctl (line 27) | function livekitctl(c: Context): Response { FILE: packages/marketing/src/MarketingConfig.tsx type RateLimitConfig (line 23) | interface RateLimitConfig { type MarketingConfig (line 28) | interface MarketingConfig { FILE: packages/marketing/src/MarketingContext.tsx type MarketingPlatform (line 26) | type MarketingPlatform = 'windows' | 'macos' | 'linux' | 'ios' | 'androi... type MarketingArchitecture (line 27) | type MarketingArchitecture = 'x64' | 'arm64' | 'unknown'; type MarketingContext (line 28) | interface MarketingContext { FILE: packages/marketing/src/MarketingHttpClient.tsx function sendMarketingRequest (line 29) | async function sendMarketingRequest(options: RequestOptions): Promise; type Currency (line 37) | type Currency = ValueOf; constant EEA_COUNTRIES (line 39) | const EEA_COUNTRIES = [ function getCurrency (line 72) | function getCurrency(countryCode: string): Currency { function isEeaCountry (line 76) | function isEeaCountry(countryCode: string): boolean { function getPriceCents (line 81) | function getPriceCents(tier: PricingTier, currency: Currency): number { function formatPriceCents (line 87) | function formatPriceCents(priceCents: number, currency: Currency): string { function formatAmountCents (line 92) | function formatAmountCents(priceCents: number): string { function getFormattedPrice (line 99) | function getFormattedPrice(tier: PricingTier, countryCode: string): stri... FILE: packages/marketing/src/PublicDir.tsx function resolveMarketingPublicDir (line 22) | function resolveMarketingPublicDir(): string { FILE: packages/marketing/src/RedirectPathUtils.tsx constant SAFE_REDIRECT_BASE_URL (line 20) | const SAFE_REDIRECT_BASE_URL = 'https://marketing.fluxer.invalid'; function sanitizeInternalRedirectPath (line 22) | function sanitizeInternalRedirectPath(rawPath: string): string { FILE: packages/marketing/src/Sitemap.tsx type UrlEntry (line 26) | interface UrlEntry { function generateSitemap (line 32) | function generateSitemap(baseUrl: string): string { function generateUrls (line 50) | function generateUrls(baseUrl: string): ReadonlyArray { function generatePolicyUrls (line 71) | function generatePolicyUrls(baseUrl: string): ReadonlyArray { function generateHelpUrls (line 80) | function generateHelpUrls(baseUrl: string): ReadonlyArray { FILE: packages/marketing/src/SlugUtils.tsx function createSlug (line 27) | function createSlug(title: string): string { function trimHyphens (line 36) | function trimHyphens(text: string): string { FILE: packages/marketing/src/UrlUtils.tsx function cacheBustedWithVersion (line 25) | function cacheBustedWithVersion(path: string, version: string): string { function cacheBustedAsset (line 30) | function cacheBustedAsset(ctx: MarketingContext, path: string): string { function prependBasePath (line 34) | function prependBasePath(basePath: string, path: string): string { function href (line 39) | function href(ctx: MarketingContext, path: string): string { function apiUrl (line 43) | function apiUrl(ctx: MarketingContext, path: string): string { function isCanary (line 47) | function isCanary(ctx: MarketingContext): boolean { function normalizeBasePath (line 51) | function normalizeBasePath(basePath: string): string { FILE: packages/marketing/src/app/MarketingContextFactory.tsx type CreateMarketingContextFactoryOptions (line 32) | interface CreateMarketingContextFactoryOptions { type MarketingContextFactory (line 37) | type MarketingContextFactory = (c: HonoContext) => Promise = Object.values(Htt... function createMarketingErrorHandler (line 94) | function createMarketingErrorHandler(logger: LoggerInterface, config: Ma... function getStatus (line 121) | function getStatus(error: Error): number | null { function renderMarketingError (line 126) | function renderMarketingError(c: Context, status: number, homeUrl: strin... function isHttpStatusCode (line 141) | function isHttpStatusCode(value: number): value is HttpStatusCode { FILE: packages/marketing/src/app/MarketingRouteRegistrar.tsx type RegisterMarketingRoutesOptions (line 52) | interface RegisterMarketingRoutesOptions { type LocaleCookieSession (line 58) | interface LocaleCookieSession { constant LOCALE_COOKIE_MAX_AGE_SECONDS (line 62) | const LOCALE_COOKIE_MAX_AGE_SECONDS = 60 * 60 * 24 * 365; constant POLICY_ROUTE_DEFINITIONS (line 64) | const POLICY_ROUTE_DEFINITIONS = [ constant PAGE_ROUTE_DEFINITIONS (line 72) | const PAGE_ROUTE_DEFINITIONS: ReadonlyArray<{ function registerMarketingRoutes (line 87) | function registerMarketingRoutes(options: RegisterMarketingRoutesOptions... function registerLocaleRoute (line 98) | function registerLocaleRoute(app: Hono, config: MarketingConfig): void { function registerExternalRedirects (line 112) | function registerExternalRedirects(app: Hono): void { function registerSystemContentRoutes (line 125) | function registerSystemContentRoutes(app: Hono, contextFactory: Marketin... function registerHelpRoutes (line 152) | function registerHelpRoutes(app: Hono, contextFactory: MarketingContextF... function registerPolicyRoutes (line 163) | function registerPolicyRoutes(app: Hono, contextFactory: MarketingContex... function registerPageRoutes (line 171) | function registerPageRoutes(app: Hono, contextFactory: MarketingContextF... function registerPressDownloadRoute (line 179) | function registerPressDownloadRoute(app: Hono): void { function registerNotFoundRoute (line 218) | function registerNotFoundRoute(app: Hono, contextFactory: MarketingConte... function registerContextRoute (line 224) | function registerContextRoute( function createLocaleCookieValue (line 236) | function createLocaleCookieValue(locale: string, secretKeyBase: string):... FILE: packages/marketing/src/app/MarketingStaticAssets.tsx type ApplyMarketingStaticAssetsOptions (line 27) | interface ApplyMarketingStaticAssetsOptions { function applyMarketingStaticAssets (line 34) | function applyMarketingStaticAssets(options: ApplyMarketingStaticAssetsO... function stripLeadingBasePath (line 53) | function stripLeadingBasePath(path: string, basePath: string): string { function toRelativeStaticPath (line 60) | function toRelativeStaticPath(path: string): string { FILE: packages/marketing/src/components/ContentToc.tsx type HeadingEntry (line 23) | interface HeadingEntry { type ContentTocProps (line 29) | interface ContentTocProps { function ContentToc (line 34) | function ContentToc(props: ContentTocProps): JSX.Element | null { function tocClassName (line 53) | function tocClassName(level: number): string { FILE: packages/marketing/src/components/CurrentFeaturesSection.tsx type CurrentFeaturesSectionProps (line 27) | interface CurrentFeaturesSectionProps { function CurrentFeaturesSection (line 31) | function CurrentFeaturesSection(props: CurrentFeaturesSectionProps): JSX... FILE: packages/marketing/src/components/FeatureCard.tsx type FeatureIcon (line 29) | type FeatureIcon = type FeatureCardProps (line 41) | interface FeatureCardProps { function FeatureCard (line 50) | function FeatureCard(props: FeatureCardProps): JSX.Element { FILE: packages/marketing/src/components/FeaturePill.tsx type FeatureStatus (line 23) | type FeatureStatus = 'live' | 'comingSoon'; type FeatureTheme (line 24) | type FeatureTheme = 'light' | 'dark'; type FeaturePillProps (line 26) | interface FeaturePillProps { type FeaturePillThemeProps (line 31) | interface FeaturePillThemeProps { function FeaturePill (line 37) | function FeaturePill(props: FeaturePillProps): JSX.Element { function FeaturePillWithTheme (line 45) | function FeaturePillWithTheme(props: FeaturePillThemeProps): JSX.Element { FILE: packages/marketing/src/components/FeaturesGrid.tsx type FeaturePillItem (line 30) | interface FeaturePillItem { type FeaturesGridProps (line 35) | interface FeaturesGridProps { function FeaturesGrid (line 43) | function FeaturesGrid(props: FeaturesGridProps): JSX.Element { function getThemeClasses (line 63) | function getThemeClasses(theme: FeatureTheme): {bgClass: string; textCla... FILE: packages/marketing/src/components/FinalCtaSection.tsx type FinalCtaSectionProps (line 28) | interface FinalCtaSectionProps { function FinalCtaSection (line 32) | function FinalCtaSection(props: FinalCtaSectionProps): JSX.Element { FILE: packages/marketing/src/components/Flags.tsx type FlagSvgProps (line 27) | interface FlagSvgProps { function FlagSvg (line 33) | function FlagSvg(props: FlagSvgProps): JSX.Element { FILE: packages/marketing/src/components/Footer.tsx type FooterLinkProps (line 34) | interface FooterLinkProps { function FooterLink (line 39) | function FooterLink(props: FooterLinkProps): JSX.Element { type FooterSectionProps (line 49) | interface FooterSectionProps { function FooterSection (line 55) | function FooterSection(props: FooterSectionProps): JSX.Element { type FooterProps (line 64) | interface FooterProps { function Footer (line 69) | function Footer(props: FooterProps): JSX.Element { FILE: packages/marketing/src/components/GetInvolvedSection.tsx type GetInvolvedSectionProps (line 30) | interface GetInvolvedSectionProps { function GetInvolvedSection (line 34) | function GetInvolvedSection(props: GetInvolvedSectionProps): JSX.Element { FILE: packages/marketing/src/components/HackernewsBanner.tsx type HackernewsBannerProps (line 26) | interface HackernewsBannerProps { function HackernewsBanner (line 30) | function HackernewsBanner(props: HackernewsBannerProps): JSX.Element { FILE: packages/marketing/src/components/Hero.tsx type HeroProps (line 30) | interface HeroProps { function Hero (line 34) | function Hero(props: HeroProps): JSX.Element { FILE: packages/marketing/src/components/HeroBase.tsx type HeroConfig (line 23) | interface HeroConfig { function defaultHeroPadding (line 31) | function defaultHeroPadding(): string { function HeroBase (line 35) | function HeroBase(config: HeroConfig): JSX.Element { FILE: packages/marketing/src/components/LocaleSelector.tsx type LocaleSelectorProps (line 31) | interface LocaleSelectorProps { function LocaleSelector (line 36) | function LocaleSelector(props: LocaleSelectorProps): JSX.Element { type LocaleSelectorTriggerProps (line 45) | interface LocaleSelectorTriggerProps { function LocaleSelectorTrigger (line 51) | function LocaleSelectorTrigger(props: LocaleSelectorTriggerProps): JSX.E... function LocaleSelectorModal (line 65) | function LocaleSelectorModal(props: LocaleSelectorProps): JSX.Element { function getLocalizedLocaleName (line 139) | function getLocalizedLocaleName(ctx: MarketingContext, locale: string): ... FILE: packages/marketing/src/components/MarketingButton.tsx type MarketingButtonSize (line 26) | type MarketingButtonSize = 'small' | 'medium' | 'large' | 'xl'; type MarketingButtonProps (line 28) | interface MarketingButtonProps extends Omit = [ function getHelpArticleMetadata (line 113) | function getHelpArticleMetadata(slug: string): HelpArticleMetadata | null { FILE: packages/marketing/src/content/policies/Metadata.tsx type PolicyMetadata (line 23) | interface PolicyMetadata { constant POLICY_METADATA (line 31) | const POLICY_METADATA: ReadonlyArray = [ function getPolicyMetadata (line 72) | function getPolicyMetadata(slug: string): PolicyMetadata | null { FILE: packages/marketing/src/help/HelpContentLoader.tsx constant HELP_DIR (line 35) | const HELP_DIR = join(__dirname, '..', 'content', 'help'); type HelpArticle (line 37) | interface HelpArticle { function getHelpArticle (line 46) | function getHelpArticle(slug: string): HelpArticle | null { function getHelpArticles (line 68) | function getHelpArticles(): ReadonlyArray { FILE: packages/marketing/src/markdown/AstHtmlRenderer.tsx function renderAstToHtml (line 50) | function renderAstToHtml(nodes: Array, copyLinkText?: string): str... type ParagraphBlock (line 62) | interface ParagraphBlock { type SingleBlock (line 67) | interface SingleBlock { type Block (line 72) | type Block = ParagraphBlock | SingleBlock; function isInlineNode (line 74) | function isInlineNode(node: Node): boolean { function groupIntoBlocks (line 91) | function groupIntoBlocks(nodes: Array): Array { function trimInlineGroup (line 118) | function trimInlineGroup(nodes: Array): Array { function renderParagraph (line 159) | function renderParagraph(nodes: Array): string { function renderInlineNode (line 165) | function renderInlineNode(node: Node): string { function renderBlockNode (line 186) | function renderBlockNode(node: Node, copyLinkText?: string): string { function renderTextNode (line 207) | function renderTextNode(node: TextNode): string { function renderFormattingNode (line 212) | function renderFormattingNode(node: FormattingNode | SequenceNode): stri... function renderSpoilerNode (line 230) | function renderSpoilerNode(node: SpoilerNode): string { function renderHeadingNode (line 235) | function renderHeadingNode(node: HeadingNode, copyLinkText?: string): st... function renderHeadingLinkButton (line 246) | function renderHeadingLinkButton(slug: string, copyLinkText?: string): s... function renderChildrenWithoutHeaderId (line 255) | function renderChildrenWithoutHeaderId(children: Array): string { function renderHeadingChildren (line 260) | function renderHeadingChildren(node: HeadingNode): string { function renderSubtextNode (line 264) | function renderSubtextNode(node: SubtextNode): string { function renderBlockquoteNode (line 269) | function renderBlockquoteNode(node: BlockquoteNode): string { function renderListNode (line 274) | function renderListNode(node: ListNode): string { function renderListItem (line 280) | function renderListItem(item: ListItem): string { function renderListItemChild (line 286) | function renderListItemChild(node: Node): string { function renderCodeBlockNode (line 293) | function renderCodeBlockNode(node: CodeBlockNode): string { function renderInlineCodeNode (line 301) | function renderInlineCodeNode(node: InlineCodeNode): string { function renderLinkNode (line 305) | function renderLinkNode(node: LinkNode): string { function renderTableNode (line 314) | function renderTableNode(node: TableNode): string { function renderTableRowNode (line 321) | function renderTableRowNode( function renderTableCellNode (line 330) | function renderTableCellNode( function renderAlertNode (line 359) | function renderAlertNode(node: AlertNode): string { function getAlertClass (line 365) | function getAlertClass(alertType: ValueOf): string { function escapeHtml (line 382) | function escapeHtml(text: string): string { function escapeHtmlAttribute (line 391) | function escapeHtmlAttribute(text: string): string { function createHeadingSlug (line 395) | function createHeadingSlug(text: string): string { function trimHyphens (line 403) | function trimHyphens(text: string): string { function extractHeaderId (line 415) | function extractHeaderId(raw: string): [string, string] { function getTextContent (line 423) | function getTextContent(nodes: Array): string { function autoLinkEmails (line 440) | function autoLinkEmails(html: string): string { type HtmlPart (line 454) | interface HtmlPart { function splitByTags (line 459) | function splitByTags(html: string): Array { FILE: packages/marketing/src/markdown/MarkdownContentLoader.tsx function loadMarkdownWithFallback (line 27) | async function loadMarkdownWithFallback(basePath: string, locale: Locale... function renderMarkdownToHtml (line 43) | function renderMarkdownToHtml(content: string, baseUrl: string, appEndpo... FILE: packages/marketing/src/markdown/MarkdownFrontmatter.tsx type Frontmatter (line 23) | interface Frontmatter { function parseFrontmatter (line 28) | function parseFrontmatter(markdown: string): Frontmatter { function getString (line 35) | function getString(frontmatter: Frontmatter, key: string): string | null { function getStringOr (line 39) | function getStringOr(frontmatter: Frontmatter, key: string, fallback: st... function getInt (line 43) | function getInt(frontmatter: Frontmatter, key: string): number | null { function getIntOr (line 50) | function getIntOr(frontmatter: Frontmatter, key: string, fallback: numbe... function getContent (line 54) | function getContent(frontmatter: Frontmatter): string { function parseWithFrontmatter (line 58) | function parseWithFrontmatter(markdown: string): Frontmatter { function parseFrontmatterText (line 70) | function parseFrontmatterText(text: string): Record { function parseFrontmatterLine (line 80) | function parseFrontmatterLine(line: string): [string, string] | null { FILE: packages/marketing/src/markdown/MarkdownRenderer.tsx type MarkdownRenderOptions (line 27) | interface MarkdownRenderOptions { constant MARKETING_PARSER_FLAGS (line 38) | const MARKETING_PARSER_FLAGS = constant HORIZONTAL_RULE_MARKER (line 50) | const HORIZONTAL_RULE_MARKER = 'FLUXER_HORIZONTAL_RULE_PLACEHOLDER'; constant SECTION_REFERENCE_PLACEHOLDER_PREFIX (line 51) | const SECTION_REFERENCE_PLACEHOLDER_PREFIX = 'FLUXER_SECTION_REF_'; function renderMarkdownWithBase (line 53) | function renderMarkdownWithBase( function preprocessMarkdown (line 90) | function preprocessMarkdown(text: string): string { function isSetextUnderline (line 125) | function isSetextUnderline(line: string): boolean { function isAllSameChar (line 130) | function isAllSameChar(text: string, char: string): boolean { function postProcessHtml (line 137) | function postProcessHtml(html: string): string { function expandAppShortcuts (line 162) | function expandAppShortcuts(text: string, appEndpoint: string): string { function buildAppDisplay (line 171) | function buildAppDisplay(appEndpoint: string, path: string): string { function replaceAppVariables (line 179) | function replaceAppVariables(text: string, appEndpoint: string): string { function extractProtocolAndHost (line 184) | function extractProtocolAndHost(appEndpoint: string): [string, string] { function resolveRelativeLinks (line 192) | function resolveRelativeLinks(text: string, baseUrl: string): string { function removeHtmlComments (line 197) | function removeHtmlComments(text: string): string { function normalizeBase (line 203) | function normalizeBase(baseUrl: string): string { function createSlugBase (line 210) | function createSlugBase(text: string): string { function trimHyphens (line 218) | function trimHyphens(text: string): string { function replaceMatches (line 230) | function replaceMatches( type SectionReferenceExtraction (line 244) | interface SectionReferenceExtraction { function extractSectionReferences (line 249) | function extractSectionReferences(text: string): SectionReferenceExtract... function restoreSectionReferences (line 263) | function restoreSectionReferences(html: string, references: Map | ReadonlyArray; FILE: packages/marketing/src/middleware/CacheHeadersMiddleware.tsx function cacheHeadersMiddleware (line 37) | function cacheHeadersMiddleware(): MiddlewareHandler { FILE: packages/marketing/src/middleware/Csrf.tsx function initializeMarketingCsrf (line 25) | function initializeMarketingCsrf(secretKeyBase: string, secureCookie: bo... function getCsrfProtectionOrThrow (line 32) | function getCsrfProtectionOrThrow(): CsrfProtection { function getMarketingCsrfToken (line 39) | function getMarketingCsrfToken(c: Context): string { function marketingCsrfMiddleware (line 43) | async function marketingCsrfMiddleware(c: Context, next: Next): Promise<... FILE: packages/marketing/src/pages/CareersPage.tsx function renderCareersPage (line 39) | async function renderCareersPage(c: Context, ctx: MarketingContext): Pro... function renderHeroSection (line 57) | function renderHeroSection(ctx: MarketingContext): JSX.Element { function renderContributeSection (line 69) | function renderContributeSection(ctx: MarketingContext): JSX.Element { function renderCommunityTeamSection (line 145) | function renderCommunityTeamSection(ctx: MarketingContext): JSX.Element { function renderCommunityPill (line 188) | function renderCommunityPill(icon: JSX.Element, label: string): JSX.Elem... function renderFutureSection (line 197) | function renderFutureSection(ctx: MarketingContext): JSX.Element { function renderCtaSection (line 220) | function renderCtaSection(ctx: MarketingContext): JSX.Element { FILE: packages/marketing/src/pages/DonateManagePage.tsx function renderDonateManagePage (line 32) | async function renderDonateManagePage(c: Context, ctx: MarketingContext)... function renderManageContent (line 45) | function renderManageContent(ctx: MarketingContext, emailParam: string, ... FILE: packages/marketing/src/pages/DonatePage.tsx function renderDonatePage (line 31) | async function renderDonatePage(c: Context, ctx: MarketingContext): Prom... function getDonationType (line 44) | function getDonationType(c: Context): 'individual' | 'business' { constant TAB_ACTIVE (line 50) | const TAB_ACTIVE = constant TAB_INACTIVE (line 52) | const TAB_INACTIVE = function renderDonateContent (line 55) | function renderDonateContent(ctx: MarketingContext, donationType: 'indiv... function renderTab (line 101) | function renderTab(ctx: MarketingContext, type: 'individual' | 'business... function renderDonateTabScript (line 121) | function renderDonateTabScript(ctx: MarketingContext): JSX.Element { FILE: packages/marketing/src/pages/DonateSuccessPage.tsx function renderDonateSuccessPage (line 29) | async function renderDonateSuccessPage(c: Context, ctx: MarketingContext... function renderSuccessContent (line 40) | function renderSuccessContent(ctx: MarketingContext): JSX.Element { FILE: packages/marketing/src/pages/DownloadPage.tsx function renderDownloadPage (line 38) | async function renderDownloadPage(c: Context, ctx: MarketingContext): Pr... function renderHeroSection (line 53) | function renderHeroSection(ctx: MarketingContext): JSX.Element { function renderMobileSection (line 92) | function renderMobileSection(ctx: MarketingContext): JSX.Element { function renderSupportSection (line 134) | function renderSupportSection(ctx: MarketingContext): JSX.Element { function renderSupportCard (line 170) | function renderSupportCard( FILE: packages/marketing/src/pages/HelpArticlePage.tsx constant HELP_TOC_SCRIPT (line 33) | const HELP_TOC_SCRIPT = ` function renderHelpArticlePage (line 146) | async function renderHelpArticlePage(c: Context, ctx: MarketingContext, ... type HeadingEntry (line 174) | interface HeadingEntry { function extractHeadingsFromMarkdown (line 180) | function extractHeadingsFromMarkdown(markdown: string): ReadonlyArray)... function formatDate (line 274) | function formatDate(value: string, locale: string): string { FILE: packages/marketing/src/pages/HelpIndexPage.tsx constant HELP_SEARCH_SCRIPT (line 31) | const HELP_SEARCH_SCRIPT = ` function renderHelpIndexPage (line 51) | async function renderHelpIndexPage(c: Context, ctx: MarketingContext): P... function renderHelpIndexBody (line 65) | function renderHelpIndexBody(ctx: MarketingContext, articles: ReadonlyAr... function renderHelpCard (line 90) | function renderHelpCard(ctx: MarketingContext, article: HelpArticleMetad... FILE: packages/marketing/src/pages/HomePage.tsx function renderHomePage (line 32) | async function renderHomePage(c: Context, ctx: MarketingContext): Promis... FILE: packages/marketing/src/pages/InlineScriptEscaping.tsx function escapeInlineScriptValue (line 20) | function escapeInlineScriptValue(value: string): string { FILE: packages/marketing/src/pages/Layout.tsx function renderLayout (line 35) | function renderLayout( function renderDocsLayout (line 69) | function renderDocsLayout( function renderBlogLayout (line 108) | function renderBlogLayout( function renderBlogPostLayout (line 147) | function renderBlogPostLayout( type ContentLayoutOptions (line 182) | interface ContentLayoutOptions { function renderContentLayout (line 186) | function renderContentLayout( function getPathWithinBasePath (line 223) | function getPathWithinBasePath(path: string, basePath: string): string { FILE: packages/marketing/src/pages/NotFoundPage.tsx function renderNotFoundPage (line 30) | async function renderNotFoundPage(c: Context, ctx: MarketingContext): Pr... FILE: packages/marketing/src/pages/PartnersPage.tsx function renderPartnersPage (line 36) | async function renderPartnersPage(c: Context, ctx: MarketingContext): Pr... function renderHeroSection (line 48) | function renderHeroSection(ctx: MarketingContext): JSX.Element { function renderPerksSection (line 60) | function renderPerksSection(ctx: MarketingContext): JSX.Element { type PerkIcon (line 175) | type PerkIcon = function renderPerkCard (line 190) | function renderPerkCard( function renderCtaSection (line 225) | function renderCtaSection(ctx: MarketingContext): JSX.Element { FILE: packages/marketing/src/pages/PlutoniumPage.tsx function renderPlutoniumPage (line 43) | async function renderPlutoniumPage(c: Context, ctx: MarketingContext): P... function renderHeroSection (line 60) | function renderHeroSection(ctx: MarketingContext): JSX.Element { function getPerkLabel (line 89) | function getPerkLabel(ctx: MarketingContext, perk: PlutoniumPerk): string { function getStatusBadge (line 131) | function getStatusBadge(ctx: MarketingContext, perk: PlutoniumPerk): str... function formatBytes (line 141) | function formatBytes(bytes: number): string { function formatPerkNumericValue (line 146) | function formatPerkNumericValue(value: number, unit?: string): string { function renderComparisonSection (line 153) | function renderComparisonSection(ctx: MarketingContext): JSX.Element { function comparisonRow (line 260) | function comparisonRow( function comparisonCheckRow (line 287) | function comparisonCheckRow( function renderFeaturesSection (line 326) | function renderFeaturesSection(ctx: MarketingContext): JSX.Element { type FeatureIconName (line 417) | type FeatureIconName = function renderFeatureCard (line 431) | function renderFeatureCard( function getFeatureIcon (line 457) | function getFeatureIcon(iconName: FeatureIconName): JSX.Element { function renderSelfHostingSection (line 461) | function renderSelfHostingSection(ctx: MarketingContext): JSX.Element { function renderBenefitItem (line 550) | function renderBenefitItem(_ctx: MarketingContext, text: string): JSX.El... function renderCtaSection (line 559) | function renderCtaSection(ctx: MarketingContext): JSX.Element { FILE: packages/marketing/src/pages/PolicyPage.tsx constant POLICY_TOC_SCRIPT (line 33) | const POLICY_TOC_SCRIPT = ` function renderPolicyPage (line 146) | async function renderPolicyPage(c: Context, ctx: MarketingContext, slug:... type HeadingEntry (line 178) | interface HeadingEntry { function extractHeadingsFromMarkdown (line 184) | function extractHeadingsFromMarkdown(markdown: string): ReadonlyArray)... function renderRelatedPolicy (line 285) | function renderRelatedPolicy(ctx: MarketingContext, policy: Policy): JSX... function formatDate (line 295) | function formatDate(value: string, locale: string): string { function collectRelatedPolicies (line 299) | function collectRelatedPolicies(policy: Policy): ReadonlyArray { FILE: packages/marketing/src/pages/PressPage.tsx function renderPressPage (line 35) | async function renderPressPage(c: Context, ctx: MarketingContext): Promi... function renderHeroSection (line 53) | function renderHeroSection(ctx: MarketingContext): JSX.Element { function renderLogoSection (line 65) | function renderLogoSection(ctx: MarketingContext): JSX.Element { function renderSymbolSection (line 105) | function renderSymbolSection(ctx: MarketingContext): JSX.Element { function renderColorsSection (line 145) | function renderColorsSection(ctx: MarketingContext): JSX.Element { function renderContactSection (line 179) | function renderContactSection(ctx: MarketingContext): JSX.Element { function renderAssetCard (line 205) | function renderAssetCard( function renderColorCard (line 239) | function renderColorCard(name: string, hex: string, description: string)... FILE: packages/marketing/src/pages/donations/DonationForm.tsx type DonationI18n (line 27) | interface DonationI18n { function getDonationI18n (line 47) | function getDonationI18n(ctx: MarketingContext): DonationI18n { function renderDonationForm (line 69) | function renderDonationForm( function renderDonationScript (line 209) | function renderDonationScript(ctx: MarketingContext): JSX.Element { constant SWISH_URL (line 335) | const SWISH_URL = constant DONATE_BTN_SECONDARY (line 338) | const DONATE_BTN_SECONDARY = FILE: packages/marketing/src/pages/donations/DonationManageForm.tsx type DonationManageI18n (line 26) | interface DonationManageI18n { function getDonationManageI18n (line 38) | function getDonationManageI18n(ctx: MarketingContext): DonationManageI18n { function renderDonationManageForm (line 52) | function renderDonationManageForm(ctx: MarketingContext, emailParam: str... FILE: packages/marketing/src/pages/layout/Icons.tsx function buildIconLinks (line 23) | function buildIconLinks(staticCdnEndpoint: string): ReadonlyArray { FILE: packages/marketing/src/pages/layout/Scripts.tsx constant LOCALE_SELECTOR_SCRIPT (line 23) | const LOCALE_SELECTOR_SCRIPT = `(function() { constant MAIN_PAGE_SCRIPT (line 84) | const MAIN_PAGE_SCRIPT = `${LOCALE_SELECTOR_SCRIPT} function mainPageScript (line 102) | function mainPageScript(): JSX.Element { constant DOWNLOAD_SCRIPT (line 106) | const DOWNLOAD_SCRIPT = ` function downloadScript (line 350) | function downloadScript(): JSX.Element { constant DOCS_PAGE_SCRIPT (line 354) | const DOCS_PAGE_SCRIPT = ` function docsPageScript (line 492) | function docsPageScript(): JSX.Element { FILE: packages/marketing/src/policies/PolicyContentLoader.tsx constant POLICIES_DIR (line 31) | const POLICIES_DIR = join(__dirname, '..', 'content', 'policies'); type Policy (line 33) | interface Policy { function getPolicy (line 42) | function getPolicy(slug: string): Policy | null { function getPolicies (line 64) | function getPolicies(): ReadonlyArray { FILE: packages/marketing/src/routes/RouteTypes.tsx type MarketingRouteHandler (line 23) | type MarketingRouteHandler = (c: HonoContext, ctx: MarketingContext) => ... FILE: packages/marketing/src/utils/NumberFormatUtils.tsx function formatNumber (line 23) | function formatNumber(value: number): string { function formatNumberDigits (line 28) | function formatNumberDigits(digits: string): string { function chunkDigits (line 37) | function chunkDigits(digits: string): string { FILE: packages/media_proxy/src/App.tsx constant FLUXER_USER_AGENT (line 66) | const FLUXER_USER_AGENT = 'Mozilla/5.0 (compatible; Fluxerbot/1.0; +http... type CreateMediaProxyAppOptions (line 68) | interface CreateMediaProxyAppOptions { type MediaProxyAppResult (line 86) | interface MediaProxyAppResult { function createMediaProxyApp (line 92) | async function createMediaProxyApp(options: CreateMediaProxyAppOptions):... FILE: packages/media_proxy/src/controllers/AttachmentsController.tsx type AttachmentsControllerDeps (line 39) | interface AttachmentsControllerDeps { function createAttachmentsHandler (line 50) | function createAttachmentsHandler(deps: AttachmentsControllerDeps) { FILE: packages/media_proxy/src/controllers/ExternalMediaController.test.tsx constant SOURCE_URL (line 33) | const SOURCE_URL = 'https://media.tenor.com/HozyHCAac-kAAAAM/high-five-p... constant SECRET_KEY (line 34) | const SECRET_KEY = 'test-secret'; function createReadableStream (line 36) | function createReadableStream(buffer: Buffer): ReadableStream { function createNoopLogger (line 45) | function createNoopLogger(): LoggerInterface { function createMockMimeTypeUtils (line 62) | function createMockMimeTypeUtils(): MimeTypeUtils { function createMockMediaValidator (line 71) | function createMockMediaValidator(): MediaValidator { function createMockHttpClient (line 78) | function createMockHttpClient(sourceBuffer: Buffer): HttpClient { function createExternalProxyApp (line 93) | function createExternalProxyApp(params: { function createSignedProxyPath (line 120) | function createSignedProxyPath(url: string): string { FILE: packages/media_proxy/src/controllers/ExternalMediaController.tsx type ExternalMediaControllerDeps (line 40) | interface ExternalMediaControllerDeps { function getErrorTypeFromUpstreamStatus (line 52) | function getErrorTypeFromUpstreamStatus(status: number): ErrorType { function createExternalMediaHandler (line 60) | function createExternalMediaHandler(deps: ExternalMediaControllerDeps) { FILE: packages/media_proxy/src/controllers/FrameExtractionController.tsx type FrameExtractionControllerDeps (line 39) | interface FrameExtractionControllerDeps { function createFrameExtractionHandler (line 44) | function createFrameExtractionHandler(deps: FrameExtractionControllerDep... FILE: packages/media_proxy/src/controllers/ImageController.test.tsx function createImageBuffer (line 35) | async function createImageBuffer(): Promise> { function createMockS3Utils (line 50) | function createMockS3Utils(imageBuffer: Buffer, readS3Objec... function createMockImageProcessor (line 71) | function createMockImageProcessor(imageBuffer: Buffer): Ima... function createMockMimeTypeUtils (line 77) | function createMockMimeTypeUtils(): MimeTypeUtils { function createImageApp (line 86) | function createImageApp(params: { FILE: packages/media_proxy/src/controllers/ImageController.tsx function stripAnimationPrefix (line 35) | function stripAnimationPrefix(hash: string) { type ImageControllerDeps (line 39) | interface ImageControllerDeps { function readImageSource (line 47) | async function readImageSource(params: { function processImageRequest (line 69) | async function processImageRequest(params: { function createImageRouteHandler (line 140) | function createImageRouteHandler(deps: ImageControllerDeps) { function createGuildMemberImageRouteHandler (line 175) | function createGuildMemberImageRouteHandler(deps: ImageControllerDeps) { function processSimpleImageRequest (line 210) | async function processSimpleImageRequest(params: { function createSimpleImageRouteHandler (line 262) | function createSimpleImageRouteHandler(deps: ImageControllerDeps) { FILE: packages/media_proxy/src/controllers/MetadataController.tsx type MetadataControllerDeps (line 27) | interface MetadataControllerDeps { function createMetadataHandler (line 32) | function createMetadataHandler(deps: MetadataControllerDeps) { FILE: packages/media_proxy/src/controllers/StaticProxyController.tsx type StaticProxyControllerDeps (line 28) | interface StaticProxyControllerDeps { function createStaticProxyHandler (line 33) | function createStaticProxyHandler(deps: StaticProxyControllerDeps) { FILE: packages/media_proxy/src/controllers/StickerController.test.tsx function createStickerBuffer (line 29) | async function createStickerBuffer(): Promise> { function createMockS3Utils (line 44) | function createMockS3Utils(stickerBuffer: Buffer, readS3Obj... function createStickerApp (line 65) | function createStickerApp(params: { FILE: packages/media_proxy/src/controllers/StickerController.tsx type StickerControllerDeps (line 32) | interface StickerControllerDeps { function normalizeStickerObjectId (line 38) | function normalizeStickerObjectId(id: string): string { function processStickerRequest (line 43) | async function processStickerRequest(params: { function createStickerRouteHandler (line 91) | function createStickerRouteHandler(deps: StickerControllerDeps) { FILE: packages/media_proxy/src/controllers/ThemeController.tsx constant THEME_ID_PATTERN (line 26) | const THEME_ID_PATTERN = /^[a-f0-9]{16}$/; type ThemeControllerDeps (line 28) | interface ThemeControllerDeps { function createThemeHeadHandler (line 33) | function createThemeHeadHandler(deps: ThemeControllerDeps) { function createThemeHandler (line 59) | function createThemeHandler(deps: ThemeControllerDeps) { FILE: packages/media_proxy/src/controllers/ThumbnailController.tsx type ThumbnailControllerDeps (line 39) | interface ThumbnailControllerDeps { function createThumbnailHandler (line 47) | function createThumbnailHandler(deps: ThumbnailControllerDeps) { FILE: packages/media_proxy/src/lib/BinaryUtils.tsx type BinaryLike (line 23) | type BinaryLike = ArrayBufferView | ArrayBuffer; function toBodyData (line 25) | function toBodyData(value: BinaryLike): Uint8Array { function toWebReadableStream (line 40) | function toWebReadableStream(stream: Stream): WebReadableStream { method shutdown (line 67) | shutdown(): void { method isFromCloudflareEdge (line 74) | isFromCloudflareEdge(ip: string | undefined | null): boolean { method refreshNow (line 89) | private async refreshNow(): Promise { method fetchRanges (line 110) | private async fetchRanges(url: string): Promise> { method streamToString (line 124) | private static async streamToString(stream: ReadableStream... function parseIP (line 132) | function parseIP(ip: string): ParsedIP | null { function parseIPv4 (line 158) | function parseIPv4(ip: string): Buffer | null { function parseIPv6 (line 173) | function parseIPv6(ip: string): Buffer | null { function parseCIDR (line 228) | function parseCIDR(cidr: string): CidrEntry | null { function ipInCidr (line 276) | function ipInCidr(ip: ParsedIP, cidr: CidrEntry): boolean { FILE: packages/media_proxy/src/lib/CodecValidation.tsx type AudioStream (line 26) | interface AudioStream extends FFprobeStream { function matchesCodecPattern (line 30) | function matchesCodecPattern(codec: string, patterns: Set): bool... function isProRes4444 (line 44) | function isProRes4444(codec: string): boolean { function createCodecValidator (line 53) | function createCodecValidator(logger: LoggerInterface) { type CodecValidator (line 101) | type CodecValidator = ReturnType; FILE: packages/media_proxy/src/lib/FFmpegUtils.tsx class FFmpegTimeoutError (line 35) | class FFmpegTimeoutError extends Error { method constructor (line 39) | constructor(operation: string, timeoutMs: number) { function isTimeoutError (line 47) | function isTimeoutError(error: unknown): boolean { type FFprobeStream (line 54) | interface FFprobeStream { type FFprobeFormat (line 59) | interface FFprobeFormat { type FFprobeResult (line 65) | interface FFprobeResult { function parseProbeOutput (line 70) | function parseProbeOutput(stdout: string): FFprobeResult { function ffprobe (line 78) | async function ffprobe(path: string, timeoutMs = DEFAULT_FFPROBE_TIMEOUT... function hasVideoStream (line 94) | async function hasVideoStream(path: string): Promise { function createFFmpegUtils (line 99) | function createFFmpegUtils(options?: { type FFmpegUtilsType (line 152) | type FFmpegUtilsType = ReturnType; type MediaProbeInfo (line 154) | interface MediaProbeInfo { function getMediaProbeInfo (line 159) | async function getMediaProbeInfo(path: string): Promise { function clampToDuration (line 172) | function clampToDuration(value: number, duration: number | null): number { function applyJitter (line 183) | function applyJitter(value: number, duration: number | null, jitterPerce... function computeFrameSampleTimestamps (line 189) | function computeFrameSampleTimestamps(durationSeconds: number | null, ji... function normalizeTimestamp (line 207) | function normalizeTimestamp(value: number): number { function createFrameExtractor (line 211) | function createFrameExtractor(options?: {tracing?: TracingInterface | un... type FrameExtractor (line 307) | type FrameExtractor = ReturnType; FILE: packages/media_proxy/src/lib/HttpUtils.tsx function parseRange (line 22) | function parseRange(rangeHeader: string | null, fileSize: number) { function setHeaders (line 33) | function setHeaders( FILE: packages/media_proxy/src/lib/ImageProcessing.tsx class ImageProcessingError (line 25) | class ImageProcessingError extends Error { method constructor (line 28) | constructor(message: string, cause?: unknown) { constant VIPS_ERROR_PATTERN (line 35) | const VIPS_ERROR_PATTERN = /^Vips|^Input |unexpected end of|load_buffer:... function isCorruptImageError (line 37) | function isCorruptImageError(error: unknown): error is Error { function generatePlaceholder (line 41) | async function generatePlaceholder(imageBuffer: Buffer): Promise { constant ANIMATED_OUTPUT_FORMATS (line 77) | const ANIMATED_OUTPUT_FORMATS = new Set(['gif', 'webp', 'avif', 'png', '... function createImageProcessor (line 79) | function createImageProcessor(options?: { type ImageProcessor (line 173) | type ImageProcessor = ReturnType; FILE: packages/media_proxy/src/lib/InMemoryCoalescer.tsx class InMemoryCoalescer (line 23) | class InMemoryCoalescer { method constructor (line 28) | constructor(options?: {metrics?: MetricsInterface | undefined; tracing... method coalesce (line 33) | async coalesce(key: string, fn: () => Promise): Promise { FILE: packages/media_proxy/src/lib/MediaTransformService.tsx type TransformResult (line 33) | interface TransformResult { type ImageTransformOptions (line 38) | interface ImageTransformOptions { type VideoThumbnailTransformOptions (line 47) | interface VideoThumbnailTransformOptions { type MediaTransformServiceDeps (line 54) | interface MediaTransformServiceDeps { function decodeWithFFmpeg (line 60) | async function decodeWithFFmpeg(buffer: Buffer): Promise { function createMediaTransformService (line 76) | function createMediaTransformService(deps: MediaTransformServiceDeps) { type MediaTransformService (line 162) | type MediaTransformService = ReturnType; FILE: packages/media_proxy/src/lib/NSFWDetectionService.tsx constant MODEL_SIZE (line 25) | const MODEL_SIZE = 224; type NSFWCheckResult (line 27) | interface NSFWCheckResult { class NSFWDetectionService (line 39) | class NSFWDetectionService { method constructor (line 44) | constructor(options?: {modelPath?: string | undefined; nodeEnv?: strin... method initialize (line 51) | async initialize(): Promise { method checkNSFW (line 56) | async checkNSFW(filePath: string): Promise { method checkNSFWBuffer (line 61) | async checkNSFWBuffer(buffer: Buffer): Promise { method preprocessImage (line 102) | private async preprocessImage(buffer: Buffer): Promise { FILE: packages/media_proxy/src/lib/S3Utils.tsx constant MAX_STREAM_BYTES (line 27) | const MAX_STREAM_BYTES = 500 * 1024 * 1024; function createS3Client (line 29) | function createS3Client(config: S3Config): S3Client { type S3HeadResult (line 43) | interface S3HeadResult { function createS3Utils (line 49) | function createS3Utils(client: S3Client, metrics?: MetricsInterface) { type S3Utils (line 192) | type S3Utils = ReturnType; function streamToBuffer (line 194) | async function streamToBuffer(stream: ReadableStream | null)... FILE: packages/media_proxy/src/middleware/AuthMiddleware.tsx function createInternalNetworkRequired (line 25) | function createInternalNetworkRequired(secretKey: string) { FILE: packages/media_proxy/src/middleware/CloudflareFirewall.tsx type CloudflareFirewallOptions (line 26) | interface CloudflareFirewallOptions { function createCloudflareFirewall (line 31) | function createCloudflareFirewall( FILE: packages/media_proxy/src/middleware/MetricsMiddleware.tsx function getRouteFromPath (line 24) | function getRouteFromPath(path: string): string | null { function getErrorTypeFromStatus (line 37) | function getErrorTypeFromStatus(status: number): ErrorType { function createMetricsMiddleware (line 59) | function createMetricsMiddleware(metrics: MetricsInterface) { FILE: packages/media_proxy/src/services/FrameService.tsx type FrameServiceDeps (line 35) | interface FrameServiceDeps { function createFrameService (line 43) | function createFrameService(deps: FrameServiceDeps): IFrameService { FILE: packages/media_proxy/src/services/MetadataService.tsx type MetadataServiceDeps (line 41) | interface MetadataServiceDeps { function createMetadataService (line 53) | function createMetadataService(deps: MetadataServiceDeps): IMetadataServ... FILE: packages/media_proxy/src/types/HonoEnv.tsx type ErrorType (line 20) | type ErrorType = type ErrorContext (line 30) | interface ErrorContext { type HonoEnv (line 35) | interface HonoEnv { FILE: packages/media_proxy/src/types/MediaProxyConfig.tsx type S3Config (line 20) | interface S3Config { type MediaProxyConfig (line 30) | interface MediaProxyConfig { FILE: packages/media_proxy/src/types/MediaProxyServices.tsx type MetadataRequest (line 20) | type MetadataRequest = type MetadataResponse (line 26) | interface MetadataResponse { type ThumbnailRequest (line 42) | interface ThumbnailRequest { type IMetadataService (line 46) | interface IMetadataService { type FrameRequest (line 51) | type FrameRequest = {type: 'upload'; upload_filename: string} | {type: '... type FrameData (line 53) | interface FrameData { type FrameResponse (line 59) | interface FrameResponse { type IFrameService (line 63) | interface IFrameService { type MediaProxyServices (line 67) | interface MediaProxyServices { FILE: packages/media_proxy/src/types/Metrics.tsx type CounterParams (line 20) | interface CounterParams { type HistogramParams (line 26) | interface HistogramParams { type GaugeParams (line 32) | interface GaugeParams { type MetricsInterface (line 38) | interface MetricsInterface { FILE: packages/media_proxy/src/types/Tracing.tsx type SpanOptions (line 22) | interface SpanOptions { type TracingInterface (line 27) | interface TracingInterface { FILE: packages/media_proxy/src/utils/FetchUtils.tsx class HttpError (line 28) | class HttpError extends Error { method constructor (line 29) | constructor( function convertHttpError (line 41) | function convertHttpError(err: unknown): never { function createHttpClient (line 54) | function createHttpClient( FILE: packages/media_proxy_utils/src/ExternalMediaProxyPathCodec.tsx constant BASE64_URL_PADDING_REGEX (line 20) | const BASE64_URL_PADDING_REGEX = /=*$/; constant LEGACY_PROTOCOL_REGEX (line 21) | const LEGACY_PROTOCOL_REGEX = /^[A-Za-z][A-Za-z0-9+.-]*$/; constant V2_PATH_PREFIX (line 22) | const V2_PATH_PREFIX = 'v2/'; function encodeV2PathComponent (line 24) | function encodeV2PathComponent(value: string): string { function decodeV2PathComponent (line 28) | function decodeV2PathComponent(value: string): string { function decodeLegacyComponent (line 32) | function decodeLegacyComponent(component: string): string { function getLegacyProtocolIndex (line 36) | function getLegacyProtocolIndex(parts: Array): number { type LegacyHostAndPort (line 55) | interface LegacyHostAndPort { function decodeLegacyHostAndPort (line 60) | function decodeLegacyHostAndPort(hostPart: string): LegacyHostAndPort { function reconstructLegacyOriginalUrl (line 82) | function reconstructLegacyOriginalUrl(proxyUrlPath: string): string { function reconstructV2OriginalUrl (line 104) | function reconstructV2OriginalUrl(proxyUrlPath: string): string { function buildExternalMediaProxyPath (line 113) | function buildExternalMediaProxyPath(inputUrl: string): string { function reconstructOriginalUrl (line 118) | function reconstructOriginalUrl(proxyUrlPath: string): string { FILE: packages/media_proxy_utils/src/ExternalMediaProxyUrlBuilder.tsx type ExternalMediaProxyUrlBuilderOptions (line 23) | interface ExternalMediaProxyUrlBuilderOptions { type IExternalMediaProxyUrlBuilder (line 28) | interface IExternalMediaProxyUrlBuilder { type InternalExternalMediaProxyUrlBuilderOptions (line 32) | interface InternalExternalMediaProxyUrlBuilderOptions { function normalizeMediaProxyEndpoint (line 37) | function normalizeMediaProxyEndpoint(mediaProxyEndpoint: string): string { class ExternalMediaProxyUrlBuilder (line 41) | class ExternalMediaProxyUrlBuilder implements IExternalMediaProxyUrlBuil... method constructor (line 45) | constructor(options: InternalExternalMediaProxyUrlBuilderOptions) { method buildExternalMediaProxyUrl (line 50) | buildExternalMediaProxyUrl(inputUrl: string): string { function createExternalMediaProxyUrlBuilder (line 57) | function createExternalMediaProxyUrlBuilder( FILE: packages/media_proxy_utils/src/MediaProxySigner.tsx constant BASE64_URL_PADDING_REGEX (line 22) | const BASE64_URL_PADDING_REGEX = /=*$/; type MediaProxySignerOptions (line 24) | interface MediaProxySignerOptions { type IMediaProxySigner (line 28) | interface IMediaProxySigner { class MediaProxySigner (line 33) | class MediaProxySigner implements IMediaProxySigner { method constructor (line 36) | constructor(options: MediaProxySignerOptions) { method createSignature (line 40) | createSignature(proxyUrlPath: string): string { method verifySignature (line 46) | verifySignature(proxyUrlPath: string, providedSignature: string): bool... function createMediaProxySigner (line 59) | function createMediaProxySigner(options: MediaProxySignerOptions): IMedi... FILE: packages/media_proxy_utils/src/MediaProxyUtils.tsx constant BASE64_URL_REGEX (line 23) | const BASE64_URL_REGEX = /=*$/; function createSignature (line 25) | function createSignature(inputString: string, mediaProxySecretKey: strin... function verifySignature (line 31) | function verifySignature(proxyUrlPath: string, providedSignature: string... type ExternalMediaProxyURLOptions (line 41) | interface ExternalMediaProxyURLOptions { function getExternalMediaProxyURL (line 47) | function getExternalMediaProxyURL(options: ExternalMediaProxyURLOptions)... FILE: packages/meilisearch_search/src/MeilisearchClient.tsx type MeilisearchClientConfig (line 22) | interface MeilisearchClientConfig { function createMeilisearchClient (line 28) | function createMeilisearchClient(config: MeilisearchClientConfig): Meili... FILE: packages/meilisearch_search/src/MeilisearchFilterUtils.tsx type MeilisearchFilter (line 20) | type MeilisearchFilter = string; function quoteString (line 22) | function quoteString(value: string): string { function formatScalar (line 27) | function formatScalar(value: string | number | boolean): string { function meiliEquals (line 37) | function meiliEquals(field: string, value: string | number | boolean): M... function meiliNotEquals (line 41) | function meiliNotEquals(field: string, value: string | number | boolean)... function meiliGte (line 45) | function meiliGte(field: string, value: number): MeilisearchFilter { function meiliLte (line 49) | function meiliLte(field: string, value: number): MeilisearchFilter { function meiliIsNull (line 53) | function meiliIsNull(field: string): MeilisearchFilter { function meiliIsNotNull (line 57) | function meiliIsNotNull(field: string): MeilisearchFilter { function meiliOrEquals (line 61) | function meiliOrEquals(field: string, values: Array): ... FILE: packages/meilisearch_search/src/MeilisearchIndexDefinitions.tsx type FluxerSearchIndexName (line 20) | type FluxerSearchIndexName = 'messages' | 'guilds' | 'users' | 'reports'... type MeilisearchIndexDefinition (line 22) | interface MeilisearchIndexDefinition { constant MEILISEARCH_INDEX_DEFINITIONS (line 30) | const MEILISEARCH_INDEX_DEFINITIONS: Record | un... type MeilisearchGuildAdapterOptions (line 58) | interface MeilisearchGuildAdapterOptions { class MeilisearchGuildAdapter (line 67) | class MeilisearchGuildAdapter extends MeilisearchIndexAdapter { function normalizeSettingsValue (line 38) | function normalizeSettingsValue(value: unknown): unknown { function areSettingsEquivalent (line 45) | function areSettingsEquivalent(a: Settings, b: Settings): boolean { function getTaskUid (line 58) | function getTaskUid(result: unknown): number | null { class MeilisearchIndexAdapter (line 67) | class MeilisearchIndexAdapter method constructor (line 79) | constructor(options: MeilisearchIndexAdapterOptions) { method initialize (line 87) | async initialize(): Promise { method shutdown (line 160) | async shutdown(): Promise { method isAvailable (line 165) | isAvailable(): boolean { method indexDocument (line 169) | async indexDocument(doc: TResult): Promise { method indexDocuments (line 173) | async indexDocuments(docs: Array): Promise { method updateDocument (line 184) | async updateDocument(doc: TResult): Promise { method deleteDocument (line 189) | async deleteDocument(id: string): Promise { method deleteDocuments (line 193) | async deleteDocuments(ids: Array): Promise { method deleteAllDocuments (line 204) | async deleteAllDocuments(): Promise { method search (line 212) | async search(query: string, filters: TFilters, options?: SearchOptions... method waitForTaskIfEnabled (line 235) | protected async waitForTaskIfEnabled(result: unknown): Promise { FILE: packages/meilisearch_search/src/adapters/MeilisearchMessageAdapter.tsx constant DEFAULT_HITS_PER_PAGE (line 34) | const DEFAULT_HITS_PER_PAGE = 25; constant FETCH_MULTIPLIER (line 35) | const FETCH_MULTIPLIER = 3; constant HAS_FIELD_MAP (line 37) | const HAS_FIELD_MAP: Record = { function buildMessageFilters (line 49) | function buildMessageFilters(filters: MessageSearchFilters): Array ... function getLimit (line 170) | function getLimit(options?: SearchOptions): number { function getOffset (line 174) | function getOffset(options?: SearchOptions): number { function applyMaxMinIdFilters (line 178) | function applyMaxMinIdFilters(hits: Array, filters: M... function applyExactPhraseFilter (line 191) | function applyExactPhraseFilter(hits: Array, phrases:... function applySortByIdTiebreaker (line 198) | function applySortByIdTiebreaker( type MeilisearchMessageAdapterOptions (line 220) | interface MeilisearchMessageAdapterOptions { class MeilisearchMessageAdapter (line 229) | class MeilisearchMessageAdapter extends MeilisearchIndexAdapter | ... type MeilisearchReportAdapterOptions (line 59) | interface MeilisearchReportAdapterOptions { class MeilisearchReportAdapter (line 68) | class MeilisearchReportAdapter extends MeilisearchIndexAdapter | unde... type MeilisearchUserAdapterOptions (line 78) | interface MeilisearchUserAdapterOptions { class MeilisearchUserAdapter (line 87) | class MeilisearchUserAdapter extends MeilisearchIndexAdapter = { function getContentTypeFromFilename (line 142) | function getContentTypeFromFilename(filename: string): string { FILE: packages/nats/src/INatsConnectionManager.tsx type INatsConnectionManager (line 22) | interface INatsConnectionManager { FILE: packages/nats/src/JetStreamConnectionManager.tsx class JetStreamConnectionManager (line 23) | class JetStreamConnectionManager extends NatsConnectionManager { method getJetStreamClient (line 24) | getJetStreamClient(): JetStreamClient { method getJetStreamManager (line 28) | async getJetStreamManager(): Promise { FILE: packages/nats/src/NatsConnectionManager.tsx constant DEFAULT_MAX_RECONNECT_ATTEMPTS (line 24) | const DEFAULT_MAX_RECONNECT_ATTEMPTS = -1; constant DEFAULT_RECONNECT_TIME_WAIT_MS (line 25) | const DEFAULT_RECONNECT_TIME_WAIT_MS = 500; constant DEFAULT_CONNECT_TIMEOUT_MS (line 26) | const DEFAULT_CONNECT_TIMEOUT_MS = 5000; class NatsConnectionManager (line 28) | class NatsConnectionManager implements INatsConnectionManager { method constructor (line 32) | constructor(options: NatsConnectionOptions) { method connect (line 36) | async connect(): Promise { method getConnection (line 51) | getConnection(): NatsConnection { method drain (line 58) | async drain(): Promise { method isClosed (line 68) | isClosed(): boolean { FILE: packages/nats/src/NatsConnectionOptions.tsx type NatsConnectionOptions (line 20) | interface NatsConnectionOptions { FILE: packages/number_utils/src/NumberConstants.tsx constant DEFAULT_COMPACT_MAX_FRACTION_DIGITS (line 22) | const DEFAULT_COMPACT_MAX_FRACTION_DIGITS = 1; constant DEFAULT_NUMBER_FALLBACK (line 23) | const DEFAULT_NUMBER_FALLBACK = 0; constant DEFAULT_NUMBER_LOCALE (line 24) | const DEFAULT_NUMBER_LOCALE = Locales.EN_US; FILE: packages/number_utils/src/NumberFormatterCache.tsx function getNumberFormatter (line 22) | function getNumberFormatter( function buildFormatterCacheKey (line 37) | function buildFormatterCacheKey(locale: string, numberFormatOptions: Int... FILE: packages/number_utils/src/NumberFormatting.tsx type ResolvedNumberFormatBaseOptions (line 39) | interface ResolvedNumberFormatBaseOptions { type CompactFormatOptionsInput (line 44) | interface CompactFormatOptionsInput { type CurrencyFormatOptionsInput (line 49) | interface CurrencyFormatOptionsInput { function resolveBaseOptions (line 54) | function resolveBaseOptions(options?: NumberFormatBaseOptions): Resolved... function resolveNumberFormatOptions (line 61) | function resolveNumberFormatOptions(optionsOrLocale: NumberFormatOptions... function resolveCompactFormatOptions (line 69) | function resolveCompactFormatOptions( function resolveCurrencyFormatOptions (line 98) | function resolveCurrencyFormatOptions( function formatNumberValue (line 112) | function formatNumberValue( function buildCompactFormatOptions (line 121) | function buildCompactFormatOptions(options: CompactFormatOptionsInput): ... function buildCurrencyFormatOptions (line 134) | function buildCurrencyFormatOptions(options: CurrencyFormatOptionsInput)... function parseNumber (line 142) | function parseNumber(value: NumberInput, options: NumberFormatBaseOption... function formatNumber (line 149) | function formatNumber(value: NumberInput, optionsOrLocale: NumberFormatO... function formatCompactNumber (line 157) | function formatCompactNumber( function formatCurrency (line 169) | function formatCurrency( function createNumberFormatter (line 179) | function createNumberFormatter(options: NumberFormatterFactoryOptions = ... FILE: packages/number_utils/src/NumberParsing.tsx function parseNumberInput (line 23) | function parseNumberInput(value: NumberInput, fallbackValue: number = DE... FILE: packages/number_utils/src/NumberTypes.tsx type NumberInput (line 20) | type NumberInput = number | string | null | undefined; type NumberFormatBaseOptions (line 22) | interface NumberFormatBaseOptions { type NumberFormatOptions (line 27) | interface NumberFormatOptions extends NumberFormatBaseOptions { type CompactNumberFormatOptions (line 31) | interface CompactNumberFormatOptions extends NumberFormatBaseOptions { type CurrencyNumberFormatOptions (line 36) | interface CurrencyNumberFormatOptions extends NumberFormatBaseOptions { type NumberFormatterFactoryOptions (line 41) | interface NumberFormatterFactoryOptions extends NumberFormatBaseOptions {} type BoundCompactNumberFormatOptions (line 43) | interface BoundCompactNumberFormatOptions { type BoundCurrencyNumberFormatOptions (line 48) | interface BoundCurrencyNumberFormatOptions { type INumberFormatter (line 53) | interface INumberFormatter { FILE: packages/oauth2/src/OAuth2.tsx type OAuth2Config (line 22) | interface OAuth2Config { function generateState (line 31) | function generateState(): string { function authorizeUrl (line 35) | function authorizeUrl(config: OAuth2Config, state: string): string { function base64EncodeString (line 46) | function base64EncodeString(str: string): string { FILE: packages/oauth2/src/Token.tsx type TokenResponse (line 23) | interface TokenResponse { type LoggerInterface (line 31) | interface LoggerInterface { type ExchangeCodeOptions (line 38) | interface ExchangeCodeOptions { function exchangeCode (line 42) | async function exchangeCode( type RevokeTokenOptions (line 80) | interface RevokeTokenOptions { function revokeToken (line 84) | async function revokeToken( FILE: packages/oauth2/src/User.tsx type UserInfo (line 20) | interface UserInfo { type LoggerInterface (line 29) | interface LoggerInterface { type FetchUserOptions (line 36) | interface FetchUserOptions { function fetchUser (line 40) | async function fetchUser( FILE: packages/oauth2/src/__tests__/OAuth2.test.tsx function createTestConfig (line 23) | function createTestConfig(overrides?: Partial): OAuth2Conf... FILE: packages/oauth2/src/__tests__/Token.test.tsx function createTestConfig (line 24) | function createTestConfig(overrides?: Partial): OAuth2Conf... function createTestTokenResponse (line 36) | function createTestTokenResponse(overrides?: Partial): To... function createTestLogger (line 47) | function createTestLogger(): LoggerInterface & {calls: Record): UserInfo { function createTestLogger (line 38) | function createTestLogger(): LoggerInterface & {calls: Record { method createBasicAuthorizationHeader (line 148) | private createBasicAuthorizationHeader(): string { method formatError (line 153) | private formatError(error: unknown): string { function createOAuth2Client (line 161) | function createOAuth2Client(config: OAuth2ClientConfig, dependencies?: O... FILE: packages/oauth2/src/client/tests/OAuth2Client.test.tsx type LoggerMethodCalls (line 28) | interface LoggerMethodCalls { type TestLogger (line 35) | interface TestLogger extends IOAuth2Logger { type OAuth2ClientConfigOverrides (line 39) | interface OAuth2ClientConfigOverrides extends Partial { function createTestConfig (line 76) | function createTestConfig(overrides?: OAuth2ClientConfigOverrides): OAut... function createTestTokenResponse (line 93) | function createTestTokenResponse(overrides?: Partial): OAuth2... function createTestLogger (line 116) | function createTestLogger(): TestLogger { function getBodyAsSearchParams (line 133) | function getBodyAsSearchParams(init?: RequestInit): URLSearchParams { function getAuthorizationHeader (line 141) | function getAuthorizationHeader(init?: RequestInit): string | null { FILE: packages/oauth2/src/config/OAuth2ClientConfig.tsx type OAuth2ClientEndpoints (line 20) | interface OAuth2ClientEndpoints { type OAuth2ClientConfig (line 27) | interface OAuth2ClientConfig { FILE: packages/oauth2/src/http/FetchHttpClient.tsx class FetchHttpClient (line 22) | class FetchHttpClient implements IOAuth2HttpClient { method request (line 23) | async request(url: string, init?: RequestInit): Promise { FILE: packages/oauth2/src/http/IOAuth2HttpClient.tsx type IOAuth2HttpClient (line 20) | interface IOAuth2HttpClient { FILE: packages/oauth2/src/logging/IOAuth2Logger.tsx type IOAuth2Logger (line 20) | interface IOAuth2Logger { FILE: packages/oauth2/src/models/OAuth2TokenResponse.tsx type OAuth2TokenResponse (line 20) | interface OAuth2TokenResponse { FILE: packages/oauth2/src/models/OAuth2UserInfo.tsx type OAuth2UserInfo (line 20) | interface OAuth2UserInfo { FILE: packages/openapi/src/GenerateOpenAPISpec.tsx function generateOpenAPISpec (line 23) | async function generateOpenAPISpec(options: OpenAPIGeneratorOptions): Pr... FILE: packages/openapi/src/OpenAPIGenerationTypes.tsx type OpenAPIGeneratorOptions (line 22) | interface OpenAPIGeneratorOptions { type OpenAPIGenerationStats (line 30) | interface OpenAPIGenerationStats { type OpenAPIGenerationResult (line 40) | interface OpenAPIGenerationResult { FILE: packages/openapi/src/OpenAPIGenerator.tsx type PathBuildResult (line 30) | interface PathBuildResult { type GeneratorSettings (line 36) | interface GeneratorSettings { function createGeneratorSettings (line 44) | function createGeneratorSettings(options: OpenAPIGeneratorOptions): Gene... class OpenAPIGenerator (line 54) | class OpenAPIGenerator { method constructor (line 58) | constructor(options: OpenAPIGeneratorOptions) { method generate (line 63) | public async generate(): Promise { method generateWithStats (line 68) | public async generateWithStats(): Promise { method buildPaths (line 133) | private buildPaths(routes: Array, operationBuilder: Op... method filterPublishedSchemas (line 166) | private filterPublishedSchemas( method buildTags (line 181) | private buildTags(routes: Array): Array<{name: string;... FILE: packages/openapi/src/OpenAPITypes.tsx type HttpMethod (line 20) | type HttpMethod = 'get' | 'post' | 'put' | 'patch' | 'delete'; type ValidatorTarget (line 22) | type ValidatorTarget = 'json' | 'query' | 'param' | 'form' | 'header' | ... type ExtractedValidator (line 24) | interface ExtractedValidator { type ExtractedRoute (line 30) | interface ExtractedRoute { type OpenAPIPathItem (line 60) | interface OpenAPIPathItem { type MintlifyMetadata (line 64) | interface MintlifyMetadata { type MintlifyExtension (line 69) | interface MintlifyExtension { type OpenAPIOperation (line 73) | interface OpenAPIOperation { type OpenAPIParameter (line 87) | interface OpenAPIParameter { type OpenAPIRequestBody (line 95) | interface OpenAPIRequestBody { type OpenAPIResponse (line 107) | interface OpenAPIResponse { type OpenAPIHeaderObject (line 117) | interface OpenAPIHeaderObject { type OpenAPIRef (line 122) | interface OpenAPIRef { type OpenAPISchemaOrRef (line 126) | type OpenAPISchemaOrRef = OpenAPISchema | OpenAPIRef; type OpenAPISchema (line 128) | interface OpenAPISchema { type OpenAPIDocument (line 162) | interface OpenAPIDocument { type OpenAPISecurityScheme (line 193) | interface OpenAPISecurityScheme { FILE: packages/openapi/src/Types.tsx type HttpMethod (line 20) | type HttpMethod = 'get' | 'post' | 'put' | 'patch' | 'delete'; type ValidatorTarget (line 22) | type ValidatorTarget = 'json' | 'query' | 'param' | 'form' | 'header' | ... type ExtractedValidator (line 24) | interface ExtractedValidator { type ExtractedRoute (line 30) | interface ExtractedRoute { type OpenAPIPathItem (line 60) | interface OpenAPIPathItem { type MintlifyMetadata (line 64) | interface MintlifyMetadata { type MintlifyExtension (line 69) | interface MintlifyExtension { type OpenAPIOperation (line 73) | interface OpenAPIOperation { type OpenAPIParameter (line 87) | interface OpenAPIParameter { type OpenAPIRequestBody (line 95) | interface OpenAPIRequestBody { type OpenAPIResponse (line 107) | interface OpenAPIResponse { type OpenAPIHeaderObject (line 117) | interface OpenAPIHeaderObject { type OpenAPIRef (line 122) | interface OpenAPIRef { type OpenAPISchemaOrRef (line 126) | type OpenAPISchemaOrRef = OpenAPISchema | OpenAPIRef; type OpenAPISchema (line 128) | interface OpenAPISchema { type OpenAPIDocument (line 162) | interface OpenAPIDocument { type OpenAPISecurityScheme (line 193) | interface OpenAPISecurityScheme { FILE: packages/openapi/src/converters/ZodToOpenAPI.tsx constant FLUXER_SCHEMA_NAME (line 37) | const FLUXER_SCHEMA_NAME = Symbol('fluxer.openapi.schemaName'); constant FLUXER_CUSTOM_TYPE_KEY (line 38) | const FLUXER_CUSTOM_TYPE_KEY = '__fluxer_custom_type__'; function setSchemaName (line 43) | function setSchemaName(schema: ZodTypeAny, name: string): void { function getSchemaName (line 47) | function getSchemaName(schema: ZodTypeAny): string | undefined { function setCustomType (line 51) | function setCustomType(schema: ZodTypeAny, typeName: string): ZodTypeAny { function getCustomType (line 56) | function getCustomType(schema: ZodTypeAny, depth = 0): string | undefined { function escapeRegex (line 67) | function escapeRegex(str: string): string { type BitflagEntry (line 71) | interface BitflagEntry { type EnumEntry (line 77) | interface EnumEntry { type FluxerTypeAnnotation (line 83) | interface FluxerTypeAnnotation { type BitflagEntryJson (line 93) | interface BitflagEntryJson { type EnumEntryJson (line 99) | interface EnumEntryJson { function parseBitflagEntries (line 105) | function parseBitflagEntries(entriesStr: string): Array { function parseEnumEntries (line 128) | function parseEnumEntries(entriesStr: string): Array { function findJsonEnd (line 150) | function findJsonEnd(str: string, startIndex: number): number { function splitTypeAndDescription (line 181) | function splitTypeAndDescription(rest: string): {typeAndData: string; us... function parseFluxerTypeAnnotation (line 213) | function parseFluxerTypeAnnotation(description: string | undefined): Flu... function getZodTypeName (line 361) | function getZodTypeName(schema: ZodTypeAny): string { function getInnerType (line 366) | function getInnerType(schema: ZodTypeAny): ZodTypeAny | undefined { function getShape (line 371) | function getShape(schema: ZodTypeAny): Record | unde... function getOptions (line 382) | function getOptions(schema: ZodTypeAny): Array | undefined { function getLiteralValues (line 387) | function getLiteralValues(schema: ZodTypeAny): Array | null { type EnumInfo (line 403) | interface EnumInfo { function buildEnumInfoFromRecord (line 408) | function buildEnumInfoFromRecord(record: Record): EnumI... function getEnumInfo (line 438) | function getEnumInfo(schema: ZodTypeAny): EnumInfo | null { function buildEnumSchemaFromInfo (line 469) | function buildEnumSchemaFromInfo(enumInfo: EnumInfo): OpenAPISchema { function getLiteralSchema (line 486) | function getLiteralSchema(values: Array): OpenAPISchema { function getJsonValueSchema (line 528) | function getJsonValueSchema(depth = 0): OpenAPISchema { function getArrayType (line 553) | function getArrayType(schema: ZodTypeAny): ZodTypeAny | undefined { type ZodCheck (line 558) | interface ZodCheck { function getCheckKind (line 577) | function getCheckKind(check: ZodCheck): string { function getChecks (line 608) | function getChecks(schema: ZodTypeAny): Array { function extractStringConstraints (line 613) | function extractStringConstraints(schema: ZodTypeAny): { function extractNumberConstraints (line 641) | function extractNumberConstraints(schema: ZodTypeAny): { function getDefaultValue (line 658) | function getDefaultValue(schema: ZodTypeAny): unknown { function getDescription (line 670) | function getDescription(schema: ZodTypeAny): string | undefined { function getUserDescription (line 677) | function getUserDescription(schema: ZodTypeAny): string | undefined { function getTupleItems (line 684) | function getTupleItems(schema: ZodTypeAny): Array | undefined { function getTupleRest (line 689) | function getTupleRest(schema: ZodTypeAny): ZodTypeAny | undefined { function getMapValueType (line 694) | function getMapValueType(schema: ZodTypeAny): ZodTypeAny | undefined { function getPromiseType (line 699) | function getPromiseType(schema: ZodTypeAny): ZodTypeAny | undefined { function getCatchValue (line 704) | function getCatchValue(schema: ZodTypeAny): unknown { function isStringNumberIntUnion (line 716) | function isStringNumberIntUnion(options: Array | undefined):... function getRefForCustomTypeName (line 739) | function getRefForCustomTypeName(typeName: string): OpenAPISchemaOrRef |... function getFluxerCustomTypeSchema (line 772) | function getFluxerCustomTypeSchema(schema: ZodTypeAny, depth = 0): OpenA... function isSnowflakeType (line 950) | function isSnowflakeType(schema: ZodTypeAny, depth = 0): boolean { function isSchemaOptional (line 974) | function isSchemaOptional(schema: ZodTypeAny, depth = 0): boolean { function addDescription (line 1004) | function addDescription(result: OpenAPISchemaOrRef, schema: ZodTypeAny):... function isOpenAPISchema (line 1015) | function isOpenAPISchema(schema: OpenAPISchemaOrRef): schema is OpenAPIS... function makeNullableSchema (line 1019) | function makeNullableSchema(inner: OpenAPISchemaOrRef): OpenAPISchema { function zodToOpenAPISchema (line 1038) | function zodToOpenAPISchema(schema: ZodTypeAny, depth = 0): OpenAPISchem... constant FLUXER_CUSTOM_TYPES (line 1810) | const FLUXER_CUSTOM_TYPES: Record = { function getCustomTypeSchema (line 1837) | function getCustomTypeSchema(typeName: string): OpenAPISchema | null { function getRegisteredBitflagSchemas (line 1841) | function getRegisteredBitflagSchemas(): Record { function getRegisteredInt32EnumSchemas (line 1849) | function getRegisteredInt32EnumSchemas(): Record { function clearBitflagSchemaRegistry (line 1857) | function clearBitflagSchemaRegistry(): void { function clearInt32EnumSchemaRegistry (line 1861) | function clearInt32EnumSchemaRegistry(): void { FILE: packages/openapi/src/extractors/MiddlewareAnalyzer.tsx type SecurityRequirement (line 22) | interface SecurityRequirement { type RateLimitInfo (line 28) | interface RateLimitInfo { function analyzeSecurityRequirements (line 33) | function analyzeSecurityRequirements(route: ExtractedRoute): SecurityReq... function analyzeRateLimitConfig (line 48) | function analyzeRateLimitConfig(route: ExtractedRoute): RateLimitInfo | ... function configNameToBucket (line 70) | function configNameToBucket(configName: string): string { function requiresSudoMode (line 77) | function requiresSudoMode(route: ExtractedRoute): boolean { function getRouteDescription (line 81) | function getRouteDescription(route: ExtractedRoute): string { FILE: packages/openapi/src/extractors/RouteExtractor.tsx constant HTTP_METHODS (line 23) | const HTTP_METHODS: ReadonlySet = new Set(['get', 'post', 'put',... function isHttpMethod (line 25) | function isHttpMethod(method: string): method is HttpMethod { function isValidatorTarget (line 29) | function isValidatorTarget(target: string): target is ValidatorTarget { function extractStringLiteral (line 33) | function extractStringLiteral(node: Node): string | null { function extractNumberArray (line 43) | function extractNumberArray(value: unknown): Array | null { function extractStringArray (line 52) | function extractStringArray(value: unknown): Array | null { function extractOAuth2ScopeArgs (line 61) | function extractOAuth2ScopeArgs(args: ReadonlyArray): Array { function extractRouteFromCall (line 538) | function extractRouteFromCall(callExpr: CallExpression, sourceFile: Sour... function findRoutesInSourceFile (line 700) | function findRoutesInSourceFile(sourceFile: SourceFile): Array): A... function discoverControllerFiles (line 736) | function discoverControllerFiles(apiPackagePath: string): Array { FILE: packages/openapi/src/generator/OpenAPIGeneratorCatalog.tsx constant ORDERED_TAG_NAMES (line 37) | const ORDERED_TAG_NAMES = [ type TagDefinition (line 62) | interface TagDefinition { constant TAG_DEFINITIONS (line 67) | const TAG_DEFINITIONS: ReadonlyArray = [ constant TAG_DESCRIPTIONS (line 92) | const TAG_DESCRIPTIONS = TAG_DEFINITIONS.reduce = { constant BUILT_IN_SCHEMAS (line 147) | const BUILT_IN_SCHEMAS: ReadonlyArray = [ type IOpenAPIGeneratorCatalog (line 163) | interface IOpenAPIGeneratorCatalog { function isExcludedRoutePath (line 189) | function isExcludedRoutePath(routePath: string): boolean { FILE: packages/openapi/src/generator/OpenAPIOperationBuilder.tsx type OpenAPIOperationBuilderDependencies (line 37) | interface OpenAPIOperationBuilderDependencies { class OpenAPIOperationBuilder (line 43) | class OpenAPIOperationBuilder { method constructor (line 48) | constructor(dependencies: OpenAPIOperationBuilderDependencies) { method buildOperation (line 54) | public buildOperation(route: ExtractedRoute): OpenAPIOperation { method getUniqueOperationId (line 115) | private getUniqueOperationId(baseId: string): string { method buildSecurityFromExplicit (line 128) | private buildSecurityFromExplicit( method buildSecurity (line 136) | private buildSecurity(route: ExtractedRoute): Array { method extractQueryParameters (line 249) | private extractQueryParameters(validator: ExtractedValidator): Array = { constant COMMON_QUERY_PARAMETERS (line 110) | const COMMON_QUERY_PARAMETERS: Record = { function extractPathParameters (line 141) | function extractPathParameters(path: string): Array { function convertPathToOpenAPI (line 166) | function convertPathToOpenAPI(path: string): string { FILE: packages/openapi/src/registry/ResponseRegistry.tsx constant ERROR_SCHEMA (line 22) | const ERROR_SCHEMA: OpenAPISchema = { constant RATE_LIMIT_HEADERS (line 43) | const RATE_LIMIT_HEADERS: Record = { function getErrorResponses (line 128) | function getErrorResponses(requiresAuth: boolean): Record { function getModulePaths (line 65) | function getModulePaths(basePath: string): Array { function isZodSchema (line 70) | function isZodSchema(value: unknown): value is z.ZodTypeAny { function loadSchemas (line 79) | async function loadSchemas(basePath: string): Promise { FILE: packages/openapi/src/registry/SchemaRegistry.tsx class SchemaRegistry (line 22) | class SchemaRegistry { method register (line 26) | register(name: string, schema: OpenAPISchema): void { method getRef (line 30) | getRef(name: string): OpenAPIRef { method has (line 35) | has(name: string): boolean { method get (line 39) | get(name: string): OpenAPISchema | undefined { method getAllSchemas (line 43) | getAllSchemas(): Record { method getReferencedSchemas (line 51) | getReferencedSchemas(): Record { method getUnreferencedSchemas (line 62) | getUnreferencedSchemas(): Array { method clear (line 72) | clear(): void { FILE: packages/openapi/src/schemas/CustomSchemaType.tsx constant FLUXER_CUSTOM_TYPE_KEY (line 23) | const FLUXER_CUSTOM_TYPE_KEY = '__fluxer_custom_type__'; type CustomSchemaTypeConfig (line 25) | interface CustomSchemaTypeConfig { class CustomSchemaType (line 33) | class CustomSchemaType { method constructor (line 39) | constructor(config: CustomSchemaTypeConfig) { method get (line 47) | public static get(name: string): CustomSchemaType | undefined { method getRef (line 51) | public static getRef(name: string): OpenAPIRef | null { method getAll (line 56) | public static getAll(): ReadonlyMap { method getAllSchemas (line 60) | public static getAllSchemas(): Record { function markAsCustomType (line 69) | function markAsCustomType(schema: T, typeName: str... function defineCustomType (line 74) | function defineCustomType( FILE: packages/openapi/src/scripts/GenerateSpec.tsx function parseArgs (line 29) | function parseArgs(): {validateOnly: boolean; outputPath: string | null} { function findRepositoryRoot (line 46) | function findRepositoryRoot(): string { function main (line 58) | async function main(): Promise { function runResourceOverviewGenerator (line 134) | function runResourceOverviewGenerator(basePath: string): void { FILE: packages/queue/src/App.tsx type CreateQueueAppOptions (line 37) | interface CreateQueueAppOptions { type QueueAppResult (line 52) | interface QueueAppResult { function createQueueApp (line 60) | function createQueueApp(options: CreateQueueAppOptions): QueueAppResult { FILE: packages/queue/src/__tests__/CronScheduler.test.tsx type EnqueueCall (line 30) | interface EnqueueCall { function createTestConfig (line 39) | function createTestConfig(overrides: Partial = {}): QueueCo... function createLoggerFactory (line 53) | function createLoggerFactory(): LoggerFactory { function createMockQueueEngine (line 58) | function createMockQueueEngine(): QueueEngineClient & {calls: Array = {}): QueueCo... function createLoggerFactory (line 44) | function createLoggerFactory(): LoggerFactory { FILE: packages/queue/src/api/Handlers.tsx type EnqueueResponse (line 37) | interface EnqueueResponse { type ApiJob (line 42) | interface ApiJob { type ApiLeasedJob (line 55) | interface ApiLeasedJob { type QueueStatsResponse (line 61) | interface QueueStatsResponse { type CronStatsResponse (line 68) | interface CronStatsResponse { type StatsResponse (line 79) | interface StatsResponse { type MetricsResponse (line 84) | interface MetricsResponse { type HealthResponse (line 88) | interface HealthResponse { function toApiLeasedJob (line 92) | function toApiLeasedJob(leasedJob: { function enqueueJob (line 133) | async function enqueueJob(ctx: Context): Promise { function dequeueJobs (line 176) | async function dequeueJobs(ctx: Context): Promise { function ackJob (line 231) | async function ackJob(ctx: Context): Promise { function nackJob (line 262) | async function nackJob(ctx: Context): Promise { function changeVisibility (line 293) | async function changeVisibility(ctx: Context): Promise { function upsertCron (line 326) | async function upsertCron(ctx: Context): Promise { function retryJob (line 359) | async function retryJob(ctx: Context): Promise { function deleteJob (line 381) | async function deleteJob(ctx: Context): Promise { function getStats (line 403) | async function getStats(ctx: Context): Promise { function getMetrics (line 442) | async function getMetrics(ctx: Context): Promise { function healthCheck (line 459) | async function healthCheck(ctx: Context): Promise { FILE: packages/queue/src/api/QueueApiTypes.tsx type AppEnv (line 25) | interface AppEnv { constant APP_ENV_VARIABLE_KEYS (line 36) | const APP_ENV_VARIABLE_KEYS = ['queueEngine', 'cronScheduler', 'logger']... FILE: packages/queue/src/api/QueueRequestSchemas.tsx type EnqueueRequest (line 32) | type EnqueueRequest = z.infer; type DequeueQuery (line 41) | type DequeueQuery = z.infer; type AckRequest (line 47) | type AckRequest = z.infer; type NackRequest (line 54) | type NackRequest = z.infer; type VisibilityRequest (line 61) | type VisibilityRequest = z.infer; type UpsertCronRequest (line 71) | type UpsertCronRequest = z.infer; type RetryJobParams (line 77) | type RetryJobParams = z.infer; type DeleteJobParams (line 83) | type DeleteJobParams = z.infer; FILE: packages/queue/src/api/QueueResponseTypes.tsx type QueueApiEnqueueResponse (line 22) | interface QueueApiEnqueueResponse { type QueueApiJob (line 27) | interface QueueApiJob { type QueueApiLeasedJob (line 40) | interface QueueApiLeasedJob { type QueueApiStats (line 46) | interface QueueApiStats { type QueueApiCronStatus (line 53) | interface QueueApiCronStatus { type QueueApiStatsResponse (line 64) | interface QueueApiStatsResponse { type QueueApiMetricsResponse (line 69) | interface QueueApiMetricsResponse { type QueueApiHealthResponse (line 73) | interface QueueApiHealthResponse { FILE: packages/queue/src/api/Routes.tsx constant MAX_BODY_SIZE (line 37) | const MAX_BODY_SIZE = 1024 * 1024; function createRoutes (line 39) | function createRoutes(): Hono { FILE: packages/queue/src/contracts/ICronScheduler.tsx type ICronScheduler (line 23) | interface ICronScheduler { FILE: packages/queue/src/contracts/IQueueEngine.tsx type IQueueEngine (line 23) | interface IQueueEngine { FILE: packages/queue/src/contracts/IQueueEnqueueClient.tsx type IQueueEnqueueClient (line 23) | interface IQueueEnqueueClient { FILE: packages/queue/src/cron/CronScheduler.tsx constant CRON_SNAPSHOT_FILENAME (line 36) | const CRON_SNAPSHOT_FILENAME = 'cron_snapshot.msgpack.zstd'; constant CRON_SNAPSHOT_VERSION (line 37) | const CRON_SNAPSHOT_VERSION = 1; type CronSnapshot (line 39) | interface CronSnapshot { type SerializableCronSchedule (line 44) | interface SerializableCronSchedule { type QueueEngineClient (line 56) | interface QueueEngineClient { class CronScheduler (line 67) | class CronScheduler { method constructor (line 78) | constructor(config: QueueConfig, queueEngine: QueueEngineClient, logge... method start (line 84) | async start(): Promise { method stop (line 102) | async stop(): Promise { method upsert (line 118) | async upsert( method isScheduleDefinitionUnchanged (line 166) | private isScheduleDefinitionUnchanged( method areEqualPayloadBytes (line 181) | private areEqualPayloadBytes(left: Uint8Array, right: Uint8Array): boo... method delete (line 195) | async delete(id: string): Promise { method get (line 208) | get(id: string): CronSchedule | null { method list (line 212) | list(): Array { method getStats (line 216) | getStats(): CronStats { method updateNextRun (line 235) | private updateNextRun(schedule: CronSchedule): void { method startTickLoop (line 248) | private startTickLoop(): void { method processDueSchedules (line 274) | private async processDueSchedules(): Promise { method startSnapshotLoop (line 309) | private startSnapshotLoop(): void { method saveSnapshot (line 323) | private async saveSnapshot(): Promise { method loadSnapshot (line 366) | private async loadSnapshot(): Promise { FILE: packages/queue/src/domain/QueueDomainTypes.tsx type JobID (line 20) | type JobID = string & {readonly __brand: 'JobID'}; type Receipt (line 21) | type Receipt = string & {readonly __brand: 'Receipt'}; type CronID (line 22) | type CronID = string & {readonly __brand: 'CronID'}; type DeduplicationID (line 23) | type DeduplicationID = string & {readonly __brand: 'DeduplicationID'}; function createJobID (line 25) | function createJobID(id: string): JobID { function createReceipt (line 29) | function createReceipt(id: string): Receipt { function createCronID (line 33) | function createCronID(id: string): CronID { function createDeduplicationID (line 37) | function createDeduplicationID(id: string): DeduplicationID { type JobStatus (line 41) | enum JobStatus { type Job (line 48) | interface Job { type EnqueueResult (line 61) | interface EnqueueResult { type LeasedJob (line 66) | interface LeasedJob { type CronSchedule (line 72) | interface CronSchedule { type QueueStats (line 84) | interface QueueStats { type CronStats (line 91) | interface CronStats { type ReadyItem (line 97) | interface ReadyItem { type JobRecord (line 105) | interface JobRecord { type SerializableJob (line 112) | interface SerializableJob { type SerializableJobRecord (line 125) | interface SerializableJobRecord { type SerializableSnapshot (line 132) | interface SerializableSnapshot { FILE: packages/queue/src/domain/QueuePayloadCodec.tsx function encodeQueuePayload (line 23) | function encodeQueuePayload(payload: JsonValue): Uint8Array { function decodeQueuePayload (line 27) | function decodeQueuePayload(payload: Uint8Array): JsonValue { function tryDecodeQueuePayload (line 31) | function tryDecodeQueuePayload(payload: Uint8Array): JsonValue | null { function decodeQueuePayloadWithFallback (line 39) | function decodeQueuePayloadWithFallback(payload: Uint8Array, fallback: J... FILE: packages/queue/src/engine/DelayQueue.tsx type DelayedItem (line 23) | interface DelayedItem { class DelayQueue (line 28) | class DelayQueue { method constructor (line 32) | constructor(keyExtractor: (item: T) => string) { method push (line 36) | push(item: T, deadlineMs: number): void { method popExpired (line 53) | popExpired(): Array { method remove (line 64) | remove(item: T): boolean { method removeByKey (line 74) | removeByKey(key: string): boolean { method has (line 83) | has(item: T): boolean { method hasByKey (line 88) | hasByKey(key: string): boolean { method nextDelay (line 92) | nextDelay(): number | null { method size (line 102) | get size(): number { method isEmpty (line 106) | get isEmpty(): boolean { method clear (line 110) | clear(): void { method toArray (line 114) | toArray(): Array> { FILE: packages/queue/src/engine/PriorityQueue.tsx class PriorityQueue (line 22) | class PriorityQueue { method compare (line 25) | private compare(a: ReadyItem, b: ReadyItem): number { method swap (line 38) | private swap(i: number, j: number): void { method bubbleUp (line 44) | private bubbleUp(index: number): void { method bubbleDown (line 55) | private bubbleDown(index: number): void { method push (line 78) | push(item: ReadyItem): void { method pop (line 83) | pop(): ReadyItem | undefined { method peek (line 99) | peek(): ReadyItem | undefined { method remove (line 103) | remove(jobId: JobID): boolean { method has (line 119) | has(jobId: JobID): boolean { method size (line 123) | get size(): number { method isEmpty (line 127) | get isEmpty(): boolean { method clear (line 131) | clear(): void { method toArray (line 135) | toArray(): Array { method fromArray (line 139) | static fromArray(items: Array): PriorityQueue { FILE: packages/queue/src/engine/QueueEngine.tsx constant SNAPSHOT_VERSION (line 51) | const SNAPSHOT_VERSION = 1; constant SNAPSHOT_FILENAME (line 52) | const SNAPSHOT_FILENAME = 'snapshot.msgpack.zstd'; type InflightEntry (line 54) | interface InflightEntry { class QueueEngine (line 59) | class QueueEngine { method constructor (line 85) | constructor(config: QueueConfig, loggerFactory: LoggerFactory) { method start (line 93) | async start(): Promise { method stop (line 117) | async stop(): Promise { method enqueue (line 136) | async enqueue( method dequeue (line 204) | async dequeue( method tryDequeueOne (line 237) | private tryDequeueOne(taskTypes: Array | null, visibilityTimeo... method findMatchingJob (line 270) | private findMatchingJob(taskTypes: Array | null): JobID | null { method ack (line 305) | async ack(receipt: string): Promise { method nack (line 327) | async nack(receipt: string, error?: string): Promise { method changeVisibility (line 372) | async changeVisibility(receipt: string, timeoutMs: number): Promise { method deleteJob (line 412) | async deleteJob(jobId: string): Promise { method getStats (line 444) | getStats(): QueueStats { method getJob (line 475) | getJob(jobId: string): JobRecord | null { method findByReceipt (line 479) | private findByReceipt(receipt: string): JobRecord | null { method addToReadyQueue (line 488) | private addToReadyQueue(job: Job): void { method processScheduledJobs (line 499) | private processScheduledJobs(): void { method processVisibilityTimeouts (line 510) | private processVisibilityTimeouts(): void { method countDeadLetter (line 540) | private countDeadLetter(): number { method startSchedulerLoop (line 550) | private startSchedulerLoop(): void { method startVisibilityLoop (line 565) | private startVisibilityLoop(): void { method startSnapshotLoop (line 580) | private startSnapshotLoop(): void { method recordOperation (line 592) | private recordOperation(): void { method maybeSnapshot (line 596) | private async maybeSnapshot(): Promise { method saveSnapshot (line 608) | private async saveSnapshot(): Promise { method loadSnapshot (line 667) | private async loadSnapshot(): Promise { method getSnapshotPath (line 754) | private getSnapshotPath(): string { method removeSnapshotFile (line 758) | private async removeSnapshotFile(): Promise { method resetState (line 768) | async resetState(): Promise { FILE: packages/queue/src/types/JobTypes.tsx type JobID (line 24) | type JobID = string & {readonly __brand: 'JobID'}; type Receipt (line 25) | type Receipt = string & {readonly __brand: 'Receipt'}; type CronID (line 26) | type CronID = string & {readonly __brand: 'CronID'}; type DeduplicationID (line 27) | type DeduplicationID = string & {readonly __brand: 'DeduplicationID'}; function createJobID (line 28) | function createJobID(id: string): JobID { function createReceipt (line 32) | function createReceipt(id: string): Receipt { function createCronID (line 36) | function createCronID(id: string): CronID { function createDeduplicationID (line 40) | function createDeduplicationID(id: string): DeduplicationID { type JobStatus (line 44) | enum JobStatus { type Job (line 51) | interface Job { type LeasedJob (line 64) | interface LeasedJob { type CronSchedule (line 70) | interface CronSchedule { type QueueStats (line 82) | interface QueueStats { type CronStats (line 89) | interface CronStats { type Stats (line 95) | interface Stats { type ReadyItem (line 100) | interface ReadyItem { type JobRecord (line 108) | interface JobRecord { type QueueSnapshot (line 115) | interface QueueSnapshot { type SerializableJob (line 124) | interface SerializableJob { type SerializableJobRecord (line 137) | interface SerializableJobRecord { type SerializableSnapshot (line 144) | interface SerializableSnapshot { type EnqueueRequest (line 161) | type EnqueueRequest = z.infer; type DequeueQuery (line 170) | type DequeueQuery = z.infer; type AckRequest (line 176) | type AckRequest = z.infer; type NackRequest (line 183) | type NackRequest = z.infer; type VisibilityRequest (line 190) | type VisibilityRequest = z.infer; type UpsertCronRequest (line 200) | type UpsertCronRequest = z.infer; type RetryJobParams (line 206) | type RetryJobParams = z.infer; type DeleteJobParams (line 212) | type DeleteJobParams = z.infer; type EnqueueResponse (line 214) | interface EnqueueResponse { type LeasedJobResponse (line 223) | interface LeasedJobResponse { type DequeueResponse (line 236) | interface DequeueResponse { type StatsResponse (line 240) | interface StatsResponse { type CronResponse (line 254) | interface CronResponse { type JobResponse (line 265) | interface JobResponse { FILE: packages/queue/src/types/JsonTypes.tsx type JsonPrimitive (line 22) | type JsonPrimitive = string | number | boolean | null; type JsonObject (line 23) | interface JsonObject { type JsonArray (line 27) | interface JsonArray extends Array {} type JsonValue (line 29) | type JsonValue = JsonPrimitive | JsonObject | JsonArray; FILE: packages/queue/src/types/QueueConfig.tsx type QueueConfig (line 20) | interface QueueConfig { FILE: packages/rate_limit/src/ICacheService.tsx type ICacheService (line 20) | interface ICacheService { FILE: packages/rate_limit/src/IRateLimitService.tsx type RateLimitResult (line 20) | interface RateLimitResult { type RateLimitConfig (line 30) | interface RateLimitConfig { type BucketConfig (line 36) | interface BucketConfig { type IRateLimitService (line 42) | interface IRateLimitService { FILE: packages/rate_limit/src/InMemoryCacheService.tsx type CacheEntry (line 20) | interface CacheEntry { class InMemoryCacheService (line 25) | class InMemoryCacheService { method get (line 28) | async get(key: string): Promise { method set (line 42) | async set(key: string, value: T, ttlSeconds?: number): Promise { method delete (line 50) | async delete(key: string): Promise { FILE: packages/rate_limit/src/KVRequiredError.tsx type KVRequiredErrorOptions (line 20) | interface KVRequiredErrorOptions { function throwKVRequiredError (line 28) | function throwKVRequiredError(options: KVRequiredErrorOptions): never { FILE: packages/rate_limit/src/RateLimitService.tsx type RateLimitServiceOptions (line 32) | interface RateLimitServiceOptions { class RateLimitService (line 37) | class RateLimitService implements IRateLimitService { method constructor (line 43) | constructor(cacheService: ICacheService, options: RateLimitServiceOpti... method checkLimit (line 50) | async checkLimit(config: RateLimitConfig): Promise { method checkBucketLimit (line 58) | async checkBucketLimit(bucket: string, config: BucketConfig): Promise<... method checkGlobalLimit (line 66) | async checkGlobalLimit(identifier: string, limit: number): Promise { method getRemainingAttempts (line 83) | async getRemainingAttempts(identifier: string, _windowMs: number): Pro... method getResetTime (line 88) | async getResetTime(identifier: string, _windowMs: number): Promise { method getRemainingAttempts (line 140) | async getRemainingAttempts(key: string): Promise { method getResetTime (line 155) | async getResetTime(key: string): Promise { FILE: packages/rate_limit/src/internal/RateLimitCacheState.tsx type LegacyRateLimitCacheState (line 22) | interface LegacyRateLimitCacheState { type RateLimitCacheState (line 29) | interface RateLimitCacheState { type SerializedRateLimitCacheState (line 35) | interface SerializedRateLimitCacheState { function getOptionalPositiveFiniteNumber (line 42) | function getOptionalPositiveFiniteNumber(value: unknown): number | undef... function getTatMs (line 50) | function getTatMs(value: LegacyRateLimitCacheState): number | null { function parseRateLimitCacheState (line 59) | function parseRateLimitCacheState(rawValue: unknown): RateLimitCacheStat... function serializeRateLimitCacheState (line 77) | function serializeRateLimitCacheState(state: RateLimitCacheState): Seria... FILE: packages/rate_limit/src/internal/RateLimitKeyFactory.tsx constant RATE_LIMIT_PREFIX (line 22) | const RATE_LIMIT_PREFIX = 'ratelimit'; constant BUCKET_NAMESPACE (line 23) | const BUCKET_NAMESPACE = 'bucket'; constant GLOBAL_NAMESPACE (line 24) | const GLOBAL_NAMESPACE = 'global'; type IRateLimitKeyFactory (line 26) | interface IRateLimitKeyFactory { class RateLimitKeyFactory (line 32) | class RateLimitKeyFactory implements IRateLimitKeyFactory { method getIdentifierKey (line 33) | getIdentifierKey(identifier: string): string { method getBucketKey (line 38) | getBucketKey(bucket: string): string { method getGlobalKey (line 43) | getGlobalKey(identifier: string): string { FILE: packages/rate_limit/src/internal/RateLimitValidation.tsx function assertPositiveFiniteNumber (line 20) | function assertPositiveFiniteNumber(value: number, fieldName: string): v... function assertNonEmptyString (line 26) | function assertNonEmptyString(value: string, fieldName: string): void { FILE: packages/rate_limit/src/middleware/RateLimitMiddleware.tsx type RateLimitMiddlewareConfig (line 25) | interface RateLimitMiddlewareConfig { type RateLimitServiceProvider (line 32) | type RateLimitServiceProvider = IRateLimitService | null | (() => IRateL... type RateLimitMiddlewareOptions (line 34) | interface RateLimitMiddlewareOptions<_Variables extends Record): boolean { function createRateLimitMiddleware (line 61) | function createRateLimitMiddleware { FILE: packages/s3/src/app/S3AppConfigTypes.tsx type S3RateLimitConfig (line 20) | interface S3RateLimitConfig { FILE: packages/s3/src/app/S3ErrorHandling.tsx type SetupS3ErrorHandlingOptions (line 27) | interface SetupS3ErrorHandlingOptions { function setupS3ErrorHandling (line 32) | function setupS3ErrorHandling(options: SetupS3ErrorHandlingOptions): void { FILE: packages/s3/src/app/S3MiddlewareSetup.tsx type SetupS3MiddlewareOptions (line 34) | interface SetupS3MiddlewareOptions { function setupS3Middleware (line 45) | function setupS3Middleware(options: SetupS3MiddlewareOptions): void { FILE: packages/s3/src/app/S3RateLimitResolver.tsx type ResolveS3RateLimitServiceOptions (line 28) | interface ResolveS3RateLimitServiceOptions { function resolveS3RateLimitService (line 34) | function resolveS3RateLimitService(options: ResolveS3RateLimitServiceOpt... function createKVProvider (line 58) | function createKVProvider(kvUrl: string): IKVProvider { FILE: packages/s3/src/app/S3ResponseHeadersMiddleware.tsx function setupS3ResponseHeadersMiddleware (line 24) | function setupS3ResponseHeadersMiddleware(app: Hono): void { FILE: packages/s3/src/app/S3RouteRegistrar.tsx function registerS3Routes (line 25) | function registerS3Routes(app: Hono): void { FILE: packages/s3/src/errors/S3Error.tsx type S3ErrorCode (line 23) | type S3ErrorCode = constant S3_ERROR_STATUS_MAP (line 93) | const S3_ERROR_STATUS_MAP: Record = { class S3Error (line 164) | class S3Error extends FluxerError { method constructor (line 168) | constructor( method getResponse (line 191) | override getResponse(): Response { method toXml (line 202) | toXml(): string { function escapeXml (line 218) | function escapeXml(str: string): string { FILE: packages/s3/src/middleware/S3AuthMiddleware.tsx type S3AuthConfig (line 26) | interface S3AuthConfig { function createS3AuthMiddleware (line 31) | function createS3AuthMiddleware(config: S3AuthConfig, logger: LoggerInte... FILE: packages/s3/src/middleware/S3RequestAuthenticator.tsx type S3AuthCredentials (line 26) | interface S3AuthCredentials { type AwsCredential (line 31) | interface AwsCredential { type AuthorizationParams (line 38) | interface AuthorizationParams { type S3AuthenticationResult (line 44) | interface S3AuthenticationResult { type S3Context (line 48) | type S3Context = Context; constant MAX_TIME_SKEW_MS (line 50) | const MAX_TIME_SKEW_MS = 15 * 60 * 1000; function authenticateS3Request (line 52) | async function authenticateS3Request( function verifyAuthorizationHeader (line 71) | async function verifyAuthorizationHeader( function verifyPresignedUrl (line 101) | async function verifyPresignedUrl( function parseAuthorizationHeader (line 154) | function parseAuthorizationHeader(header: string): AuthorizationParams { function parseAmzDateToMs (line 188) | function parseAmzDateToMs(amzDate: string): number { function verifySignature (line 198) | async function verifySignature( FILE: packages/s3/src/s3/BucketController.tsx function BucketController (line 24) | function BucketController(app: Hono) { FILE: packages/s3/src/s3/ObjectController.tsx function ObjectController (line 26) | function ObjectController(app: Hono) { function extractUserMetadata (line 379) | function extractUserMetadata(headers: Headers): Record { function parseDeleteObjectsXml (line 393) | function parseDeleteObjectsXml(xml: string): Array { function parseCompleteMultipartUploadXml (line 405) | function parseCompleteMultipartUploadXml(xml: string): Array<{partNumber... function decodeXmlEntities (line 420) | function decodeXmlEntities(str: string): string { FILE: packages/s3/src/s3/PresignedUrlGenerator.tsx type PresignedUrlOptions (line 22) | interface PresignedUrlOptions { function generatePresignedUrl (line 33) | function generatePresignedUrl(options: PresignedUrlOptions): string { FILE: packages/s3/src/s3/S3Service.tsx type S3ObjectMetadata (line 30) | interface S3ObjectMetadata { type S3Bucket (line 39) | interface S3Bucket { type ListObjectsOptions (line 44) | interface ListObjectsOptions { type ListObjectsResult (line 53) | interface ListObjectsResult { type MultipartUpload (line 62) | interface MultipartUpload { type UploadPart (line 70) | interface UploadPart { type CompletedPart (line 77) | interface CompletedPart { type S3ServiceConfig (line 82) | interface S3ServiceConfig { type ByteRange (line 87) | interface ByteRange { type GetObjectOptions (line 92) | interface GetObjectOptions { type GetObjectResult (line 96) | interface GetObjectResult { type PutObjectOptions (line 102) | interface PutObjectOptions { type PutObjectResult (line 108) | interface PutObjectResult { type DeleteObjectsResult (line 112) | interface DeleteObjectsResult { type CopyObjectOptions (line 117) | interface CopyObjectOptions { type CopyObjectResult (line 123) | interface CopyObjectResult { type CreateMultipartUploadOptions (line 128) | interface CreateMultipartUploadOptions { type CreateMultipartUploadResult (line 133) | interface CreateMultipartUploadResult { type UploadPartResult (line 137) | interface UploadPartResult { type CompleteMultipartUploadResult (line 141) | interface CompleteMultipartUploadResult { type ListPartsOptions (line 146) | interface ListPartsOptions { type ListPartsResult (line 151) | interface ListPartsResult { type ListMultipartUploadsOptions (line 157) | interface ListMultipartUploadsOptions { type ListMultipartUploadsResult (line 162) | interface ListMultipartUploadsResult { type IS3Service (line 167) | interface IS3Service { constant METADATA_FILE_SUFFIX (line 216) | const METADATA_FILE_SUFFIX = '.__s3_meta__'; constant MULTIPART_DIR (line 217) | const MULTIPART_DIR = '__multipart__'; type StoredS3ObjectMetadata (line 228) | type StoredS3ObjectMetadata = z.infer; type MultipartUploadFile (line 240) | type MultipartUploadFile = z.infer; class S3Service (line 242) | class S3Service implements IS3Service { method constructor (line 248) | constructor(config: S3ServiceConfig, logger: LoggerInterface) { method initialize (line 254) | async initialize(): Promise { method listBuckets (line 273) | async listBuckets(): Promise> { method createBucket (line 290) | async createBucket(name: string): Promise { method deleteBucket (line 303) | async deleteBucket(name: string): Promise { method bucketExists (line 325) | async bucketExists(name: string): Promise { method headBucket (line 336) | async headBucket(name: string): Promise { method getObject (line 342) | async getObject(bucket: string, key: string, options?: GetObjectOption... method putObject (line 376) | async putObject( method deleteObject (line 451) | async deleteObject(bucket: string, key: string): Promise { method deleteObjects (line 479) | async deleteObjects(bucket: string, keys: Array): Promise { method clearAll (line 974) | async clearAll(): Promise { method ensureBucketExists (line 986) | private async ensureBucketExists(bucket: string): Promise { method getObjectMetadata (line 992) | private async getObjectMetadata(bucket: string, key: string): Promise<... method listAllObjectsRecursive (line 1023) | private async listAllObjectsRecursive(basePath: string, prefix: string... FILE: packages/s3/src/types/HonoEnv.tsx type HonoEnv (line 22) | interface HonoEnv { FILE: packages/s3/src/utils/Crypto.tsx function hmacSha256 (line 22) | function hmacSha256(key: string | Buffer, data: string): Buffer { function sha256 (line 26) | function sha256(data: string | Buffer): string { function md5 (line 30) | function md5(data: string | Buffer): string { function md5Base64 (line 34) | function md5Base64(data: string | Buffer): string { function randomHex (line 38) | function randomHex(bytes: number): string { function randomUUID (line 44) | function randomUUID(): string { FILE: packages/s3/src/utils/XmlUtils.tsx function escapeXml (line 20) | function escapeXml(str: string): string { function xmlTag (line 29) | function xmlTag(name: string, value: string | number | boolean | undefin... function xmlHeader (line 37) | function xmlHeader(): string { function formatISODate (line 41) | function formatISODate(date: Date): string { function formatAmzDate (line 45) | function formatAmzDate(date: Date): string { function parseAmzDate (line 52) | function parseAmzDate(dateStr: string): Date | null { FILE: packages/schema/src/branded/WireIds.tsx type GuildId (line 31) | type GuildId = string & {readonly __brand: typeof GuildIdBrand}; type ChannelId (line 32) | type ChannelId = string & {readonly __brand: typeof ChannelIdBrand}; type UserId (line 33) | type UserId = string & {readonly __brand: typeof UserIdBrand}; type RoleId (line 34) | type RoleId = string & {readonly __brand: typeof RoleIdBrand}; type MessageId (line 35) | type MessageId = string & {readonly __brand: typeof MessageIdBrand}; type WebhookId (line 36) | type WebhookId = string & {readonly __brand: typeof WebhookIdBrand}; type EmojiId (line 37) | type EmojiId = string & {readonly __brand: typeof EmojiIdBrand}; type StickerId (line 38) | type StickerId = string & {readonly __brand: typeof StickerIdBrand}; type AttachmentId (line 39) | type AttachmentId = string & {readonly __brand: typeof AttachmentIdBrand}; type InviteCode (line 40) | type InviteCode = string & {readonly __brand: typeof InviteCodeBrand}; FILE: packages/schema/src/contracts/search/SearchAdapterTypes.tsx type SearchOptions (line 20) | interface SearchOptions { type SearchResult (line 27) | interface SearchResult { type ISearchAdapter (line 32) | interface ISearchAdapter { FILE: packages/schema/src/contracts/search/SearchDocumentTypes.tsx type SearchableMessage (line 20) | interface SearchableMessage { type MessageSearchFilters (line 49) | interface MessageSearchFilters { type SearchableGuild (line 84) | interface SearchableGuild { type GuildSearchFilters (line 102) | interface GuildSearchFilters { type SearchableUser (line 114) | interface SearchableUser { type UserSearchFilters (line 136) | interface UserSearchFilters { type SearchableReport (line 152) | interface SearchableReport { type ReportSearchFilters (line 173) | interface ReportSearchFilters { type SearchableAuditLog (line 188) | interface SearchableAuditLog { type AuditLogSearchFilters (line 199) | interface AuditLogSearchFilters { type SearchableGuildMember (line 208) | interface SearchableGuildMember { type GuildMemberSearchFilters (line 226) | interface GuildMemberSearchFilters { FILE: packages/schema/src/domains/admin/AdminGuildSchemas.tsx type GuildAdminResponse (line 52) | type GuildAdminResponse = z.infer; type ListUserGuildsResponse (line 58) | type ListUserGuildsResponse = z.infer; type ListUserGuildsRequest (line 68) | type ListUserGuildsRequest = z.infer; type LookupGuildRequest (line 74) | type LookupGuildRequest = z.infer; type ListGuildMembersRequest (line 82) | type ListGuildMembersRequest = z.infer; type BanGuildMemberRequest (line 89) | type BanGuildMemberRequest = z.infer; type KickGuildMemberRequest (line 96) | type KickGuildMemberRequest = z.infer; type SearchGuildsRequest (line 104) | type SearchGuildsRequest = z.infer; type ReloadGuildRequest (line 110) | type ReloadGuildRequest = z.infer; type ShutdownGuildRequest (line 116) | type ShutdownGuildRequest = z.infer; type GetProcessMemoryStatsRequest (line 122) | type GetProcessMemoryStatsRequest = z.infer; type DeleteGuildRequest (line 159) | type DeleteGuildRequest = z.infer; type UpdateGuildVanityRequest (line 166) | type UpdateGuildVanityRequest = z.infer; type UpdateGuildNameRequest (line 173) | type UpdateGuildNameRequest = z.infer; type UpdateGuildSettingsRequest (line 199) | type UpdateGuildSettingsRequest = z.infer; type LookupMessageByAttachmentRequest (line 39) | type LookupMessageByAttachmentRequest = z.infer; type MessageShredRequest (line 58) | type MessageShredRequest = z.infer; type MessageShredResponse (line 66) | type MessageShredResponse = z.infer; type MessageShredStatusRequest (line 72) | type MessageShredStatusRequest = z.infer; type DeleteAllUserMessagesRequest (line 79) | type DeleteAllUserMessagesRequest = z.infer; type SearchAuditLogsRequest (line 143) | type SearchAuditLogsRequest = z.infer; type SearchReportsRequest (line 162) | type SearchReportsRequest = z.infer; type ListReportsRequest (line 170) | type ListReportsRequest = z.infer; type ResolveReportRequest (line 177) | type ResolveReportRequest = z.infer; type RefreshSearchIndexRequest (line 185) | type RefreshSearchIndexRequest = z.infer; type GetIndexRefreshStatusRequest (line 191) | type GetIndexRefreshStatusRequest = z.infer; type TriggerUserArchiveRequest (line 203) | type TriggerUserArchiveRequest = z.infer; type TriggerGuildArchiveRequest (line 209) | type TriggerGuildArchiveRequest = z.infer; constant IP_OR_CIDR_REGEX (line 221) | const IP_OR_CIDR_REGEX = /^(?:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,2})?|(?:[... type BanIpRequest (line 229) | type BanIpRequest = z.infer; type BanEmailRequest (line 235) | type BanEmailRequest = z.infer; type BanPhoneRequest (line 241) | type BanPhoneRequest = z.infer; type ListBansRequest (line 247) | type ListBansRequest = z.infer; type IpBanListEntry (line 254) | type IpBanListEntry = z.infer; type ListIpBansResponse (line 260) | type ListIpBansResponse = z.infer; type ListEmailBansResponse (line 266) | type ListEmailBansResponse = z.infer; type ListPhoneBansResponse (line 272) | type ListPhoneBansResponse = z.infer; type LegalHoldRequest (line 278) | type LegalHoldRequest = z.infer; constant MAX_CODES_PER_REQUEST (line 280) | const MAX_CODES_PER_REQUEST = 100; type GiftProductType (line 290) | type GiftProductType = z.infer; type GenerateGiftCodesRequest (line 297) | type GenerateGiftCodesRequest = z.infer; type SsoConfigResponse (line 315) | type SsoConfigResponse = z.infer; type InstanceConfigResponse (line 329) | type InstanceConfigResponse = z.infer; type InstanceConfigUpdateRequest (line 357) | type InstanceConfigUpdateRequest = z.infer; type SnowflakeReservationEntry (line 398) | type SnowflakeReservationEntry = z.infer; type ListSnowflakeReservationsResponse (line 404) | type ListSnowflakeReservationsResponse = z.infer; type SystemDmJobsQueryRequest (line 435) | type SystemDmJobsQueryRequest = z.infer; type SystemDmJobResponse (line 463) | type SystemDmJobResponse = z.infer; type ListSystemDmJobsResponse (line 470) | type ListSystemDmJobsResponse = z.infer; type CreateAdminApiKeyRequest (line 483) | type CreateAdminApiKeyRequest = z.infer; type CreateAdminApiKeyResponse (line 494) | type CreateAdminApiKeyResponse = z.infer; type ListAdminApiKeyResponse (line 506) | type ListAdminApiKeyResponse = z.infer; type SearchGuildsResponse (line 513) | type SearchGuildsResponse = z.infer; type SearchUsersResponse (line 520) | type SearchUsersResponse = z.infer; type RefreshSearchIndexResponse (line 527) | type RefreshSearchIndexResponse = z.infer; type PurgeGuildAssetError (line 617) | type PurgeGuildAssetError = z.infer; type PurgeGuildAssetsResponse (line 624) | type PurgeGuildAssetsResponse = z.infer; type ReloadGuildsRequest (line 709) | type ReloadGuildsRequest = z.infer; type ReloadAllGuildsResponse (line 715) | type ReloadAllGuildsResponse = z.infer; type NodeStatsResponse (line 733) | type NodeStatsResponse = z.infer; type GuildEmojiAsset (line 817) | type GuildEmojiAsset = z.infer; type GuildStickerAsset (line 818) | type GuildStickerAsset = z.infer; type ListGuildEmojisResponse (line 825) | type ListGuildEmojisResponse = z.infer; type ListGuildStickersResponse (line 832) | type ListGuildStickersResponse = z.infer; type VisionarySlotSchema (line 1001) | type VisionarySlotSchema = z.infer; type ListVisionarySlotsResponse (line 1009) | type ListVisionarySlotsResponse = z.infer; FILE: packages/schema/src/domains/admin/AdminUserSchemas.tsx type UserAdminResponse (line 81) | type UserAdminResponse = z.infer; type LookupUserByQueryRequest (line 87) | type LookupUserByQueryRequest = z.infer; type LookupUserByIdsRequest (line 93) | type LookupUserByIdsRequest = z.infer; type LookupUserRequest (line 97) | type LookupUserRequest = z.infer; type SearchUsersRequest (line 105) | type SearchUsersRequest = z.infer; type ListUserSessionsRequest (line 111) | type ListUserSessionsRequest = z.infer; type UserContactChangeLogEntry (line 123) | type UserContactChangeLogEntry = z.infer; type UserMutationResponse (line 142) | type UserMutationResponse = z.infer; type VerificationActionResponse (line 148) | type VerificationActionResponse = z.infer; type UserSessionResponse (line 167) | type UserSessionResponse = z.infer; type ListUserSessionsResponse (line 173) | type ListUserSessionsResponse = z.infer; type ListUserDmChannelsRequest (line 186) | type ListUserDmChannelsRequest = z.infer; type AdminUserDmChannel (line 196) | type AdminUserDmChannel = z.infer; type ListUserDmChannelsResponse (line 202) | type ListUserDmChannelsResponse = z.infer; type UpdateUserFlagsRequest (line 223) | type UpdateUserFlagsRequest = z.infer; type DisableMfaRequest (line 229) | type DisableMfaRequest = z.infer; type CancelBulkMessageDeletionRequest (line 235) | type CancelBulkMessageDeletionRequest = z.infer; type SetUserBotStatusRequest (line 260) | type SetUserBotStatusRequest = z.infer; type SetUserSystemStatusRequest (line 267) | type SetUserSystemStatusRequest = z.infer; type ResendVerificationEmailRequest (line 279) | type ResendVerificationEmailRequest = z.infer; type ChangeUsernameRequest (line 293) | type ChangeUsernameRequest = z.infer; type ChangeEmailRequest (line 300) | type ChangeEmailRequest = z.infer; type TerminateSessionsRequest (line 306) | type TerminateSessionsRequest = z.infer; type TempBanUserRequest (line 319) | type TempBanUserRequest = z.infer; type ScheduleAccountDeletionRequest (line 334) | type ScheduleAccountDeletionRequest = z.infer; type SetUserTraitsRequest (line 348) | type SetUserTraitsRequest = z.infer; type UnlinkPhoneRequest (line 354) | type UnlinkPhoneRequest = z.infer; type ChangeDobRequest (line 363) | type ChangeDobRequest = z.infer; type UpdateSuspiciousActivityFlagsRequest (line 375) | type UpdateSuspiciousActivityFlagsRequest = z.infer; FILE: packages/schema/src/domains/admin/AdminVoiceSchemas.tsx type VoiceRegionAdminResponse (line 38) | type VoiceRegionAdminResponse = z.infer; type VoiceServerAdminResponse (line 53) | type VoiceServerAdminResponse = z.infer; type CreateVoiceRegionRequest (line 83) | type CreateVoiceRegionRequest = z.infer; type UpdateVoiceRegionRequest (line 110) | type UpdateVoiceRegionRequest = z.infer; type DeleteVoiceRegionRequest (line 116) | type DeleteVoiceRegionRequest = z.infer; type CreateVoiceServerRequest (line 146) | type CreateVoiceServerRequest = z.infer; type UpdateVoiceServerRequest (line 173) | type UpdateVoiceServerRequest = z.infer; type DeleteVoiceServerRequest (line 180) | type DeleteVoiceServerRequest = z.infer; type ListVoiceRegionsRequest (line 186) | type ListVoiceRegionsRequest = z.infer; type GetVoiceRegionRequest (line 193) | type GetVoiceRegionRequest = z.infer; type ListVoiceServersRequest (line 199) | type ListVoiceServersRequest = z.infer; type GetVoiceServerRequest (line 206) | type GetVoiceServerRequest = z.infer; type ListVoiceRegionsResponse (line 212) | type ListVoiceRegionsResponse = z.infer; type VoiceRegionWithServersResponse (line 218) | type VoiceRegionWithServersResponse = z.infer; type CreateVoiceRegionResponse (line 230) | type CreateVoiceRegionResponse = z.infer; type UpdateVoiceRegionResponse (line 236) | type UpdateVoiceRegionResponse = z.infer; type ListVoiceServersResponse (line 242) | type ListVoiceServersResponse = z.infer; type GetVoiceServerResponse (line 248) | type GetVoiceServerResponse = z.infer; type CreateVoiceServerResponse (line 254) | type CreateVoiceServerResponse = z.infer; type UpdateVoiceServerResponse (line 260) | type UpdateVoiceServerResponse = z.infer; type DeleteVoiceResponse (line 266) | type DeleteVoiceResponse = z.infer; FILE: packages/schema/src/domains/auth/AuthSchemas.tsx type RegisterRequest (line 50) | type RegisterRequest = z.infer; type UsernameSuggestionsRequest (line 55) | type UsernameSuggestionsRequest = z.infer; type LogoutAuthSessionsRequest (line 68) | type LogoutAuthSessionsRequest = z.infer; type ForgotPasswordRequest (line 73) | type ForgotPasswordRequest = z.infer; type ResetPasswordRequest (line 79) | type ResetPasswordRequest = z.infer; type EmailRevertRequest (line 85) | type EmailRevertRequest = z.infer; type VerifyEmailRequest (line 90) | type VerifyEmailRequest = z.infer; type SsoStatusResponse (line 113) | type SsoStatusResponse = z.infer; type SsoStartResponse (line 120) | type SsoStartResponse = z.infer; type SsoCompleteResponse (line 127) | type SsoCompleteResponse = z.infer; type AuthTokenResponse (line 132) | type AuthTokenResponse = z.infer; type AuthTokenWithUserIdResponse (line 138) | type AuthTokenWithUserIdResponse = z.infer; type AuthLoginResponse (line 152) | type AuthLoginResponse = z.infer; type AuthRegisterResponse (line 155) | type AuthRegisterResponse = z.infer; type AuthSessionLocation (line 162) | type AuthSessionLocation = z.infer; type AuthSessionClientInfo (line 170) | type AuthSessionClientInfo = z.infer; type AuthSessionResponse (line 178) | type AuthSessionResponse = z.infer; type AuthSessionsResponse (line 181) | type AuthSessionsResponse = z.infer; type WebAuthnAuthenticationOptionsResponse (line 184) | type WebAuthnAuthenticationOptionsResponse = z.infer; type HandoffStatusResponse (line 202) | type HandoffStatusResponse = z.infer; type SsoStartRequest (line 207) | type SsoStartRequest = z.infer; type SsoCompleteRequest (line 213) | type SsoCompleteRequest = z.infer; type MfaTotpRequest (line 219) | type MfaTotpRequest = z.infer; type MfaSmsRequest (line 225) | type MfaSmsRequest = z.infer; type MfaTicketRequest (line 230) | type MfaTicketRequest = z.infer; type AuthorizeIpRequest (line 235) | type AuthorizeIpRequest = z.infer; type IpAuthorizationPollQuery (line 240) | type IpAuthorizationPollQuery = z.infer; type IpAuthorizationPollResponse (line 247) | type IpAuthorizationPollResponse = z.infer; type HandoffCompleteRequest (line 267) | type HandoffCompleteRequest = z.infer; type HandoffCodeParam (line 272) | type HandoffCodeParam = z.infer; type EnableMfaTotpRequest (line 280) | type EnableMfaTotpRequest = z.infer; type DisableTotpRequest (line 288) | type DisableTotpRequest = z.infer; type MfaBackupCodesRequest (line 296) | type MfaBackupCodesRequest = z.infer; type MfaBackupCodeResponse (line 302) | type MfaBackupCodeResponse = z.infer; type MfaBackupCodesResponse (line 307) | type MfaBackupCodesResponse = z.infer; type PhoneSendVerificationRequest (line 312) | type PhoneSendVerificationRequest = z.infer; type PhoneVerifyResponse (line 323) | type PhoneVerifyResponse = z.infer; type PhoneAddRequest (line 330) | type PhoneAddRequest = z.infer; type WebAuthnCredentialResponse (line 338) | type WebAuthnCredentialResponse = z.infer; type WebAuthnRegisterRequest (line 357) | type WebAuthnRegisterRequest = z.infer; type WebAuthnCredentialUpdateRequest (line 364) | type WebAuthnCredentialUpdateRequest = z.infer; FILE: packages/schema/src/domains/channel/ChannelRequestSchemas.tsx type ChannelOverwriteRequest (line 61) | type ChannelOverwriteRequest = z.infer; type ChannelCreateTextRequest (line 121) | type ChannelCreateTextRequest = z.infer; type ChannelCreateVoiceRequest (line 128) | type ChannelCreateVoiceRequest = z.infer; type ChannelCreateCategoryRequest (line 135) | type ChannelCreateCategoryRequest = z.infer; type ChannelCreateRequest (line 151) | type ChannelCreateRequest = z.infer; type ChannelUpdateTextRequest (line 158) | type ChannelUpdateTextRequest = z.infer; type ChannelUpdateVoiceRequest (line 165) | type ChannelUpdateVoiceRequest = z.infer; type ChannelUpdateCategoryRequest (line 172) | type ChannelUpdateCategoryRequest = z.infer; type ChannelUpdateGroupDmRequest (line 191) | type ChannelUpdateGroupDmRequest = z.infer; type PermissionOverwriteCreateRequest (line 209) | type PermissionOverwriteCreateRequest = z.infer; type ReadStateAckBulkRequest (line 230) | type ReadStateAckBulkRequest = z.infer; type ChannelPositionUpdateRequest (line 244) | type ChannelPositionUpdateRequest = z.infer; type CallRingBodySchema (line 258) | type CallRingBodySchema = z.infer; type StreamUpdateBodySchema (line 267) | type StreamUpdateBodySchema = z.infer; type StreamPreviewUploadBodySchema (line 274) | type StreamPreviewUploadBodySchema = z.infer; type RtcRegionResponse (line 42) | type RtcRegionResponse = z.infer; type CallEligibilityResponse (line 49) | type CallEligibilityResponse = z.infer; type ChannelResponse (line 88) | type ChannelResponse = z.infer; type ChannelNicknameOverrides (line 96) | type ChannelNicknameOverrides = z.infer; type ChannelPartialRecipientResponse (line 101) | type ChannelPartialRecipientResponse = z.infer; type ChannelListResponse (line 117) | type ChannelListResponse = z.infer; type RtcRegionListResponse (line 120) | type RtcRegionListResponse = z.infer; type ChannelOverwrite (line 122) | interface ChannelOverwrite { type DefaultReactionEmoji (line 129) | interface DefaultReactionEmoji { type Channel (line 134) | interface Channel { FILE: packages/schema/src/domains/channel/GuildChannelOrdering.tsx type ChannelOrderingChannel (line 22) | interface ChannelOrderingChannel { type GuildChannelReorderErrorCode (line 29) | type GuildChannelReorderErrorCode = type GuildChannelReorderOperation (line 40) | interface GuildChannelReorderOperation { type GuildChannelReorderPlan (line 46) | interface GuildChannelReorderPlan(id: Id): string { function compareChannelOrdering (line 57) | function compareChannelOrdering( function sortChannelsForOrdering (line 67) | function sortChannelsForOrdering; type ChannelIdParam (line 31) | type ChannelIdParam = z.infer; type UserIdParam (line 36) | type UserIdParam = z.infer; type MessageIdParam (line 41) | type MessageIdParam = z.infer; type RoleIdParam (line 46) | type RoleIdParam = z.infer; type WebhookIdParam (line 51) | type WebhookIdParam = z.infer; type InviteCodeParam (line 56) | type InviteCodeParam = z.infer; type PackIdParam (line 61) | type PackIdParam = z.infer; type ApplicationIdParam (line 66) | type ApplicationIdParam = z.infer; type GuildIdUserIdParam (line 72) | type GuildIdUserIdParam = z.infer; type GuildIdRoleIdParam (line 78) | type GuildIdRoleIdParam = z.infer; type GuildIdUserIdRoleIdParam (line 85) | type GuildIdUserIdRoleIdParam = z.infer; type ChannelIdMessageIdParam (line 91) | type ChannelIdMessageIdParam = z.infer; type ChannelIdUserIdParam (line 97) | type ChannelIdUserIdParam = z.infer; type ChannelIdOverwriteIdParam (line 103) | type ChannelIdOverwriteIdParam = z.infer; type ChannelIdMessageIdAttachmentIdParam (line 110) | type ChannelIdMessageIdAttachmentIdParam = z.infer; type TargetIdParam (line 121) | type TargetIdParam = z.infer; type ApplicationAuthorizationIdParam (line 126) | type ApplicationAuthorizationIdParam = z.infer; type EnabledToggleRequest (line 136) | type EnabledToggleRequest = z.infer; type EmojiIdParam (line 141) | type EmojiIdParam = z.infer; type StickerIdParam (line 146) | type StickerIdParam = z.infer; type GuildIdEmojiIdParam (line 152) | type GuildIdEmojiIdParam = z.infer; type GuildIdStickerIdParam (line 158) | type GuildIdStickerIdParam = z.infer; type PackIdEmojiIdParam (line 164) | type PackIdEmojiIdParam = z.infer; type PackIdStickerIdParam (line 170) | type PackIdStickerIdParam = z.infer; type GiftCodeParam (line 175) | type GiftCodeParam = z.infer; type StreamKeyParam (line 180) | type StreamKeyParam = z.infer; type EmojiParam (line 185) | type EmojiParam = z.infer; type ChannelIdMessageIdEmojiParam (line 192) | type ChannelIdMessageIdEmojiParam = z.infer; type KeyIdParam (line 210) | type KeyIdParam = z.infer; type MemeIdParam (line 215) | type MemeIdParam = z.infer; type SessionIdQuerySchema (line 220) | type SessionIdQuerySchema = z.infer; type CredentialIdParam (line 225) | type CredentialIdParam = z.infer; type ScheduledMessageIdParam (line 230) | type ScheduledMessageIdParam = z.infer; type JobIdParam (line 235) | type JobIdParam = z.infer; type ArchiveSubjectType (line 240) | type ArchiveSubjectType = z.infer; type ArchivePathParam (line 247) | type ArchivePathParam = z.infer; type HarvestIdParam (line 252) | type HarvestIdParam = z.infer; FILE: packages/schema/src/domains/common/CommonQuerySchemas.tsx type PurgeQuery (line 27) | type PurgeQuery = z.infer; FILE: packages/schema/src/domains/connection/BlueskyOAuthSchemas.tsx type BlueskyAuthorizeRequest (line 25) | type BlueskyAuthorizeRequest = z.infer; type BlueskyAuthorizeResponse (line 30) | type BlueskyAuthorizeResponse = z.infer; FILE: packages/schema/src/domains/connection/ConnectionSchemas.tsx type ConnectionResponse (line 58) | type ConnectionResponse = z.infer; type ConnectionListResponse (line 61) | type ConnectionListResponse = z.infer; type ConnectionVerificationResponse (line 71) | type ConnectionVerificationResponse = z.infer; type UpdateConnectionRequest (line 93) | type UpdateConnectionRequest = z.infer; type ReorderConnectionsRequest (line 103) | type ReorderConnectionsRequest = z.infer; type ConnectionTypeParam (line 110) | type ConnectionTypeParam = z.infer; FILE: packages/schema/src/domains/donation/DonationSchemas.tsx type DonationRequestLinkRequest (line 25) | type DonationRequestLinkRequest = z.infer; type DonationCheckoutRequest (line 38) | type DonationCheckoutRequest = z.infer; type DonationCheckoutResponse (line 43) | type DonationCheckoutResponse = z.infer; FILE: packages/schema/src/domains/download/DownloadSchemas.tsx type DesktopChannel (line 33) | type DesktopChannel = z.infer; type DesktopPlatform (line 46) | type DesktopPlatform = z.infer; type DesktopArch (line 58) | type DesktopArch = z.infer; type DesktopFormat (line 75) | type DesktopFormat = z.infer; type DesktopRedirectParam (line 88) | type DesktopRedirectParam = z.infer; type DesktopVersionedRedirectParam (line 97) | type DesktopVersionedRedirectParam = z.infer; type DesktopVersionsQuery (line 111) | type DesktopVersionsQuery = z.infer; type VersionFileResponse (line 117) | type VersionFileResponse = z.infer; type VersionInfoResponse (line 124) | type VersionInfoResponse = z.infer; type DesktopVersionsResponse (line 130) | type DesktopVersionsResponse = z.infer; FILE: packages/schema/src/domains/error/ErrorCodeSchemas.tsx type APIErrorCodePair (line 26) | type APIErrorCodePair = readonly [string, string, string?]; function buildAPIErrorCodePairs (line 28) | function buildAPIErrorCodePairs(): ReadonlyArray { function buildValidationErrorCodePairs (line 35) | function buildValidationErrorCodePairs(): ReadonlyArray { FILE: packages/schema/src/domains/error/ErrorSchemas.tsx type ValidationErrorItem (line 28) | type ValidationErrorItem = z.infer; type ErrorResponse (line 35) | type ErrorResponse = z.infer; FILE: packages/schema/src/domains/gateway/GatewaySchemas.tsx type CustomStatusResponse (line 40) | type CustomStatusResponse = z.infer; type PresenceResponse (line 50) | type PresenceResponse = z.infer; type SessionResponse (line 59) | type SessionResponse = z.infer; type VoiceStateResponse (line 83) | type VoiceStateResponse = z.infer; type ReadStateResponse (line 92) | type ReadStateResponse = z.infer; type GuildReadyResponse (line 106) | type GuildReadyResponse = z.infer; type GatewayBotResponse (line 121) | type GatewayBotResponse = z.infer; FILE: packages/schema/src/domains/guild/GuildAuditLogSchemas.tsx type AuditLogChange (line 52) | type AuditLogChange = z.infer; type GuildAuditLogEntryResponse (line 81) | type GuildAuditLogEntryResponse = z.infer; type GuildAuditLogListResponse (line 100) | type GuildAuditLogListResponse = z.infer; type GuildAuditLogListQuery (line 114) | type GuildAuditLogListQuery = z.infer; FILE: packages/schema/src/domains/guild/GuildDiscoverySchemas.tsx type DiscoveryApplicationRequest (line 36) | type DiscoveryApplicationRequest = z.infer; type DiscoveryGuildResponse (line 72) | type DiscoveryGuildResponse = z.infer; type DiscoveryGuildListResponse (line 79) | type DiscoveryGuildListResponse = z.infer; type DiscoveryCategoryResponse (line 106) | type DiscoveryCategoryResponse = z.infer; type DiscoveryCategoryListResponse (line 110) | type DiscoveryCategoryListResponse = z.infer; FILE: packages/schema/src/domains/guild/GuildEmojiSchemas.tsx type GuildEmojiResponse (line 30) | type GuildEmojiResponse = z.infer; type GuildEmojiWithUserResponse (line 39) | type GuildEmojiWithUserResponse = z.infer; type GuildStickerWithUserResponse (line 60) | type GuildStickerWithUserResponse = z.infer; type GuildBanResponse (line 57) | type GuildBanResponse = z.infer; type GuildMemberListResponse (line 60) | type GuildMemberListResponse = z.infer; type GuildBanListResponse (line 63) | type GuildBanListResponse = z.infer; type GuildMemberData (line 65) | interface GuildMemberData { FILE: packages/schema/src/domains/guild/GuildMemberSearchSchemas.tsx type GuildMemberSearchRequest (line 51) | type GuildMemberSearchRequest = z.infer; type GuildMemberSearchSupplemental (line 59) | type GuildMemberSearchSupplemental = z.infer; type GuildMemberSearchResponse (line 87) | type GuildMemberSearchResponse = z.infer; FILE: packages/schema/src/domains/guild/GuildRequestSchemas.tsx type GuildCreateRequest (line 63) | type GuildCreateRequest = z.infer; type GuildUpdateRequest (line 122) | type GuildUpdateRequest = z.infer; type GuildMemberUpdateRequest (line 160) | type GuildMemberUpdateRequest = z.infer; type MyGuildMemberUpdateRequest (line 164) | type MyGuildMemberUpdateRequest = z.infer; type GuildRoleUpdateRequest (line 183) | type GuildRoleUpdateRequest = z.infer; type GuildEmojiCreateRequest (line 194) | type GuildEmojiCreateRequest = z.infer; type GuildEmojiUpdateRequest (line 198) | type GuildEmojiUpdateRequest = z.infer; type GuildEmojiBulkCreateRequest (line 208) | type GuildEmojiBulkCreateRequest = z.infer; type GuildStickerUpdateRequest (line 233) | type GuildStickerUpdateRequest = z.infer; type GuildStickerBulkCreateRequest (line 243) | type GuildStickerBulkCreateRequest = z.infer; type GuildListQuery (line 280) | type GuildListQuery = z.infer; type GuildDeleteRequest (line 288) | type GuildDeleteRequest = z.infer; type GuildVanityURLUpdateRequest (line 294) | type GuildVanityURLUpdateRequest = z.infer; type GuildRolePositionsRequest (line 322) | type GuildRolePositionsRequest = z.infer; type GuildMemberListQuery (line 335) | type GuildMemberListQuery = z.infer; FILE: packages/schema/src/domains/guild/GuildResponseSchemas.tsx function normalizeGuildFeatures (line 47) | function normalizeGuildFeatures(features: Array): Array { type GuildResponse (line 153) | type GuildResponse = z.infer; type GuildPartialResponse (line 172) | type GuildPartialResponse = z.infer; type GuildVanityURLResponse (line 179) | type GuildVanityURLResponse = z.infer; type GuildListResponse (line 182) | type GuildListResponse = z.infer; type Guild (line 184) | interface Guild { FILE: packages/schema/src/domains/guild/GuildRoleSchemas.tsx type GuildRoleResponse (line 36) | type GuildRoleResponse = z.infer; type GuildRoleListResponse (line 39) | type GuildRoleListResponse = z.infer; type GuildRole (line 41) | interface GuildRole { FILE: packages/schema/src/domains/instance/InstanceSchemas.tsx type LimitFilterResponse (line 27) | type LimitFilterResponse = z.infer; type LimitRuleResponse (line 36) | type LimitRuleResponse = z.infer; type LimitConfigResponse (line 44) | type LimitConfigResponse = z.infer; type AppPublicConfigResponse (line 49) | type AppPublicConfigResponse = z.infer; type InstanceInfoResponse (line 122) | type InstanceInfoResponse = z.infer; type WellKnownFluxerResponse (line 195) | type WellKnownFluxerResponse = z.infer; FILE: packages/schema/src/domains/invite/InviteSchemas.tsx type ChannelInviteCreateRequest (line 57) | type ChannelInviteCreateRequest = z.infer; type GuildInviteResponse (line 99) | type GuildInviteResponse = z.infer; type GroupDmInviteResponse (line 114) | type GroupDmInviteResponse = z.infer; type PackInviteResponse (line 141) | type PackInviteResponse = z.infer; type PackInviteMetadataResponse (line 150) | type PackInviteMetadataResponse = z.infer; type InviteMetadataResponseSchema (line 181) | type InviteMetadataResponseSchema = z.infer; type KlipyLocaleQuery (line 37) | type KlipyLocaleQuery = z.infer; type KlipyRegisterShareRequest (line 45) | type KlipyRegisterShareRequest = z.infer; type KlipyGifResponse (line 57) | type KlipyGifResponse = z.infer; type KlipyCategoryTagResponse (line 65) | type KlipyCategoryTagResponse = z.infer; type KlipyFeaturedResponse (line 72) | type KlipyFeaturedResponse = z.infer; FILE: packages/schema/src/domains/media_proxy/MediaProxySchemas.tsx type ImageSize (line 27) | type ImageSize = z.infer; type ImageFormat (line 30) | type ImageFormat = z.infer; type ImageQuality (line 33) | type ImageQuality = z.infer; type ImageQueryParams (line 41) | type ImageQueryParams = z.infer; type ExternalMediaQueryParams (line 50) | type ExternalMediaQueryParams = z.infer; type MetadataRequestExternal (line 58) | type MetadataRequestExternal = z.infer; type MetadataRequestUpload (line 65) | type MetadataRequestUpload = z.infer; type MetadataRequestBase64 (line 72) | type MetadataRequestBase64 = z.infer; type MetadataRequestS3 (line 81) | type MetadataRequestS3 = z.infer; type MetadataRequest (line 89) | type MetadataRequest = z.infer; type MetadataResponse (line 106) | type MetadataResponse = z.infer; type ThumbnailRequestBody (line 111) | type ThumbnailRequestBody = z.infer; type ThumbnailResponse (line 117) | type ThumbnailResponse = z.infer; type FrameRequestUpload (line 123) | type FrameRequestUpload = z.infer; type FrameRequestS3 (line 130) | type FrameRequestS3 = z.infer; type FrameRequest (line 133) | type FrameRequest = z.infer; type ExtractedFrame (line 140) | type ExtractedFrame = z.infer; type FrameResponse (line 145) | type FrameResponse = z.infer; FILE: packages/schema/src/domains/meme/MemeSchemas.tsx type CreateFavoriteMemeBodySchema (line 40) | type CreateFavoriteMemeBodySchema = z.infer; type FavoriteMemeListResponse (line 89) | type FavoriteMemeListResponse = z.infer; FILE: packages/schema/src/domains/message/AttachmentSchemas.tsx type ClientAttachmentRequest (line 52) | type ClientAttachmentRequest = z.infer; type ClientAttachmentReferenceRequest (line 60) | type ClientAttachmentReferenceRequest = z.infer; type EmbedFooterResponse (line 39) | type EmbedFooterResponse = z.infer; type EmbedMediaResponse (line 59) | type EmbedMediaResponse = z.infer; type EmbedFieldResponse (line 67) | type EmbedFieldResponse = z.infer; type MessageEmbedChildResponseData (line 69) | interface MessageEmbedChildResponseData { type MessageEmbedResponseData (line 87) | interface MessageEmbedResponseData extends MessageEmbedChildResponseData { type MessageEmbedChildResponse (line 109) | type MessageEmbedChildResponse = z.infer; type MessageEmbedResponse (line 119) | type MessageEmbedResponse = z.infer; type EmbedAuthor (line 121) | interface EmbedAuthor { type EmbedFooter (line 128) | interface EmbedFooter { type EmbedMedia (line 134) | interface EmbedMedia { type EmbedField (line 148) | interface EmbedField { type MessageEmbed (line 154) | interface MessageEmbed { type MessageEmbedChild (line 175) | interface MessageEmbedChild { FILE: packages/schema/src/domains/message/MessageRequestSchemas.tsx type RichEmbedAuthorRequest (line 46) | type RichEmbedAuthorRequest = z.infer; type RichEmbedMediaRequest (line 53) | type RichEmbedMediaRequest = z.infer; type RichEmbedFooterRequest (line 60) | type RichEmbedFooterRequest = z.infer; type RichEmbedFieldRequest (line 68) | type RichEmbedFieldRequest = z.infer; type RichEmbedRequest (line 83) | type RichEmbedRequest = z.infer; type MessageAuthorType (line 97) | type MessageAuthorType = z.infer; type MessageContentType (line 117) | type MessageContentType = z.infer; type MessageEmbedType (line 132) | type MessageEmbedType = z.infer; type MessageSortField (line 145) | type MessageSortField = z.infer; type MessageSortOrder (line 158) | type MessageSortOrder = z.infer; type MessageSearchScope (line 179) | type MessageSearchScope = z.infer; type MessageSearchRequest (line 235) | type MessageSearchRequest = z.infer; type GlobalSearchMessagesRequest (line 245) | type GlobalSearchMessagesRequest = z.infer; type MessageUpdateRequestSchemaType (line 288) | type MessageUpdateRequestSchemaType = z.infer; type BulkDeleteMessagesRequest (line 305) | type BulkDeleteMessagesRequest = z.infer; type MessageAckRequest (line 312) | type MessageAckRequest = z.infer; type ChannelPinsQuerySchema (line 324) | type ChannelPinsQuerySchema = z.infer; type ReactionUsersQuerySchema (line 330) | type ReactionUsersQuerySchema = z.infer; FILE: packages/schema/src/domains/message/MessageResponseSchemas.tsx type MessageAttachmentResponse (line 60) | type MessageAttachmentResponse = z.infer; type MessageReferenceResponse (line 69) | type MessageReferenceResponse = z.infer; type ReactionEmojiResponse (line 77) | type ReactionEmojiResponse = z.infer; type MessageReactionResponse (line 85) | type MessageReactionResponse = z.infer; type MessageStickerResponse (line 93) | type MessageStickerResponse = z.infer; type MessageSnapshotResponse (line 120) | type MessageSnapshotResponse = z.infer; type MessageCallResponse (line 127) | type MessageCallResponse = z.infer; type MessageBaseResponse (line 167) | type MessageBaseResponse = z.infer; type MessageResponse (line 169) | interface MessageResponse extends MessageBaseResponse { type ChannelPinMessageResponse (line 183) | type ChannelPinMessageResponse = z.infer; type ChannelPinResponse (line 190) | type ChannelPinResponse = z.infer; type ChannelPinsResponse (line 197) | type ChannelPinsResponse = z.infer; type ReactionUsersListResponse (line 200) | type ReactionUsersListResponse = z.infer; type MessageSearchResultsResponse (line 212) | type MessageSearchResultsResponse = z.infer; type MessageListResponse (line 225) | type MessageListResponse = z.infer; type MessageReference (line 227) | interface MessageReference { type ReactionEmoji (line 234) | interface ReactionEmoji { type MessageReaction (line 241) | interface MessageReaction { type MessageAttachment (line 252) | interface MessageAttachment { type MessageCall (line 273) | interface MessageCall { type MessageSnapshot (line 278) | interface MessageSnapshot { type MessageStickerItem (line 286) | interface MessageStickerItem { type AllowedMentions (line 292) | interface AllowedMentions { type ChannelMention (line 299) | interface ChannelMention { type MessageMention (line 307) | interface MessageMention extends UserPartial { type Message (line 311) | interface Message { FILE: packages/schema/src/domains/message/ScheduledMessageSchemas.tsx type ScheduledMessageAllowedMentionsSchema (line 46) | type ScheduledMessageAllowedMentionsSchema = z.infer; type ScheduledMessageResponseSchema (line 119) | type ScheduledMessageResponseSchema = z.infer; type MessageReferenceRequest (line 62) | type MessageReferenceRequest = z.infer; FILE: packages/schema/src/domains/oauth/OAuthSchemas.tsx type OAuthScope (line 53) | type OAuthScope = (typeof OAuthScopes)[number]; type AuthorizeRequest (line 102) | type AuthorizeRequest = z.infer; type AuthorizeConsentRequest (line 114) | type AuthorizeConsentRequest = z.infer; type TokenRequest (line 132) | type TokenRequest = z.infer; type IntrospectRequestForm (line 140) | type IntrospectRequestForm = z.infer; type RevokeRequestForm (line 160) | type RevokeRequestForm = z.infer; type ApplicationBotResponse (line 181) | type ApplicationBotResponse = z.infer; type ApplicationResponse (line 193) | type ApplicationResponse = z.infer; type ApplicationListResponse (line 197) | type ApplicationListResponse = z.infer; type BotTokenResetResponse (line 204) | type BotTokenResetResponse = z.infer; type BotProfileResponse (line 215) | type BotProfileResponse = z.infer; type OAuth2TokenResponse (line 225) | type OAuth2TokenResponse = z.infer; type OAuth2UserInfoResponse (line 244) | type OAuth2UserInfoResponse = z.infer; type OAuth2IntrospectResponse (line 257) | type OAuth2IntrospectResponse = z.infer; type OAuth2ConsentResponse (line 263) | type OAuth2ConsentResponse = z.infer; type OAuth2MeResponse (line 297) | type OAuth2MeResponse = z.infer; type ApplicationPublicResponse (line 310) | type ApplicationPublicResponse = z.infer; type ApplicationsMeResponse (line 323) | type ApplicationsMeResponse = z.infer; type OAuth2AuthorizationResponse (line 339) | type OAuth2AuthorizationResponse = z.infer; type ApplicationUpdateRequest (line 409) | type ApplicationUpdateRequest = z.infer; type BotProfileUpdateRequest (line 424) | type BotProfileUpdateRequest = z.infer; FILE: packages/schema/src/domains/oauth2/FederationOAuth2Schemas.tsx constant FEDERATION_SCOPES (line 23) | const FEDERATION_SCOPES = { type FederationScopeKey (line 32) | type FederationScopeKey = keyof typeof FEDERATION_SCOPES; type FederationScope (line 43) | type FederationScope = z.infer; type FederationOAuth2AuthorizeRequest (line 64) | type FederationOAuth2AuthorizeRequest = z.infer; type PackCreateRequest (line 51) | type PackCreateRequest = z.infer; type PackUpdateRequest (line 58) | type PackUpdateRequest = z.infer; type PackType (line 60) | type PackType = z.infer; type PackSummaryResponse (line 73) | type PackSummaryResponse = z.infer; type PackDashboardSectionResponse (line 82) | type PackDashboardSectionResponse = z.infer; FILE: packages/schema/src/domains/premium/GiftCodeSchemas.tsx type CreateCheckoutSessionRequest (line 28) | type CreateCheckoutSessionRequest = z.infer; type GiftCodeMetadataResponse (line 54) | type GiftCodeMetadataResponse = z.infer; FILE: packages/schema/src/domains/premium/PremiumSchemas.tsx type WebhookReceivedResponse (line 26) | type WebhookReceivedResponse = z.infer; type UrlResponse (line 31) | type UrlResponse = z.infer; type PriceIdsResponse (line 40) | type PriceIdsResponse = z.infer; type PriceIdsQueryRequest (line 45) | type PriceIdsQueryRequest = z.infer; FILE: packages/schema/src/domains/relay/RelaySchemas.tsx type RelayInfoResponse (line 36) | type RelayInfoResponse = z.infer; type RelayWithDistanceResponse (line 41) | type RelayWithDistanceResponse = z.infer; type RelayListResponse (line 47) | type RelayListResponse = z.infer; type RelayStatusResponse (line 59) | type RelayStatusResponse = z.infer; type RelayHeartbeatResponse (line 64) | type RelayHeartbeatResponse = z.infer; type RelayDeletedResponse (line 69) | type RelayDeletedResponse = z.infer; type RegisterRelayRequest (line 80) | type RegisterRelayRequest = z.infer; type RelayIdParam (line 85) | type RelayIdParam = z.infer; type RelayListQuery (line 92) | type RelayListQuery = z.infer; type HealthCheckResponse (line 98) | type HealthCheckResponse = z.infer; FILE: packages/schema/src/domains/report/ReportSchemas.tsx type ReportResponse (line 90) | type ReportResponse = z.infer; type OkResponse (line 95) | type OkResponse = z.infer; type TicketResponse (line 100) | type TicketResponse = z.infer; constant FLUXER_TAG_REGEX (line 102) | const FLUXER_TAG_REGEX = /^([^#]{1,32})#([0-9]{4})$/; constant FLUXER_TAG_TYPE (line 104) | const FLUXER_TAG_TYPE = z constant EU_COUNTRY_CODE_ENUM (line 111) | const EU_COUNTRY_CODE_ENUM = createNamedStringLiteralUnion( type ReportMessageRequest (line 150) | type ReportMessageRequest = z.infer; type ReportUserRequest (line 158) | type ReportUserRequest = z.infer; type ReportGuildRequest (line 165) | type ReportGuildRequest = z.infer; constant DSA_VERIFICATION_CODE_TYPE (line 167) | const DSA_VERIFICATION_CODE_TYPE = createStringType(9, 9).refine( type DsaReportEmailSendRequest (line 175) | type DsaReportEmailSendRequest = z.infer; type DsaReportEmailVerifyRequest (line 181) | type DsaReportEmailVerifyRequest = z.infer; type DsaReportUserRequest (line 213) | type DsaReportUserRequest = z.infer; type DsaReportGuildRequest (line 221) | type DsaReportGuildRequest = z.infer; type DsaReportRequest (line 228) | type DsaReportRequest = z.infer; FILE: packages/schema/src/domains/rpc/RpcSchemas.tsx type RpcGuildCollectionType (line 40) | type RpcGuildCollectionType = z.infer; type ReadStateResponse (line 49) | type ReadStateResponse = z.infer; type RpcRequest (line 182) | type RpcRequest = z.infer; type RpcResponseSessionData (line 201) | type RpcResponseSessionData = z.infer; type RpcResponseGuildCollectionData (line 215) | type RpcResponseGuildCollectionData = z.infer; FILE: packages/schema/src/domains/tenor/TenorSchemas.tsx type TenorSearchQuery (line 31) | type TenorSearchQuery = z.infer; type TenorLocaleQuery (line 37) | type TenorLocaleQuery = z.infer; type TenorRegisterShareRequest (line 45) | type TenorRegisterShareRequest = z.infer; type TenorGifResponse (line 57) | type TenorGifResponse = z.infer; type TenorCategoryTagResponse (line 65) | type TenorCategoryTagResponse = z.infer; type TenorFeaturedResponse (line 72) | type TenorFeaturedResponse = z.infer; FILE: packages/schema/src/domains/tests/GuildChannelOrdering.test.tsx type Ch (line 29) | type Ch = ChannelOrderingChannel; FILE: packages/schema/src/domains/theme/ThemeSchemas.tsx type ThemeCreateRequest (line 27) | type ThemeCreateRequest = z.infer; type ThemeCreateResponse (line 33) | type ThemeCreateResponse = z.infer; FILE: packages/schema/src/domains/user/UserHarvestSchemas.tsx type HarvestCreationResponse (line 68) | type HarvestCreationResponse = z.infer; type HarvestDownloadUrlResponse (line 77) | type HarvestDownloadUrlResponse = z.infer; type UserUpdateWithVerificationRequest (line 118) | type UserUpdateWithVerificationRequest = z.infer; type EmailChangeVerifyOriginalRequest (line 130) | type EmailChangeVerifyOriginalRequest = z.infer; type RelationshipNicknameUpdateRequest (line 187) | type RelationshipNicknameUpdateRequest = z.infer; type CreatePrivateChannelRequest (line 246) | type CreatePrivateChannelRequest = z.infer; type UserGuildSettingsUpdateRequest (line 379) | type UserGuildSettingsUpdateRequest = z.infer; type UserTagCheckQueryRequest (line 388) | type UserTagCheckQueryRequest = z.infer; type UserProfileQueryRequest (line 395) | type UserProfileQueryRequest = z.infer; type UserNoteUpdateRequest (line 400) | type UserNoteUpdateRequest = z.infer; type PushSubscribeRequest (line 410) | type PushSubscribeRequest = z.infer; type SubscriptionIdParam (line 415) | type SubscriptionIdParam = z.infer; type PreloadMessagesRequest (line 420) | type PreloadMessagesRequest = z.infer; type UserMentionsQueryRequest (line 431) | type UserMentionsQueryRequest = z.infer; type UserSavedMessagesQueryRequest (line 438) | type UserSavedMessagesQueryRequest = z.infer; FILE: packages/schema/src/domains/user/UserResponseSchemas.tsx type UserPartialResponse (line 77) | type UserPartialResponse = z.infer; type UserPrivateResponse (line 135) | type UserPrivateResponse = z.infer; type EmailChangeStartResponse (line 154) | type EmailChangeStartResponse = z.infer; type EmailChangeVerifyOriginalResponse (line 159) | type EmailChangeVerifyOriginalResponse = z.infer; type UserSettingsResponse (line 283) | type UserSettingsResponse = z.infer; type UserGuildSettingsResponse (line 321) | type UserGuildSettingsResponse = z.infer; type RelationshipResponse (line 331) | type RelationshipResponse = z.infer; type RelationshipListResponse (line 337) | type RelationshipListResponse = z.infer; type RequiredAction (line 339) | type RequiredAction = type BackupCode (line 349) | interface BackupCode { type PendingBulkMessageDeletion (line 354) | interface PendingBulkMessageDeletion { type UserProfile (line 360) | interface UserProfile { type UserPartial (line 368) | interface UserPartial { type UserPrivate (line 380) | interface UserPrivate extends UserPartial, UserProfile { type User (line 412) | type User = UserPartial & Partial; type SavedMessageStatus (line 424) | type SavedMessageStatus = z.infer; type SavedMessageEntryResponse (line 434) | type SavedMessageEntryResponse = z.infer; type SavedMessageEntryListResponse (line 437) | type SavedMessageEntryListResponse = z.infer; type UserTagCheckResponse (line 447) | type UserTagCheckResponse = z.infer; type UserProfileDataResponse (line 456) | type UserProfileDataResponse = z.infer; type GuildMemberProfileDataResponse (line 467) | type GuildMemberProfileDataResponse = z.infer; type UserProfileFullResponse (line 490) | type UserProfileFullResponse = z.infer; type UserNotesRecordResponse (line 495) | type UserNotesRecordResponse = z.infer; type UserNoteResponse (line 500) | type UserNoteResponse = z.infer; type PushSubscribeResponse (line 505) | type PushSubscribeResponse = z.infer; type PushSubscriptionItemResponse (line 511) | type PushSubscriptionItemResponse = z.infer; FILE: packages/schema/src/domains/webhook/GitHubWebhookSchemas.tsx type GitHubWebhook (line 144) | type GitHubWebhook = z.infer; FILE: packages/schema/src/domains/webhook/SentryWebhookSchemas.tsx type SentryWebhook (line 75) | type SentryWebhook = z.infer; FILE: packages/schema/src/domains/webhook/WebhookRequestSchemas.tsx type WebhookCreateRequest (line 50) | type WebhookCreateRequest = z.infer; type WebhookUpdateRequest (line 62) | type WebhookUpdateRequest = z.infer; type WebhookTokenUpdateRequest (line 74) | type WebhookTokenUpdateRequest = z.infer; type WebhookAttachmentRequest (line 100) | type WebhookAttachmentRequest = z.infer; type WebhookMessageRequest (line 126) | type WebhookMessageRequest = z.infer; type WebhookExecuteQueryRequest (line 132) | type WebhookExecuteQueryRequest = z.infer; FILE: packages/schema/src/domains/webhook/WebhookSchemas.tsx type WebhookTokenResponse (line 34) | type WebhookTokenResponse = z.infer; type WebhookResponse (line 40) | type WebhookResponse = z.infer; type WebhookListResponse (line 43) | type WebhookListResponse = z.infer; type Webhook (line 45) | interface Webhook { FILE: packages/schema/src/primitives/ChannelValidators.tsx constant WHITESPACE_REGEX (line 65) | const WHITESPACE_REGEX = /\s+/g; constant MULTIPLE_HYPHENS_REGEX (line 66) | const MULTIPLE_HYPHENS_REGEX = /-{2,}/g; constant VANITY_URL_REGEX (line 67) | const VANITY_URL_REGEX = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/; constant DISALLOWED_CHARS (line 69) | const DISALLOWED_CHARS = new Set(' !"#$%&\'()*+,/:;<=>?@[\\]^`{|}~'); function sanitizeChannelName (line 71) | function sanitizeChannelName(value: string): string { constant AUDIT_LOG_REASON_MAX_LENGTH (line 163) | const AUDIT_LOG_REASON_MAX_LENGTH = 512; FILE: packages/schema/src/primitives/EmojiValidators.tsx constant EMOJI_REGEX (line 22) | const EMOJI_REGEX = emojiRegex(); constant REGIONAL_INDICATOR_START (line 24) | const REGIONAL_INDICATOR_START = 0x1f1e6; constant REGIONAL_INDICATOR_END (line 25) | const REGIONAL_INDICATOR_END = 0x1f1ff; function isSingleRegionalIndicator (line 27) | function isSingleRegionalIndicator(value: string): boolean { function isValidSingleUnicodeEmoji (line 36) | function isValidSingleUnicodeEmoji(value: string): boolean { FILE: packages/schema/src/primitives/FileValidators.tsx constant WHITESPACE_REGEX (line 28) | const WHITESPACE_REGEX = /\s+/g; constant NON_FILENAME_CHARS_REGEX (line 29) | const NON_FILENAME_CHARS_REGEX = /[^\p{L}\p{N}\p{M}_.-]/gu; constant FILENAME_SAFE_REGEX (line 30) | const FILENAME_SAFE_REGEX = /^[\p{L}\p{N}\p{M}_.-]+$/u; constant WINDOWS_RESERVED_NAMES (line 31) | const WINDOWS_RESERVED_NAMES = /^(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])(\.|... function isValidBase64 (line 33) | function isValidBase64(value: string): boolean { function normalizeFilename (line 83) | function normalizeFilename(value: string): string { function createBase64StringType (line 127) | function createBase64StringType(minLength = 1, maxLength = 256) { FILE: packages/schema/src/primitives/LocaleSchema.tsx type Locale (line 64) | type Locale = FILE: packages/schema/src/primitives/QueryValidators.tsx constant TRUE_VALUES (line 23) | const TRUE_VALUES = ['true', 'True', '1']; constant ISO_TIMESTAMP_REGEX (line 24) | const ISO_TIMESTAMP_REGEX = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d... function createQueryIntegerType (line 33) | function createQueryIntegerType({defaultValue = 0, minValue = 0, maxValu... FILE: packages/schema/src/primitives/SchemaPrimitives.tsx function withOpenApiType (line 24) | function withOpenApiType(schema: T, typeName: stri... function withFieldDescription (line 29) | function withFieldDescription(schema: T, fieldDe... constant RTL_OVERRIDE_REGEX (line 35) | const RTL_OVERRIDE_REGEX = /\u202E/g; constant FORM_FEED_REGEX (line 37) | const FORM_FEED_REGEX = /\u000C/g; constant MAX_STRING_PROCESSING_LENGTH (line 39) | const MAX_STRING_PROCESSING_LENGTH = 10_000; function normalizeString (line 41) | function normalizeString(value: string): string { constant SNOWFLAKE_REGEX (line 133) | const SNOWFLAKE_REGEX = /^(0|[1-9][0-9]*)$/; constant UNSIGNED_INT64_STRING_REGEX (line 134) | const UNSIGNED_INT64_STRING_REGEX = /^\d+$/; constant HEX_STRING_16_REGEX (line 140) | const HEX_STRING_16_REGEX = /^[a-f0-9]{16}$/; constant HEX_STRING_32_REGEX (line 144) | const HEX_STRING_32_REGEX = /^[a-f0-9]{32}$/; constant INTEGER_STRING_REGEX (line 201) | const INTEGER_STRING_REGEX = /^[+-]?\d+$/; function coerceNumericStringToNumber (line 203) | function coerceNumericStringToNumber(value: unknown): unknown { function coerceNumberFromString (line 217) | function coerceNumberFromString(schema: T) { function withStringLengthRangeValidation (line 221) | function withStringLengthRangeValidation( function createStringType (line 238) | function createStringType(minLength = 1, maxLength = 256) { function createUnboundedStringType (line 247) | function createUnboundedStringType() { constant C0_C1_CTRL_REGEX (line 251) | const C0_C1_CTRL_REGEX = constant JOIN_CONTROLS_REGEX (line 255) | const JOIN_CONTROLS_REGEX = /(?:\u200C|\u200D)/g; constant WJ_BOM_REGEX (line 257) | const WJ_BOM_REGEX = /(?:\u2060|\uFEFF)/g; constant BIDI_CTRL_REGEX (line 259) | const BIDI_CTRL_REGEX = /[\u200E\u200F\u202A-\u202E\u2066-\u2069]/g; constant MISC_INVISIBLES_REGEX (line 261) | const MISC_INVISIBLES_REGEX = /[\u00AD\u180E\uFFFE\uFFFF]/g; constant TAG_CHARS_REGEX (line 263) | const TAG_CHARS_REGEX = /[\u{E0000}-\u{E007F}]/gu; constant VARIATION_SELECTORS_BASIC (line 265) | const VARIATION_SELECTORS_BASIC = /[\uFE00-\uFE0F]/g; constant VARIATION_SELECTORS_IDEOGRAPHIC (line 266) | const VARIATION_SELECTORS_IDEOGRAPHIC = /[\u{E0100}-\u{E01EF}]/gu; constant UNICODE_SPACES_REGEX (line 268) | const UNICODE_SPACES_REGEX = /[\s\u00A0\u1680\u2000-\u200A\u2028\u2029\u... function removeStandaloneSurrogates (line 270) | function removeStandaloneSurrogates(value: string): string { function normalizeWhitespace (line 285) | function normalizeWhitespace(s: string): string { function stripInvisibles (line 292) | function stripInvisibles(s: string): string { function stripVariationSelectors (line 305) | function stripVariationSelectors(s: string): string { type EnumEntryJson (line 312) | interface EnumEntryJson { function createNamedLiteral (line 318) | function createNamedLiteral(value: T, name: string, de... function createNamedLiteralUnion (line 324) | function createNamedLiteralUnion( function createNamedStringLiteral (line 340) | function createNamedStringLiteral(value: T, name: stri... function createNamedStringLiteralUnion (line 346) | function createNamedStringLiteralUnion( function createFlexibleStringLiteralUnion (line 362) | function createFlexibleStringLiteralUnion( function createInt32EnumType (line 381) | function createInt32EnumType( type BitflagConstantsObject (line 396) | type BitflagConstantsObject = Readonly>; type BitflagDescriptionsObject (line 397) | type BitflagDescriptionsObject = Reado... type BitflagEntryJson (line 399) | interface BitflagEntryJson { function formatBitflagAnnotation (line 405) | function formatBitflagAnnotation( function createBitflagStringType (line 420) | function createBitflagStringType( function createBitflagInt32Type (line 434) | function createBitflagInt32Type( function createPermissionStringType (line 448) | function createPermissionStringType( FILE: packages/schema/src/primitives/UrlValidators.tsx constant PROTOCOLS (line 25) | const PROTOCOLS = ['http', 'https']; constant FILENAME_SAFE_REGEX (line 26) | const FILENAME_SAFE_REGEX = /^[\p{L}\p{N}\p{M}_.-]+$/u; constant URL_VALIDATOR_OPTIONS (line 28) | const URL_VALIDATOR_OPTIONS = { function setIsDevelopment (line 41) | function setIsDevelopment(value: boolean): void { function createUrlSchema (line 45) | function createUrlSchema(allowFragments: boolean) { FILE: packages/schema/src/primitives/UserValidators.tsx constant EMAIL_LOCAL_REGEX (line 41) | const EMAIL_LOCAL_REGEX = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+$/; constant DISCRIMINATOR_REGEX (line 42) | const DISCRIMINATOR_REGEX = /^\d{1,4}$/; constant FLUXER_TAG_REGEX (line 43) | const FLUXER_TAG_REGEX = /^[a-zA-Z0-9_]+$/; constant PHONE_E164_REGEX (line 45) | const PHONE_E164_REGEX = /^\+[1-9]\d{1,14}$/; function sanitizeUsername (line 47) | function sanitizeUsername(value: string): string { FILE: packages/sentry/src/Sentry.tsx function initSentry (line 31) | function initSentry(config?: SentryConfig): void { function captureException (line 35) | function captureException(error: Error, context?: SentryContext): void { function captureMessage (line 39) | function captureMessage(message: string, level: SeverityLevel = 'info', ... function flushSentry (line 43) | async function flushSentry(timeout = 2000): Promise { function setUser (line 47) | function setUser(user: SentryUser | null): void { FILE: packages/sentry/src/SentryConfig.tsx constant DEFAULT_ENVIRONMENT (line 22) | const DEFAULT_ENVIRONMENT = 'production'; constant DEFAULT_PRODUCTION_SAMPLE_RATE (line 23) | const DEFAULT_PRODUCTION_SAMPLE_RATE = 0.1; constant DEFAULT_NON_PRODUCTION_SAMPLE_RATE (line 24) | const DEFAULT_NON_PRODUCTION_SAMPLE_RATE = 1.0; function resolveSentryInitConfig (line 26) | function resolveSentryInitConfig(config?: SentryConfig): SentryClientIni... function resolveEnvironment (line 46) | function resolveEnvironment(environment?: string): string { function resolveSampleRate (line 55) | function resolveSampleRate(sampleRate: number | undefined, environment: ... function isValidSampleRate (line 67) | function isValidSampleRate(sampleRate: number | undefined): sampleRate i... function resolveBuildContext (line 71) | function resolveBuildContext(config?: SentryConfig): SentryBuildContext { FILE: packages/sentry/src/SentryContracts.tsx type SentryConfig (line 22) | interface SentryConfig { type SentryContext (line 34) | interface SentryContext { type SentryUser (line 38) | interface SentryUser { type SentryBuildContext (line 45) | interface SentryBuildContext { type SentryClientInitConfig (line 52) | interface SentryClientInitConfig { type SentryInitLogger (line 62) | interface SentryInitLogger { type ISentryClient (line 67) | interface ISentryClient { FILE: packages/sentry/src/SentryLogger.tsx method info (line 23) | info(objOrMsg: Record | string, msg?: string): void { FILE: packages/sentry/src/SentryNodeClient.tsx method init (line 30) | init(config: SentryClientInitConfig): void { method captureException (line 63) | captureException(error: Error, context?: SentryContext): void { method captureMessage (line 66) | captureMessage(message: string, level: Sentry.SeverityLevel, context?: S... method flush (line 72) | async flush(timeout: number): Promise { method setUser (line 75) | setUser(user: SentryUser | null): void { function toBuildContextEntries (line 80) | function toBuildContextEntries(buildContext: SentryBuildContext): Array<... FILE: packages/sentry/src/SentryService.tsx type SentryServiceDependencies (line 31) | interface SentryServiceDependencies { class SentryService (line 36) | class SentryService { method constructor (line 41) | public constructor(dependencies: SentryServiceDependencies) { method init (line 46) | public init(config?: SentryConfig): void { method captureException (line 73) | public captureException(error: Error, context?: SentryContext): void { method captureMessage (line 81) | public captureMessage(message: string, level: SeverityLevel = 'info', ... method flush (line 89) | public async flush(timeout = 2000): Promise { method setUser (line 97) | public setUser(user: SentryUser | null): void { FILE: packages/sms/src/ISmsService.tsx type ISmsService (line 20) | interface ISmsService { FILE: packages/sms/src/SmsService.tsx class SmsService (line 24) | class SmsService implements ISmsService { method constructor (line 27) | constructor(provider: ISmsProvider = new UnavailableSmsProvider()) { method startVerification (line 31) | async startVerification(phone: string): Promise { method checkVerification (line 35) | async checkVerification(phone: string, code: string): Promise { FILE: packages/sms/src/SmsVerificationUtils.tsx function buildSmsVerificationCacheKey (line 28) | function buildSmsVerificationCacheKey(phone: string): string { function generateSmsVerificationCode (line 32) | function generateSmsVerificationCode(): string { function buildSmsVerificationMessage (line 38) | function buildSmsVerificationMessage(code: string, ttlSeconds: number): ... function timingSafeEqualStrings (line 43) | function timingSafeEqualStrings(left: string, right: string): boolean { function maskPhoneNumber (line 54) | function maskPhoneNumber(phone: string): string { FILE: packages/sms/src/__tests__/SmsService.test.tsx function createInMemoryProvider (line 27) | function createInMemoryProvider(): ISmsProvider & { FILE: packages/sms/src/__tests__/TwilioSmsProvider.test.tsx type TwilioRequest (line 25) | interface TwilioRequest { function getCapturedRequest (line 31) | function getCapturedRequest(request: TwilioRequest | null): TwilioRequest { FILE: packages/sms/src/providers/ISmsProvider.tsx type ISmsProvider (line 20) | interface ISmsProvider { FILE: packages/sms/src/providers/SmsProviderFactory.tsx type BaseSmsProviderFactoryParams (line 26) | interface BaseSmsProviderFactoryParams { type CreateUnavailableSmsProviderParams (line 30) | interface CreateUnavailableSmsProviderParams extends BaseSmsProviderFact... type CreateTestSmsProviderParams (line 34) | interface CreateTestSmsProviderParams extends BaseSmsProviderFactoryPara... type CreateTwilioSmsProviderParams (line 39) | interface CreateTwilioSmsProviderParams extends BaseSmsProviderFactoryPa... type CreateSmsProviderParams (line 45) | type CreateSmsProviderParams = function createSmsProvider (line 50) | function createSmsProvider(params: CreateSmsProviderParams): ISmsProvider { FILE: packages/sms/src/providers/TestSmsProvider.tsx type TestSmsProviderOptions (line 26) | interface TestSmsProviderOptions { class TestSmsProvider (line 31) | class TestSmsProvider implements ISmsProvider { method constructor (line 35) | constructor({logger, verificationCode}: TestSmsProviderOptions = {}) { method startVerification (line 40) | async startVerification(phone: string): Promise { method checkVerification (line 46) | async checkVerification(phone: string, code: string): Promise { FILE: packages/sms/src/providers/TwilioSmsProvider.tsx constant TWILIO_INVALID_PHONE_ERROR_CODE (line 27) | const TWILIO_INVALID_PHONE_ERROR_CODE = 21211; type TwilioErrorResponse (line 29) | interface TwilioErrorResponse { type TwilioVerificationCheckResponse (line 34) | interface TwilioVerificationCheckResponse { type TwilioSmsProviderConfig (line 38) | interface TwilioSmsProviderConfig { type TwilioSmsProviderDependencies (line 45) | interface TwilioSmsProviderDependencies { class TwilioSmsProvider (line 51) | class TwilioSmsProvider implements ISmsProvider { method constructor (line 57) | constructor({config, logger, fetchFn = fetch}: TwilioSmsProviderDepend... method startVerification (line 64) | async startVerification(phone: string): Promise { method checkVerification (line 91) | async checkVerification(phone: string, code: string): Promise { method requestTwilio (line 105) | private async requestTwilio( method parseErrorBody (line 121) | private async parseErrorBody(response: Response): Promise { method checkVerification (line 28) | async checkVerification(_phone: string, _code: string): Promise number): bigint { class SnowflakeGenerator (line 144) | class SnowflakeGenerator { method constructor (line 150) | constructor(workerIdOrOptions: number | SnowflakeGeneratorOptions = 0) { method generate (line 156) | generate(): bigint { method getWorkerId (line 176) | getWorkerId(): number { method waitUntilNextTimestamp (line 180) | private waitUntilNextTimestamp(): bigint { function createSnowflakeGenerator (line 191) | function createSnowflakeGenerator(options: SnowflakeGeneratorOptions = {... function setDefaultSnowflakeGenerator (line 195) | function setDefaultSnowflakeGenerator(options: SnowflakeGeneratorOptions... function resetDefaultSnowflakeGenerator (line 199) | function resetDefaultSnowflakeGenerator(): void { function generateSnowflake (line 203) | function generateSnowflake(workerIdOrOptions?: number | SnowflakeGenerat... function createSnowflake (line 215) | function createSnowflake(options: CreateSnowflakeOptions): bigint { function createSnowflakeFromTimestamp (line 222) | function createSnowflakeFromTimestamp(timestamp: number | bigint, worker... function snowflakeToDate (line 226) | function snowflakeToDate(snowflake: bigint): Date { function parseSnowflake (line 231) | function parseSnowflake(snowflake: bigint): SnowflakeParts { function isValidSnowflake (line 241) | function isValidSnowflake(value: unknown): value is bigint { FILE: packages/snowflake/src/SnowflakeBuckets.tsx constant SNOWFLAKE_BUCKET_SIZE_MS (line 23) | const SNOWFLAKE_BUCKET_SIZE_MS = BigInt(ms('10 days')); function getRelativeTimestampForBucket (line 25) | function getRelativeTimestampForBucket(snowflake: bigint | null): bigint { function createBucketRange (line 33) | function createBucketRange(startBucket: number, endBucket: number): Arra... function makeBucket (line 48) | function makeBucket(snowflake: bigint | null): number { function makeBucketString (line 53) | function makeBucketString(snowflake: string | null): number { function makeBuckets (line 61) | function makeBuckets(startId: bigint | null, endId: bigint | null = null... function makeBucketsString (line 67) | function makeBucketsString(startId: string | null, endId: string | null ... FILE: packages/snowflake/src/SnowflakeUtils.tsx constant FLUXER_EPOCH_NUMBER (line 28) | const FLUXER_EPOCH_NUMBER = Number(FLUXER_EPOCH); function extractTimestampWithEpoch (line 30) | function extractTimestampWithEpoch(snowflake: bigint, epoch: bigint): nu... function toClampedTimestamp (line 34) | function toClampedTimestamp(timestamp: number): number { function assertValidWorkerId (line 42) | function assertValidWorkerId(workerId: number): void { function assertValidSequenceValue (line 53) | function assertValidSequenceValue(sequence: number): void { function extractTimestamp (line 63) | function extractTimestamp(snowflake: string): number { function extractTimestampBigInt (line 71) | function extractTimestampBigInt(snowflake: bigint): number { function fromTimestamp (line 75) | function fromTimestamp(timestamp: number): string { function fromTimestampBigInt (line 84) | function fromTimestampBigInt(timestamp: number): bigint { function fromTimestampWithSequence (line 93) | function fromTimestampWithSequence(timestamp: number, sequence: Snowflak... function fromTimestampWithSequenceBigInt (line 101) | function fromTimestampWithSequenceBigInt(timestamp: number, sequence: Sn... function atPreviousMillisecond (line 112) | function atPreviousMillisecond(snowflake: string): string { function atPreviousMillisecondBigInt (line 116) | function atPreviousMillisecondBigInt(snowflake: bigint): bigint { function atNextMillisecond (line 120) | function atNextMillisecond(snowflake: string): string { function atNextMillisecondBigInt (line 124) | function atNextMillisecondBigInt(snowflake: bigint): bigint { function compare (line 128) | function compare(snowflake1: string | null, snowflake2: string | null): ... function compareBigInt (line 152) | function compareBigInt(snowflake1: bigint | null, snowflake2: bigint | n... function isProbablyAValidSnowflake (line 176) | function isProbablyAValidSnowflake(value: string | null | undefined): bo... function sortBySnowflakeDesc (line 189) | function sortBySnowflakeDesc(items: ReadonlyArra... function sortBySnowflakeDescBigInt (line 193) | function sortBySnowflakeDescBigInt(items: Readon... function age (line 197) | function age(snowflake: string): number { function ageBigInt (line 206) | function ageBigInt(snowflake: bigint): number { function extractTimestampFromSnowflake (line 215) | function extractTimestampFromSnowflake(snowflake: string, epoch?: string... function extractTimestampFromSnowflakeAsDate (line 224) | function extractTimestampFromSnowflakeAsDate(snowflake: string, epoch?: ... function extractTimestampFromSnowflakeAsDateBigInt (line 233) | function extractTimestampFromSnowflakeAsDateBigInt(snowflake: bigint): D... type SnowflakeSequenceOptions (line 242) | interface SnowflakeSequenceOptions { class SnowflakeSequence (line 246) | class SnowflakeSequence { method constructor (line 249) | constructor(options: SnowflakeSequenceOptions = {}) { method next (line 255) | next(): number { method willOverflowNext (line 265) | willOverflowNext(): boolean { method peek (line 269) | peek(): number { method reset (line 273) | reset(nextValue = 0): void { FILE: packages/snowflake/src/__tests__/Snowflake.test.tsx constant WORKER_ID_BITS (line 37) | const WORKER_ID_BITS = 10n; constant SEQUENCE_BITS (line 38) | const SEQUENCE_BITS = 12n; constant TIMESTAMP_SHIFT (line 39) | const TIMESTAMP_SHIFT = SEQUENCE_BITS + WORKER_ID_BITS; constant WORKER_ID_SHIFT (line 40) | const WORKER_ID_SHIFT = SEQUENCE_BITS; constant MAX_SEQUENCE (line 41) | const MAX_SEQUENCE = (1n << SEQUENCE_BITS) - 1n; FILE: packages/telemetry/src/Metrics.tsx constant METER_NAME (line 22) | const METER_NAME = 'fluxer.telemetry'; type CounterMetric (line 24) | interface CounterMetric { type HistogramMetric (line 30) | interface HistogramMetric { type GaugeMetric (line 36) | interface GaugeMetric { type IMetricRegistry (line 42) | interface IMetricRegistry { class TelemetryMetricRegistry (line 47) | class TelemetryMetricRegistry implements IMetricRegistry { method constructor (line 52) | public constructor() { method getCounter (line 56) | public getCounter(name: string, description?: string): Counter): Attributes { function createCounter (line 90) | function createCounter(name: string, description?: string): Counter): P... function shutdownTelemetry (line 132) | async function shutdownTelemetry(): Promise { function getTelemetryConfig (line 136) | function getTelemetryConfig(): TelemetryConfig | null { function getOtlpConfig (line 140) | function getOtlpConfig(): OtlpConfig | null { FILE: packages/telemetry/src/Tracing.tsx constant DEFAULT_TRACER_NAME (line 23) | const DEFAULT_TRACER_NAME = 'fluxer'; type WithSpanOptions (line 25) | interface WithSpanOptions { function getErrorMessage (line 30) | function getErrorMessage(error: unknown): string { function getTracer (line 37) | function getTracer(name: string = DEFAULT_TRACER_NAME) { function withSpan (line 41) | async function withSpan( function addSpanEvent (line 65) | function addSpanEvent(name: string, attributes?: Attributes): void { function setSpanAttributes (line 72) | function setSpanAttributes(attributes: Attributes): void { function getActiveSpan (line 79) | function getActiveSpan(): Span | undefined { function formatTraceparent (line 83) | function formatTraceparent(span: Span): string | null { FILE: packages/telemetry/src/telemetry_runtime/TelemetryConfig.tsx function assertPositiveNumber (line 23) | function assertPositiveNumber(value: number, fieldName: string): void { function normalizeEndpoint (line 29) | function normalizeEndpoint(endpoint: string): string { function normalizeIgnoreIncomingPaths (line 34) | function normalizeIgnoreIncomingPaths(paths: Array): Array): Tele... function cloneTelemetryConfig (line 97) | function cloneTelemetryConfig(config: TelemetryConfig): TelemetryConfig { function createOtlpConfigFromTelemetryConfig (line 105) | function createOtlpConfigFromTelemetryConfig(config: TelemetryConfig): O... FILE: packages/telemetry/src/telemetry_runtime/TelemetryInstrumentations.tsx type InstrumentationModule (line 26) | interface InstrumentationModule { type OptionalInstrumentationDefinition (line 30) | interface OptionalInstrumentationDefinition { function formatError (line 37) | function formatError(error: unknown): string { function getOptionalInstrumentationDefinitions (line 44) | function getOptionalInstrumentationDefinitions( function loadOptionalInstrumentation (line 67) | async function loadOptionalInstrumentation( function createTelemetryInstrumentations (line 94) | async function createTelemetryInstrumentations( FILE: packages/telemetry/src/telemetry_runtime/TelemetryLogger.tsx type ITelemetryInitLogger (line 20) | interface ITelemetryInitLogger { function createDefaultTelemetryLogger (line 25) | function createDefaultTelemetryLogger(): ITelemetryInitLogger { FILE: packages/telemetry/src/telemetry_runtime/TelemetryManager.tsx type ITelemetryRuntimeManager (line 31) | interface ITelemetryRuntimeManager { type TelemetryRuntimeManagerOptions (line 40) | interface TelemetryRuntimeManagerOptions { function formatError (line 45) | function formatError(error: unknown): string { class TelemetryRuntimeManager (line 52) | class TelemetryRuntimeManager implements ITelemetryRuntimeManager { method constructor (line 60) | public constructor(options: TelemetryRuntimeManagerOptions) { method isActive (line 65) | public isActive(): boolean { method shouldInitialize (line 69) | public shouldInitialize(): boolean { method getConfig (line 73) | public getConfig(): TelemetryConfig | null { method getOtlpConfig (line 80) | public getOtlpConfig(): OtlpConfig | null { method initialize (line 88) | public async initialize(config?: Partial): Promise { method initializeInternal (line 143) | private async initializeInternal(config: TelemetryConfig): Promise { function createTelemetryRuntimeManager (line 179) | function createTelemetryRuntimeManager(options: TelemetryRuntimeManagerO... FILE: packages/telemetry/src/telemetry_runtime/TelemetrySdk.tsx function createTelemetrySdk (line 40) | async function createTelemetrySdk(config: TelemetryConfig, logger: ITele... FILE: packages/time/src/Clock.tsx type IClock (line 20) | interface IClock { method nowMs (line 25) | nowMs(): number { function nowMs (line 30) | function nowMs(clock: IClock = SystemClock): number { FILE: packages/time/src/DelayMath.tsx type DelayRange (line 20) | interface DelayRange { function computeRemainingDelayMs (line 25) | function computeRemainingDelayMs(range: DelayRange): number { FILE: packages/time/src/ExponentialBackoff.tsx type ExponentialBackoffPolicy (line 20) | interface ExponentialBackoffPolicy { type ExponentialBackoffInput (line 27) | interface ExponentialBackoffInput { function normalizeAttemptCount (line 39) | function normalizeAttemptCount(attemptCount: number): number { function validateExponentialBackoffPolicy (line 47) | function validateExponentialBackoffPolicy(policy: ExponentialBackoffPoli... function computeExponentialBackoffSeconds (line 71) | function computeExponentialBackoffSeconds(input: ExponentialBackoffInput... FILE: packages/time/src/Rfc3339Timestamp.tsx function createInvalidRfc3339TimestampError (line 20) | function createInvalidRfc3339TimestampError(timestamp: string): Error { function parseRfc3339TimestampToMs (line 24) | function parseRfc3339TimestampToMs(timestamp: string): number { function formatRfc3339Timestamp (line 35) | function formatRfc3339Timestamp(timestampMs: number): string { FILE: packages/time/src/Sleep.tsx function sleepMs (line 20) | function sleepMs(durationMs: number): Promise { FILE: packages/time/src/tests/Clock.test.tsx method nowMs (line 36) | nowMs(): number { FILE: packages/ui/src/components/Alert.tsx type AlertVariant (line 26) | type AlertVariant = 'error' | 'warning' | 'success' | 'info'; type AlertProps (line 28) | interface AlertProps { FILE: packages/ui/src/components/Badge.tsx type BadgeVariant (line 26) | type BadgeVariant = 'default' | 'info' | 'success' | 'warning' | 'danger'; type BadgeProps (line 27) | interface BadgeProps extends TextProps { function Badge (line 32) | function Badge({text, variant = 'default', intensity = 'normal'}: BadgeP... type UnifiedBadgeProps (line 50) | interface UnifiedBadgeProps extends LabelProps { function UnifiedBadge (line 56) | function UnifiedBadge({label, tone, intensity = 'normal', rounded = 'ful... type PillProps (line 67) | interface PillProps extends Omit {} function Pill (line 69) | function Pill({label, tone, intensity = 'normal'}: PillProps) { FILE: packages/ui/src/components/Button.tsx type ButtonVariant (line 26) | type ButtonVariant = 'primary' | 'secondary' | 'danger' | 'success' | 'i... type ButtonSize (line 27) | type ButtonSize = 'small' | 'medium' | 'large' | 'xl'; type ButtonIconPosition (line 28) | type ButtonIconPosition = 'left' | 'right'; type ButtonProps (line 50) | interface ButtonProps { FILE: packages/ui/src/components/Card.tsx type CardPadding (line 26) | type CardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl'; type CardVariant (line 27) | type CardVariant = 'default' | 'elevated' | 'empty' | 'marketing'; type CardShadow (line 28) | type CardShadow = 'none' | 'sm' | 'md' | 'lg' | 'xl'; type CardProps (line 30) | interface CardProps { function Card (line 59) | function Card({ function CardElevated (line 119) | function CardElevated({padding = 'md', children, ...props}: PropsWithChi... function CardEmpty (line 127) | function CardEmpty({children}: ChildrenProps) { type HeadingCardProps (line 135) | interface HeadingCardProps extends Omit, TextProps { function HeadingCard (line 139) | function HeadingCard({ FILE: packages/ui/src/components/CheckboxForm.tsx type CheckboxFormProps (line 27) | interface CheckboxFormProps { function getRevealScript (line 37) | function getRevealScript(saveButtonId: string | undefined): string | und... type CheckboxItemProps (line 67) | interface CheckboxItemProps { type NativeCheckboxItemProps (line 80) | interface NativeCheckboxItemProps { FILE: packages/ui/src/components/CsrfInput.tsx type CsrfInputProps (line 26) | interface CsrfInputProps { FILE: packages/ui/src/components/EmptyState.tsx type EmptyStateProps (line 27) | interface EmptyStateProps { FILE: packages/ui/src/components/Flash.tsx type FlashMessageProps (line 26) | interface FlashMessageProps { function FlashMessage (line 30) | function FlashMessage({flash}: FlashMessageProps) { function parseFlashFromCookie (line 43) | function parseFlashFromCookie(cookieHeader: string | null): Flash | unde... FILE: packages/ui/src/components/Form.tsx type InputType (line 35) | type InputType = 'text' | 'email' | 'password' | 'tel' | 'number' | 'dat... function toInputId (line 37) | function toInputId(name: string): string { function toHelperId (line 41) | function toHelperId(id: string, helper: string | undefined): string | un... type InputProps (line 48) | interface InputProps extends BaseFormProps { function Input (line 58) | function Input({ type TextareaProps (line 109) | interface TextareaProps extends BaseFormProps { function Textarea (line 114) | function Textarea({label, helper, name, id, value, required, placeholder... type SelectProps (line 146) | interface SelectProps extends BaseFormProps { function Select (line 151) | function Select({label, helper, name, id, value, required, disabled, opt... type CheckboxProps (line 196) | interface CheckboxProps { function Checkbox (line 204) | function Checkbox({name, value, label, checked, onChange}: CheckboxProps) { FILE: packages/ui/src/components/FormFieldGroup.tsx type FormFieldGroupProps (line 25) | interface FormFieldGroupProps { function FormFieldGroup (line 34) | function FormFieldGroup({ FILE: packages/ui/src/components/FormModal.tsx type FormModalProps (line 25) | interface FormModalProps { function FormModal (line 43) | function FormModal({ FILE: packages/ui/src/components/FormSection.tsx type FormSectionPadding (line 25) | type FormSectionPadding = 'none' | 'small' | 'medium' | 'large'; type FormSectionProps (line 27) | interface FormSectionProps { function FormSection (line 42) | function FormSection({ FILE: packages/ui/src/components/InputGroup.tsx type InputGroupGap (line 25) | type InputGroupGap = 'small' | 'medium' | 'large'; type InputGroupProps (line 27) | interface InputGroupProps { function InputGroup (line 53) | function InputGroup({ FILE: packages/ui/src/components/Layout.tsx type FlexRowProps (line 26) | interface FlexRowProps extends GapProps {} type StackProps (line 28) | interface StackProps extends GapProps {} function FlexRow (line 30) | function FlexRow({gap = '3', children}: PropsWithChildren) { function FlexRowBetween (line 34) | function FlexRowBetween({children}: ChildrenProps) { function Stack (line 38) | function Stack({gap = '4', children}: PropsWithChildren) { function Grid (line 42) | function Grid({cols = '2', gap = '4', children}: PropsWithChildren): string { FILE: packages/ui/src/utils/ColorVariants.tsx type ColorTone (line 23) | type ColorTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger' |... type ColorIntensity (line 24) | type ColorIntensity = 'subtle' | 'normal' | 'strong'; type ColorVariant (line 26) | interface ColorVariant { function getColorClasses (line 75) | function getColorClasses(tone: ColorTone, intensity: ColorIntensity = 'n... type AlertTone (line 84) | type AlertTone = 'error' | 'warning' | 'success' | 'info'; function getAlertClasses (line 86) | function getAlertClasses(tone: AlertTone): string { FILE: packages/ui/src/utils/FormatNumber.tsx function formatNumber (line 23) | function formatNumber(value: number): string { function formatNumberDigits (line 28) | function formatNumberDigits(digits: string): string { function chunkDigits (line 37) | function chunkDigits(digits: string): string { FILE: packages/ui/src/utils/FormatSize.tsx function formatFileSize (line 23) | function formatFileSize(bytes: number, decimals = 2): string { FILE: packages/ui/src/utils/FormatUser.tsx function formatDiscriminator (line 39) | function formatDiscriminator(discriminator: number | string): string { function formatUserTag (line 44) | function formatUserTag(username: string, discriminator: string | number)... function getInitials (line 49) | function getInitials(name: string): string { function extractTimestampFromSnowflake (line 68) | function extractTimestampFromSnowflake(snowflake: string, epoch = '14200... function getUserAvatarUrl (line 103) | function getUserAvatarUrl( function getGuildIconUrl (line 127) | function getGuildIconUrl( function getUserBannerUrl (line 148) | function getUserBannerUrl( function getGuildBannerUrl (line 169) | function getGuildBannerUrl( function getGuildSplashUrl (line 190) | function getGuildSplashUrl(mediaEndpoint: string, guildId: string, splas... function getGuildEmbedSplashUrl (line 203) | function getGuildEmbedSplashUrl(mediaEndpoint: string, guildId: string, ... FILE: packages/ui/src/utils/VariantClasses.tsx function createVariantClasses (line 23) | function createVariantClasses( function createCompoundVariantClasses (line 33) | function createCompoundVariantClasses( FILE: packages/validation/src/Validator.tsx function resolveValidatorOptions (line 33) | function resolveValidatorOptions< function isResponseWithResponseProperty (line 46) | function isResponseWithResponseProperty(value: unknown): value is {respo... function resolvePostHookResponse (line 50) | function resolvePostHookResponse(hookResult: ValidatorPostHookResult<... function createValidator (line 63) | function createValidator< FILE: packages/validation/src/ZodErrorMap.tsx function fluxerZodErrorMap (line 26) | function fluxerZodErrorMap( function initializeFluxerErrorMap (line 36) | function initializeFluxerErrorMap(): void { FILE: packages/validation/src/__tests__/Validator.test.tsx function createTestApp (line 27) | function createTestApp() { FILE: packages/validation/src/error_map/ZodIssueErrorCodeResolver.tsx type ZodIssue (line 25) | type ZodIssue = Parameters[0]; function getIssueOrigin (line 27) | function getIssueOrigin(issue: ZodIssue): string | undefined { function getIssueFormat (line 34) | function getIssueFormat(issue: ZodIssue): string | undefined { function getIssueParams (line 41) | function getIssueParams(issue: ZodIssue): Record | unde... function getCustomErrorCode (line 48) | function getCustomErrorCode(issue: ZodIssue): ValidationErrorCode | unde... function resolveZodIssueValidationErrorCode (line 56) | function resolveZodIssueValidationErrorCode(issue: ZodIssue): Validation... FILE: packages/validation/src/shared/ValidationErrorCodeUtils.tsx function isValidationErrorCode (line 25) | function isValidationErrorCode(value: string): value is ValidationErrorC... function resolveValidationErrorCode (line 29) | function resolveValidationErrorCode(value: string | undefined): Validati... FILE: packages/validation/src/validator/ValidatorErrorFactory.tsx type ZodValidationIssue (line 29) | type ZodValidationIssue = ZodError['issues'][number]; function getIssuePath (line 31) | function getIssuePath(issue: ZodValidationIssue): string { function createInputValidationError (line 38) | function createInputValidationError(issues: Array): ... FILE: packages/validation/src/validator/ValidatorIssueVariables.tsx type ZodTooSmallIssue (line 22) | interface ZodTooSmallIssue { type ZodTooBigIssue (line 28) | interface ZodTooBigIssue { type ZodInvalidTypeIssue (line 34) | interface ZodInvalidTypeIssue { type ZodCustomIssue (line 40) | interface ZodCustomIssue { type ZodValidationIssue (line 45) | type ZodValidationIssue = ZodError['issues'][number]; function getIssueFieldName (line 47) | function getIssueFieldName(issue: ZodValidationIssue): string { function isTooSmallIssue (line 54) | function isTooSmallIssue(issue: ZodValidationIssue): issue is ZodValidat... function isTooBigIssue (line 58) | function isTooBigIssue(issue: ZodValidationIssue): issue is ZodValidatio... function isInvalidTypeIssue (line 62) | function isInvalidTypeIssue(issue: ZodValidationIssue): issue is ZodVali... function isCustomIssue (line 66) | function isCustomIssue(issue: ZodValidationIssue): issue is ZodValidatio... function extractValidatorIssueVariables (line 70) | function extractValidatorIssueVariables(issue: ZodValidationIssue): Reco... FILE: packages/validation/src/validator/ValidatorRequestValue.tsx type FormDataEntryValue (line 23) | type FormDataEntryValue = File | string; type FormValue (line 24) | type FormValue = FormDataEntryValue | Array; function extractJsonValue (line 26) | async function extractJsonValue = undefined extends T ? true : false; type ValidatorSafeParseResult (line 25) | type ValidatorSafeParseResult = type ValidatorPostHookResult (line 29) | type ValidatorPostHookResult> = Response | u... type ValidatorPostHook (line 31) | type ValidatorPostHook< type ValidatorPreHook (line 43) | type ValidatorPreHook< type ValidatorOptions (line 50) | interface ValidatorOptions< type ValidatorHookOrOptions (line 61) | type ValidatorHookOrOptions< type ValidatorInput (line 69) | type ValidatorInput< FILE: packages/validation/src/validator/ValidatorValueNormalizer.tsx function isEmptyObject (line 20) | function isEmptyObject(value: object): boolean { function normalizeValidatorValue (line 24) | function normalizeValidatorValue(value: unknown, isRoot = true): unknown { FILE: packages/virus_scan/src/IVirusScanProvider.tsx type IVirusScanProvider (line 22) | interface IVirusScanProvider { FILE: packages/virus_scan/src/IVirusScanService.tsx type IVirusScanService (line 22) | interface IVirusScanService { FILE: packages/virus_scan/src/VirusScanProviderResult.tsx type VirusScanProviderResult (line 20) | interface VirusScanProviderResult { FILE: packages/virus_scan/src/VirusScanResult.tsx type VirusScanResult (line 20) | interface VirusScanResult { FILE: packages/virus_scan/src/VirusScanService.tsx type VirusScanConfig (line 31) | interface VirusScanConfig { type VirusScanServiceDependencies (line 36) | interface VirusScanServiceDependencies { class VirusScanService (line 44) | class VirusScanService implements IVirusScanService { method constructor (line 48) | constructor(private dependencies: VirusScanServiceDependencies) { method initialize (line 53) | async initialize(): Promise { method scanFile (line 57) | async scanFile(filePath: string): Promise { method scanBuffer (line 62) | async scanBuffer(buffer: Buffer, filename: string): Promise { method cacheVirusHash (line 46) | async cacheVirusHash(fileHash: string): Promise { method buildCacheKey (line 50) | private buildCacheKey(fileHash: string): string { FILE: packages/virus_scan/src/failures/IVirusScanFailureReporter.tsx type IVirusScanFailureReporter (line 22) | interface IVirusScanFailureReporter { FILE: packages/virus_scan/src/failures/NoopVirusScanFailureReporter.tsx class NoopVirusScanFailureReporter (line 23) | class NoopVirusScanFailureReporter implements IVirusScanFailureReporter { method initialize (line 24) | async initialize(): Promise {} method reportFailure (line 26) | async reportFailure(_context: VirusScanFailureContext): Promise {} FILE: packages/virus_scan/src/failures/VirusScanFailureContext.tsx type VirusScanFailureContext (line 20) | interface VirusScanFailureContext { FILE: packages/virus_scan/src/failures/WebhookVirusScanFailureReporter.tsx constant DEFAULT_ALERT_SAMPLE_RATE (line 25) | const DEFAULT_ALERT_SAMPLE_RATE = 0.05; constant DEFAULT_ERROR_FIELD_LIMIT (line 26) | const DEFAULT_ERROR_FIELD_LIMIT = 900; constant DEFAULT_REQUEST_TIMEOUT_MS (line 27) | const DEFAULT_REQUEST_TIMEOUT_MS = ms('5 seconds'); type VirusScanWebhookFailureReporterConfig (line 29) | interface VirusScanWebhookFailureReporterConfig { class WebhookVirusScanFailureReporter (line 37) | class WebhookVirusScanFailureReporter implements IVirusScanFailureReport... method constructor (line 43) | constructor(private config: VirusScanWebhookFailureReporterConfig) { method initialize (line 50) | async initialize(): Promise { method reportFailure (line 59) | async reportFailure(context: VirusScanFailureContext): Promise { method buildPayload (line 103) | private buildPayload(context: VirusScanFailureContext, errorDescriptio... method describeError (line 133) | private describeError(error: unknown): string { method truncateText (line 143) | private truncateText(value: string, limit: number): string { FILE: packages/virus_scan/src/providers/ClamAVProvider.tsx type ClamAVConfig (line 25) | interface ClamAVConfig { class ClamAVProvider (line 31) | class ClamAVProvider implements IVirusScanProvider { method constructor (line 34) | constructor(private config: ClamAVConfig) { method scanFile (line 38) | async scanFile(filePath: string): Promise { method scanBuffer (line 43) | async scanBuffer(buffer: Buffer): Promise { FILE: packages/virus_scan/src/providers/DisabledProvider.tsx class DisabledProvider (line 23) | class DisabledProvider implements IVirusScanProvider { method scanFile (line 24) | async scanFile(_filePath: string): Promise { method scanBuffer (line 30) | async scanBuffer(_buffer: Buffer): Promise { FILE: packages/worker/src/context/WorkerContext.tsx function setWorkerDependencies (line 22) | function setWorkerDependencies(dependencies: T): void { function getWorkerDependencies (line 26) | function getWorkerDependencies(): T { function hasWorkerDependencies (line 33) | function hasWorkerDependencies(): boolean { function clearWorkerDependencies (line 37) | function clearWorkerDependencies(): void { FILE: packages/worker/src/contracts/IWorkerService.tsx type IWorkerService (line 22) | interface IWorkerService { FILE: packages/worker/src/contracts/WorkerTask.tsx type WorkerTaskHelpers (line 23) | interface WorkerTaskHelpers { type WorkerTaskHandler (line 32) | type WorkerTaskHandler> = ( FILE: packages/worker/src/contracts/WorkerTypes.tsx type WorkerJobPayload (line 20) | type WorkerJobPayload = Record; type WorkerRuntimeConfig (line 21) | interface WorkerRuntimeConfig { type WorkerQueueConfig (line 27) | interface WorkerQueueConfig { type WorkerConfig (line 32) | interface WorkerConfig extends WorkerRuntimeConfig, WorkerQueueConfig {} type TracingInterface (line 34) | interface TracingInterface { type MetricsServiceInterface (line 40) | interface MetricsServiceInterface { type QueueJob (line 45) | interface QueueJob { type LeasedQueueJob (line 58) | interface LeasedQueueJob { type EnqueueOptions (line 64) | interface EnqueueOptions { type WorkerJobOptions (line 70) | interface WorkerJobOptions { FILE: packages/worker/src/providers/DirectQueueProvider.tsx type DirectQueueProviderOptions (line 31) | interface DirectQueueProviderOptions { class DirectQueueProvider (line 37) | class DirectQueueProvider implements IQueueProvider { method constructor (line 42) | constructor(options: DirectQueueProviderOptions) { method withOptionalSpan (line 48) | private async withOptionalSpan( method enqueue (line 58) | async enqueue(taskType: string, payload: WorkerJobPayload, options?: E... method dequeue (line 85) | async dequeue(taskTypes: Array, limit = 1): Promise { method fail (line 138) | async fail(receipt: string, error: string): Promise { method cancelJob (line 154) | async cancelJob(jobId: string): Promise { method retryDeadLetterJob (line 158) | async retryDeadLetterJob(jobId: string): Promise { FILE: packages/worker/src/providers/HttpWorkerQueue.tsx class HttpWorkerQueue (line 29) | class HttpWorkerQueue implements IQueueProvider { method constructor (line 34) | constructor(options: {baseUrl: string; timeoutMs?: number | undefined;... method createTimeoutController (line 40) | private createTimeoutController(): AbortController { method fetchWithTimeout (line 49) | private async fetchWithTimeout(input: string | URL, init?: RequestInit... method withOptionalSpan (line 66) | private async withOptionalSpan( method addSpanEvent (line 76) | private addSpanEvent(name: string, attributes?: Record): void { method enqueue (line 88) | async enqueue(taskType: string, payload: WorkerJobPayload, options?: E... method dequeue (line 127) | async dequeue(taskTypes: Array, limit = 1): Promise { method fail (line 205) | async fail(receipt: string, error: string): Promise { method cancelJob (line 229) | async cancelJob(jobId: string): Promise { method retryDeadLetterJob (line 246) | async retryDeadLetterJob(jobId: string): Promise { FILE: packages/worker/src/providers/IQueueProvider.tsx type IQueueProvider (line 22) | interface IQueueProvider { FILE: packages/worker/src/providers/QueueProviderFactory.tsx type QueueProviderFactoryOptions (line 24) | interface QueueProviderFactoryOptions { function createQueueProvider (line 31) | function createQueueProvider(options: QueueProviderFactoryOptions): IQue... FILE: packages/worker/src/runtime/WorkerFactory.tsx type CreateWorkerOptions (line 36) | interface CreateWorkerOptions { type CreateWorkerLegacyOptions (line 45) | interface CreateWorkerLegacyOptions { type WorkerQueueOptions (line 54) | interface WorkerQueueOptions { type ResolvedWorkerFactoryOptions (line 60) | interface ResolvedWorkerFactoryOptions { type WorkerResult (line 69) | interface WorkerResult { type WorkerFactoryOptions (line 79) | type WorkerFactoryOptions = CreateWorkerOptions | CreateWorkerLegacyOpti... function isLegacyCreateWorkerOptions (line 81) | function isLegacyCreateWorkerOptions(options: WorkerFactoryOptions): opt... function resolveLegacyQueueOptions (line 85) | function resolveLegacyQueueOptions(config: WorkerQueueConfig, queueProvi... function resolveWorkerFactoryOptions (line 93) | function resolveWorkerFactoryOptions(options: WorkerFactoryOptions): Res... function assertTaskRegistryMutable (line 119) | function assertTaskRegistryMutable(runner: WorkerRunner | null): void { function createWorker (line 125) | function createWorker(options: WorkerFactoryOptions): WorkerResult { FILE: packages/worker/src/runtime/WorkerRunner.tsx type WorkerRunnerOptions (line 29) | interface WorkerRunnerOptions { class WorkerRunner (line 41) | class WorkerRunner { method constructor (line 54) | constructor(options: WorkerRunnerOptions) { method start (line 75) | async start(): Promise { method stop (line 98) | async stop(): Promise { method processJob (line 113) | async processJob(leasedJob: LeasedQueueJob): Promise { method getWorkerService (line 117) | getWorkerService(): WorkerService { method getQueue (line 121) | getQueue(): IQueueProvider { method isRunning (line 125) | isRunning(): boolean { method workerLoop (line 129) | private async workerLoop(workerIndex: number, signal: AbortSignal): Pr... method executeJob (line 169) | private async executeJob(leasedJob: LeasedQueueJob): Promise { method sleep (line 221) | private async sleep(ms: number): Promise { FILE: packages/worker/src/runtime/WorkerTaskRegistry.tsx class WorkerTaskRegistry (line 22) | class WorkerTaskRegistry { method register (line 25) | register>(name: string, handler: Wo... method registerAll (line 30) | registerAll(tasks: Record): this { method get (line 37) | get(name: string): WorkerTaskHandler | undefined { method has (line 41) | has(name: string): boolean { method getTaskNames (line 45) | getTaskNames(): Array { method getTasks (line 49) | getTasks(): Record { method size (line 53) | get size(): number { function createTaskRegistry (line 58) | function createTaskRegistry(): WorkerTaskRegistry { FILE: packages/worker/src/services/WorkerMetricsCollector.tsx type QueueWithSize (line 24) | interface QueueWithSize { type KVClientInterface (line 28) | interface KVClientInterface { type WorkerMetricsCollectorOptions (line 32) | interface WorkerMetricsCollectorOptions { class WorkerMetricsCollector (line 45) | class WorkerMetricsCollector { method constructor (line 59) | constructor(options: WorkerMetricsCollectorOptions) { method start (line 67) | start(): void { method stop (line 83) | stop(): void { method collectAndReport (line 91) | private async collectAndReport(): Promise { method collectKVQueueSizes (line 101) | private async collectKVQueueSizes(): Promise<{ method reportKVQueueSizes (line 122) | private reportKVQueueSizes(sizes: { method collectKVConnectionStatus (line 146) | private async collectKVConnectionStatus(): Promise { method reportKVHealthMetrics (line 156) | private reportKVHealthMetrics(isConnected: boolean): void { FILE: packages/worker/src/services/WorkerService.tsx type WorkerServiceOptions (line 26) | interface WorkerServiceOptions { class WorkerService (line 34) | class WorkerService implements IWorkerService { method constructor (line 38) | constructor(options: WorkerServiceOptions) { method addJob (line 48) | async addJob( method cancelJob (line 66) | async cancelJob(jobId: string): Promise { method retryDeadLetterJob (line 81) | async retryDeadLetterJob(jobId: string): Promise { method getQueue (line 96) | getQueue(): IQueueProvider { FILE: scripts/ci/ci_steps.py function rclone_config_script (line 34) | def rclone_config_script( function bot_user_id_script (line 59) | def bot_user_id_script() -> str: function record_deploy_commit_script (line 66) | def record_deploy_commit_script(*, include_env: bool, include_sentry: bo... function set_build_timestamp_script (line 85) | def set_build_timestamp_script(*, env_name: str = "BUILD_TIMESTAMP") -> ... class ReleaseMetadata (line 93) | class ReleaseMetadata: function build_release_metadata (line 103) | def build_release_metadata( function write_release_metadata (line 129) | def write_release_metadata(metadata: ReleaseMetadata) -> None: function build_release_summary (line 143) | def build_release_summary( function write_release_summary (line 212) | def write_release_summary(summary: str, *, build_result: str) -> None: FILE: scripts/ci/ci_utils.py function run (line 11) | def run(cmd: Sequence[str], *, env: Mapping[str, str] | None = None) -> ... function run_bash (line 18) | def run_bash(script: str, *, env: Mapping[str, str] | None = None) -> None: function run_pwsh (line 22) | def run_pwsh(script: str, *, env: Mapping[str, str] | None = None) -> None: function require_env (line 26) | def require_env(keys: Iterable[str]) -> None: function write_github_env (line 33) | def write_github_env(pairs: Mapping[str, str]) -> None: function write_github_output (line 42) | def write_github_output(pairs: Mapping[str, str]) -> None: function write_github_summary (line 51) | def write_github_summary(text: str) -> None: function read_text (line 59) | def read_text(path: str) -> str: function main_error (line 64) | def main_error(message: str) -> None: function run_step (line 69) | def run_step(steps: Mapping[str, Step], step: str) -> None: function pwsh_step (line 79) | def pwsh_step(script: str) -> Step: FILE: scripts/ci/ci_workflow.py class EnvArg (line 12) | class EnvArg: method dest_name (line 18) | def dest_name(self) -> str: function build_step_parser (line 24) | def build_step_parser( function apply_env_args (line 40) | def apply_env_args(args: argparse.Namespace, env_args: Iterable[EnvArg])... function apply_server_ip (line 47) | def apply_server_ip(args: argparse.Namespace) -> None: function parse_step_env_args (line 53) | def parse_step_env_args( function parse_env_args (line 66) | def parse_env_args(env_args: Sequence[EnvArg]) -> argparse.Namespace: FILE: scripts/ci/cli_release.py class CliVersion (line 14) | class CliVersion: function determine_cli_version (line 19) | def determine_cli_version( function write_cli_version_outputs (line 43) | def write_cli_version_outputs(info: CliVersion) -> None: function prepare_release_assets (line 47) | def prepare_release_assets( function generate_checksums (line 74) | def generate_checksums(files: Iterable[Path], checksums_path: Path) -> N... FILE: scripts/ci/deploy_workflow.py function build_standard_deploy_steps (line 17) | def build_standard_deploy_steps( function run_deploy_workflow (line 37) | def run_deploy_workflow( FILE: scripts/ci/erlang_hot_reload.py function diff_md5 (line 10) | def diff_md5(local_path: str, remote_path: str, out_path: str) -> None: function build_json (line 42) | def build_json(list_path: str) -> None: function verify (line 64) | def verify(mode: str) -> int: function parse_args (line 129) | def parse_args() -> argparse.Namespace: function main (line 147) | def main() -> int: FILE: scripts/ci/release_workflow.py function release_metadata_step (line 53) | def release_metadata_step() -> None: function create_release_summary_step (line 66) | def create_release_summary_step(*, title: str, image_name_env: str) -> C... function build_release_steps (line 92) | def build_release_steps( function build_release_env_args (line 105) | def build_release_env_args( function run_release_workflow (line 118) | def run_release_workflow( FILE: scripts/ci/workflows/build_desktop.py function parse_bool (line 25) | def parse_bool(value: str) -> bool: function set_metadata_step (line 29) | def set_metadata_step(channel: str, ref: str) -> None: function set_matrix_step (line 50) | def set_matrix_step(flags: dict[str, bool]) -> None: function main (line 524) | def main() -> int: FILE: scripts/ci/workflows/channel_vars.py function determine_channel (line 20) | def determine_channel( function main (line 31) | def main() -> int: FILE: scripts/ci/workflows/ci.py function main (line 47) | def main() -> int: FILE: scripts/ci/workflows/ci_scripts.py function main (line 26) | def main() -> int: FILE: scripts/ci/workflows/deploy_admin.py function main (line 90) | def main() -> int: FILE: scripts/ci/workflows/deploy_api.py function main (line 167) | def main() -> int: FILE: scripts/ci/workflows/deploy_app.py function main (line 208) | def main() -> int: FILE: scripts/ci/workflows/deploy_gateway.py function main (line 149) | def main() -> int: FILE: scripts/ci/workflows/deploy_kv.py function main (line 82) | def main() -> int: FILE: scripts/ci/workflows/deploy_marketing.py function main (line 128) | def main() -> int: FILE: scripts/ci/workflows/deploy_media_proxy.py function main (line 83) | def main() -> int: FILE: scripts/ci/workflows/deploy_queue.py function main (line 87) | def main() -> int: FILE: scripts/ci/workflows/deploy_relay.py function main (line 142) | def main() -> int: FILE: scripts/ci/workflows/deploy_relay_directory.py function main (line 82) | def main() -> int: FILE: scripts/ci/workflows/deploy_static_proxy.py function main (line 84) | def main() -> int: FILE: scripts/ci/workflows/migrate_cassandra.py function main (line 94) | def main() -> int: FILE: scripts/ci/workflows/promote_canary_to_main.py function main (line 59) | def main() -> int: FILE: scripts/ci/workflows/release_livekitctl.py function determine_version_step (line 23) | def determine_version_step() -> None: function build_binary_step (line 36) | def build_binary_step() -> None: function prepare_release_assets_step (line 48) | def prepare_release_assets_step(artifacts_dir: pathlib.Path, release_dir... function generate_checksums_step (line 56) | def generate_checksums_step(release_dir: pathlib.Path) -> None: function create_tag_step (line 61) | def create_tag_step() -> None: function parse_args (line 95) | def parse_args(): function main (line 102) | def main() -> int: FILE: scripts/ci/workflows/release_relay.py function main (line 17) | def main() -> int: FILE: scripts/ci/workflows/release_relay_directory.py function main (line 17) | def main() -> int: FILE: scripts/ci/workflows/release_server.py function determine_build_targets_step (line 13) | def determine_build_targets_step() -> None: function main (line 35) | def main() -> int: FILE: scripts/ci/workflows/restart_gateway.py function main (line 93) | def main() -> int: FILE: scripts/ci/workflows/sync_desktop.py function main (line 87) | def main() -> int: FILE: scripts/ci/workflows/sync_static.py function main (line 27) | def main() -> int: FILE: scripts/ci/workflows/test_cassandra_backup.py function main (line 274) | def main() -> int: FILE: scripts/ci/workflows/update_word_lists.py function main (line 40) | def main() -> int: