SYMBOL INDEX (3880 symbols across 415 files) FILE: build/client.ts function getInitialBuildPlugin (line 68) | function getInitialBuildPlugin(): { plugin: Plugin; initialBuild: Promis... method setup (line 96) | setup(build: PluginBuild) { function buildClient (line 154) | async function buildClient(isDev: boolean): Promise { function minifyScriptDirectory (line 220) | async function minifyScriptDirectory( function minifyCSSFiles (line 251) | async function minifyCSSFiles(): Promise { FILE: build/engine-wasm.ts constant HYDROCHESS_WASM_DIR (line 18) | const HYDROCHESS_WASM_DIR = path.join(process.cwd(), 'src', 'client', 'p... constant LATEST_RELEASE_API_URL (line 21) | const LATEST_RELEASE_API_URL = function setupEngineWasm (line 41) | async function setupEngineWasm(): Promise { FILE: build/env.ts function setupEnv (line 15) | function setupEnv(): void { function ensureExists (line 21) | function ensureExists(): void { function generateSecret (line 62) | function generateSecret(length: number): string { function ensureValid (line 67) | function ensureValid(): void { FILE: build/index.ts constant USE_DEVELOPMENT_BUILD (line 23) | const USE_DEVELOPMENT_BUILD = process.argv.includes('--dev'); FILE: build/plugins.ts function getESBuildLogStatusLogger (line 10) | function getESBuildLogStatusLogger(successMessage: string, failureMessag... FILE: build/server.ts function buildServer (line 35) | async function buildServer(isDev: boolean): Promise { FILE: build/views.ts function buildViews (line 50) | async function buildViews(): Promise { FILE: dev-utils/post_processing_effects/posterize/PosterizePass.ts class PosterizePass (line 10) | class PosterizePass implements PostProcessPass { method constructor (line 25) | constructor(programManager: ProgramManager) { method render (line 34) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: dev-utils/post_processing_effects/radial_distortion/RadialDistortionPass.ts class RadialDistortionPass (line 9) | class RadialDistortionPass implements PostProcessPass { method constructor (line 25) | constructor(programManager: ProgramManager) { method render (line 29) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: dev-utils/post_processing_effects/rolling_hills/RollingHillsPass.ts class RollingHillsPass (line 9) | class RollingHillsPass implements PostProcessPass { method constructor (line 27) | constructor(programManager: ProgramManager) { method render (line 31) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: dev-utils/scripts/PatreonAPI.ts function getPatreonPatrons (line 32) | function getPatreonPatrons(): string[] { FILE: dev-utils/scripts/audio/processors/bitcrusher/BitcrusherNode.ts class BitcrusherNode (line 3) | class BitcrusherNode extends AudioWorkletNode { method constructor (line 4) | constructor(context: AudioContext) { method create (line 14) | public static async create(context: AudioContext): Promise { class BitcrusherProcessor (line 30) | class BitcrusherProcessor extends AudioWorkletProcessor { method parameterDescriptors (line 31) | static override get parameterDescriptors(): AudioParamDescriptor[] { method process (line 53) | process( FILE: dev-utils/scripts/clientEventDispatcher.ts function dispatch (line 20) | function dispatch(eventName: string, data?: any): void { function listen (line 31) | function listen(eventName: string, callback: (event: CustomEvent) => voi... function removeListener (line 41) | function removeListener(eventName: string, callback: (event: CustomEvent... FILE: dev-utils/scripts/events.ts type ExtractArr (line 16) | type ExtractArr = T extends (infer U)[] ? U : never type Eventlist (line 18) | interface Eventlist { function runEvent (line 22) | function runEvent): BoundingBox[] { //... FILE: dev-utils/scripts/positionnormalizer/moveexpander.ts function expandMove (line 31) | function expandMove(AllAxisOrders: AxisOrders, pieceTransformations: Pie... function trueEndCoordsDeterminer (line 166) | function trueEndCoordsDeterminer(movementLine: LineCoefficients, axisOfI... FILE: dev-utils/scripts/positionnormalizer/positioncompressor.ts type CompressionInfo (line 25) | interface CompressionInfo { type PieceTransform (line 39) | type PieceTransform = { type AxisOrders (line 55) | type AxisOrders = Record; type AxisOrder (line 61) | type AxisOrder = AxisGroup[]; type AxisGroup (line 67) | type AxisGroup = { type AxisDeterminer (line 78) | type AxisDeterminer = (_coords: Coords) => bigint; type OrthoAxis (line 81) | type OrthoAxis = '1,0' | '0,1'; type DiagAxis (line 83) | type DiagAxis = '1,1' | '1,-1'; type Axis (line 85) | type Axis = OrthoAxis | DiagAxis; type VariableName (line 94) | type VariableName = `x-${number}` | `y-${number}` | `u-${number}` | `v-$... type Column (line 99) | type Column = { constant UNSAFE_BOUND_BIGINT (line 121) | const UNSAFE_BOUND_BIGINT = BigInt(Math.trunc(Number.MAX_SAFE_INTEGER * ... constant MIN_ARBITRARY_DISTANCE (line 151) | const MIN_ARBITRARY_DISTANCE = 10n; constant AXIS_DETERMINERS (line 160) | const AXIS_DETERMINERS = { function compressPosition (line 188) | function compressPosition(position: Map, mode: 'ortho... function getVariableName (line 550) | function getVariableName(axis: Axis, index: number): VariableName { function getConstraintName (line 555) | function getConstraintName(varName: VariableName) { function addConstraintToModel (line 565) | function addConstraintToModel(model: Model, constraint_name: string, col... function RecenterTransformedPosition (line 591) | function RecenterTransformedPosition(allPieces: PieceTransform[], allAxi... FILE: dev-utils/scripts/positionnormalizer/positioncompressorplusintersections.ts type CompressionInfo (line 26) | interface CompressionInfo { type PieceTransform (line 40) | type PieceTransform = { type AxisOrders (line 55) | type AxisOrders = Record; type AxisOrder (line 61) | type AxisOrder = AxisGroup[]; type AxisGroup (line 67) | type AxisGroup = { type AxisDeterminer (line 77) | type AxisDeterminer = (_coords: Coords) => bigint; type OrthoAxis (line 80) | type OrthoAxis = '1,0' | '0,1'; type DiagAxis (line 82) | type DiagAxis = '1,1' | '1,-1'; type Axis (line 84) | type Axis = OrthoAxis | DiagAxis; type VariableName (line 92) | type VariableName = `x-${number}` | `y-${number}` | `u-${number}` | `v-$... type Column (line 97) | type Column = { constant UNSAFE_BOUND_BIGINT (line 117) | const UNSAFE_BOUND_BIGINT = BigInt(Math.trunc(Number.MAX_SAFE_INTEGER * ... constant MIN_ARBITRARY_DISTANCE (line 146) | const MIN_ARBITRARY_DISTANCE = 10n; constant MIN_ARBITRARY_DISTANCE_BD (line 147) | const MIN_ARBITRARY_DISTANCE_BD = bd.fromBigInt(MIN_ARBITRARY_DISTANCE); constant AXIS_DETERMINERS (line 155) | const AXIS_DETERMINERS = { constant AXIS_DETERMINERS_BD (line 166) | const AXIS_DETERMINERS_BD = { constant INTERSECTION_TYPE (line 182) | const INTERSECTION_TYPE = -1; function compressPosition (line 197) | function compressPosition( function addIntersectionsToPieces (line 613) | function addIntersectionsToPieces( function stringifyBDCoords (line 688) | function stringifyBDCoords(coords: BDCoords): string { function getVariableName (line 699) | function getVariableName(axis: Axis, index: number): VariableName { function getConstraintName (line 715) | function getConstraintName(varName: VariableName) { function addConstraintToModel (line 725) | function addConstraintToModel( function RecenterTransformedPosition (line 754) | function RecenterTransformedPosition(allPieces: PieceTransform[], allAxi... FILE: dev-utils/scripts/vertexdatatotexture.ts function convertVertexDataToTexture (line 23) | function convertVertexDataToTexture(gl: WebGL2RenderingContext, vertexDa... FILE: dev-utils/spritesheet_generator/spritesheet.ts type TextureData (line 22) | interface TextureData { function getSpritesheet (line 63) | function getSpritesheet(): WebGLTexture { function getSpritesheetDataPieceWidth (line 68) | function getSpritesheetDataPieceWidth(): number { function getSpritesheetDataTexLocation (line 74) | function getSpritesheetDataTexLocation(type: number): DoubleCoords { function initSpritesheetForGame (line 85) | async function initSpritesheetForGame(gl: WebGL2RenderingContext, boards... function deleteSpritesheet (line 113) | function deleteSpritesheet(): void { function getTexDataOfType (line 123) | function getTexDataOfType(type: number, rotation: number = 1): TextureDa... function getTexDataGeneric (line 133) | function getTexDataGeneric(rotation = 1): TextureData { function getTexDataFromLocationAndWidth (line 142) | function getTexDataFromLocationAndWidth( FILE: dev-utils/spritesheet_generator/spritesheetGenerator.ts type SpritesheetData (line 10) | type SpritesheetData = { constant PREFERRED_IMG_SIZE (line 21) | const PREFERRED_IMG_SIZE = 512; function generateSpritesheet (line 31) | async function generateSpritesheet( function generateSpriteSheetData (line 109) | function generateSpriteSheetData(images: HTMLImageElement[], gridSize: n... function roundUpToNextPowerOf2 (line 147) | function roundUpToNextPowerOf2(num: number): number { FILE: scripts/add-file-paths.ts function extractPathFromComment (line 19) | function extractPathFromComment(line: string): string | null { function processFile (line 32) | function processFile(filePath: string): void { function main (line 106) | function main(): void { FILE: scripts/generate-translation-types.ts function generateDotPaths (line 26) | function generateDotPaths(obj: TomlTable | any, prefix = ''): string[] { function generateNestedType (line 50) | function generateNestedType(obj: TomlTable | any, indentLevel = 1): stri... function generateTypes (line 76) | function generateTypes(): void { FILE: scripts/optimize-images.ts function getAllImagePaths (line 56) | function getAllImagePaths(dirPath: string): string[] { function logProgress (line 105) | function logProgress(imageName: string, format: string): void { FILE: scripts/organize-imports.ts constant FROM_WITH_QUOTE_PATTERN (line 49) | const FROM_WITH_QUOTE_PATTERN = /\sfrom\s+['"]/; constant SHARED_DIR (line 52) | const SHARED_DIR = path.resolve(process.cwd(), 'src/shared'); constant CLIENT_DIR (line 54) | const CLIENT_DIR = path.resolve(process.cwd(), 'src/client'); constant TESTS_DIR (line 56) | const TESTS_DIR = path.resolve(process.cwd(), 'src/tests'); constant SERVER_DIR (line 58) | const SERVER_DIR = path.resolve(process.cwd(), 'src/server'); type Import (line 62) | interface Import { function resolveImportSourceDir (line 81) | function resolveImportSourceDir( function parseImport (line 120) | function parseImport(importText: string, hasTsIgnore: boolean, currentFi... function compareImports (line 159) | function compareImports(a: Import, b: Import): number { function findImportBoundaries (line 171) | function findImportBoundaries(lines: string[]): { start: number; end: nu... function extractImports (line 205) | function extractImports( function organizeImports (line 311) | function organizeImports(imports: Import[]): string { function processFile (line 405) | function processFile(filePath: string): boolean { function main (line 447) | function main(): void { FILE: src/client/scripts/cjs/game/htmlscript.ts function callback_LoadingError (line 24) | function callback_LoadingError(): void { function removeOnerror (line 58) | function removeOnerror(this: HTMLElement): void { function closeLoadingScreenListeners (line 69) | function closeLoadingScreenListeners(): void { function callback_Offline (line 74) | function callback_Offline(): void { function callback_Online (line 79) | function callback_Online(): void { FILE: src/client/scripts/esm/audio/AudioEffects.ts type NodeChain (line 10) | interface NodeChain { type EffectConfigBase (line 16) | interface EffectConfigBase { type EffectConfig (line 29) | type EffectConfig = EffectConfigBase & { type: 'reverb'; durationSecs: n... function createEffectNode (line 41) | function createEffectNode(audioContext: AudioContext, config: EffectConf... function generateConvolverNode (line 86) | function generateConvolverNode(audioContext: AudioContext, durationSecs:... function impulseResponse (line 92) | function impulseResponse(audioContext: AudioContext, duration: number): ... FILE: src/client/scripts/esm/audio/AudioManager.ts type AudioBufferWithGainNode (line 14) | type AudioBufferWithGainNode = AudioBufferSourceNode & { gainNode: GainN... type SoundObject (line 16) | interface SoundObject { type PlaySoundOptions (line 43) | interface PlaySoundOptions { constant VOLUME_DANGER_THRESHOLD (line 68) | const VOLUME_DANGER_THRESHOLD = 4; function getContext (line 144) | function getContext(): AudioContext { function getDestination (line 153) | function getDestination(): AudioNode { function fadeInDownsampler (line 160) | function fadeInDownsampler(durationMillis: number): void { function fadeOutDownsampler (line 170) | function fadeOutDownsampler(durationMillis: number): void { function playAudio (line 182) | function playAudio( function scheduleDisconnection (line 262) | function scheduleDisconnection( function createBufferSource (line 301) | function createBufferSource( function generateGainNode (line 320) | function generateGainNode(audioContext: AudioContext, volume: number): G... function connectNodeChain (line 337) | function connectNodeChain( function fadeIn (line 360) | function fadeIn(source: AudioBufferWithGainNode, targetVolume: number, e... function fadeOut (line 375) | function fadeOut(source: AudioBufferWithGainNode, endTime: number): void { function decodeAudioData (line 388) | function decodeAudioData(buffer: ArrayBuffer): Promise { FILE: src/client/scripts/esm/audio/AudioUtils.ts constant FADE_CURVE_RESOLUTION (line 10) | const FADE_CURVE_RESOLUTION = 100; constant FADE_RAMP_CURVATURE (line 18) | const FADE_RAMP_CURVATURE = 0.4; function applyPerceptualFade (line 30) | function applyPerceptualFade( FILE: src/client/scripts/esm/audio/LFOFactory.ts type LFOConfig (line 10) | interface LFOConfig { type LFOUnit (line 17) | interface LFOUnit { function createLFO (line 31) | function createLFO(context: AudioContext, config: LFOConfig): LFOUnit { function createPerlinLFO (line 49) | function createPerlinLFO(context: AudioContext, rate: number): AudioBuff... FILE: src/client/scripts/esm/audio/SoundLayer.ts type LayerConfig (line 18) | interface LayerConfig { type SourceConfig (line 25) | type SourceConfig = NoiseSourceConfig | OscillatorSourceConfig; type NoiseSourceConfig (line 28) | interface NoiseSourceConfig { type OscillatorSourceConfig (line 33) | interface OscillatorSourceConfig { type FilterConfig (line 41) | interface FilterConfig { type ModulatedParamConfig (line 59) | interface ModulatedParamConfig { class SoundLayer (line 69) | class SoundLayer { method constructor (line 74) | constructor( method connect (line 148) | public connect(destination: AudioNode): void { method start (line 153) | public start(): void { method stop (line 160) | public stop(): void { FILE: src/client/scripts/esm/audio/SoundscapePlayer.ts type SoundscapeConfig (line 17) | interface SoundscapeConfig { constant NOISE_DURATION_SECS (line 28) | const NOISE_DURATION_SECS = 10; class SoundscapePlayer (line 33) | class SoundscapePlayer { method constructor (line 51) | constructor(config: SoundscapeConfig) { method initializeAndPlay (line 61) | private initializeAndPlay(): void { method stop (line 100) | public stop(): void { method fadeIn (line 116) | public fadeIn(durationMillis: number): void { method fadeOut (line 131) | public fadeOut(durationMillis: number): void { FILE: src/client/scripts/esm/audio/processors/downsampler/DownsamplerNode.ts class DownsamplerNode (line 3) | class DownsamplerNode extends AudioWorkletNode { method constructor (line 4) | constructor(context: AudioContext) { method create (line 13) | public static async create(context: AudioContext): Promise { class DownsamplerProcessor (line 29) | class DownsamplerProcessor extends AudioWorkletProcessor { method parameterDescriptors (line 30) | static override get parameterDescriptors(): AudioParamDescriptor[] { method process (line 45) | process( FILE: src/client/scripts/esm/audio/processors/worklet-types.ts type AudioParamDescriptor (line 9) | interface AudioParamDescriptor { FILE: src/client/scripts/esm/chess/rendering/checkerboardgenerator.ts function createCheckerboardIMG (line 15) | function createCheckerboardIMG( FILE: src/client/scripts/esm/chess/rendering/imagecache.ts function initImagesForGame (line 43) | async function initImagesForGame(boardsim: Board): Promise { function getPieceImage (line 119) | function getPieceImage(type: number): HTMLImageElement { function deleteImageCache (line 135) | function deleteImageCache(): void { FILE: src/client/scripts/esm/chess/rendering/svgcache.ts function getSVGElements (line 33) | async function getSVGElements( function fetchMissingTypes (line 48) | async function fetchMissingTypes(locations: Set): Promise { function fetchLocation (line 57) | async function fetchLocation(location: string): Promise { function tintSVG (line 95) | function tintSVG(svgElement: SVGElement, color: Color): SVGElement { function getSVGColorPriority (line 158) | function getSVGColorPriority(color: Player): string[] { function getNeededSVGLocations (line 186) | function getNeededSVGLocations(types: number[]): Set { function getSVGIDs (line 210) | function getSVGIDs(types: number[], width?: number, height?: number): SV... function showCache (line 249) | function showCache(): void { FILE: src/client/scripts/esm/chess/rendering/texturecache.ts function initTexturesForGame (line 30) | async function initTexturesForGame(gl: WebGL2RenderingContext, boardsim:... function getTexture (line 63) | function getTexture(type: number): WebGLTexture { FILE: src/client/scripts/esm/components/header/currpage-greyer.ts function greyBackgroundOfCurrPage (line 16) | function greyBackgroundOfCurrPage(): void { function updateColorOfProfileButton (line 30) | function updateColorOfProfileButton(): void { function initListeners (line 42) | function initListeners(): void { FILE: src/client/scripts/esm/components/header/dropdowns/appearancedropdown.ts function showCheckmarkOnSelectedOptions (line 32) | function showCheckmarkOnSelectedOptions(): void { function addThemesToThemesDropdown (line 38) | async function addThemesToThemesDropdown(): Promise { function open (line 63) | function open(): void { function close (line 67) | function close(): void { function initListeners (line 72) | function initListeners(): void { function closeListeners (line 82) | function closeListeners(): void { function initThemeChangeListeners (line 92) | function initThemeChangeListeners(): void { function closeThemeChangeListeners (line 98) | function closeThemeChangeListeners(): void { function selectTheme (line 105) | function selectTheme(event: Event): void { function updateThemeSelectedStyling (line 117) | function updateThemeSelectedStyling(): void { function toggleCoordinates (line 126) | function toggleCoordinates(): void { function toggleStarfield (line 130) | function toggleStarfield(): void { function toggleAdvancedEffects (line 134) | function toggleAdvancedEffects(): void { FILE: src/client/scripts/esm/components/header/dropdowns/gameplaydropdown.ts function showCheckmarkOnSelectedOptions (line 32) | function showCheckmarkOnSelectedOptions(): void { function open (line 40) | function open(): void { function close (line 45) | function close(): void { function initListeners (line 51) | function initListeners(): void { function closeListeners (line 59) | function closeListeners(): void { function toggleDrag (line 68) | function toggleDrag(): void { function togglePremove (line 71) | function togglePremove(): void { function toggleAnimations (line 74) | function toggleAnimations(): void { function toggleFastTransitions (line 77) | function toggleFastTransitions(): void { function toggleLingeringAnnotations (line 80) | function toggleLingeringAnnotations(): void { FILE: src/client/scripts/esm/components/header/dropdowns/languagedropdown.ts function addLngQueryParamToLink (line 38) | function addLngQueryParamToLink(href: string): string { function removeLngQueryParam (line 54) | function removeLngQueryParam(): void { function open (line 65) | function open(): void { function close (line 70) | function close(): void { function initListeners (line 76) | function initListeners(): void { function closeListeners (line 82) | function closeListeners(): void { function onLanguageClicked (line 89) | function onLanguageClicked(event: Event): void { FILE: src/client/scripts/esm/components/header/dropdowns/legalmovedropdown.ts function showCheckmarkOnSelectedOption (line 26) | function showCheckmarkOnSelectedOption(): void { function open (line 34) | function open(): void { function close (line 39) | function close(): void { function initListeners (line 45) | function initListeners(): void { function closeListeners (line 50) | function closeListeners(): void { function toggleSquares (line 56) | function toggleSquares(): void { function toggleDots (line 65) | function toggleDots(): void { function hideAllCheckmarks (line 74) | function hideAllCheckmarks(): void { function dispatchLegalMoveChangeEvent (line 80) | function dispatchLegalMoveChangeEvent(): void { FILE: src/client/scripts/esm/components/header/dropdowns/perspectivedropdown.ts function setInitialValues (line 47) | function setInitialValues(): void { function open (line 55) | function open(): void { function close (line 60) | function close(): void { function initListeners (line 66) | function initListeners(): void { function closeListeners (line 72) | function closeListeners(): void { function onMouseSensitivityChange (line 79) | function onMouseSensitivityChange(event: Event): void { function onFOVChange (line 84) | function onFOVChange(event: Event): void { function setMouseSensitivity (line 90) | function setMouseSensitivity(value: number): void { function setFOV (line 94) | function setFOV(value: number): void { function updateMouseSensitivityOutput (line 99) | function updateMouseSensitivityOutput(): void { function updateFOVOutput (line 103) | function updateFOVOutput(): void { function updateFOVResetDefaultButton (line 108) | function updateFOVResetDefaultButton(value: number): void { function resetFOVDefault (line 113) | function resetFOVDefault(): void { FILE: src/client/scripts/esm/components/header/dropdowns/sounddropdown.ts function setInitialValues (line 33) | function setInitialValues(): void { function open (line 40) | function open(): void { function close (line 45) | function close(): void { function initListeners (line 51) | function initListeners(): void { function closeListeners (line 56) | function closeListeners(): void { function onMasterVolumeChange (line 62) | function onMasterVolumeChange(event: Event): void { function toggleAmbience (line 68) | function toggleAmbience(): void { function updateMasterVolumeOutput (line 72) | function updateMasterVolumeOutput(): void { FILE: src/client/scripts/esm/components/header/faviconselector.ts function switchFavicon (line 8) | function switchFavicon(theme: 'dark' | 'light'): void { FILE: src/client/scripts/esm/components/header/header.ts function initListeners (line 34) | function initListeners(): void { function updateNavigationLinks (line 44) | function updateNavigationLinks(): void { function updateViewportHeight (line 99) | function updateViewportHeight(): void { FILE: src/client/scripts/esm/components/header/news-notification.ts function createNotificationBadge (line 18) | function createNotificationBadge(count: number): HTMLSpanElement { function fetchUnreadNewsCount (line 51) | async function fetchUnreadNewsCount(): Promise { function updateNotificationBadge (line 75) | async function updateNotificationBadge(): Promise { function showNotificationBadge (line 96) | function showNotificationBadge(count: number): void { function removeNotificationBadge (line 114) | function removeNotificationBadge(): void { function init (line 124) | function init(): void { FILE: src/client/scripts/esm/components/header/pingmeter.ts function initEventListeners (line 22) | function initEventListeners(): void { function updatePing (line 29) | function updatePing(event: CustomEvent): void { function updateBarCount (line 37) | function updateBarCount(ping: number): void { function removeAllColor (line 47) | function removeAllColor(): void { function getBarCount (line 60) | function getBarCount(ping: number): number { function showPing_hideLoadingAnim (line 67) | function showPing_hideLoadingAnim(): void { function openMeterAndDisplayLoading (line 74) | function openMeterAndDisplayLoading(): void { function socketClosed (line 86) | function socketClosed(event: CustomEvent): void { function closeMeter (line 95) | function closeMeter(): void { FILE: src/client/scripts/esm/components/header/preferences.ts type ClientSidePreferences (line 30) | interface ClientSidePreferences { type ServerSidePreferences (line 45) | interface ServerSidePreferences { type Preferences (line 53) | type Preferences = ServerSidePreferences & ClientSidePreferences; function loadPreferences (line 88) | function loadPreferences(): void { function savePreferences (line 117) | function savePreferences(): void { function onChangeMade (line 125) | function onChangeMade(): void { function sendPrefsToServer (line 130) | async function sendPrefsToServer(): Promise { function POSTPrefs (line 140) | async function POSTPrefs(preparedPrefs: ServerSidePreferences): Promise<... function preparePrefs (line 174) | function preparePrefs(): ServerSidePreferences { function getTheme (line 184) | function getTheme(): string { function setTheme (line 188) | function setTheme(theme: string): void { function getCoordinatesEnabled (line 195) | function getCoordinatesEnabled(): boolean { function setCoordinatesEnabled (line 199) | function setCoordinatesEnabled(value: boolean): void { function getStarfieldMode (line 204) | function getStarfieldMode(): boolean { function setStarfieldMode (line 208) | function setStarfieldMode(value: boolean): void { function getLegalMovesShape (line 216) | function getLegalMovesShape(): 'dots' | 'squares' { function setLegalMovesShape (line 220) | function setLegalMovesShape(legal_moves: 'dots' | 'squares'): void { function getDragEnabled (line 228) | function getDragEnabled(): boolean { function setDragEnabled (line 232) | function setDragEnabled(drag_enabled: boolean): void { function getPremoveEnabled (line 239) | function getPremoveEnabled(): boolean { function setPremoveMode (line 243) | function setPremoveMode(value: boolean): void { function getFastTransitionsMode (line 251) | function getFastTransitionsMode(): boolean { function setFastTransitionsMode (line 255) | function setFastTransitionsMode(value: boolean): void { function getAnimationsMode (line 263) | function getAnimationsMode(): boolean { function setAnimationsMode (line 267) | function setAnimationsMode(animations_enabled: boolean): void { function getPerspectiveSensitivity (line 273) | function getPerspectiveSensitivity(): number { function setPerspectiveSensitivity (line 277) | function setPerspectiveSensitivity(perspective_sensitivity: number): void { function getPerspectiveFOV (line 284) | function getPerspectiveFOV(): number { function getDefaultPerspectiveFOV (line 288) | function getDefaultPerspectiveFOV(): number { function setPerspectiveFOV (line 292) | function setPerspectiveFOV(perspective_fov: number): void { function getLingeringAnnotationsMode (line 300) | function getLingeringAnnotationsMode(): boolean { function setLingeringAnnotationsMode (line 304) | function setLingeringAnnotationsMode(value: boolean): void { function getAdvancedEffectsMode (line 314) | function getAdvancedEffectsMode(): boolean { function setAdvancedEffectsMode (line 318) | function setAdvancedEffectsMode(value: boolean): void { function getMasterVolume (line 323) | function getMasterVolume(): number { function setMasterVolume (line 327) | function setMasterVolume(master_volume: number): void { function getAmbienceEnabled (line 339) | function getAmbienceEnabled(): boolean { function setAmbienceEnabled (line 343) | function setAmbienceEnabled(ambience_enabled: boolean): void { function getColorOfLightTiles (line 355) | function getColorOfLightTiles(): Color { function getColorOfDarkTiles (line 360) | function getColorOfDarkTiles(): Color { function getLegalMoveHighlightColor (line 365) | function getLegalMoveHighlightColor({ function getLastMoveHighlightColor (line 380) | function getLastMoveHighlightColor(): Color { function getCheckHighlightColor (line 385) | function getCheckHighlightColor(): Color { function getBoxOutlineColor (line 390) | function getBoxOutlineColor(): Color { function getAnnoteSquareColor (line 395) | function getAnnoteSquareColor(): Color { function getAnnoteArrowColor (line 400) | function getAnnoteArrowColor(): Color { function getTintColorOfType (line 406) | function getTintColorOfType(type: number): Color { FILE: src/client/scripts/esm/components/header/settings.ts function toggleSettingsDropdown (line 73) | function toggleSettingsDropdown(): void { function openSettingsDropdown (line 77) | function openSettingsDropdown(): void { function closeAllSettingsDropdowns (line 84) | function closeAllSettingsDropdowns(): void { function closeMainSettingsDropdown (line 91) | function closeMainSettingsDropdown(): void { function closeAllSettingsDropdownsExceptMainOne (line 96) | function closeAllSettingsDropdownsExceptMainOne(): void { function initSettingsListeners (line 105) | function initSettingsListeners(): void { function closeSettingsListeners (line 119) | function closeSettingsListeners(): void { function closeSettingsDropdownIfClickedAway (line 137) | function closeSettingsDropdownIfClickedAway(event: MouseEvent | TouchEve... function didEventClickAnyDropdown (line 147) | function didEventClickAnyDropdown(event: MouseEvent | TouchEvent): boole... function updateBackgroundColor (line 157) | function updateBackgroundColor(): void { FILE: src/client/scripts/esm/components/header/spacing.ts function updateSpacing (line 27) | function updateSpacing(): void { function updatePadding (line 48) | function updatePadding(): void { function updateMode (line 69) | function updateMode(): void { function getSpaceBetweenHeaderFlexElements (line 89) | function getSpaceBetweenHeaderFlexElements(): number { FILE: src/client/scripts/esm/game/GameBus.ts type GameBusEvents (line 8) | interface GameBusEvents { FILE: src/client/scripts/esm/game/boardeditor/actions/eactions.ts constant PIECE_LIMIT_KEEP_TRACK_OF_GLOBAL_SPECIAL_RIGHTS (line 70) | const PIECE_LIMIT_KEEP_TRACK_OF_GLOBAL_SPECIAL_RIGHTS = 2_000_000; function reset (line 75) | async function reset(): Promise { function clearAll (line 87) | async function clearAll(): Promise { function load (line 118) | async function load(editorSaveState: EditorSaveState, storage_type: Stor... function copy (line 149) | function copy(): void { function paste (line 171) | async function paste(): Promise { function startLocalGame (line 201) | function startLocalGame(): void { function startEngineGame (line 222) | function startEngineGame(engineUIConfig: EngineUIConfig): void { function isPositionIllegal (line 309) | function isPositionIllegal(variantOptions: VariantOptions): boolean { function queueRemovalOfAllPieces (line 325) | function queueRemovalOfAllPieces(gamefile: FullGame, edit: Edit, pieces:... function getCurrentPositionInformation (line 336) | function getCurrentPositionInformation(revokeRedundantRights: boolean): ... function revokeRedundantSpecialRights (line 379) | function revokeRedundantSpecialRights(boardsim: Board, specialRights: Se... function loadFromLongformat (line 398) | async function loadFromLongformat(longformOut: LongFormatIn): Promise { function startPositionAutosave (line 95) | function startPositionAutosave(): void { function stopPositionAutosave (line 111) | function stopPositionAutosave(): void { function clearAutosave (line 118) | function clearAutosave(): void { function loadAutosave (line 131) | async function loadAutosave(): Promise { FILE: src/client/scripts/esm/game/boardeditor/actions/ecloud.ts function parseCloudPosition (line 34) | async function parseCloudPosition( function saveCloudState (line 80) | async function saveCloudState( function saveCloud (line 143) | async function saveCloud(position_name: string): Promise { function readCloud (line 175) | async function readCloud(position_name: string): Promise { FILE: src/client/scripts/esm/game/boardeditor/actions/editorSavesAPI.ts type CloudSaveListRecord (line 14) | interface CloudSaveListRecord { type CloudPositionRecord (line 21) | interface CloudPositionRecord { function buildAuthHeaders (line 35) | async function buildAuthHeaders(): Promise> { function getSavedPositions (line 52) | async function getSavedPositions(): Promise { function savePosition (line 71) | async function savePosition( function getPosition (line 107) | async function getPosition(position_name: string): Promise { function saveState (line 96) | async function saveState(editorSaveState: EditorSaveState): Promise { function deleteLocal (line 111) | async function deleteLocal(position_name: string): Promise { function localSaveExists (line 119) | async function localSaveExists(position_name: string): Promise { function getAllLocalSaveInfos (line 128) | async function getAllLocalSaveInfos(): Promise { function readLocal (line 154) | async function readLocal(position_name: string): Promise( function getGameConclusionFromResultAndTermination (line 76) | function getGameConclusionFromResultAndTermination( function getRatingFromWhiteBlackElo (line 106) | function getRatingFromWhiteBlackElo(whiteBlackElo: string): Rating { FILE: src/client/scripts/esm/game/chess/copygame.ts function copyGame (line 31) | function copyGame(copySinglePosition: boolean): void { FILE: src/client/scripts/esm/game/chess/engines/engine.ts type Engine (line 13) | interface Engine { type ValidEngine (line 32) | type ValidEngine = keyof typeof engineDictionary; function getFormattedEngineName (line 62) | function getFormattedEngineName(engineName: ValidEngine, strengthLevel?:... FILE: src/client/scripts/esm/game/chess/engines/engineCheckmatePractice.ts function invertPieceNameDictionary (line 132) | function invertPieceNameDictionary(json: { [key: string]: number }): { [... function initEvalWeightsAndSearchProperties (line 214) | function initEvalWeightsAndSearchProperties(): void { function diagonalNorm (line 558) | function diagonalNorm(square: DoubleCoords): number { function diagonalNormSquared (line 563) | function diagonalNormSquared(square: DoubleCoords): number { function manhattanNorm (line 568) | function manhattanNorm(square: DoubleCoords): number { function manhattanDistance (line 573) | function manhattanDistance(square1: DoubleCoords, square2: DoubleCoords)... function specialNorm (line 578) | function specialNorm(square: DoubleCoords): number { function pawnNorm (line 583) | function pawnNorm(square: DoubleCoords): number { function vincinityNorm (line 589) | function vincinityNorm(square: DoubleCoords): number { function get_center_of_mass (line 597) | function get_center_of_mass( function is_natural_multiple (line 621) | function is_natural_multiple(v: DoubleCoords, direction: DoubleCoords): ... function rider_threatens (line 633) | function rider_threatens( function add_move (line 672) | function add_move(square: DoubleCoords, v: DoubleCoords): DoubleCoords { function rescaleVector (line 677) | function rescaleVector(scalar: number, v: DoubleCoords): DoubleCoords { function crossProduct (line 682) | function crossProduct(v1: DoubleCoords, v2: DoubleCoords): number { function squares_are_equal (line 687) | function squares_are_equal(square_1: DoubleCoords, square_2: DoubleCoord... function tuplelist_contains_tuple (line 692) | function tuplelist_contains_tuple(tuplelist: DoubleCoords[], tuple: Doub... function square_is_occupied (line 697) | function square_is_occupied( function piece_threatens_square (line 708) | function piece_threatens_square( function square_is_threatened (line 768) | function square_is_threatened( function get_black_legal_moves (line 782) | function get_black_legal_moves( function get_black_legal_move_amount (line 798) | function get_black_legal_move_amount( function is_check (line 807) | function is_check(piecelist: number[], coordlist: DoubleCoords[]): boole... function isBlackInTrap (line 827) | function isBlackInTrap(piecelist: number[], coordlist: DoubleCoords[]): ... function isBlackNearProtectedRider (line 841) | function isBlackNearProtectedRider(piecelist: number[], coordlist: Doubl... function get_white_piece_candidate_squares (line 863) | function get_white_piece_candidate_squares( function add_suitable_squares_to_candidate_list (line 982) | function add_suitable_squares_to_candidate_list( function get_white_candidate_moves (line 1094) | function get_white_candidate_moves( function make_white_move (line 1114) | function make_white_move( function make_black_move (line 1134) | function make_black_move( function get_position_evaluation (line 1166) | function get_position_evaluation( function alphabeta (line 1235) | function alphabeta( function runIterativeDeepening (line 1592) | function runIterativeDeepening( function cyrb128 (line 1720) | function cyrb128(str: string): number[] { function mulberry32 (line 1744) | function mulberry32(a: number): () => number { function move_to_gamefile_move (line 1756) | function move_to_gamefile_move(target_square: DoubleCoords): string { function doesTypeExist (line 1770) | function doesTypeExist(boardsim: Board, type: number): boolean { function getFirstOfType (line 1778) | function getFirstOfType(boardsim: Board, type: number): DoubleCoords | u... function convertBigIntCoordsToFloating (line 1805) | function convertBigIntCoordsToFloating(coords: Coords): DoubleCoords { function runEngine (line 1812) | async function runEngine(): Promise { FILE: src/client/scripts/esm/game/chess/engines/enginecards/hydrochess_card.ts type SupportedResult (line 14) | type SupportedResult = { supported: true } | { supported: false; reason:... constant I64_MAX (line 19) | const I64_MAX = 2n ** 63n - 1n; constant BORDER_CAP (line 22) | const BORDER_CAP = I64_MAX - 1000n; constant SUPPORTED_VARIANTS (line 24) | const SUPPORTED_VARIANTS = new Set([ function isPositionSupported (line 52) | function isPositionSupported(variantOptions: VariantOptions): SupportedR... FILE: src/client/scripts/esm/game/chess/engines/hydrochess.ts type EngineConfig (line 23) | interface EngineConfig { type EngineWorkerMessage (line 28) | interface EngineWorkerMessage { type WasmBestMoveResult (line 40) | interface WasmBestMoveResult { function initWasm (line 48) | async function initWasm(): Promise { function mapRustPromotionToSiteAbbr (line 152) | function mapRustPromotionToSiteAbbr( FILE: src/client/scripts/esm/game/chess/game.ts function init (line 94) | function init(): void { function update (line 120) | function update(): void { function testIfEmptyBoardRegionClicked (line 222) | function testIfEmptyBoardRegionClicked(gamefile: FullGame, mesh: Mesh | ... function render (line 237) | function render(): void { function renderScene (line 262) | function renderScene(): void { function renderTilesAndPromoteLines (line 332) | function renderTilesAndPromoteLines(): void { function renderOutlineofScreenBox (line 341) | function renderOutlineofScreenBox(): void { function getFurthestTileVisible (line 352) | function getFurthestTileVisible(): bigint { function getOverlay (line 363) | function getOverlay(): HTMLElement { FILE: src/client/scripts/esm/game/chess/gamecompressor.ts type SimplifiedGameState (line 31) | interface SimplifiedGameState { function compressGamefile (line 53) | function compressGamefile( function convertMovesToICNConverterInMove (line 96) | function convertMovesToICNConverterInMove(moves: MoveFull[]): MovePrepri... function GameToPosition (line 123) | function GameToPosition( FILE: src/client/scripts/esm/game/chess/gameformulator.ts function formulateGame (line 25) | function formulateGame(longformIn: LongFormatIn, validateMoves?: true): ... FILE: src/client/scripts/esm/game/chess/gameloader.ts function areInAGame (line 74) | function areInAGame(): boolean { function getTypeOfGameWeIn (line 79) | function getTypeOfGameWeIn(): typeof typeOfGameWeAreIn { function areInLocalGame (line 83) | function areInLocalGame(): boolean { function isItOurTurn (line 87) | function isItOurTurn(): boolean { function getOurColor (line 101) | function getOurColor(): Player | undefined { function areWeLoadingGame (line 115) | function areWeLoadingGame(): boolean { function update (line 122) | function update(): void { function startLocalGame (line 129) | async function startLocalGame(options: { function startOnlineGame (line 166) | async function startOnlineGame(options: { function startEngineGame (line 232) | async function startEngineGame(options: { function startBoardEditor (line 311) | async function startBoardEditor(): Promise { function startCustomLocalGame (line 350) | async function startCustomLocalGame(options: { function startCustomEngineGame (line 389) | async function startCustomEngineGame(options: { function startBoardEditorFromCustomPosition (line 457) | async function startBoardEditorFromCustomPosition( function pasteGame (line 512) | async function pasteGame(options: { function onFinishedLoading (line 554) | function onFinishedLoading(): void { function onCatchLoadingError (line 570) | function onCatchLoadingError(err: Error): void { function openGameinfoBarAndConcludeGameIfOver (line 580) | function openGameinfoBarAndConcludeGameIfOver( function unloadLogicalAndRendering (line 588) | function unloadLogicalAndRendering(): void { function unloadGame (line 595) | function unloadGame(): void { FILE: src/client/scripts/esm/game/chess/gameslot.ts type LoadOptions (line 58) | interface LoadOptions { function getGamefile (line 99) | function getGamefile(): FullGame | undefined { function getMesh (line 104) | function getMesh(): Mesh | undefined { function areInGame (line 108) | function areInGame(): boolean { function isLoadedGameViewingWhitePerspective (line 112) | function isLoadedGameViewingWhitePerspective(): boolean { function loadGamefile (line 126) | function loadGamefile(loadOptions: LoadOptions): Promise { function loadLogical (line 155) | function loadLogical(loadOptions: LoadOptions): void { function loadGraphical (line 187) | async function loadGraphical(loadOptions: LoadOptions): Promise { function unloadGame (line 227) | function unloadGame(): void { function startStartingTransition (line 248) | function startStartingTransition(): void { function initCopyPastGameListeners (line 262) | function initCopyPastGameListeners(): void { function removeCopyPasteGameListeners (line 270) | function removeCopyPasteGameListeners(): void { function callbackCopy (line 277) | function callbackCopy(_event: Event): void { function concludeGame (line 287) | function concludeGame(): void { function unConcludeGame (line 318) | function unConcludeGame(): void { FILE: src/client/scripts/esm/game/chess/graphicalchanges.ts function addMeshPiece (line 43) | function addMeshPiece(mesh: Mesh, change: Change): void { function deleteMeshPiece (line 47) | function deleteMeshPiece(mesh: Mesh, change: Change): void { function moveMeshPiece (line 51) | function moveMeshPiece(mesh: Mesh, change: Change): void { function returnMeshPiece (line 61) | function returnMeshPiece(mesh: Mesh, change: Change): void { function animateMove (line 76) | function animateMove( FILE: src/client/scripts/esm/game/chess/movesequence.ts function makeMove (line 41) | function makeMove( function makeMoveAndAnimate (line 77) | function makeMoveAndAnimate( function runMeshChanges (line 99) | function runMeshChanges( function rewindMove (line 113) | function rewindMove(gamefile: FullGame, mesh: Mesh | undefined): void { function viewMove (line 139) | function viewMove( function viewIndex (line 157) | function viewIndex(gamefile: FullGame, mesh: Mesh | undefined, index: nu... function viewFront (line 167) | function viewFront(gamefile: FullGame, mesh: Mesh | undefined): void { function navigateMove (line 181) | function navigateMove(gamefile: FullGame, mesh: Mesh | undefined, forwar... function updateGui (line 204) | function updateGui(showMoveCounter: boolean): void { FILE: src/client/scripts/esm/game/chess/pastegame.ts function callbackPaste (line 61) | async function callbackPaste(_event: Event): Promise { function pasteGame (line 123) | function pasteGame(longformOut: LongFormatOut): void { function getPositionAndSpecialRightsFromLongFormat (line 243) | function getPositionAndSpecialRightsFromLongFormat( FILE: src/client/scripts/esm/game/chess/premoves.ts type Premove (line 39) | interface Premove extends Edit, MoveTagged { function hasAtleastOnePremove (line 103) | function hasAtleastOnePremove(): boolean { function arePremovesApplied (line 108) | function arePremovesApplied(): boolean { function addPremove (line 113) | function addPremove(gamefile: FullGame, mesh: Mesh | undefined, moveTagg... function applyPremove (line 131) | function applyPremove( function generatePremove (line 143) | function generatePremove(gamefile: FullGame, moveTagged: MoveTagged): Pr... function clearPremoves (line 179) | function clearPremoves(): void { function cancelPremoves (line 188) | function cancelPremoves(gamefile: FullGame, mesh?: Mesh): void { function rewindPremoves (line 208) | function rewindPremoves(gamefile: FullGame, mesh?: Mesh): void { function applyPremoves (line 229) | function applyPremoves(gamefile: FullGame, mesh?: Mesh): void { function processPremoves (line 281) | function processPremoves(gamefile: FullGame, mesh?: Mesh): void { function premoveIsLegal (line 336) | function premoveIsLegal( function onYourMove (line 380) | function onYourMove(gamefile: FullGame, mesh?: Mesh): void { function performWithUnapplied (line 392) | function performWithUnapplied( function update (line 414) | function update(gamefile: FullGame, mesh?: Mesh): void { function render (line 430) | function render(): void { FILE: src/client/scripts/esm/game/chess/selection.ts function getPieceSelected (line 95) | function getPieceSelected(): Piece | undefined { function isAPieceSelected (line 100) | function isAPieceSelected(): boolean { function isOpponentPieceSelected (line 105) | function isOpponentPieceSelected(): boolean { function arePremoving (line 110) | function arePremoving(): boolean { function getLegalMovesOfSelectedPiece (line 115) | function getLegalMovesOfSelectedPiece(): LegalMoves | undefined { function getSquarePawnIsCurrentlyPromotingOn (line 120) | function getSquarePawnIsCurrentlyPromotingOn(): CoordsTagged | undefined { function promoteToType (line 128) | function promoteToType(type: number): void { function getEditMode (line 132) | function getEditMode(): boolean { function toggleEditMode (line 138) | function toggleEditMode(): void { function disableEditMode (line 152) | function disableEditMode(): void { function enableEditMode (line 156) | function enableEditMode(): void { function update (line 163) | function update(): void { function updateHoverSquareLegal (line 226) | function updateHoverSquareLegal(gamefile: FullGame): void { function testIfPieceSelected (line 261) | function testIfPieceSelected(gamefile: FullGame, mesh: Mesh | undefined)... function testIfPieceDropped (line 313) | function testIfPieceDropped(gamefile: FullGame, mesh: Mesh | undefined):... function testIfPieceMoved (line 332) | function testIfPieceMoved(gamefile: FullGame, mesh: Mesh | undefined): v... function viewFrontIfNotViewingLatestMove (line 348) | function viewFrontIfNotViewingLatestMove(gamefile: FullGame, mesh: Mesh ... function canSelectPieceType (line 369) | function canSelectPieceType(basegame: Game, type: number | undefined): 0... function canMovePieceType (line 387) | function canMovePieceType(pieceType: number): boolean { function isOpponentType (line 398) | function isOpponentType(basegame: Game, type: number): boolean { function selectPiece (line 413) | function selectPiece( function reselectPiece (line 443) | function reselectPiece(): void { function unselectPiece (line 495) | function unselectPiece(): void { function initSelectedPieceInfo (line 511) | function initSelectedPieceInfo(gamefile: FullGame, mesh: Mesh | undefine... function moveGamefilePiece (line 543) | function moveGamefilePiece(gamefile: FullGame, mesh: Mesh | undefined, c... function onPromoteTrigger (line 577) | function onPromoteTrigger(coords: CoordsTagged): void { function makePromotionMove (line 587) | function makePromotionMove(gamefile: FullGame, mesh: Mesh | undefined): ... function stealPointer (line 596) | function stealPointer(pointerIdToSteal: string): void { function renderGhostPiece (line 608) | function renderGhostPiece(): void { FILE: src/client/scripts/esm/game/config.ts constant VIDEO_MODE (line 8) | const VIDEO_MODE: boolean = false; constant DEV_BUILD (line 15) | const DEV_BUILD: boolean = docutil.isLocalEnvironment(); FILE: src/client/scripts/esm/game/gui/boardeditor/actions/guiclearposition.ts function onOpen (line 37) | function onOpen(): void { function onClose (line 42) | function onClose(resetPositioning: boolean): void { function initClearPositionUIListeners (line 50) | function initClearPositionUIListeners(): void { function closeClearPositionUIListeners (line 56) | function closeClearPositionUIListeners(): void { function onKeyDown (line 64) | function onKeyDown(e: KeyboardEvent): void { function onYesButtonPress (line 74) | function onYesButtonPress(): void { function onNoButtonPress (line 79) | function onNoButtonPress(): void { FILE: src/client/scripts/esm/game/gui/boardeditor/actions/guigamerules.ts function onOpen (line 112) | function onOpen(): void { function onClose (line 117) | function onClose(resetPositioning: boolean): void { function initGameRulesListeners (line 125) | function initGameRulesListeners(): void { function closeGameRulesListeners (line 131) | function closeGameRulesListeners(): void { function readGameRules (line 140) | function readGameRules(): void { function setGameRules (line 410) | function setGameRules(gamerulesGUIinfo: GameRulesGUIinfo): void { FILE: src/client/scripts/esm/game/gui/boardeditor/actions/guiresetposition.ts function onOpen (line 37) | function onOpen(): void { function onClose (line 42) | function onClose(resetPositioning: boolean): void { function initResetPositionUIListeners (line 50) | function initResetPositionUIListeners(): void { function closeResetPositionUIListeners (line 56) | function closeResetPositionUIListeners(): void { function onKeyDown (line 64) | function onKeyDown(e: KeyboardEvent): void { function onYesButtonPress (line 74) | function onYesButtonPress(): void { function onNoButtonPress (line 79) | function onNoButtonPress(): void { FILE: src/client/scripts/esm/game/gui/boardeditor/actions/guistartenginegame.ts type EngineUIConfig (line 21) | interface EngineUIConfig { function onOpen (line 83) | function onOpen(): void { function onClose (line 89) | function onClose(resetPositioning = false): void { function initEngineGameUIListeners (line 97) | function initEngineGameUIListeners(): void { function closeEngineGameUIListeners (line 106) | function closeEngineGameUIListeners(): void { function onKeyDown (line 117) | function onKeyDown(e: KeyboardEvent): void { function onYesButtonPress (line 128) | function onYesButtonPress(): void { function onNoButtonPress (line 133) | function onNoButtonPress(): void { function updateEngineUIcontents (line 138) | function updateEngineUIcontents(): void { function readEngineUIConfig (line 145) | function readEngineUIConfig(): EngineUIConfig { FILE: src/client/scripts/esm/game/gui/boardeditor/actions/guistartlocalgame.ts function onOpen (line 37) | function onOpen(): void { function onClose (line 42) | function onClose(resetPositioning: boolean): void { function initLocalGameUIListeners (line 50) | function initLocalGameUIListeners(): void { function closeLocalGameUIListeners (line 56) | function closeLocalGameUIListeners(): void { function onKeyDown (line 64) | function onKeyDown(e: KeyboardEvent): void { function onYesButtonPress (line 74) | function onYesButtonPress(): void { function onNoButtonPress (line 78) | function onNoButtonPress(): void { FILE: src/client/scripts/esm/game/gui/boardeditor/actions/loadposition/guiloadposition.ts function onOpen (line 55) | function onOpen(): void { function openLoadPosition (line 59) | function openLoadPosition(): void { function openSavePositionAs (line 68) | function openSavePositionAs(): void { function onClose (line 79) | function onClose(resetPositioning = false): void { function getMode (line 92) | function getMode(): typeof mode { function initSavePositionUIListeners (line 98) | function initSavePositionUIListeners(): void { function closeSavePositionUIListeners (line 103) | function closeSavePositionUIListeners(): void { function onSaveKeyDown (line 108) | function onSaveKeyDown(e: KeyboardEvent): void { function onSaveButtonPress (line 116) | async function onSaveButtonPress(): Promise { FILE: src/client/scripts/esm/game/gui/boardeditor/actions/loadposition/guiloadpositionmodal.ts type ModalMode (line 14) | type ModalMode = 'load' | 'delete' | 'overwrite_save'; type ModalConfig (line 17) | type ModalConfig = { function openModal (line 44) | function openModal( function closeModal (line 77) | function closeModal(): void { function initModalListeners (line 85) | function initModalListeners(): void { function closeModalListeners (line 92) | function closeModalListeners(): void { function onModalKeyDown (line 99) | function onModalKeyDown(e: KeyboardEvent): void { function onModalYesButtonPress (line 111) | function onModalYesButtonPress(): void { function isOpen (line 123) | function isOpen(): boolean { FILE: src/client/scripts/esm/game/gui/boardeditor/actions/loadposition/guiloadpositionsavelist.ts type ButtonHandlerPair (line 26) | type ButtonHandlerPair = { type UnifiedSave (line 32) | type UnifiedSave = { storage_type: StorageType } & EditorAbridgedSaveState; type PreloadedCloudSaves (line 35) | type PreloadedCloudSaves = CloudSaveListRecord[] | undefined; function withRequest (line 78) | async function withRequest(fn: () => Promise): Promise { function registerButtonClick (line 92) | function registerButtonClick(button: HTMLButtonElement, handler: (e: Mou... function unregisterAllPositionButtonListeners (line 97) | function unregisterAllPositionButtonListeners(): void { function clearSavedPositionList (line 105) | function clearSavedPositionList(): void { function performLoad (line 112) | async function performLoad(position_name: string, storage_type: StorageT... function onCloudButtonPress (line 136) | async function onCloudButtonPress( function performDelete (line 156) | async function performDelete(position_name: string, storage_type: Storag... function updateSavedPositionListUI (line 175) | async function updateSavedPositionListUI(preloadedCloudSaves?: Preloaded... function generateRowForSavedPositionsElement (line 244) | function generateRowForSavedPositionsElement( function createButtonElement (line 335) | function createButtonElement(svgHref: string): HTMLButtonElement { FILE: src/client/scripts/esm/game/gui/boardeditor/guiboardeditor.ts function open (line 68) | async function open(): Promise { function isOpen (line 101) | function isOpen(): boolean { function close (line 105) | function close(): void { function initListeners (line 117) | function initListeners(): void { function closeListeners (line 126) | function closeListeners(): void { function closeAllFloatingWindows (line 136) | function closeAllFloatingWindows(resetPositioning: boolean): void { function callback_ToggleMenu (line 147) | function callback_ToggleMenu(): void { function setSidebarExpanded (line 155) | function setSidebarExpanded(expanded: boolean): void { function callback_Action (line 165) | function callback_Action(e: Event): void { FILE: src/client/scripts/esm/game/gui/boardeditor/guifloatingwindow.ts constant NARROW_THRESHOLD (line 28) | const NARROW_THRESHOLD = 727; type FloatingWindowHandle (line 33) | interface FloatingWindowHandle { type FloatingWindowOptions (line 42) | interface FloatingWindowOptions { function create (line 65) | function create(opts: FloatingWindowOptions): FloatingWindowHandle { FILE: src/client/scripts/esm/game/gui/boardeditor/guipalette.ts function initUI (line 74) | async function initUI(): Promise { function markPiece (line 171) | function markPiece(type: number | null): void { function updatePieceColors (line 182) | function updatePieceColors(newColor: Player): void { function nextColor (line 218) | function nextColor(): void { function initListeners (line 225) | function initListeners(): void { function closeListeners (line 231) | function closeListeners(): void { function _getPlayersInOrder (line 240) | function _getPlayersInOrder(): Player[] { function _getActivePieceElements (line 247) | function _getActivePieceElements(): Element[] { function callback_ChangePieceType (line 254) | function callback_ChangePieceType(e: Event): void { FILE: src/client/scripts/esm/game/gui/boardeditor/guipositionheader.ts function updateActivePositionElement (line 24) | function updateActivePositionElement(positionname: string | undefined): ... function updateDirtyIndicator (line 37) | function updateDirtyIndicator(dirty: boolean): void { function onNewSelection (line 43) | function onNewSelection(): void { function onClearSelection (line 51) | function onClearSelection(): void { FILE: src/client/scripts/esm/game/gui/boardeditor/guitoolbar.ts function markTool (line 24) | function markTool(tool: Tool): void { function initListeners (line 32) | function initListeners(): void { function closeListeners (line 38) | function closeListeners(): void { function callback_ChangeTool (line 46) | function callback_ChangeTool(e: Event): void { FILE: src/client/scripts/esm/game/gui/gui.ts function prepareForOpen (line 25) | function prepareForOpen(): void { function randomizePanVelDir (line 34) | function randomizePanVelDir(): void { function displayStatus_FeaturePlanned (line 41) | function displayStatus_FeaturePlanned(): void { FILE: src/client/scripts/esm/game/gui/guiclock.ts function hideClocks (line 98) | function hideClocks(): void { function showClocks (line 104) | function showClocks(): void { function stopClocks (line 113) | function stopClocks(basegame?: Game): void { function cancelSoundEffectTimers (line 122) | function cancelSoundEffectTimers(): void { function resetClocks (line 145) | function resetClocks(): void { function update (line 150) | function update(basegame: Game): void { function edit (line 164) | function edit(basegame: Game): void { function rescheduleSoundEffects (line 178) | function rescheduleSoundEffects(clocks: ClockData): void { function removeBorder (line 188) | function removeBorder(element: HTMLElement): void { function updateBorderColor (line 195) | function updateBorderColor( function updateTextContent (line 237) | function updateTextContent(clocks: ClockData): void { function scheduleMinuteTick (line 249) | function scheduleMinuteTick(clocks: ClockData): void { function playMinuteTick (line 258) | function playMinuteTick(color: Player): void { function set (line 263) | function set(basegame: Game): void { function scheduleCountdown (line 271) | function scheduleCountdown(clocks: ClockData): void { function push (line 277) | function push(clocks: ClockData): void { function scheduleDrum (line 288) | function scheduleDrum(clocks: ClockData): void { function scheduleTicking (line 307) | function scheduleTicking(clocks: ClockData): void { function scheduleTick (line 322) | function scheduleTick(clocks: ClockData): void { function playDrumAndQueueNext (line 334) | function playDrumAndQueueNext(clocks: ClockData, secsRemaining: number):... function playTickingEffect (line 354) | function playTickingEffect(offset: number): void { function playTickEffect (line 359) | function playTickEffect(offset: number): void { FILE: src/client/scripts/esm/game/gui/guidrawoffer.ts function open (line 29) | function open(): void { function close (line 38) | function close(): void { function initDrawOfferListeners (line 51) | function initDrawOfferListeners(): void { function closeDrawOfferListeners (line 56) | function closeDrawOfferListeners(): void { function updateVisibilityOfNamesAndClocksWithDrawOffer (line 66) | function updateVisibilityOfNamesAndClocksWithDrawOffer(): void { function isDrawOfferUICramped (line 90) | function isDrawOfferUICramped(): boolean { FILE: src/client/scripts/esm/game/gui/guigameinfo.ts function open (line 60) | function open(metadata: MetaData, showGameControlButtons?: boolean): void { function embedUsernameContainers (line 82) | function embedUsernameContainers(gameMetadata: MetaData): void { function close (line 143) | function close(): void { function clearUsernameContainers (line 160) | function clearUsernameContainers(): void { function initListeners_Gamecontrol (line 174) | function initListeners_Gamecontrol(): void { function closeListeners_Gamecontrol (line 181) | function closeListeners_Gamecontrol(): void { function undoMove (line 187) | function undoMove(): void { function restartGame (line 192) | function restartGame(): void { function update_GameControlButtons (line 200) | function update_GameControlButtons(undoingIsLegal: boolean): void { function preventFocus (line 212) | function preventFocus(event: Event): void { function revealPlayerNames (line 217) | function revealPlayerNames(): void { function hidePlayerNames (line 223) | function hidePlayerNames(): void { function toggle (line 228) | function toggle(): void { function getPlayerNamesForGame (line 239) | function getPlayerNamesForGame(metadata: MetaData): { function updateWhosTurn (line 311) | function updateWhosTurn(): void { function gameEnd (line 336) | function gameEnd(conclusion?: GameConclusion): void { function getHeightOfGameInfoBar (line 419) | function getHeightOfGameInfoBar(): number { function updateAlignmentUsernames (line 428) | function updateAlignmentUsernames(): void { function addRatingChangeToExistingUsernameContainers (line 454) | function addRatingChangeToExistingUsernameContainers( FILE: src/client/scripts/esm/game/gui/guiloading.ts function closeAnimation (line 14) | function closeAnimation(): void { FILE: src/client/scripts/esm/game/gui/guinavigation.ts constant TELEPORT_LIMIT (line 74) | const TELEPORT_LIMIT: bigint = 10n ** 30n; function isOpen (line 116) | function isOpen(): boolean { function toggle (line 121) | function toggle(): void { function open (line 128) | function open({ allowEditCoords = true }: { allowEditCoords?: boolean })... function initCoordinates (line 151) | function initCoordinates({ allowEditCoords }: { allowEditCoords: boolean... function close (line 165) | function close(): void { function updateElement_Coords (line 175) | function updateElement_Coords(): void { function displayBigIntInInput (line 196) | function displayBigIntInInput( function parseStringToBigInt (line 218) | function parseStringToBigInt(value: string): bigint { function isCoordinateActive (line 275) | function isCoordinateActive(): boolean { function initListeners_Navigation (line 279) | function initListeners_Navigation(): void { function closeListeners_Navigation (line 328) | function closeListeners_Navigation(): void { function callback_CoordsXChange (line 378) | function callback_CoordsXChange(): void { function callback_CoordsYChange (line 384) | function callback_CoordsYChange(): void { function callback_CoordsChange (line 389) | function callback_CoordsChange(index: 0 | 1): void { function callback_Back (line 417) | function callback_Back(): void { function callback_Expand (line 421) | function callback_Expand(): void { function recenter (line 453) | function recenter(): void { function callback_Annotations (line 459) | function callback_Annotations(): void { function isAnnotationsButtonEnabled (line 466) | function isAnnotationsButtonEnabled(): boolean { function callback__Collapse (line 470) | function callback__Collapse(): void { function showCollapse (line 481) | function showCollapse(): void { function hideCollapse (line 487) | function hideCollapse(): void { function areCoordsAllowedToBeEdited (line 498) | function areCoordsAllowedToBeEdited(): boolean { function getHeightOfNavBar (line 503) | function getHeightOfNavBar(): number { function callback_Pause (line 507) | function callback_Pause(): void { function update (line 512) | function update(): void { function callback_MoveRewind (line 524) | function callback_MoveRewind(): void { function callback_MoveForward (line 531) | function callback_MoveForward(): void { function isItOkayToRewindOrForward (line 537) | function isItOkayToRewindOrForward(): boolean { function update_MoveButtons (line 546) | function update_MoveButtons(): void { function callback_MoveRewindMouseDown (line 560) | function callback_MoveRewindMouseDown(): void { function callback_MoveRewindMouseLeave (line 568) | function callback_MoveRewindMouseLeave(): void { function callback_MoveRewindMouseUp (line 573) | function callback_MoveRewindMouseUp(): void { function callback_MoveForwardMouseDown (line 578) | function callback_MoveForwardMouseDown(): void { function callback_MoveForwardMouseLeave (line 586) | function callback_MoveForwardMouseLeave(): void { function callback_MoveForwardMouseUp (line 591) | function callback_MoveForwardMouseUp(): void { function callback_MoveRewindTouchStart (line 598) | function callback_MoveRewindTouchStart(): void { function callback_MoveRewindTouchMove (line 608) | function callback_MoveRewindTouchMove(event: TouchEvent): void { function callback_MoveRewindTouchEnd (line 625) | function callback_MoveRewindTouchEnd(): void { function callback_MoveForwardTouchStart (line 631) | function callback_MoveForwardTouchStart(): void { function callback_MoveForwardTouchMove (line 641) | function callback_MoveForwardTouchMove(event: TouchEvent): void { function callback_MoveForwardTouchEnd (line 659) | function callback_MoveForwardTouchEnd(): void { function lockRewind (line 669) | function lockRewind(): void { function testIfRewindMove (line 681) | function testIfRewindMove(): void { function testIfForwardMove (line 688) | function testIfForwardMove(): void { function rewindMove (line 694) | function rewindMove(): void { function forwardMove (line 713) | function forwardMove(): void { function isItOkayToUndoEditOrRedoEdit (line 726) | function isItOkayToUndoEditOrRedoEdit(): boolean { function update_EditButtons (line 735) | function update_EditButtons(): void { function callback_UndoEditMouseDown (line 745) | function callback_UndoEditMouseDown(): void { function callback_UndoEditMouseLeave (line 753) | function callback_UndoEditMouseLeave(): void { function callback_UndoEditMouseUp (line 758) | function callback_UndoEditMouseUp(): void { function callback_RedoEditMouseDown (line 763) | function callback_RedoEditMouseDown(): void { function callback_RedoEditMouseLeave (line 771) | function callback_RedoEditMouseLeave(): void { function callback_RedoEditMouseUp (line 776) | function callback_RedoEditMouseUp(): void { function callback_UndoEditTouchStart (line 783) | function callback_UndoEditTouchStart(): void { function callback_UndoEditTouchMove (line 793) | function callback_UndoEditTouchMove(event: TouchEvent): void { function callback_UndoEditTouchEnd (line 810) | function callback_UndoEditTouchEnd(): void { function callback_RedoEditTouchStart (line 816) | function callback_RedoEditTouchStart(): void { function callback_RedoEditTouchMove (line 826) | function callback_RedoEditTouchMove(event: TouchEvent): void { function callback_RedoEditTouchEnd (line 844) | function callback_RedoEditTouchEnd(): void { function testIfUndoEdit (line 851) | function testIfUndoEdit(): void { function testIfRedoEdit (line 857) | function testIfRedoEdit(): void { function callback_UndoEdit (line 863) | function callback_UndoEdit(): void { function callback_RedoEdit (line 870) | function callback_RedoEdit(): void { FILE: src/client/scripts/esm/game/gui/guipause.ts constant MAIN_MENU_BUTTON_CHANGE_FREEZE_DURATION_MILLIS (line 45) | const MAIN_MENU_BUTTON_CHANGE_FREEZE_DURATION_MILLIS: number = 1000; function areWePaused (line 63) | function areWePaused(): boolean { function getelement_perspective (line 68) | function getelement_perspective(): HTMLElement { function open (line 73) | function open(): void { function toggle (line 97) | function toggle(): void { function updatePasteButtonTransparency (line 103) | function updatePasteButtonTransparency(): void { function updatePerspectiveButtonTransparency (line 118) | function updatePerspectiveButtonTransparency(): void { function updateDrawOfferButton (line 127) | function updateDrawOfferButton(): void { function onReceiveOpponentsMove (line 142) | function onReceiveOpponentsMove(): void { function updateTextOfMainMenuButton (line 154) | function updateTextOfMainMenuButton(freezeMainMenuButtonUponChange?: tru... function freezeMainMenuButton (line 191) | function freezeMainMenuButton(): void { function initListeners (line 201) | function initListeners(): void { function closeListeners (line 213) | function closeListeners(): void { function callback_CopyGame (line 225) | function callback_CopyGame(_event: Event): void { function callback_PasteGame (line 230) | function callback_PasteGame(_event: Event): void { function callback_Resume (line 235) | function callback_Resume(): void { function callback_MainMenu (line 244) | function callback_MainMenu(): void { function callback_PracticeMenu (line 260) | function callback_PracticeMenu(): void { function callback_OfferDraw (line 268) | function callback_OfferDraw(): void { function callback_ToggleArrows (line 287) | function callback_ToggleArrows(): void { function callback_Perspective (line 300) | function callback_Perspective(): void { FILE: src/client/scripts/esm/game/gui/guiplay.ts constant TIME_CONTROL_IDXS (line 60) | const TIME_CONTROL_IDXS = { function isOpen (line 102) | function isOpen(): boolean { function getModeSelected (line 107) | function getModeSelected(): typeof modeSelected { function hideElement_joinPrivate (line 111) | function hideElement_joinPrivate(): void { function showElement_joinPrivate (line 114) | function showElement_joinPrivate(): void { function hideElement_inviteCode (line 117) | function hideElement_inviteCode(): void { function showElement_inviteCode (line 120) | function showElement_inviteCode(): void { function open (line 124) | function open(): void { function close (line 133) | function close(): void { function initListeners (line 145) | function initListeners(): void { function closeListeners (line 161) | function closeListeners(): void { function changePlayMode (line 177) | function changePlayMode(mode: typeof modeSelected): void { function callback_playBack (line 273) | function callback_playBack(): void { function callback_online (line 278) | function callback_online(): void { function callback_local (line 282) | function callback_local(): void { function callback_computer (line 286) | function callback_computer(): void { function callback_createInvite (line 291) | function callback_createInvite(): void { function getInviteOptions (line 329) | function getInviteOptions(): InviteOptions { function getEngineDifficultyConfig (line 344) | function getEngineDifficultyConfig(): { strengthLevel: number } { function callback_updateOptions (line 361) | function callback_updateOptions(): void { function savePreferredClockOption (line 385) | function savePreferredClockOption(clockIndex: number): void { function savePreferredRatedOption (line 395) | function savePreferredRatedOption(ratedValue: string): void { function callback_joinPrivate (line 403) | function callback_joinPrivate(): void { function callback_textboxPrivateEnter (line 414) | function callback_textboxPrivateEnter(event: KeyboardEvent): void { function callback_copyInviteCode (line 421) | function callback_copyInviteCode(): void { function initListeners_Invites (line 433) | function initListeners_Invites(): void { function closeListeners_Invites (line 443) | function closeListeners_Invites(): void { function callback_inviteMouseEnter (line 453) | function callback_inviteMouseEnter(event: Event): void { function callback_inviteMouseLeave (line 457) | function callback_inviteMouseLeave(event: Event): void { function callback_inviteClicked (line 461) | function callback_inviteClicked(event: Event): void { function lockCreateInviteButton (line 474) | function lockCreateInviteButton(): void { function unlockCreateInviteButton (line 487) | function unlockCreateInviteButton(): void { function disableCreateInviteButton (line 493) | function disableCreateInviteButton(): void { function enableCreateInviteButton (line 496) | function enableCreateInviteButton(): void { function setElement_CreateInviteTextContent (line 499) | function setElement_CreateInviteTextContent(text: string): void { function isCreateInviteButtonLocked (line 504) | function isCreateInviteButtonLocked(): boolean { function lockAcceptInviteButton (line 512) | function lockAcceptInviteButton(): void { function unlockAcceptInviteButton (line 522) | function unlockAcceptInviteButton(): void { function isAcceptInviteButtonLocked (line 531) | function isAcceptInviteButtonLocked(): boolean { FILE: src/client/scripts/esm/game/gui/guipractice.ts constant SCROLL (line 60) | const SCROLL: { function getCheckmateSelectedID (line 95) | function getCheckmateSelectedID(): string { function open (line 99) | function open(): void { function close (line 110) | function close(): void { function createPracticeHTML (line 121) | function createPracticeHTML(): void { function addPieceIcons (line 180) | async function addPieceIcons(): Promise { function removePieceIcons (line 222) | function removePieceIcons(): void { function initListeners (line 243) | function initListeners(): void { function closeListeners (line 257) | function closeListeners(): void { function callback_mouseDown (line 273) | function callback_mouseDown(event: MouseEvent): void { function callback_mouseUp (line 283) | function callback_mouseUp(event: MouseEvent): void { function callback_mouseMove (line 294) | function callback_mouseMove(event: MouseEvent): void { function applyMomentum (line 306) | function applyMomentum(): void { function clearScrollMomentumInterval (line 317) | function clearScrollMomentumInterval(): void { function changeCheckmateSelected (line 324) | function changeCheckmateSelected(checkmateid: string): void { function updateCheckmatesBeaten (line 341) | function updateCheckmatesBeaten(completedCheckmates: string[]): void { function updateBadges (line 370) | function updateBadges(numCompleted: number, numTotal: number): void { function callback_practiceBack (line 417) | function callback_practiceBack(_event: Event): void { function callback_practicePlay (line 422) | function callback_practicePlay(): void { function callback_keyPress (line 428) | function callback_keyPress(event: KeyboardEvent): void { function moveDownSelection (line 434) | function moveDownSelection(event: Event): void { function moveUpSelection (line 443) | function moveUpSelection(event: Event): void { FILE: src/client/scripts/esm/game/gui/guipromotion.ts function isUIOpen (line 48) | function isUIOpen(): boolean { function open (line 52) | function open(color: Player): void { function close (line 61) | function close(): void { function initUI (line 75) | async function initUI(promotionsAllowed: PlayerGroup | undefi... function resetUI (line 102) | function resetUI(): void { function callback_promote (line 112) | function callback_promote(event: Event): void { function update (line 121) | function update(): void { FILE: src/client/scripts/esm/game/gui/guititle.ts function open (line 27) | function open(): void { function close (line 33) | function close(): void { function initListeners (line 39) | function initListeners(): void { function closeListeners (line 48) | function closeListeners(): void { function callback_Play (line 57) | function callback_Play(_event: Event): void { function callback_Practice (line 62) | function callback_Practice(_event: Event): void { function callback_Guide (line 67) | function callback_Guide(_event: Event): void { function callback_BoardEditor (line 72) | function callback_BoardEditor(_event: Event): void { FILE: src/client/scripts/esm/game/gui/loadingscreen.ts function initColorOfLoadingBackground (line 31) | function initColorOfLoadingBackground(): void { function open (line 50) | async function open(): Promise { function close (line 58) | async function close(): Promise { function onError (line 69) | async function onError(): Promise { FILE: src/client/scripts/esm/game/gui/stats.ts function showMoves (line 43) | function showMoves(durationSecs: number = 2.5): void { function hideMoves (line 54) | function hideMoves(): void { function updateTextContentOfMoves (line 59) | function updateTextContentOfMoves(): void { function updateStatsCSS (line 66) | function updateStatsCSS(): void { function toggleFPS (line 72) | function toggleFPS(): void { function showFPS (line 78) | function showFPS(): void { function hideFPS (line 83) | function hideFPS(): void { function updateFPS (line 87) | function updateFPS(fps: number): void { FILE: src/client/scripts/esm/game/gui/style.ts type HSLColor (line 15) | interface HSLColor { constant SVG_NS (line 27) | const SVG_NS = 'http://www.w3.org/2000/svg'; function setNavStyle (line 41) | function setNavStyle(cssStyle: string): void { function getElementIndexWithinItsParent (line 52) | function getElementIndexWithinItsParent(element: Element): number { function getChildByIndexInParent (line 69) | function getChildByIndexInParent(parent: Element, index: number): Elemen... function arrayToCssColor (line 81) | function arrayToCssColor(colorArray: Color): string { function rgbToHsl (line 105) | function rgbToHsl(r: number, g: number, b: number): HSLColor { function rgbToCssString (line 145) | function rgbToCssString(r: number, g: number, b: number): string { function hslToCssString (line 154) | function hslToCssString(hsl: HSLColor): string { FILE: src/client/scripts/esm/game/gui/toast.ts type ToastOptions (line 9) | interface ToastOptions { constant DURATION_BASE (line 26) | const DURATION_BASE = 900; constant DURATION_MULTIPLIER (line 28) | const DURATION_MULTIPLIER = 45; constant FADE_DURATION (line 31) | const FADE_DURATION = 1000; function show (line 43) | function show(text: string, options: ToastOptions = {}): void { function fadeAfter (line 77) | function fadeAfter(ms: number): void { function hideAfter (line 90) | function hideAfter(ms: number): void { function showPleaseWaitForTask (line 100) | function showPleaseWaitForTask(): void { FILE: src/client/scripts/esm/game/input.ts type MouseButton (line 36) | type MouseButton = (typeof Mouse)[keyof typeof Mouse]; type KeyDownInfo (line 39) | interface KeyDownInfo { type InputListener (line 48) | interface InputListener { type PointerHistory (line 144) | type PointerHistory = { pos: DoubleCoords; time: number }[]; constant CLICK_THRESHOLDS (line 147) | const CLICK_THRESHOLDS = { constant MOUSE_POS_HISTORY_WINDOW_MILLIS (line 167) | const MOUSE_POS_HISTORY_WINDOW_MILLIS = 80; type PhysicalPointer (line 174) | type PhysicalPointer = { type LogicalPointer (line 193) | type LogicalPointer = { type ClickInfo (line 206) | interface ClickInfo { function CreateInputListener (line 260) | function CreateInputListener( function getPhysicalPointerId (line 906) | function getPhysicalPointerId(e: MouseEvent | Touch): string { function getLogicalPointerId (line 912) | function getLogicalPointerId(e: MouseEvent | Touch, button: MouseButton)... function getRelativeMousePosition (line 921) | function getRelativeMousePosition( FILE: src/client/scripts/esm/game/main.ts function start (line 24) | function start(): void { function initListeners (line 41) | function initListeners(): void { function gameLoop (line 55) | function gameLoop(runtime: number): void { function render (line 69) | function render(): void { FILE: src/client/scripts/esm/game/misc/controls.ts function updateNavControls (line 70) | function updateNavControls(): void { function detectPanning (line 83) | function detectPanning(): void { function accelPanVel (line 127) | function accelPanVel(panVel: DoubleCoords, angleDegs: number): DoubleCoo... function deccelPanVel (line 139) | function deccelPanVel(panVel: DoubleCoords): DoubleCoords { function detectZooming (line 156) | function detectZooming(): void { function deccelerateScaleVel (line 194) | function deccelerateScaleVel(scaleVel: number): number { function testOutGameToggles (line 214) | function testOutGameToggles(): void { function testInGameToggles (line 222) | function testInGameToggles(gamefile: FullGame, mesh: Mesh | undefined): ... FILE: src/client/scripts/esm/game/misc/enginegame.ts type EngineConfig (line 30) | interface EngineConfig { function areInEngineGame (line 68) | function areInEngineGame(): boolean { function getOurColor (line 72) | function getOurColor(): Player | undefined { function isItOurTurn (line 77) | function isItOurTurn(): boolean { function getCurrentEngine (line 83) | function getCurrentEngine(): string | undefined { function initEngineGame (line 92) | function initEngineGame(options: { function closeEngineGame (line 140) | function closeEngineGame(): void { function areWeColor (line 161) | function areWeColor(color: Player): boolean { function onMovePlayed (line 169) | function onMovePlayed(): void { function handleEngineMessage (line 223) | function handleEngineMessage(data: any): void { function makeEngineMove (line 253) | function makeEngineMove(tokenMove: unknown): void { function toggleDebug (line 302) | function toggleDebug(): void { function onViewMove (line 312) | function onViewMove(): void { function requestMovesForCurrentPosition (line 321) | function requestMovesForCurrentPosition(): void { function render (line 347) | function render(): void { FILE: src/client/scripts/esm/game/misc/gamesound.ts type SoundName (line 51) | type SoundName = keyof typeof soundStamps; type SoundTimeSnippet (line 53) | type SoundTimeSnippet = readonly [number, number]; constant SUCCESSIVE_MOVES_CONFIG (line 58) | const SUCCESSIVE_MOVES_CONFIG = { constant REVERB_CONFIG (line 68) | const REVERB_CONFIG = { constant BELL_CONFIG (line 80) | const BELL_CONFIG = { constant RIPPLE_CONFIG (line 88) | const RIPPLE_CONFIG = { constant SHAKE_CONFIG (line 108) | const SHAKE_CONFIG = { constant PREMOVE_CONFIG (line 119) | const PREMOVE_CONFIG = { function getSoundStamp (line 152) | function getSoundStamp(soundName: SoundName): SoundTimeSnippet { function getStampDuration (line 159) | function getStampDuration(stamp: SoundTimeSnippet): number { function getSoundTimeSnippet (line 165) | function getSoundTimeSnippet(soundName: SoundName): { startTime: number;... function playSoundEffect (line 180) | function playSoundEffect( function playMove (line 241) | function playMove( function calculateReverb (line 314) | function calculateReverb( function playGamestart (line 335) | function playGamestart(): SoundObject | undefined { function playWin (line 339) | function playWin(delay?: number): SoundObject | undefined { function playDraw (line 343) | function playDraw(delay?: number): SoundObject | undefined { function playLoss (line 347) | function playLoss(delay?: number): SoundObject | undefined { function playLowtime (line 351) | function playLowtime(): SoundObject | undefined { function playDrum (line 355) | function playDrum(): SoundObject | undefined { function playTick (line 360) | function playTick({ volume, offset }: { volume?: number; offset?: number... function playTicking (line 366) | function playTicking({ volume, offset }: { volume?: number; offset?: num... function playViola_c3 (line 372) | function playViola_c3({ volume }: { volume?: number } = {}): SoundObject... function playViolin_c4 (line 376) | function playViolin_c4(): SoundObject | undefined { function playMarimba (line 380) | function playMarimba(): SoundObject | undefined { function playBase (line 385) | function playBase(): SoundObject | undefined { function playGlassCrack (line 389) | function playGlassCrack(): SoundObject | undefined { FILE: src/client/scripts/esm/game/misc/invites.ts type InviteOptions (line 30) | interface InviteOptions { function gelement_iCodeCode (line 54) | function gelement_iCodeCode(): HTMLElement { function update (line 58) | function update(): void { function unsubIfWeNotHave (line 64) | function unsubIfWeNotHave(): void { function unsubFromInvites (line 71) | function unsubFromInvites(): void { function onmessage (line 81) | function onmessage(contents: InvitesMessage): void { function create (line 105) | function create(variantOptions: InviteOptions): void { function cancel (line 130) | function cancel(inviteID = ourInviteID): void { function generateTagForInvite (line 148) | function generateTagForInvite(inviteOptions: { function updateInviteList (line 166) | function updateInviteList(list: Invite[]): void { function playSoundNewOpponentInvite (line 291) | function playSoundNewOpponentInvite(): void { function clear (line 300) | function clear(resetRecentUsersCache?: true): void { function clearIfOnPlayPage (line 312) | function clearIfOnPlayPage(): void { function isInviteOurs (line 319) | function isInviteOurs(invite: Invite): boolean { function getInviteFromElement (line 338) | function getInviteFromElement(inviteElement: HTMLElement): Invite { function createDiv (line 360) | function createDiv( function accept (line 372) | function accept(inviteID: string, isPrivate: boolean): void { function click (line 384) | function click(element: HTMLElement): void { function updateCreateInviteButton (line 397) | function updateCreateInviteButton(): void { function updatePrivateInviteCode (line 404) | function updatePrivateInviteCode(privateInviteID: string | undefined): v... function updateActiveGameCount (line 432) | function updateActiveGameCount(newCount: number): void { function doWeHave (line 437) | function doWeHave(): boolean { function subscribeToInvites (line 446) | async function subscribeToInvites(ignoreAlreadySubbed?: boolean): Promis... FILE: src/client/scripts/esm/game/misc/keybinds.ts function getBoardDragMouseButton (line 18) | function getBoardDragMouseButton(): MouseButton | undefined { function getAnnotationMouseButton (line 27) | function getAnnotationMouseButton(): MouseButton | undefined { function getCollapseMouseButton (line 35) | function getCollapseMouseButton(): MouseButton | undefined { function getPieceSelectionMouseButton (line 42) | function getPieceSelectionMouseButton(): MouseButton | undefined { function getEffectiveDragEnabled (line 52) | function getEffectiveDragEnabled(): boolean { FILE: src/client/scripts/esm/game/misc/loadbalancer.ts function getRunTime (line 51) | function getRunTime(): number { function getDeltaTime (line 56) | function getDeltaTime(): number { function getTimeUntilAFK (line 60) | function getTimeUntilAFK(): number { function areWeAFK (line 64) | function areWeAFK(): boolean { function areWeHibernating (line 68) | function areWeHibernating(): boolean { function isPageHidden (line 72) | function isPageHidden(): boolean { function update (line 76) | function update(runtime: number): void { function updateDeltaTime (line 90) | function updateDeltaTime(runtime: number): void { function trimFrames (line 97) | function trimFrames(): void { function updateFPS (line 108) | function updateFPS(): void { function updateMonitorRefreshRate (line 114) | function updateMonitorRefreshRate(): void { function updateAFK (line 119) | function updateAFK(): void { function onReturnFromAFK (line 124) | function onReturnFromAFK(): void { function restartAFKTimer (line 134) | function restartAFKTimer(): void { function restartHibernateTimer (line 139) | function restartHibernateTimer(): void { function onAFK (line 144) | function onAFK(): void { function onHibernate (line 150) | function onHibernate(): void { function cancelTimerToDeleteInviteAfterLeavingPage (line 197) | function cancelTimerToDeleteInviteAfterLeavingPage(): void { FILE: src/client/scripts/esm/game/misc/onlinegame/afk.ts function isOurAFKAutoResignTimerRunning (line 65) | function isOurAFKAutoResignTimerRunning(): boolean { function onGameStart (line 70) | function onGameStart(): void { function onGameClose (line 75) | function onGameClose(): void { function onMovePlayed (line 86) | function onMovePlayed({ isOpponents }: { isOpponents: boolean }): void { function updateAFK (line 92) | function updateAFK(): void { function rescheduleAlertServerWeAFK (line 104) | function rescheduleAlertServerWeAFK(): void { function cancelAFKTimer (line 124) | function cancelAFKTimer(): void { function tellServerWeAFK (line 131) | function tellServerWeAFK(): void { function tellServerWeBackFromAFK (line 144) | function tellServerWeBackFromAFK(): void { function displayWeAFK (line 153) | function displayWeAFK(secsRemaining: number): void { function playStaccatoNote (line 168) | function playStaccatoNote(note: 'c3' | 'c4', secsRemaining: number): void { function startOpponentAFKCountdown (line 185) | function startOpponentAFKCountdown(millisUntilAutoAFKResign: number): vo... function stopOpponentAFKCountdown (line 199) | function stopOpponentAFKCountdown(): void { function displayOpponentAFK (line 204) | function displayOpponentAFK(secsRemaining: number): void { FILE: src/client/scripts/esm/game/misc/onlinegame/disconnect.ts type OpponentDisconnectValue (line 21) | interface OpponentDisconnectValue { function startOpponentDisconnectCountdown (line 41) | function startOpponentDisconnectCountdown({ function stopOpponentDisconnectCountdown (line 56) | function stopOpponentDisconnectCountdown(): void { function displayOpponentDisconnect (line 61) | function displayOpponentDisconnect(secsRemaining: number, wasByChoice: b... FILE: src/client/scripts/esm/game/misc/onlinegame/drawoffers.ts function isOfferingDrawLegal (line 45) | function isOfferingDrawLegal(): boolean { function isTooSoonToOfferDraw (line 58) | function isTooSoonToOfferDraw(): boolean { function areWeAcceptingDraw (line 70) | function areWeAcceptingDraw(): boolean { function onOpponentExtendedOffer (line 75) | function onOpponentExtendedOffer(): void { function onOpponentDeclinedOffer (line 83) | function onOpponentDeclinedOffer(): void { function extendOffer (line 91) | function extendOffer(): void { function callback_AcceptDraw (line 103) | function callback_AcceptDraw(): void { function callback_declineDraw (line 118) | function callback_declineDraw(): void { function closeDraw (line 130) | function closeDraw(): void { function set (line 140) | function set(drawOffer: DrawOfferInfo): void { function onMovePlayed (line 148) | function onMovePlayed({ isOpponents }: { isOpponents: boolean }): void { function onGameClose (line 158) | function onGameClose(): void { FILE: src/client/scripts/esm/game/misc/onlinegame/movesendreceive.ts function sendMove (line 44) | function sendMove(): void { function handleOpponentsMove (line 73) | function handleOpponentsMove( function checkAndReportIllegalOpponentMove (line 146) | function checkAndReportIllegalOpponentMove( function applyClockValues (line 173) | function applyClockValues(gamefile: FullGame, clockValues: ClockValues |... FILE: src/client/scripts/esm/game/misc/onlinegame/onlinegame.ts function areInOnlineGame (line 92) | function areInOnlineGame(): boolean { function getGameID (line 97) | function getGameID(): number { function getIsPrivate (line 103) | function getIsPrivate(): boolean { function isRated (line 109) | function isRated(): boolean { function doWeHaveRole (line 115) | function doWeHaveRole(): boolean { function getOurColor (line 123) | function getOurColor(): Player | undefined { function getPlayerRatings (line 129) | function getPlayerRatings(): PlayerGroup | undefined { function areWeColorInOnlineGame (line 134) | function areWeColorInOnlineGame(color: Player): boolean { function isItOurTurn (line 139) | function isItOurTurn(): boolean { function hasPlayerPressedAbortOrResignButton (line 146) | function hasPlayerPressedAbortOrResignButton(): boolean { function areInSync (line 154) | function areInSync(): boolean { function hasServerConcludedGame (line 164) | function hasServerConcludedGame(): boolean { function setInSyncTrue (line 172) | function setInSyncTrue(): void { function setInSyncFalse (line 176) | function setInSyncFalse(): void { function initOnlineGame (line 183) | function initOnlineGame(options: { function set_DrawOffers_DisconnectInfo_AutoAFKResign (line 213) | function set_DrawOffers_DisconnectInfo_AutoAFKResign(participantState?: ... function closeOnlineGame (line 230) | function closeOnlineGame(): void { function initEventListeners (line 246) | function initEventListeners(): void { function closeEventListeners (line 263) | function closeEventListeners(): void { function confirmNavigationAwayFromGame (line 278) | function confirmNavigationAwayFromGame(event: MouseEvent): void { function update (line 299) | function update(): void { function resyncToGame (line 306) | function resyncToGame(): void { function onMovePlayed (line 312) | function onMovePlayed({ isOpponents }: { isOpponents: boolean }): void { function reportOpponentsMove (line 320) | function reportOpponentsMove(reason: string): void { function onAbortOrResignButtonPress (line 333) | function onAbortOrResignButtonPress(): void { function onMainMenuButtonPress (line 350) | function onMainMenuButtonPress(): void { function deleteCustomVariantOptions (line 361) | function deleteCustomVariantOptions(): void { function requestRemovalFromPlayersInActiveGames (line 377) | function requestRemovalFromPlayersInActiveGames(): void { function adjustClockValuesForPing (line 394) | function adjustClockValuesForPing(clockValues: ClockValues): ClockValues { function getKeyForOnlineGameVariantOptions (line 426) | function getKeyForOnlineGameVariantOptions(gameID: number): string { FILE: src/client/scripts/esm/game/misc/onlinegame/onlinegamerouter.ts type LoggedGameInfo (line 39) | type LoggedGameInfo = Required< function routeMessage (line 50) | function routeMessage(contents: GameMessage): void { function handleJoinGame (line 132) | function handleJoinGame(message: JoinGameMessage): void { function handleLoggedGameInfo (line 149) | function handleLoggedGameInfo(message: LoggedGameInfo): void { function handleUpdatedClock (line 220) | function handleUpdatedClock(basegame: Game, clockValues: ClockValues): v... function handleUnsubbing (line 237) | function handleUnsubbing(): void { function handleLogin (line 246) | function handleLogin(basegame: Game): void { function handleNoGame (line 265) | function handleNoGame(basegame: Game): void { function handleLeaveGame (line 280) | function handleLeaveGame(): void { FILE: src/client/scripts/esm/game/misc/onlinegame/resyncer.ts function handleServerGameUpdate (line 40) | function handleServerGameUpdate( function synchronizeMovesList (line 87) | function synchronizeMovesList( function findLastestMatchingMoveIndex (line 220) | function findLastestMatchingMoveIndex(ourMoves: MoveRecord[], serverMove... FILE: src/client/scripts/esm/game/misc/onlinegame/tabnameflash.ts function onGameStart (line 29) | function onGameStart({ isOurMove }: { isOurMove: boolean }): void { function onGameClose (line 35) | function onGameClose(): void { function onMovePlayed (line 40) | function onMovePlayed({ isOpponents }: { isOpponents: boolean }): void { function flashTabNameYOUR_MOVE (line 57) | function flashTabNameYOUR_MOVE(parity: boolean): void { function cancelFlashTabTimer (line 70) | function cancelFlashTabTimer(): void { function scheduleMoveSound_timeoutID (line 76) | function scheduleMoveSound_timeoutID(): void { function cancelMoveSound (line 87) | function cancelMoveSound(): void { FILE: src/client/scripts/esm/game/misc/space.ts constant HALF (line 22) | const HALF: BigDecimal = bd.fromNumber(0.5); function convertWorldSpaceToCoords (line 28) | function convertWorldSpaceToCoords(worldCoords: DoubleCoords): BDCoords { function convertWorldSpaceToCoords_Axis (line 38) | function convertWorldSpaceToCoords_Axis( function convertWorldSpaceToCoords_Rounded (line 48) | function convertWorldSpaceToCoords_Rounded(worldCoords: DoubleCoords): C... function roundCoord (line 54) | function roundCoord(coord: BigDecimal): bigint { function roundCoords (line 60) | function roundCoords(coords: BDCoords): Coords { function convertCoordToWorldSpace (line 65) | function convertCoordToWorldSpace( function convertCoordToWorldSpace_IgnoreSquareCenter (line 85) | function convertCoordToWorldSpace_IgnoreSquareCenter( function convertPixelsToWorldSpace_Virtual (line 100) | function convertPixelsToWorldSpace_Virtual(value: number): number { function convertWorldSpaceToPixels_Virtual (line 106) | function convertWorldSpaceToPixels_Virtual(value: number): number { function convertWorldSpaceToGrid (line 112) | function convertWorldSpaceToGrid(value: number): BigDecimal { FILE: src/client/scripts/esm/game/rendering/ColorFlowRenderer.ts class ColorFlowRenderer (line 15) | class ColorFlowRenderer { method constructor (line 82) | constructor(gl: WebGL2RenderingContext) { method init (line 87) | private init(): void { method createShader (line 133) | private createShader(type: number, source: string): WebGLShader | null { method render (line 150) | public render(deltaTime: number): void { FILE: src/client/scripts/esm/game/rendering/WaterRipples.ts constant RIPPLE_DIST_FROM_EDGE (line 30) | const RIPPLE_DIST_FROM_EDGE = 0.54; constant ELAPSED_TIME_OFFSET (line 32) | const ELAPSED_TIME_OFFSET = -230; constant RIPPLE_LIFETIME_BASE (line 38) | const RIPPLE_LIFETIME_BASE = 1.1; constant RIPPLE_LIFETIME_MULTIPLIER (line 40) | const RIPPLE_LIFETIME_MULTIPLIER = 0.5; function init (line 56) | function init(programManager: ProgramManager, width: number, height: num... function updateRippleLifetime (line 70) | function updateRippleLifetime(width: number, height: number): void { function addRipple (line 79) | function addRipple(sourceCoords: Coords): void { function update (line 146) | function update(): void { function getPass (line 174) | function getPass(): PostProcessPass[] { FILE: src/client/scripts/esm/game/rendering/animation.ts type AnimationSegment (line 38) | interface AnimationSegment { type SegmentInfo (line 53) | type SegmentInfo = { type Animation (line 71) | interface Animation { constant ZERO (line 102) | const ZERO = bd.fromBigInt(0n); constant ONE (line 103) | const ONE = bd.fromBigInt(1n); constant SPLINES (line 106) | const SPLINES: { constant TRANSPARENT_SQUARE_Z (line 125) | const TRANSPARENT_SQUARE_Z: number = 0.01; constant SOUND_OFFSET (line 127) | const SOUND_OFFSET: number = 0; constant MAX_DISTANCE_BEFORE_TELEPORT (line 129) | const MAX_DISTANCE_BEFORE_TELEPORT: number = 80; constant MOVE_ANIMATION_DURATION (line 132) | const MOVE_ANIMATION_DURATION = { constant DEBUG (line 153) | let DEBUG = false; function animatePiece (line 174) | function animatePiece( function clearAnimations (line 241) | function clearAnimations(playSounds = false): void { function toggleDebug (line 250) | function toggleDebug(): void { function stretchKeyframesForResolution (line 261) | function stretchKeyframesForResolution( function createAnimationSegments (line 275) | function createAnimationSegments(waypoints: BDCoords[]): AnimationSegmen... function calculateAnimationDuration (line 298) | function calculateAnimationDuration(totalDistance: BigDecimal, waypointC... function scheduleSoundPlayback (line 320) | function scheduleSoundPlayback(animation: Animation): void { function scheduleAnimationRemoval (line 326) | function scheduleAnimationRemoval(animation: Animation): void { function playAnimationSound (line 340) | function playAnimationSound(animation: Animation): void { function update (line 353) | function update(): void { function shiftArrowIndicatorOfAnimatedPiece (line 363) | function shiftArrowIndicatorOfAnimatedPiece(animation: Animation): void { function renderTransparentSquares (line 388) | function renderTransparentSquares(): void { function renderAnimations (line 406) | function renderAnimations(): void { function getCurrentSegment (line 504) | function getCurrentSegment( function getCurrentAnimationPosition (line 578) | function getCurrentAnimationPosition( function forEachActiveKeyframe (line 610) | function forEachActiveKeyframe( FILE: src/client/scripts/esm/game/rendering/area.ts type Area (line 30) | interface Area { constant TWO (line 39) | const TWO = bd.fromNumber(2.0); function applyPaddingToBox (line 60) | function applyPaddingToBox(box: BoundingBoxBD): BoundingBoxBD { function calculateFromBox (line 110) | function calculateFromBox(box: BoundingBoxBD): Area { function getBoundingBoxHalfDimensions (line 131) | function getBoundingBoxHalfDimensions(boundingBox: BoundingBoxBD): { function calcScaleToMatchSides (line 149) | function calcScaleToMatchSides(boundingBox: BoundingBoxBD): BigDecimal { function calculateFromCoordsList (line 175) | function calculateFromCoordsList(coordsList: Coords[]): Area { function calculateFromUnpaddedBox (line 189) | function calculateFromUnpaddedBox(box: BoundingBoxBD): Area { function initTransitionFromArea (line 200) | function initTransitionFromArea(thisArea: Area, ignoreHistory: boolean):... FILE: src/client/scripts/esm/game/rendering/arrows/arrowlegalmovehighlights.ts type ArrowLegalMoves (line 32) | interface ArrowLegalMoves { function update (line 73) | function update(): void { function onPieceIndicatorHover (line 111) | function onPieceIndicatorHover(arrowPiece: ArrowPiece): void { function renderEachHoveredPieceLegalMoves (line 171) | function renderEachHoveredPieceLegalMoves(): void { function regenModelsOfHoveredPieces (line 193) | function regenModelsOfHoveredPieces(): void { function reset (line 215) | function reset(): void { FILE: src/client/scripts/esm/game/rendering/arrows/arrows.ts type SlideArrows (line 30) | interface SlideArrows { type ArrowsLine (line 50) | interface ArrowsLine { type Arrow (line 61) | interface Arrow extends BaseArrow { type ArrowPiece (line 81) | interface ArrowPiece { type BaseArrow (line 90) | interface BaseArrow { type HoveredArrow (line 98) | interface HoveredArrow { type HintArrow (line 116) | interface HintArrow extends BaseArrow { constant MAX_PIECES (line 126) | const MAX_PIECES = 40_000; constant MAX_LINES (line 128) | const MAX_LINES = 8; function getMode (line 175) | function getMode(): typeof mode { function setMode (line 180) | function setMode(value: typeof mode): void { function toggleArrows (line 189) | function toggleArrows(): void { function getAllArrows (line 207) | function getAllArrows(): Arrow[] { function getSlideArrows (line 219) | function getSlideArrows(): SlideArrows { function getAnimatedArrows (line 224) | function getAnimatedArrows(): Arrow[] { function getHoveredArrows (line 232) | function getHoveredArrows(): HoveredArrow[] { function getHintArrows (line 237) | function getHintArrows(): HintArrow[] { function areHoveringAtleastOneArrow (line 245) | function areHoveringAtleastOneArrow(): boolean { function getAllArrowWorldLocations (line 253) | function getAllArrowWorldLocations(): DoubleCoords[] { function areArrowsActiveThisFrame (line 261) | function areArrowsActiveThisFrame(): boolean { function reset (line 271) | function reset(): void { function update (line 286) | function update(): void { FILE: src/client/scripts/esm/game/rendering/arrows/arrowscalculator.ts type SlideArrowsDraft (line 62) | interface SlideArrowsDraft { type ArrowsLineDraft (line 83) | interface ArrowsLineDraft { type ArrowDraft (line 97) | type ArrowDraft = { constant WIDTH (line 107) | const WIDTH = 0.65; constant EDGE_GAP (line 110) | const EDGE_GAP = 0.15; constant IMAGE_EDGE_DIST (line 112) | const IMAGE_EDGE_DIST: BigDecimal = bd.fromNumber(WIDTH / 2 + EDGE_GAP); constant STACK_PADDING (line 115) | const STACK_PADDING = 0.35; constant OPACITY (line 117) | const OPACITY = 0.6; constant MIN_SQUARE_SIZE (line 120) | const MIN_SQUARE_SIZE: BigDecimal = bd.fromBigInt(12n); constant PERSPECTIVE_EDGE_DIST (line 123) | const PERSPECTIVE_EDGE_DIST = 17; constant HALF (line 125) | const HALF = bd.fromNumber(0.5); function getBoundingBoxFloat (line 143) | function getBoundingBoxFloat(): BoundingBoxBD | undefined { function areZoomedInEnoughForArrows (line 148) | function areZoomedInEnoughForArrows(): boolean { function getArrowIndicatorHalfWidth (line 156) | function getArrowIndicatorHalfWidth(): number { function calculateArrows (line 167) | function calculateArrows(mode: 0 | 1 | 2 | 3): { function updateBoundingBoxesOfVisibleScreen (line 199) | function updateBoundingBoxesOfVisibleScreen(): void { function generateArrowsDraft (line 244) | function generateArrowsDraft(): SlideArrowsDraft { function calcArrowsLineDraft (line 294) | function calcArrowsLineDraft( function removeUnnecessaryArrows (line 491) | function removeUnnecessaryArrows(slideArrowsDraft: SlideArrowsDraft, mod... function isAnimatedArrowUnnecessary (line 513) | function isAnimatedArrowUnnecessary( function getSlideExceptions (line 537) | function getSlideExceptions(mode: 0 | 1 | 2 | 3): Vec2Key[] { function removeTypesThatCantSlideOntoScreenFromLineDraft (line 548) | function removeTypesThatCantSlideOntoScreenFromLineDraft(line: ArrowsLin... function calculatePieceArrows (line 567) | function calculatePieceArrows(slideArrowsDraft: SlideArrowsDraft): { function convertLineDraftToLine (line 601) | function convertLineDraftToLine( function processPiece (line 655) | function processPiece( function transitionTowardTargetIfClicked (line 692) | function transitionTowardTargetIfClicked( function updateHintArrows (line 751) | function updateHintArrows(): HintArrow[] { FILE: src/client/scripts/esm/game/rendering/arrows/arrowsgraphics.ts constant ARROW_SIZE_RATIO (line 31) | const ARROW_SIZE_RATIO = 0.3; constant ATTRIB_INFO_PICTURES (line 34) | const ATTRIB_INFO_PICTURES: AttributeInfoInstanced = { constant ATTRIB_INFO_ARROWS (line 46) | const ATTRIB_INFO_ARROWS: AttributeInfoInstanced = { function render (line 58) | function render(): void { function concatData (line 171) | function concatData( function getVertexDataOfArrow (line 215) | function getVertexDataOfArrow(halfWorldWidth: number): number[] { FILE: src/client/scripts/esm/game/rendering/arrows/arrowshifts.ts type Shift (line 40) | type Shift = constant ONE (line 64) | const ONE = bd.fromBigInt(1n); function reset (line 77) | function reset(): void { function deleteArrow (line 85) | function deleteArrow(start: Coords): void { function moveArrow (line 95) | function moveArrow(start: Coords, end: Coords): void { function animateArrow (line 111) | function animateArrow(start: Coords, end: BDCoords, type: number): void { function addArrow (line 121) | function addArrow(type: number, end: Coords): void { function overwriteArrows (line 130) | function overwriteArrows(start: Coords): void { function executeArrowShifts (line 152) | function executeArrowShifts(): void { function recalculateLinesThroughCoords (line 269) | function recalculateLinesThroughCoords( FILE: src/client/scripts/esm/game/rendering/boarddrag.ts type PositionHistoryEntry (line 34) | interface PositionHistoryEntry { function isBoardDragging (line 67) | function isBoardDragging(): boolean { function getBoardDraggablePointersDown (line 77) | function getBoardDraggablePointersDown(): string[] { function getBoardDraggablePointers (line 94) | function getBoardDraggablePointers(): string[] { function checkIfBoardPinched (line 110) | function checkIfBoardPinched(): void { function checkIfBoardSingleGrabbed (line 153) | function checkIfBoardSingleGrabbed(): void { function stealPointer (line 172) | function stealPointer(pointerId: string): void { function initSinglePointerDrag (line 180) | function initSinglePointerDrag(pointerId: string): void { function initDoublePointerDrag (line 193) | function initDoublePointerDrag(pointerId: string): void { function checkIfBoardDropped (line 225) | function checkIfBoardDropped(): void { function cancelBoardDrag (line 279) | function cancelBoardDrag(): void { function throwBoard (line 292) | function throwBoard(time: number): void { function throwScale (line 314) | function throwScale(time: number): void { function dragBoard (line 328) | function dragBoard(): void { function addCurrentPositionToHistory (line 410) | function addCurrentPositionToHistory(): void { function removeOldPositions (line 424) | function removeOldPositions(now: number): void { FILE: src/client/scripts/esm/game/rendering/boardpos.ts constant ZERO (line 25) | const ZERO = bd.fromBigInt(0n); constant ONE (line 26) | const ONE = bd.fromBigInt(1n); function getBoardPos (line 58) | function getBoardPos(): BDCoords { function getBoardScale (line 62) | function getBoardScale(): BigDecimal { function getBoardScaleAsNumber (line 74) | function getBoardScaleAsNumber(): number { function getPanVel (line 78) | function getPanVel(): DoubleCoords { function getRelativePanVelCap (line 82) | function getRelativePanVelCap(): number { function getScaleVel (line 86) | function getScaleVel(): number { function glimitToDampScale (line 90) | function glimitToDampScale(): number { function setBoardPos (line 96) | function setBoardPos(newPos: BDCoords): void { function setBoardScale (line 112) | function setBoardScale(newScale: BigDecimal): void { function setPanVel (line 127) | function setPanVel(newPanVel: DoubleCoords): void { function setScaleVel (line 137) | function setScaleVel(newScaleVel: number): void { function eraseMomentum (line 147) | function eraseMomentum(): void { function boardHasMomentum (line 152) | function boardHasMomentum(): boolean { function areZoomedOut (line 163) | function areZoomedOut(): boolean { function isScaleSmallForInvisibleTiles (line 172) | function isScaleSmallForInvisibleTiles(): boolean { function update (line 179) | function update(): void { function panBoard (line 189) | function panBoard(): void { function recalcScale (line 211) | function recalcScale(): void { FILE: src/client/scripts/esm/game/rendering/boardtiles.ts type NoiseTextures (line 43) | type NoiseTextures = { perlinNoise?: WebGLTexture; whiteNoise?: WebGLTex... constant ONE (line 54) | const ONE = bd.fromNumber(1.0); constant TWO (line 55) | const TWO = bd.fromNumber(2.0); constant TEN (line 56) | const TEN = bd.fromNumber(10); function init (line 126) | function init(): void { function initTextures (line 139) | async function initTextures(): Promise { function recalcVariables (line 160) | function recalcVariables(): void { function recalcBoundingBox (line 164) | function recalcBoundingBox(): void { function getSquareCenter (line 182) | function getSquareCenter(): BigDecimal { function getSquareCenterAsNumber (line 186) | function getSquareCenterAsNumber(): number { function gtileWidth_Pixels (line 190) | function gtileWidth_Pixels(debugMode = camera.getDebug()): BigDecimal { function gboundingBox (line 208) | function gboundingBox(debugMode = camera.getDebug()): BoundingBox { function gboundingBoxFloat (line 218) | function gboundingBoxFloat(): BoundingBoxBD { function getBoundingBoxOfBoard (line 236) | function getBoundingBoxOfBoard( function generatePerspectiveBoundingBox (line 262) | function generatePerspectiveBoundingBox(rangeOfView: number): BoundingBo... function roundAwayBoundingBox (line 284) | function roundAwayBoundingBox(src: BoundingBoxBD): BoundingBox { function updateTheme (line 297) | function updateTheme(): void { function resetColor (line 306) | function resetColor( function updateSkyColor (line 317) | function updateSkyColor(): void { function updateNavColor (line 339) | function updateNavColor(): void { function darkenColor (line 370) | function darkenColor(): void { function render (line 388) | function render(noiseTextures?: NoiseTextures, uniforms?: Record { method getPasses (line 91) | public getPasses(): PostProcessPass[] { method fadeInAmbience (line 97) | public fadeInAmbience(transitionDurationMillis: number): void { method fadeOutAmbience (line 101) | public fadeOutAmbience(transitionDurationMillis: number): void { FILE: src/client/scripts/esm/game/rendering/effect_zone/zones/ContortionFieldZone.ts class ContortionFieldZone (line 12) | class ContortionFieldZone implements Zone { method constructor (line 28) | constructor(programManager: ProgramManager) { method update (line 37) | public update(): void { method getUniforms (line 44) | public getUniforms(): Record { method getPasses (line 48) | public getPasses(): PostProcessPass[] { method fadeInAmbience (line 52) | public fadeInAmbience(transitionDurationMillis: number): void { method fadeOutAmbience (line 56) | public fadeOutAmbience(transitionDurationMillis: number): void { FILE: src/client/scripts/esm/game/rendering/effect_zone/zones/DustyWastesZone.ts class DustyWastesZone (line 12) | class DustyWastesZone implements Zone { method constructor (line 78) | constructor(programManager: ProgramManager) { method update (line 169) | public update(): void { method randomizeNextGlitchTimer (line 230) | private randomizeNextGlitchTimer(): void { method getUniforms (line 235) | public getUniforms(): Record { method getPasses (line 245) | public getPasses(): PostProcessPass[] { method fadeInAmbience (line 249) | public fadeInAmbience(transitionDurationMillis: number): void { method fadeOutAmbience (line 253) | public fadeOutAmbience(transitionDurationMillis: number): void { FILE: src/client/scripts/esm/game/rendering/effect_zone/zones/EchoRiftZone.ts class EchoRiftZone (line 15) | class EchoRiftZone implements Zone { method constructor (line 45) | constructor(programManager: ProgramManager) { method update (line 105) | public update(): void { method getUniforms (line 126) | public getUniforms(): Record { method getPasses (line 130) | public getPasses(): PostProcessPass[] { method fadeInAmbience (line 135) | public fadeInAmbience(transitionDurationMillis: number): void { method fadeOutAmbience (line 140) | public fadeOutAmbience(transitionDurationMillis: number): void { FILE: src/client/scripts/esm/game/rendering/effect_zone/zones/EmberVergeZone.ts class EmberVergeZone (line 10) | class EmberVergeZone implements Zone { method constructor (line 49) | constructor() { method update (line 53) | public update(): void { method getUniforms (line 62) | public getUniforms(): Record { method getPasses (line 89) | public getPasses(): PostProcessPass[] { method fadeInAmbience (line 93) | public fadeInAmbience(transitionDurationMillis: number): void { method fadeOutAmbience (line 97) | public fadeOutAmbience(transitionDurationMillis: number): void { FILE: src/client/scripts/esm/game/rendering/effect_zone/zones/IridescenceZone.ts class IridescenceZone (line 10) | class IridescenceZone implements Zone { method constructor (line 49) | constructor() { method update (line 61) | public update(): void { method getUniforms (line 70) | public getUniforms(): Record { method getPasses (line 97) | public getPasses(): PostProcessPass[] { method fadeInAmbience (line 101) | public fadeInAmbience(transitionDurationMillis: number): void { method fadeOutAmbience (line 105) | public fadeOutAmbience(transitionDurationMillis: number): void { FILE: src/client/scripts/esm/game/rendering/effect_zone/zones/OceanZone.ts class OceanZone (line 14) | class OceanZone implements Zone { method constructor (line 43) | constructor(programManager: ProgramManager) { method update (line 66) | public update(): void { method getUniforms (line 107) | public getUniforms(): Record { method getPasses (line 113) | public getPasses(): PostProcessPass[] { method fadeInAmbience (line 118) | public fadeInAmbience(transitionDurationMillis: number): void { method fadeOutAmbience (line 122) | public fadeOutAmbience(transitionDurationMillis: number): void { FILE: src/client/scripts/esm/game/rendering/effect_zone/zones/SpectralEdgeZone.ts class SpectralEdgeZone (line 11) | class SpectralEdgeZone implements Zone { method constructor (line 50) | constructor() { method update (line 74) | public update(): void { method getUniforms (line 83) | public getUniforms(): Record { method getPasses (line 110) | public getPasses(): PostProcessPass[] { method fadeInAmbience (line 114) | public fadeInAmbience(transitionDurationMillis: number): void { method fadeOutAmbience (line 118) | public fadeOutAmbience(transitionDurationMillis: number): void { FILE: src/client/scripts/esm/game/rendering/effect_zone/zones/StaticZone.ts class StaticZone (line 11) | class StaticZone implements Zone { method constructor (line 38) | constructor(programManager: ProgramManager) { method update (line 77) | public update(): void { method getUniforms (line 90) | public getUniforms(): Record { method getPasses (line 99) | public getPasses(): PostProcessPass[] { method fadeInAmbience (line 103) | public fadeInAmbience(transitionDurationMillis: number): void { method fadeOutAmbience (line 108) | public fadeOutAmbience(transitionDurationMillis: number): void { FILE: src/client/scripts/esm/game/rendering/effect_zone/zones/TheBeginningZone.ts class TheBeginningZone (line 6) | class TheBeginningZone implements Zone { method update (line 10) | public update(): void { method getUniforms (line 14) | public getUniforms(): Record { method getPasses (line 18) | public getPasses(): PostProcessPass[] { method fadeInAmbience (line 22) | public fadeInAmbience(_transitionDurationMillis: number): void {} method fadeOutAmbience (line 24) | public fadeOutAmbience(_transitionDurationMillis: number): void {} FILE: src/client/scripts/esm/game/rendering/effect_zone/zones/UndercurrentZone.ts class UndercurrentZone (line 15) | class UndercurrentZone implements Zone { method constructor (line 22) | constructor() { method update (line 29) | public update(): void { method getUniforms (line 33) | public getUniforms(): Record { method getPasses (line 37) | public getPasses(): PostProcessPass[] { method fadeInAmbience (line 41) | public fadeInAmbience(transitionDurationMillis: number): void { method fadeOutAmbience (line 45) | public fadeOutAmbience(transitionDurationMillis: number): void { FILE: src/client/scripts/esm/game/rendering/frameratelimiter.ts constant TARGET_FPS_TITLE_SCREEN (line 19) | const TARGET_FPS_TITLE_SCREEN = 30; function requestFrame (line 43) | function requestFrame(callback: FrameRequestCallback): void { FILE: src/client/scripts/esm/game/rendering/frametracker.ts function onVisualChange (line 15) | function onVisualChange(): void { function doWeRenderNextFrame (line 21) | function doWeRenderNextFrame(): boolean { function onFrameRender (line 29) | function onFrameRender(): void { FILE: src/client/scripts/esm/game/rendering/gl-matrix.js function create$5 (line 54) | function create$5() { function clone$5 (line 85) | function clone$5(a) { function copy$5 (line 113) | function copy$5(out, a) { function fromValues$5 (line 154) | function fromValues$5( function set$5 (line 214) | function set$5( function identity$2 (line 258) | function identity$2(out) { function transpose (line 285) | function transpose(out, a) { function invert$2 (line 335) | function invert$2(out, a) { function adjoint (line 398) | function adjoint(out, a) { function determinant (line 452) | function determinant(a) { function multiply$5 (line 491) | function multiply$5(out, a, b) { function translate$1 (line 552) | function translate$1(out, a, v) { function scale$5 (line 607) | function scale$5(out, a, v) { function rotate$1 (line 639) | function rotate$1(out, a, rad, axis) { function rotateX$3 (line 718) | function rotateX$3(out, a, rad) { function rotateY$3 (line 761) | function rotateY$3(out, a, rad) { function rotateZ$3 (line 804) | function rotateZ$3(out, a, rad) { function fromTranslation$1 (line 850) | function fromTranslation$1(out, v) { function fromScaling (line 881) | function fromScaling(out, v) { function fromRotation$1 (line 913) | function fromRotation$1(out, rad, axis) { function fromXRotation (line 962) | function fromXRotation(out, rad) { function fromYRotation (line 996) | function fromYRotation(out, rad) { function fromZRotation (line 1030) | function fromZRotation(out, rad) { function fromRotationTranslation$1 (line 1068) | function fromRotationTranslation$1(out, q, v) { function fromQuat2 (line 1112) | function fromQuat2(out, a) { function getTranslation$1 (line 1147) | function getTranslation$1(out, mat) { function getScaling (line 1164) | function getScaling(out, mat) { function getRotation (line 1189) | function getRotation(out, mat) { function decompose (line 1245) | function decompose(out_r, out_t, out_s, mat) { function fromRotationTranslationScale (line 1322) | function fromRotationTranslationScale(out, q, v, s) { function fromRotationTranslationScaleOrigin (line 1382) | function fromRotationTranslationScaleOrigin(out, q, v, s, o) { function fromQuat (line 1442) | function fromQuat(out, q) { function frustum (line 1490) | function frustum(out, left, right, bottom, top, near, far) { function perspectiveNO (line 1526) | function perspectiveNO(out, fovy, aspect, near, far) { function perspectiveZO (line 1574) | function perspectiveZO(out, fovy, aspect, near, far) { function perspectiveFromFieldOfView (line 1614) | function perspectiveFromFieldOfView(out, fov, near, far) { function orthoNO (line 1654) | function orthoNO(out, left, right, bottom, top, near, far) { function orthoZO (line 1697) | function orthoZO(out, left, right, bottom, top, near, far) { function lookAt (line 1730) | function lookAt(out, eye, center, up) { function targetTo (line 1817) | function targetTo(out, eye, target, up) { function str$5 (line 1873) | function str$5(a) { function frob (line 1884) | function frob(a) { function add$5 (line 1897) | function add$5(out, a, b) { function subtract$3 (line 1925) | function subtract$3(out, a, b) { function multiplyScalar (line 1953) | function multiplyScalar(out, a, b) { function multiplyScalarAndAdd (line 1982) | function multiplyScalarAndAdd(out, a, b, scale) { function exactEquals$5 (line 2010) | function exactEquals$5(a, b) { function equals$5 (line 2022) | function equals$5(a, b) { FILE: src/client/scripts/esm/game/rendering/highlights/annotations/annotations.ts type Annotes (line 30) | interface Annotes { type Square (line 42) | type Square = Coords; type Arrow (line 45) | interface Arrow { function getSquares (line 83) | function getSquares(): Coords[] { function getArrows (line 88) | function getArrows(): Arrow[] { function getRays (line 93) | function getRays(): Ray[] { function getRelevantAnnotes (line 104) | function getRelevantAnnotes(): Annotes { function getEmptyAnnotes (line 132) | function getEmptyAnnotes(): Annotes { function clearAnnotes (line 137) | function clearAnnotes(annotes: Annotes): void { function update (line 146) | function update(): void { function Collapse (line 167) | function Collapse(): void { function resetState (line 186) | function resetState(): void { function render_belowPieces (line 198) | function render_belowPieces(): void { function render_abovePieces (line 204) | function render_abovePieces(): void { FILE: src/client/scripts/esm/game/rendering/highlights/annotations/drawarrows.ts constant ARROW (line 39) | const ARROW = { constant ZERO (line 59) | const ZERO = bd.fromBigInt(0n); constant ONE (line 60) | const ONE = bd.fromBigInt(1n); function update (line 77) | function update(arrows: Arrow[]): void { function stopDrawing (line 119) | function stopDrawing(): void { function stealPointer (line 126) | function stealPointer(pointerIdToSteal: string): void { function addDrawnArrow (line 137) | function addDrawnArrow(arrows: Arrow[]): { changed: boolean; deletedArro... function render (line 197) | function render(arrows: Arrow[]): void { function getDataArrow (line 226) | function getDataArrow(arrow: Arrow, color: Color): number[] { FILE: src/client/scripts/esm/game/rendering/highlights/annotations/drawrays.ts constant PRESET_RAY_COLOR (line 37) | const PRESET_RAY_COLOR: Color = [1, 0.2, 0, 0.24]; function areDrawing (line 55) | function areDrawing(): boolean { function getPresetRays (line 60) | function getPresetRays(): Ray[] { function update (line 80) | function update(rays: Ray[]): void { function getPointerId (line 142) | function getPointerId(): string { function stopDrawing (line 150) | function stopDrawing(): void { function stealPointer (line 157) | function stealPointer(pointerIdToSteal: string): void { function getLines (line 163) | function getLines(rays: Ray[], color: Color): Line[] { function addDrawnRay (line 205) | function addDrawnRay(rays: Ray[]): { added: boolean; deletedRays?: Ray[]... function findClosestPredefinedVector (line 284) | function findClosestPredefinedVector(targetVector: BDCoords, searchHippo... function collapseRays (line 341) | function collapseRays(rays_drawn: Ray[], trimDecimals: boolean): BDCoord... function dispatchRayCountEvent (line 411) | function dispatchRayCountEvent(rays: Ray[]): void { function setPresetOverrides (line 419) | function setPresetOverrides(prs: BaseRay[]): void { function getPresetOverrides (line 426) | function getPresetOverrides(): BaseRay[] | undefined { function clearPresetOverrides (line 431) | function clearPresetOverrides(): void { function render (line 438) | function render(rays: Ray[]): void { function genAndRenderRays (line 457) | function genAndRenderRays(rays: Ray[], color: Color): void { FILE: src/client/scripts/esm/game/rendering/highlights/annotations/drawsquares.ts constant PRESET_SQUARE_COLOR (line 31) | const PRESET_SQUARE_COLOR: Color = [1, 0.2, 0, 0.24]; constant OPACITY_OFFSET (line 37) | const OPACITY_OFFSET = 0.08; constant HOVER_OPACITY (line 40) | const HOVER_OPACITY = 0.5; function getAllSquaresHovered (line 53) | function getAllSquaresHovered(highlights: Square[]): Coords[] { function getSquaresBelowWorld (line 68) | function getSquaresBelowWorld( function update (line 99) | function update(highlights: Square[]): void { function setPresetOverrides (line 149) | function setPresetOverrides(pss: Coords[]): void { function getPresetOverrides (line 158) | function getPresetOverrides(): Coords[] | undefined { function clearPresetOverrides (line 163) | function clearPresetOverrides(): void { function render (line 169) | function render(highlights: Square[]): void { FILE: src/client/scripts/esm/game/rendering/highlights/checkhighlight.ts function render (line 26) | function render(boardsim: Board): void { function genCheckHighlightModel (line 37) | function genCheckHighlightModel(royalsInCheck: Coords[]): Renderable { FILE: src/client/scripts/esm/game/rendering/highlights/highlightline.ts type Line (line 27) | interface Line { function getRenderRange (line 47) | function getRenderRange(): BoundingBoxBD { function genLinesModel (line 70) | function genLinesModel(lines: Line[]): Renderable { function getLineData (line 75) | function getLineData(line: Line): number[] { FILE: src/client/scripts/esm/game/rendering/highlights/highlights.ts function render (line 36) | function render(boardsim: Board): void { function highlightLastMove (line 52) | function highlightLastMove(boardsim: Board): void { FILE: src/client/scripts/esm/game/rendering/highlights/legalmovehighlights.ts function render (line 88) | function render(): void { function regenerateAll (line 107) | function regenerateAll(): void { function regenSelectedPieceLegalMovesHighlightsModel (line 113) | function regenSelectedPieceLegalMovesHighlightsModel(): void { function renderSelectedPieceLegalMoves (line 156) | function renderSelectedPieceLegalMoves(): void { FILE: src/client/scripts/esm/game/rendering/highlights/legalmovemodel.ts type RayIterationInfo (line 56) | type RayIterationInfo = { constant ATTRIB_INFO (line 68) | const ATTRIB_INFO: AttributeInfoInstanced = { constant PERSPECTIVE_VIEW_RANGE (line 97) | const PERSPECTIVE_VIEW_RANGE = 1000; constant ZERO (line 105) | const ZERO: BigDecimal = bd.fromBigInt(0n); function getOffset (line 135) | function getOffset(): Coords { function updateRenderRange (line 144) | function updateRenderRange(): boolean { function isViewRangeContainedInRenderRange (line 184) | function isViewRangeContainedInRenderRange(): boolean { function getBoundingBoxOfPerspectiveView (line 213) | function getBoundingBoxOfPerspectiveView(): BoundingBoxBD { function getDimensionsOfPerspectiveViewRange (line 225) | function getDimensionsOfPerspectiveViewRange(): DoubleCoords { function getDimensionsOfOrthographicViewRange (line 232) | function getDimensionsOfOrthographicViewRange(): DoubleCoords { function generateModelsForPiecesLegalMoveHighlights (line 258) | function generateModelsForPiecesLegalMoveHighlights( function generateModelForSlideHighlightOutlines (line 320) | function generateModelForSlideHighlightOutlines( function pushIndividual (line 353) | function pushIndividual( function pushSliding (line 382) | function pushSliding( function pushSlide (line 425) | function pushSlide( function pushRay (line 503) | function pushRay( function getRayIterationInfo (line 561) | function getRayIterationInfo( function genModelForRays (line 656) | function genModelForRays(rays: Ray[], color: Color): RenderableInstanced { function renderOutlineOfRenderBox (line 701) | function renderOutlineOfRenderBox(): void { function renderOutlineofFloatingBox (line 713) | function renderOutlineofFloatingBox(box: BoundingBoxBD): void { FILE: src/client/scripts/esm/game/rendering/highlights/movehints.ts function updateIndividualMoves (line 55) | function updateIndividualMoves(legalMoves: LegalMoves): void { function clearIndividualMoves (line 77) | function clearIndividualMoves(): void { function getPieceCoords (line 85) | function getPieceCoords(): Coords | undefined { function getSquares (line 90) | function getSquares(): Coords[] { function render (line 97) | function render(): void { FILE: src/client/scripts/esm/game/rendering/highlights/selectedpiecehighlightline.ts function getLines (line 31) | function getLines(): Line[] { type Segment (line 95) | type Segment = { function getLineComponents (line 107) | function getLineComponents(): { rays: Ray[]; segments: Segment[] } { function render (line 160) | function render(): void { FILE: src/client/scripts/esm/game/rendering/highlights/snapping.ts constant ENTITY_WIDTH_VPIXELS (line 49) | const ENTITY_WIDTH_VPIXELS = 40; constant SNAP_LINE_COLOR (line 52) | const SNAP_LINE_COLOR = [0, 0, 1, 0.3] as const; constant GLOW_DOT (line 55) | const GLOW_DOT = { constant GHOST_IMAGE_OPACITY (line 64) | const GHOST_IMAGE_OPACITY = 1; constant THRESHOLD_TO_SNAP_PIECES (line 70) | const THRESHOLD_TO_SNAP_PIECES = 5_000; type Snap (line 72) | type Snap = { function getEntityWidthWorld (line 90) | function getEntityWidthWorld(): number { function getAllEntitiesWorldHovers (line 94) | function getAllEntitiesWorldHovers(world: DoubleCoords): Coords[] { type ClosestEntity (line 101) | type ClosestEntity = { function getClosestEntityToWorld (line 111) | function getClosestEntityToWorld(world: DoubleCoords): ClosestEntity | u... function teleportToEntitiesIfClicked (line 144) | function teleportToEntitiesIfClicked(): void { function isSnappingEnabledThisFrame (line 170) | function isSnappingEnabledThisFrame(): boolean { function getWorldSnapCoords (line 179) | function getWorldSnapCoords(world: DoubleCoords): Coords | undefined { type LineSnapPoint (line 187) | type LineSnapPoint = { function snapPointerWorld (line 198) | function snapPointerWorld(world: DoubleCoords): Snap | undefined { function teleportToSnapIfClicked (line 384) | function teleportToSnapIfClicked(): void { function findClosestEntityOfGroup (line 405) | function findClosestEntityOfGroup( function getAllLinesSegmented (line 462) | function getAllLinesSegmented(drawnRays: Ray[], presetRays: Ray[]): Line... function getAnnoteSnapPoints (line 485) | function getAnnoteSnapPoints(trimDecimals: boolean): BDCoords[] { function render (line 498) | function render(): void { function generateGhostImageModel (line 560) | function generateGhostImageModel(type: number, coords: DoubleCoords): Re... FILE: src/client/scripts/esm/game/rendering/highlights/specialrighthighlights.ts constant SPECIAL_RIGHTS_COLOR (line 29) | const SPECIAL_RIGHTS_COLOR: Color = [0, 1, 0.5, 0.3]; constant ENPASSANT_COLOR (line 31) | const ENPASSANT_COLOR: Color = [0.5, 0, 1, 0.3]; function enable (line 52) | function enable(): void { function disable (line 58) | function disable(): void { function toggle (line 63) | function toggle(): void { function render (line 70) | function render(): void { function regenModel (line 77) | function regenModel(): void { function renderSpecialRights (line 102) | function renderSpecialRights(): void { function renderEnPassant (line 110) | function renderEnPassant(): void { FILE: src/client/scripts/esm/game/rendering/highlights/squarerendering.ts function genModel (line 29) | function genModel(highlights: Coords[], color: Color): RenderableInstanc... FILE: src/client/scripts/esm/game/rendering/instancedshapes.ts constant DOTS (line 27) | const DOTS = { constant CORNER_TRIS (line 44) | const CORNER_TRIS = { constant BOX_OUTLINE (line 56) | const BOX_OUTLINE = { constant PLUS_SIGN (line 65) | const PLUS_SIGN = { function getDataLegalMoveSquare (line 83) | function getDataLegalMoveSquare(color: Color): number[] { function getDataLegalMoveDot (line 95) | function getDataLegalMoveDot(color: Color): number[] { function getDataLegalMoveCornerTris (line 115) | function getDataLegalMoveCornerTris(color: [number, number, number, numb... function getDataPlusSign (line 152) | function getDataPlusSign(color: Color): number[] { function getDataBoxOutline (line 240) | function getDataBoxOutline(): number[] { function getDataTexture (line 329) | function getDataTexture(inverted: boolean): number[] { function getDataColoredTexture (line 342) | function getDataColoredTexture(color: Color, inverted: boolean): number[] { FILE: src/client/scripts/esm/game/rendering/meshes.ts constant ONE (line 36) | const ONE = bd.fromBigInt(1n); function getCoordBoxModel (line 44) | function getCoordBoxModel(coords: DoubleCoords): DoubleBoundingBox { function getCoordBoxWorld (line 56) | function getCoordBoxWorld(coords: Coords): DoubleBoundingBox { function expandTileBoundingBoxToEncompassWholeSquare (line 89) | function expandTileBoundingBoxToEncompassWholeSquare(boundingBox: Boundi... function expandTileBoundingBoxToEncompassWholeSquareBD (line 97) | function expandTileBoundingBoxToEncompassWholeSquareBD(boundingBox: Boun... function applyWorldTransformationsToBoundingBox (line 115) | function applyWorldTransformationsToBoundingBox(boundingBox: BoundingBox... function QuadModel_Color (line 132) | function QuadModel_Color(coords: DoubleCoords, color: Color): number[] { function QuadWorld_Color (line 140) | function QuadWorld_Color(coords: Coords, color: Color): number[] { function QuadWorld_ColorTexture (line 148) | function QuadWorld_ColorTexture(coords: Coords, color: Color): number[] { function getPieceTexCoords (line 161) | function getPieceTexCoords(): { function RectWorld (line 179) | function RectWorld(boundingBox: BoundingBox, color: Color): number[] { function getBoardRenderTransform (line 218) | function getBoardRenderTransform(offset: Coords, z: number = 0): { posit... function getModelPosition (line 234) | function getModelPosition(boardPos: BDCoords, modelOffset: Coords, z: nu... FILE: src/client/scripts/esm/game/rendering/miniimage.ts constant MINI_IMAGE_OPACITY (line 55) | const MINI_IMAGE_OPACITY: number = 0.6; constant MAX_ANIM_DIST_VPIXELS (line 57) | const MAX_ANIM_DIST_VPIXELS = bd.fromBigInt(2300n); function isDisabled (line 81) | function isDisabled(): boolean { function enable (line 85) | function enable(): void { function disable (line 89) | function disable(): void { function toggle (line 93) | function toggle(): void { function forEachRenderablePiece (line 104) | function forEachRenderablePiece(callback: (_coords: BDCoords, _type: num... function getImageInstanceData (line 153) | function getImageInstanceData(): { function getImagesBelowWorld (line 206) | function getImagesBelowWorld( function getAllPiecesBelowAnnotePoints (line 246) | function getAllPiecesBelowAnnotePoints(): Piece[] { function render (line 352) | function render(): void { FILE: src/client/scripts/esm/game/rendering/perspective.ts function getEnabled (line 46) | function getEnabled(): boolean { function getRotX (line 49) | function getRotX(): number { function getRotZ (line 52) | function getRotZ(): number { function getIsViewingBlackPerspective (line 55) | function getIsViewingBlackPerspective(): boolean { function toggle (line 59) | function toggle(): void { function enable (line 67) | function enable(): void { function disable (line 83) | function disable(): void { function resetRotations (line 100) | function resetRotations(viewWhitePerspective = true): void { function relockMouse (line 110) | function relockMouse(): void { function lockMouse (line 119) | function lockMouse(): void { function update (line 125) | function update(): void { function applyRotations (line 155) | function applyRotations(viewMatrix: Mat4): void { function haveZeroRotation (line 179) | function haveZeroRotation(): boolean { function isLookingUp (line 184) | function isLookingUp(): boolean { function capRotations (line 189) | function capRotations(): void { function isMouseLocked (line 196) | function isMouseLocked(): boolean { function initCrosshairModel (line 201) | function initCrosshairModel(): void { function renderCrosshair (line 225) | function renderCrosshair(): void { function renderWithoutPerspectiveRotations (line 242) | function renderWithoutPerspectiveRotations(func: Function): void { function unlockMouse (line 254) | function unlockMouse(): void { function updateIsViewingBlackPerspective (line 259) | function updateIsViewingBlackPerspective(): void { FILE: src/client/scripts/esm/game/rendering/piecemodels.ts type InstanceData (line 42) | type InstanceData = (bigint | null)[]; type MeshData (line 45) | interface MeshData { type Mesh (line 53) | interface Mesh { constant REGEN_RANGE (line 80) | const REGEN_RANGE = 10_000n; constant STRIDE_PER_PIECE (line 89) | const STRIDE_PER_PIECE = 2; constant ATTRIBUTE_INFO (line 92) | const ATTRIBUTE_INFO: AttributeInfoInstanced = { function regenAll (line 108) | function regenAll(boardsim: Board, mesh: Mesh | undefined): void { function regenType (line 139) | function regenType(boardsim: Board, mesh: Mesh, type: number): void { function genTypeModel (line 158) | function genTypeModel(boardsim: Board, mesh: Mesh, type: number): MeshDa... function genVoidModel (line 182) | function genVoidModel(boardsim: Board, mesh: Mesh, type: number): MeshDa... function getInstanceDataForTypeRange (line 205) | function getInstanceDataForTypeRange(boardsim: Board, mesh: Mesh, type: ... function castInstanceDataToFloat32 (line 237) | function castInstanceDataToFloat32(instanceData: InstanceData): Float32A... function castBigIntArrayToFloat32 (line 265) | function castBigIntArrayToFloat32(instanceData: bigint[]): Float32Array { function shiftAll (line 287) | function shiftAll(boardsim: Board, mesh: Mesh): void { function shiftModel (line 317) | function shiftModel(meshData: MeshData, diffXOffset: bigint, diffYOffset... function rotateAll (line 342) | function rotateAll(mesh: Mesh, newInverted: boolean): void { function overwritebufferdata (line 372) | function overwritebufferdata(mesh: Mesh, piece: Piece): void { function deletebufferdata (line 395) | function deletebufferdata(mesh: Mesh, piece: Piece): void { function renderAll (line 416) | function renderAll(boardsim: Board, mesh: Mesh | undefined): void { function renderVoids (line 446) | function renderVoids(mesh: Mesh | undefined): void { function isOffsetOutOfRangeOfRegenRange (line 458) | function isOffsetOutOfRangeOfRegenRange(offset: Coords): boolean { FILE: src/client/scripts/esm/game/rendering/pieces.ts function renderPiecesInGame (line 29) | function renderPiecesInGame(boardsim: Board, mesh: Mesh | undefined): vo... function renderGhostPiece (line 35) | function renderGhostPiece(type: number, coords: Coords): void { FILE: src/client/scripts/esm/game/rendering/primitives.ts function Quad (line 15) | function Quad(left: number, bottom: number, right: number, top: number):... function Quad_Color (line 30) | function Quad_Color(left: number, bottom: number, right: number, top: nu... function Quad_Color3D (line 45) | function Quad_Color3D(left: number, bottom: number, right: number, top: ... function Quad_Texture (line 60) | function Quad_Texture(left: number, bottom: number, right: number, top: ... function Quad_ColorTexture (line 75) | function Quad_ColorTexture(left: number, bottom: number, right: number, ... function Quad_ColorTexture3D (line 90) | function Quad_ColorTexture3D(left: number, bottom: number, right: number... function Rect (line 105) | function Rect(left: number, bottom: number, right: number, top: number, ... function DashedRect (line 117) | function DashedRect(left: number, bottom: number, right: number, top: nu... function Circle (line 185) | function Circle(x: number, y: number, radius: number, resolution: number... function GlowDot (line 213) | function GlowDot(x: number, y: number, radius: number, resolution: numbe... function Ring (line 266) | function Ring(x: number, y: number, inRad: number, outRad: number, resol... function RadialGradient (line 305) | function RadialGradient(x: number, y: number, radius: number, colors: Co... function BoxTunnel (line 385) | function BoxTunnel(left: number, bottom: number, startZ: number, right: ... FILE: src/client/scripts/esm/game/rendering/promotionlines.ts constant EXTRA_LENGTH (line 24) | const EXTRA_LENGTH = 2; constant THICKNESS (line 26) | const THICKNESS = 0.01; function render (line 30) | function render(): void { FILE: src/client/scripts/esm/game/rendering/screenshake.ts constant MAX_ROTATION_DEGREES (line 20) | const MAX_ROTATION_DEGREES = 1.7; constant MAX_TRANSLATION (line 22) | const MAX_TRANSLATION = 0.23; constant TRAUMA_DECAY (line 25) | const TRAUMA_DECAY = 1.2; function trigger (line 43) | function trigger(amount: number): void { function clear (line 51) | function clear(): void { function update (line 60) | function update(): void { function getShakeMatrix (line 73) | function getShakeMatrix(): Mat4 { FILE: src/client/scripts/esm/game/rendering/starfield.ts type Star (line 31) | type Star = { constant ATTRIB_INFO (line 48) | const ATTRIB_INFO: AttributeInfoInstanced = { constant CONFIG (line 58) | const CONFIG = { function init (line 142) | function init(): void { function terminate (line 162) | function terminate(): void { function createStar (line 174) | function createStar(randomizeAge: boolean): Star { function getDesiredNumStars (line 211) | function getDesiredNumStars(): number { function applyVariance (line 225) | function applyVariance(base: number, variance: number): number { function update (line 232) | function update(): void { function couldStarfieldEverBeVisible (line 282) | function couldStarfieldEverBeVisible(): boolean { function isStarfieldVisible (line 303) | function isStarfieldVisible(): boolean { function render (line 331) | function render(): void { FILE: src/client/scripts/esm/game/rendering/text/glyphatlas.ts type GlyphMetrics (line 25) | interface GlyphMetrics { constant CELL_HEIGHT (line 47) | const CELL_HEIGHT = 64; constant FONT_SIZE (line 50) | const FONT_SIZE = Math.round(CELL_HEIGHT * 0.8); constant FONT_FAMILY (line 52) | const FONT_FAMILY = 'sans-serif'; constant ATLAS_DESCENDER_FRACTION (line 60) | const ATLAS_DESCENDER_FRACTION = 0.5 - 0.3 * (FONT_SIZE / CELL_HEIGHT); constant ATLAS_ASCENT_FRACTION (line 68) | const ATLAS_ASCENT_FRACTION = 0.42 * (FONT_SIZE / CELL_HEIGHT); constant CELL_PADDING (line 74) | const CELL_PADDING = 2; constant ATLAS_WIDTH (line 81) | const ATLAS_WIDTH = 512; constant REPLACEMENT_CHAR (line 87) | const REPLACEMENT_CHAR = '\uFFFD'; constant SUPPORTED_CHARS (line 95) | const SUPPORTED_CHARS: string[] = [ function nextPowerOfTwo (line 114) | function nextPowerOfTwo(n: number): number { function initGlyphAtlas (line 126) | function initGlyphAtlas(): void { function getAtlasTexture (line 253) | function getAtlasTexture(): WebGLTexture { function getGlyphMetrics (line 264) | function getGlyphMetrics(char: string): GlyphMetrics { FILE: src/client/scripts/esm/game/rendering/text/textrenderer.ts function getTextWidth (line 30) | function getTextWidth(text: string, size: number): number { function getTextBounds (line 48) | function getTextBounds( function render (line 80) | function render( FILE: src/client/scripts/esm/game/rendering/transitions/Transition.ts type Transition (line 40) | type Transition = type ZoomTransition (line 49) | type ZoomTransition = { type PanTransition (line 56) | type PanTransition = { constant HISTORY_CAP (line 64) | const HISTORY_CAP = 20; constant PAN_TRANSITION_CONFIG (line 67) | const PAN_TRANSITION_CONFIG = { method DURATION_MILLIS (line 69) | get DURATION_MILLIS() { method MAX_PAN_DISTANCE (line 77) | get MAX_PAN_DISTANCE() { constant ZOOM_TRANSITION_CONFIG (line 83) | const ZOOM_TRANSITION_CONFIG = { method MIN_DURATION (line 85) | get MIN_DURATION() { method MAX_DURATION (line 89) | get MAX_DURATION() { method EDGE_ACCELERATION (line 95) | get EDGE_ACCELERATION() { constant ONE (line 106) | const ONE = bd.fromBigInt(1n); constant NEGONE (line 107) | const NEGONE = bd.fromBigInt(-1n); function onTransitionStart (line 216) | function onTransitionStart(): void { function startZoomTransition (line 227) | function startZoomTransition( function setupCInfinityModel (line 292) | function setupCInfinityModel(natural_duration_c_inf_millis: number, maxD... function setupCOne2StageModel (line 312) | function setupCOne2StageModel(natural_duration_c_one_millis: number, edg... function setupCOne3StageModel (line 335) | function setupCOne3StageModel(edgeAccel: number, maxDuration: number): v... function startPanTransition (line 389) | function startPanTransition(endCoord: BDCoords, ignoreHistory: boolean):... function zoomToCoordsBox (line 407) | function zoomToCoordsBox(box: BoundingBox): void { function singleZoomToCoordsList (line 417) | function singleZoomToCoordsList(coordsList: Coords[]): void { function singleZoomToBDCoords (line 426) | function singleZoomToBDCoords(coords: BDCoords): void { function zoomTransitionToArea (line 444) | function zoomTransitionToArea(theArea: Area): void { function pushToTelHistory (line 453) | function pushToTelHistory(trans: Transition): void { function undoTransition (line 459) | function undoTransition(): void { function update (line 483) | function update(): void { function updateZoomingTransition (line 506) | function updateZoomingTransition(elapsedTime: number): void { function updateCInfinityTransition (line 519) | function updateCInfinityTransition(t_sec: number): number { function updateCOne2StageTransition (line 531) | function updateCOne2StageTransition(t_sec: number, elapsedTime: number):... function updateCOne3StageTransition (line 544) | function updateCOne3StageTransition(t_sec: number, elapsedTime: number):... function applyZoomState (line 574) | function applyZoomState(currentE: number, elapsedTime: number): void { function updatePanningTransition (line 612) | function updatePanningTransition( function finishTransition (line 675) | function finishTransition(): void { function areTransitioning (line 689) | function areTransitioning(): boolean { function eraseTelHist (line 694) | function eraseTelHist(): void { function terminate (line 699) | function terminate(): void { FILE: src/client/scripts/esm/game/rendering/webgl.ts function setClearColor (line 55) | function setClearColor(newClearColor: Vec3): void { function init (line 62) | function init(): void { function clearScreen (line 109) | function clearScreen(): void { function toggleNormalBlending (line 119) | function toggleNormalBlending(): void { function enableBlending_Inverse (line 130) | function enableBlending_Inverse(): void { function executeWithDepthFunc_ALWAYS (line 139) | function executeWithDepthFunc_ALWAYS(func: Function): void { function executeWithInverseBlending (line 153) | function executeWithInverseBlending(func: Function): void { function enableDepthTest (line 257) | function enableDepthTest(): void { function disableDepthTest (line 266) | function disableDepthTest(): void { FILE: src/client/scripts/esm/game/websocket/socketclose.ts function isInTimeout (line 38) | function isInTimeout(): boolean { function onclose (line 51) | function onclose(event: CloseEvent, socketWasDefined: boolean): void { function enterTimeout (line 149) | function enterTimeout(timeMillis: number): void { function leaveTimeout (line 159) | function leaveTimeout(): void { function onAuthenticationNeeded (line 170) | async function onAuthenticationNeeded(): Promise { FILE: src/client/scripts/esm/game/websocket/socketman.ts constant TIME_TO_WAIT_FOR_HTTP_MILLIS (line 22) | const TIME_TO_WAIT_FOR_HTTP_MILLIS = 5000; constant RECONNECT_DELAY_MILLIS (line 28) | const RECONNECT_DELAY_MILLIS = [0, 2500, 5000] as const; constant DEBUG (line 48) | let DEBUG = false; function isDebugEnabled (line 71) | function isDebugEnabled(): boolean { function toggleDebug (line 76) | function toggleDebug(): void { function getSocket (line 84) | function getSocket(): WebSocket | undefined { function dispatchLostConnectionCustomEvent (line 91) | function dispatchLostConnectionCustomEvent(): void { function establishSocket (line 102) | async function establishSocket(): Promise { function openSocket (line 147) | async function openSocket(): Promise { function onSocketUpgradeReqLeave (line 175) | function onSocketUpgradeReqLeave(): void { function onReqBack (line 182) | function onReqBack(): void { function httpLostConnection (line 188) | function httpLostConnection(): void { function closeSocket (line 197) | function closeSocket(): void { function resubAll (line 210) | async function resubAll(): Promise { FILE: src/client/scripts/esm/game/websocket/socketmessages.ts type MessageID (line 16) | type MessageID = number; type WebsocketMessageValue (line 18) | type WebsocketMessageValue = MessageEvent['data']; type OutgoingPayload (line 21) | type OutgoingPayload = { function cancelTimerOfMessageID (line 65) | function cancelTimerOfMessageID(ID: number): void { function renewConnection (line 84) | function renewConnection(messageID: MessageID): void { function cancelAllEchoTimers (line 101) | function cancelAllEchoTimers(): void { function scheduleOnreplyFunc (line 115) | function scheduleOnreplyFunc(messageID: MessageID, onreplyFunc?: () => v... function executeOnreplyFunc (line 124) | function executeOnreplyFunc(id: number | undefined): void { function resetOnreplyFuncs (line 132) | function resetOnreplyFuncs(): void { function resetTimerToCloseSocket (line 139) | function resetTimerToCloseSocket(): void { function rescheduleInactivityTimer (line 156) | function rescheduleInactivityTimer(): void { function cancelInactivityTimer (line 166) | function cancelInactivityTimer(): void { function onInactivityTimeout (line 177) | function onInactivityTimeout(): void { function send (line 199) | async function send( FILE: src/client/scripts/esm/game/websocket/socketrouter.ts type HardRefreshInfo (line 26) | type HardRefreshInfo = { function onmessage (line 39) | function onmessage(serverMessage: MessageEvent): void { function ongeneralmessage (line 133) | function ongeneralmessage(message: GeneralMessage): void { function handleHardRefresh (line 165) | function handleHardRefresh(LATEST_GAME_VERSION: string): void { FILE: src/client/scripts/esm/game/websocket/socketschemas.ts type Invite (line 35) | type Invite = z.infer; type ServerGameInfo (line 64) | type ServerGameInfo = z.infer; type JoinGameMessage (line 80) | type JoinGameMessage = z.infer; type GeneralMessage (line 91) | type GeneralMessage = z.infer; type InvitesMessage (line 104) | type InvitesMessage = z.infer; type GameMessage (line 116) | type GameMessage = z.infer; FILE: src/client/scripts/esm/game/websocket/socketsubs.ts type Sub (line 14) | type Sub = (typeof validSubs)[number]; function zeroSubs (line 22) | function zeroSubs(): boolean { function areSubbedToSub (line 31) | function areSubbedToSub(sub: Sub): boolean { function addSub (line 39) | function addSub(sub: Sub): void { function deleteSub (line 49) | function deleteSub(sub: Sub): void { function unsubFromSub (line 58) | function unsubFromSub(sub: Sub): void { FILE: src/client/scripts/esm/util/ImageLoader.ts class ImageLoader (line 5) | class ImageLoader { method loadImage (line 16) | public static loadImage( FILE: src/client/scripts/esm/util/IndexedDB.ts type Entry (line 10) | interface Entry { constant DB_NAME (line 17) | const DB_NAME = 'infinitechess'; constant DB_VERSION (line 18) | const DB_VERSION = 1; constant STORE_NAME (line 19) | const STORE_NAME = 'entries'; function initDB (line 35) | function initDB(): Promise { function withRead (line 82) | async function withRead(op: (_store: IDBObjectStore) => IDBRequest... function withWrite (line 99) | async function withWrite(op: (_store: IDBObjectStore) => IDBRequest(key: string, value: T, expiryMillis?: number)... function loadItem (line 134) | async function loadItem(key: string): Promise { function deleteItem (line 153) | async function deleteItem(key: string): Promise { function hasItemExpired (line 162) | function hasItemExpired(save: unknown): boolean { function eraseExpiredItems (line 185) | async function eraseExpiredItems(): Promise { function getAllKeys (line 232) | async function getAllKeys(): Promise { function eraseAll (line 241) | async function eraseAll(): Promise { function resetDBInstance (line 246) | function resetDBInstance(): void { FILE: src/client/scripts/esm/util/LocalStorage.ts type Entry (line 13) | interface Entry { function saveItem (line 35) | function saveItem(key: string, value: any, expiryMillis: number = defaul... function loadItem (line 48) | function loadItem(key: string): any { function deleteItem (line 75) | function deleteItem(key: string): void { function hasItemExpired (line 80) | function hasItemExpired(save: Entry | any): boolean { function eraseExpiredItems (line 88) | function eraseExpiredItems(): void { function eraseAll (line 98) | function eraseAll(): void { FILE: src/client/scripts/esm/util/PerlinNoise.ts function lerp (line 30) | function lerp(a: number, b: number, t: number): number { function fade (line 35) | function fade(t: number): number { function create1DNoiseGenerator (line 44) | function create1DNoiseGenerator(period: number): (_t: number) => number { FILE: src/client/scripts/esm/util/compression.ts type CompressionMode (line 14) | type CompressionMode = 'none' | 'deflate-raw'; constant DEBUG_COMPRESSION (line 23) | const DEBUG_COMPRESSION = false; function readAllChunks (line 28) | async function readAllChunks(readable: ReadableStream): Prom... function uint8ArrayToBase64 (line 47) | function uint8ArrayToBase64(bytes: Uint8Array): string { function decompressStringBase64 (line 61) | async function decompressStringBase64(compressedBase64: string): Promise... function compressString (line 92) | async function compressString( function decompressString (line 141) | async function decompressString(data: string, mode: CompressionMode): Pr... FILE: src/client/scripts/esm/util/docutil.ts function isLocalEnvironment (line 13) | function isLocalEnvironment(): boolean { function copyToClipboard (line 32) | function copyToClipboard(text: string): void { function isMouseSupported (line 46) | function isMouseSupported(): boolean { function isTouchSupported (line 56) | function isTouchSupported(): boolean { function getLastSegmentOfURL (line 69) | function getLastSegmentOfURL(): string { function getPathnameFromHref (line 82) | function getPathnameFromHref(href: string): string { function getCookieValue (line 92) | function getCookieValue(cookieName: string): string | undefined { function updateCookie (line 109) | function updateCookie(cookieName: string, value: string, days: number): ... function deleteCookie (line 123) | function deleteCookie(cookieName: string): void { function createSvgElementFromString (line 132) | function createSvgElementFromString(svgText: string): SVGElement { FILE: src/client/scripts/esm/util/httputils.ts type RetryFetchOptions (line 8) | interface RetryFetchOptions { function retryFetch (line 47) | async function retryFetch( FILE: src/client/scripts/esm/util/mouse.ts function getPhysicalPointerPosition_Offscreen (line 27) | function getPhysicalPointerPosition_Offscreen(physicalPointerId: string)... function getMouseWorld (line 44) | function getMouseWorld(button: MouseButton = Mouse.LEFT): DoubleCoords |... function getPointerWorld (line 63) | function getPointerWorld(pointerId: string): DoubleCoords | undefined { function getPhysicalPointerWorld (line 77) | function getPhysicalPointerWorld(physicalPointerId: string): DoubleCoord... function getCrossHairWorld (line 89) | function getCrossHairWorld(): DoubleCoords | undefined { function convertMousePositionToWorldSpace (line 107) | function convertMousePositionToWorldSpace( function getTileMouseOver_Float (line 131) | function getTileMouseOver_Float(button: MouseButton = Mouse.LEFT): BDCoo... function getTileMouseOver_Integer (line 137) | function getTileMouseOver_Integer(button: MouseButton = Mouse.LEFT): Coo... function getTilePointerOver_Float (line 144) | function getTilePointerOver_Float(pointerId: string): BDCoords | undefin... function getTilePointerOver_Integer (line 156) | function getTilePointerOver_Integer(pointerId: string): Coords | undefin... function isMouseDown (line 166) | function isMouseDown(button: MouseButton): boolean { function isMouseHeld (line 175) | function isMouseHeld(button: MouseButton): boolean { function isMouseClicked (line 184) | function isMouseClicked(button: MouseButton): boolean { function isMouseDoubleClickDragged (line 193) | function isMouseDoubleClickDragged(button: MouseButton): boolean { function getWheelDelta (line 212) | function getWheelDelta(): number { function claimMouseDown (line 221) | function claimMouseDown(button: MouseButton): void { function claimMouseClick (line 230) | function claimMouseClick(button: MouseButton): void { function cancelMouseClick (line 239) | function cancelMouseClick(button: MouseButton): void { function getMouseId (line 248) | function getMouseId(button: MouseButton): string | undefined { function getRelevantListener (line 257) | function getRelevantListener(): InputListener { function getAllPointerWorlds (line 266) | function getAllPointerWorlds(): DoubleCoords[] { FILE: src/client/scripts/esm/util/pingManager.ts constant MAX_PING_HISTORY (line 14) | const MAX_PING_HISTORY: number = 3; function handlePingUpdate (line 30) | function handlePingUpdate(event: CustomEvent): void { function handleSocketClosed (line 40) | function handleSocketClosed(_event: CustomEvent): void { function updatePingHistory (line 49) | function updatePingHistory(ping: number): void { function getPing (line 58) | function getPing(): number { function getHalfPing (line 67) | function getHalfPing(): number { function getAveragePing (line 75) | function getAveragePing(): number { FILE: src/client/scripts/esm/util/splines.ts constant ZERO (line 18) | const ZERO = bd.fromBigInt(0n); constant ONE (line 19) | const ONE = bd.fromBigInt(1n); constant TWO (line 20) | const TWO = bd.fromBigInt(2n); constant THREE (line 21) | const THREE = bd.fromBigInt(3n); constant FOUR (line 22) | const FOUR = bd.fromBigInt(4n); function generateCubicSplineCoefficients (line 31) | function generateCubicSplineCoefficients( function thomasAlgorithm (line 81) | function thomasAlgorithm( function evaluateSplineAt (line 128) | function evaluateSplineAt( function generateSplinePath (line 154) | function generateSplinePath(controlPoints: Coords[], resolution: number)... function renderSplineDebug (line 219) | function renderSplineDebug(controlPoints: BDCoords[], width: number, col... FILE: src/client/scripts/esm/util/svgtoimageconverter.ts function convertSVGsToImages (line 12) | async function convertSVGsToImages(svgElements: SVGElement[]): Promise { function normalizeImagePixelData (line 79) | async function normalizeImagePixelData(img: HTMLImageElement): Promise { FILE: src/client/scripts/esm/util/tooltips.ts constant TOOLTIP_SELECTOR (line 34) | const TOOLTIP_SELECTOR = tooltipClasses.map((cls) => `.${cls}[data-toolt... constant TOOLTIP_GAP (line 37) | const TOOLTIP_GAP = 8; constant ARROW_HALF (line 42) | const ARROW_HALF = 5; constant FADE_OUT_REMOVE_DELAY_MS (line 45) | const FADE_OUT_REMOVE_DELAY_MS = 150; constant TOOLTIP_DELAY_MILLIS (line 48) | const TOOLTIP_DELAY_MILLIS: number = 500; constant SUPPRESS_COOLDOWN_MILLIS (line 50) | const SUPPRESS_COOLDOWN_MILLIS: number = 2000; constant FAST_TRANSITION_COOLDOWN_MILLIS (line 52) | const FAST_TRANSITION_COOLDOWN_MILLIS: number = 750; type TooltipState (line 57) | interface TooltipState { function getOrCreateState (line 89) | function getOrCreateState(el: Element): TooltipState { function findTooltipAncestor (line 109) | function findTooltipAncestor(el: Element | null): HTMLElement | null { function getTooltipClass (line 117) | function getTooltipClass(element: Element): string | null { function createTooltipElements (line 122) | function createTooltipElements(): void { function shrinkWrapTooltip (line 136) | function shrinkWrapTooltip(el: HTMLDivElement): void { function enableFastTransition (line 169) | function enableFastTransition(): void { function cancelFastTransitionExpiryTimer (line 177) | function cancelFastTransitionExpiryTimer(): void { function disableFastTransition (line 183) | function disableFastTransition(): void { function showTooltipFor (line 196) | function showTooltipFor(target: HTMLElement, direction: string): void { function hideTooltipDiv (line 292) | function hideTooltipDiv(): void { function tryShow (line 304) | function tryShow(target: HTMLElement, state: TooltipState, direction: st... function scheduleShow (line 313) | function scheduleShow(target: HTMLElement, state: TooltipState, directio... function suppress (line 326) | function suppress(state: TooltipState): void { function resetSuppressTimer (line 336) | function resetSuppressTimer(target: HTMLElement, state: TooltipState, di... FILE: src/client/scripts/esm/util/usernamecontainer.ts type UsernameContainer (line 19) | type UsernameContainer = { type UsernameContainerProperties (line 30) | type UsernameContainerProperties = { type UsernameContainerType (line 45) | type UsernameContainerType = 'player' | 'guest' | 'engine'; type UsernameItem (line 46) | type UsernameItem = { type RatingItem (line 55) | type RatingItem = { function createUsernameContainer (line 79) | function createUsernameContainer( function extractPropertiesFromUsernameContainerElement (line 164) | function extractPropertiesFromUsernameContainerElement( function embedUsernameContainerDisplayIntoParent (line 194) | function embedUsernameContainerDisplayIntoParent( function wasEventClickInsideUsernameContainer (line 212) | function wasEventClickInsideUsernameContainer(event: MouseEvent): boolean { function createEloChangeItem (line 219) | function createEloChangeItem( function updateUsernameContainerRatingTextContent (line 258) | function updateUsernameContainerRatingTextContent(usernamecontainer: Use... function createEloFormatter (line 294) | function createEloFormatter(confident: boolean): (_value: number) => str... function animateRatingChange (line 311) | function animateRatingChange( function animateNumber (line 359) | function animateNumber( FILE: src/client/scripts/esm/util/validatorama.ts constant ACCESS_TOKEN_CUSHION_MILLIS (line 20) | const ACCESS_TOKEN_CUSHION_MILLIS: number = 10_000; function initListeners (line 62) | function initListeners(): void { function getAccessToken (line 75) | async function getAccessToken(): Promise { function refreshToken (line 102) | async function refreshToken(): Promise { function readMemberInfoCookie (line 153) | function readMemberInfoCookie(): void { function resetMemberInfo (line 170) | function resetMemberInfo(): void { function scheduleSessionLogout (line 176) | function scheduleSessionLogout(): void { function checkSessionExpiry (line 188) | function checkSessionExpiry(): void { function deleteMemberInfoCookie (line 217) | function deleteMemberInfoCookie(): void { function onLogout (line 222) | function onLogout(): void { function waitUntilInitialRequestBack (line 230) | async function waitUntilInitialRequestBack(): Promise { function areWeLoggedIn (line 243) | function areWeLoggedIn(): boolean { function getOurUsername (line 251) | function getOurUsername(): string | undefined { function getOurUserId (line 259) | function getOurUserId(): number | undefined { FILE: src/client/scripts/esm/views/admin.ts function sendCommand (line 7) | async function sendCommand(): Promise { function clickSubmitIfReturnPressed (line 16) | function clickSubmitIfReturnPressed(event: any): void { function scrollToBottom (line 25) | function scrollToBottom(container: HTMLElement): void { FILE: src/client/scripts/esm/views/createaccount.ts function sendForm (line 197) | function sendForm(username: string, email: string, password: string): vo... function createErrorElement (line 240) | function createErrorElement(id: string, insertAfter: string): HTMLElement { function updateSubmitButton (line 252) | function updateSubmitButton(): void { FILE: src/client/scripts/esm/views/guide.ts function initListeners (line 17) | function initListeners(): void { function callback_FairyBack (line 22) | function callback_FairyBack(_event: Event): void { function callback_FairyForward (line 30) | function callback_FairyForward(_event: Event): void { function hideCurrentFairy (line 38) | function hideCurrentFairy(): void { function revealCurrentFairy (line 48) | function revealCurrentFairy(): void { function updateArrowTransparency (line 58) | function updateArrowTransparency(): void { FILE: src/client/scripts/esm/views/icnvalidator.ts type VariantStats (line 5) | interface VariantStats { type ValidationResults (line 13) | interface ValidationResults { type ValidationError (line 24) | interface ValidationError { type WorkerResult (line 36) | interface WorkerResult { type WorkerProgressMessage (line 54) | interface WorkerProgressMessage { type WorkerMessage (line 60) | type WorkerMessage = WorkerResult | WorkerProgressMessage; type LogType (line 62) | type LogType = 'info' | 'success' | 'warning' | 'error'; function handleFileSelect (line 98) | function handleFileSelect(): void { function terminateWorkers (line 155) | function terminateWorkers(): void { function validateGames (line 160) | async function validateGames(): Promise { function finishValidation (line 316) | function finishValidation(results: ValidationResults, runId: number): vo... function displayResults (line 333) | function displayResults(results: ValidationResults): void { function addLog (line 457) | function addLog(message: string, type: LogType = 'info'): void { FILE: src/client/scripts/esm/views/index.ts type Contributor (line 6) | interface Contributor { FILE: src/client/scripts/esm/views/leaderboard.ts constant LEADERBOARD_LENGTH_ON_LOAD (line 33) | const LEADERBOARD_LENGTH_ON_LOAD = 50; constant LEADERBOARD_SHOW_MORE_BUTTON_INCREMENT (line 35) | const LEADERBOARD_SHOW_MORE_BUTTON_INCREMENT = 50; function setSupportedVariantsDisplay (line 73) | function setSupportedVariantsDisplay(): void { function createEmptyLeaderboardTable (line 85) | function createEmptyLeaderboardTable(): void { function populateTable (line 110) | async function populateTable(n_players: number): Promise { function showMorePlayers (line 201) | async function showMorePlayers(): Promise { FILE: src/client/scripts/esm/views/login.ts function getQueryParam (line 32) | function getQueryParam(name: string): string | null { function toggleButtonState (line 42) | function toggleButtonState(btn: HTMLElement, isReady: boolean): void { function createMessageElement (line 58) | function createMessageElement( function clearMessage (line 94) | function clearMessage(): void { function updateSubmitButton (line 104) | function updateSubmitButton(): void { function updateForgotSubmitButton (line 117) | function updateForgotSubmitButton(): void { function handleInput (line 127) | function handleInput(): void { function showLoginForm (line 137) | function showLoginForm(): void { function showForgotPasswordForm (line 159) | function showForgotPasswordForm(): void { function sendLogin (line 183) | async function sendLogin(username: string, password: string): Promise { FILE: src/client/scripts/esm/views/member.ts type MemberData (line 23) | interface MemberData { function updateCompletedCheckmatesInformation (line 179) | function updateCompletedCheckmatesInformation(checkmates_beaten: string)... function showAccountInfo (line 203) | function showAccountInfo(): void { function removeAccount (line 213) | async function removeAccount(confirmation: boolean): Promise { function resendConfirmEmail (line 254) | function resendConfirmEmail(): void { function recalcUsernameSize (line 297) | function recalcUsernameSize(): void { FILE: src/client/scripts/esm/views/news.ts function markNewsAsRead (line 13) | async function markNewsAsRead(): Promise { function fetchUnreadNewsDates (line 39) | async function fetchUnreadNewsDates(): Promise { function addNewBadgesToUnreadPosts (line 60) | function addNewBadgesToUnreadPosts(unreadDates: string[]): void { function addNewBadge (line 79) | function addNewBadge(postElement: HTMLElement): void { function init (line 126) | async function init(): Promise { FILE: src/client/scripts/esm/views/resetpassword.ts type FormElements (line 12) | type FormElements = { function getTokenFromUrl (line 24) | function getTokenFromUrl(): string { function createErrorMessageElement (line 32) | function createErrorMessageElement(errorMessage: string): HTMLElement { function initializeForm (line 52) | function initializeForm(elements: FormElements): void { FILE: src/client/scripts/esm/webgl/BufferUtil.ts constant DRAW_HINT (line 15) | const DRAW_HINT = 'STATIC_DRAW'; function updateBufferIndices (line 40) | function updateBufferIndices( function createBufferFromData (line 72) | function createBufferFromData(data: TypedArray): WebGLBuffer { FILE: src/client/scripts/esm/webgl/ProgramManager.ts type Attributes_Color (line 37) | type Attributes_Color = 'a_position' | 'a_color'; type Uniforms_Color (line 38) | type Uniforms_Color = 'u_transformmatrix'; type Attributes_ColorInstanced (line 39) | type Attributes_ColorInstanced = 'a_position' | 'a_color' | 'a_instancep... type Uniforms_ColorInstanced (line 40) | type Uniforms_ColorInstanced = 'u_transformmatrix'; type Attributes_Texture (line 41) | type Attributes_Texture = 'a_position' | 'a_texturecoord'; type Uniforms_Texture (line 42) | type Uniforms_Texture = 'u_transformmatrix' | 'u_sampler'; type Attributes_TextureInstanced (line 43) | type Attributes_TextureInstanced = 'a_position' | 'a_texturecoord' | 'a_... type Uniforms_TextureInstanced (line 44) | type Uniforms_TextureInstanced = 'u_transformmatrix' | 'u_sampler'; type Attributes_ColorTexture (line 45) | type Attributes_ColorTexture = 'a_position' | 'a_texturecoord' | 'a_color'; type Uniforms_ColorTexture (line 46) | type Uniforms_ColorTexture = 'u_transformmatrix' | 'u_sampler'; type Attributes_MiniImages (line 48) | type Attributes_MiniImages = 'a_position' | 'a_texturecoord' | 'a_color'... type Uniforms_MiniImages (line 49) | type Uniforms_MiniImages = 'u_transformmatrix' | 'u_sampler' | 'u_size'; type Attributes_Highlights (line 50) | type Attributes_Highlights = 'a_position' | 'a_color' | 'a_instanceposit... type Uniforms_Highlights (line 51) | type Uniforms_Highlights = 'u_transformmatrix' | 'u_size'; type Attributes_Arrows (line 52) | type Attributes_Arrows = type Uniforms_Arrows (line 57) | type Uniforms_Arrows = 'u_transformmatrix'; type Attributes_ArrowImages (line 58) | type Attributes_ArrowImages = type Uniforms_ArrowImages (line 63) | type Uniforms_ArrowImages = 'u_transformmatrix' | 'u_sampler'; type Attributes_Starfield (line 64) | type Attributes_Starfield = type Uniforms_Starfield (line 69) | type Uniforms_Starfield = 'u_transformmatrix'; type Attributes_BoardUberShader (line 71) | type Attributes_BoardUberShader = 'a_position' | 'a_texturecoord' | 'a_c... type Uniforms_BoardUberShader (line 72) | type Uniforms_BoardUberShader = type Attributes_PostPass (line 119) | type Attributes_PostPass = never; type Uniforms_PostPass (line 120) | type Uniforms_PostPass = 'u_sceneTexture'; type Attributes_ColorGrade (line 121) | type Attributes_ColorGrade = never; type Uniforms_ColorGrade (line 122) | type Uniforms_ColorGrade = type Attributes_Vignette (line 133) | type Attributes_Vignette = never; type Uniforms_Vignette (line 134) | type Uniforms_Vignette = type Attributes_SineWave (line 140) | type Attributes_SineWave = never; type Uniforms_SineWave (line 141) | type Uniforms_SineWave = type Attributes_Water (line 148) | type Attributes_Water = never; type Uniforms_Water (line 149) | type Uniforms_Water = type Attributes_WaterRipple (line 159) | type Attributes_WaterRipple = never; type Uniforms_WaterRipple (line 160) | type Uniforms_WaterRipple = type Attributes_HeatWave (line 173) | type Attributes_HeatWave = never; type Uniforms_HeatWave (line 174) | type Uniforms_HeatWave = type Attributes_VoronoiDistortion (line 181) | type Attributes_VoronoiDistortion = never; type Uniforms_VoronoiDistortion (line 182) | type Uniforms_VoronoiDistortion = type Attributes_Glitch (line 191) | type Attributes_Glitch = never; type Uniforms_Glitch (line 192) | type Uniforms_Glitch = type Attributes_All (line 205) | type Attributes_All = type Program_Color (line 231) | type Program_Color = ShaderProgram; type Program_ColorInstanced (line 232) | type Program_ColorInstanced = ShaderProgram; type Program_TextureInstanced (line 234) | type Program_TextureInstanced = ShaderProgram< type Program_ColorTexture (line 238) | type Program_ColorTexture = ShaderProgram; type Program_ArrowImages (line 243) | type Program_ArrowImages = ShaderProgram; type Program_WaterRipple (line 254) | type Program_WaterRipple = ShaderProgram; type ProgramMap (line 262) | interface ProgramMap { type ShaderSource (line 319) | type ShaderSource = { class ProgramManager (line 361) | class ProgramManager { method constructor (line 367) | constructor(gl: WebGL2RenderingContext) { method get (line 378) | public get(programName: K): ProgramMap[K] { FILE: src/client/scripts/esm/webgl/Renderable.ts type InputArray (line 33) | type InputArray = number[] | TypedArray; type TypedArray (line 43) | type TypedArray = Float32Array | Int32Array | Int16Array | Int8Array; type PrimitiveType (line 46) | type PrimitiveType = type Attribute (line 56) | interface Attribute { type AttributeInfo (line 64) | type AttributeInfo = Attribute[]; type AttributeInfoInstanced (line 67) | type AttributeInfoInstanced = { type TextureInfo (line 73) | interface TextureInfo { type UpdateBufferIndicesFunc (line 86) | type UpdateBufferIndicesFunc = (_changedIndicesStart: number, _changedIn... type BaseRenderable (line 89) | interface BaseRenderable { type Renderable (line 101) | interface Renderable extends BaseRenderable { type RenderableInstanced (line 110) | interface RenderableInstanced extends BaseRenderable { function init (line 134) | function init(context: WebGL2RenderingContext, program_manager: ProgramM... function createRenderable (line 144) | function createRenderable( function createRenderable_Instanced (line 168) | function createRenderable_Instanced( function getAttribInfo (line 200) | function getAttribInfo( function getAttribInfo_Instanced (line 231) | function getAttribInfo_Instanced( function createRenderable_GivenInfo (line 247) | function createRenderable_GivenInfo( function createRenderable_Instanced_GivenInfo (line 298) | function createRenderable_Instanced_GivenInfo( function getStrideFromAttributeInfo (line 390) | function getStrideFromAttributeInfo(attribInfo: AttributeInfo): number { function ensureTypedArray (line 402) | function ensureTypedArray(data: InputArray): TypedArray { function prepareAndExecuteRender (line 423) | function prepareAndExecuteRender( function configureAttributes (line 464) | function configureAttributes( function setUniforms (line 509) | function setUniforms( function genTransformMatrix (line 590) | function genTransformMatrix(position: Vec3, scale: Vec3): Mat4 { function genModelMatrix (line 607) | function genModelMatrix(position: Vec3, scale: Vec3): Mat4 { FILE: src/client/scripts/esm/webgl/ShaderProgram.ts class ShaderProgram (line 9) | class ShaderProgram { method constructor (line 24) | constructor(gl: WebGL2RenderingContext, vertexSource: string, fragment... method use (line 33) | public use(): void { method getAttributeLocation (line 38) | public getAttributeLocation(name: Attribute): number { method getUniformLocation (line 50) | public getUniformLocation(name: Uniform): WebGLUniformLocation | null { method createProgram (line 66) | private createProgram(vertexShader: WebGLShader, fragmentShader: WebGL... method compileShader (line 88) | private compileShader(type: number, source: string): WebGLShader { FILE: src/client/scripts/esm/webgl/TextureLoader.ts type Options (line 3) | interface Options { class TextureLoader (line 8) | class TextureLoader { method loadTexture (line 21) | public static loadTexture( function isPowerOfTwo (line 67) | function isPowerOfTwo(value: number): boolean { FILE: src/client/scripts/esm/webgl/maskedDraw.ts function init (line 31) | function init(pm: ProgramManager): void { function onFrameStart (line 39) | function onFrameStart(): void { function resetStencilBuffer (line 53) | function resetStencilBuffer(): void { function execute (line 83) | function execute( FILE: src/client/scripts/esm/webgl/post_processing/PostProcessingPipeline.ts type PostProcessPass (line 8) | interface PostProcessPass { class PostProcessingPipeline (line 29) | class PostProcessingPipeline { method constructor (line 49) | constructor(gl: WebGL2RenderingContext, programManager: ProgramManager) { method createFBO (line 82) | private createFBO( method setPasses (line 120) | public setPasses(passes: PostProcessPass[]): void { method begin (line 128) | public begin(): void { method end (line 154) | public end(): void { method swapFBOs (line 214) | private swapFBOs(): void { method resize (line 231) | public resize(width: number, height: number): void { FILE: src/client/scripts/esm/webgl/post_processing/passes/ColorGradePass.ts class ColorGradePass (line 9) | class ColorGradePass implements PostProcessPass { method constructor (line 38) | constructor(programManager: ProgramManager) { method render (line 42) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: src/client/scripts/esm/webgl/post_processing/passes/GlitchPass.ts class GlitchPass (line 10) | class GlitchPass implements PostProcessPass { method constructor (line 33) | constructor(programManager: ProgramManager) { method render (line 38) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: src/client/scripts/esm/webgl/post_processing/passes/HeatWavePass.ts class HeatWavePass (line 9) | class HeatWavePass implements PostProcessPass { method constructor (line 24) | constructor(programManager: ProgramManager, noiseTexture: WebGLTexture) { method render (line 30) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: src/client/scripts/esm/webgl/post_processing/passes/PassThroughPass.ts class PassThroughPass (line 10) | class PassThroughPass implements PostProcessPass { method constructor (line 19) | constructor(programManager: ProgramManager) { method render (line 23) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: src/client/scripts/esm/webgl/post_processing/passes/SineWavePass.ts class SineWavePass (line 9) | class SineWavePass implements PostProcessPass { method constructor (line 29) | constructor(programManager: ProgramManager) { method render (line 33) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: src/client/scripts/esm/webgl/post_processing/passes/VignettePass.ts class VignettePass (line 10) | class VignettePass implements PostProcessPass { method constructor (line 27) | constructor(programManager: ProgramManager) { method render (line 31) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: src/client/scripts/esm/webgl/post_processing/passes/VoronoiDistortionPass.ts class VoronoiDistortionPass (line 10) | class VoronoiDistortionPass implements PostProcessPass { method constructor (line 33) | constructor(programManager: ProgramManager) { method render (line 38) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: src/client/scripts/esm/webgl/post_processing/passes/WaterPass.ts type RippleSource (line 7) | interface RippleSource { class WaterPass (line 17) | class WaterPass implements PostProcessPass { method constructor (line 47) | constructor(programManager: ProgramManager, width: number, height: num... method updateSources (line 57) | public updateSources(sources: RippleSource[]): void { method setResolution (line 70) | public setResolution(width: number, height: number): void { method render (line 76) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: src/client/scripts/esm/webgl/post_processing/passes/WaterRipplePass.ts type RippleState (line 7) | interface RippleState { class WaterRipplePass (line 17) | class WaterRipplePass implements PostProcessPass { method constructor (line 58) | constructor(programManager: ProgramManager, width: number, height: num... method updateDroplets (line 68) | public updateDroplets(droplets: RippleState[]): void { method setResolution (line 82) | public setResolution(width: number, height: number): void { method render (line 88) | render(gl: WebGL2RenderingContext, inputTexture: WebGLTexture): void { FILE: src/client/scripts/esm/workers/icnvalidator.worker.ts type WorkerMessage (line 15) | interface WorkerMessage { function validateTermination (line 157) | function validateTermination( FILE: src/server/api/AdminPanel.ts function processCommand (line 37) | function processCommand(req: Request, res: Response): void { function parseArgumentsFromCommand (line 85) | function parseArgumentsFromCommand(command: string): string[] { function deleteCommand (line 109) | function deleteCommand( function banEmailCommand (line 149) | function banEmailCommand( function unbanEmailCommand (line 182) | function unbanEmailCommand( function usernameCommand (line 215) | function usernameCommand( function logoutUser (line 257) | function logoutUser(command: string, commandAndArgs: string[], req: Requ... function verify (line 292) | function verify(command: string, commandAndArgs: string[], req: Request,... function getUserInfo (line 318) | function getUserInfo(command: string, commandAndArgs: string[], req: Req... function updateContributorsCommand (line 348) | function updateContributorsCommand(command: string, req: Request, res: R... function helpCommand (line 354) | function helpCommand(commandAndArgs: string[], res: Response): void { function logCommand (line 409) | function logCommand(command: string, req: Request): void { function sendAndLogResponse (line 419) | function sendAndLogResponse(res: Response, code: number, message: any): ... FILE: src/server/api/EditorSavesAPI.ts function getSavedPositions (line 66) | function getSavedPositions(req: Request, res: Response): void { function savePosition (line 101) | function savePosition(req: Request, res: Response): void { function getPosition (line 161) | function getPosition(req: Request, res: Response): void { function deletePosition (line 218) | function deletePosition(req: Request, res: Response): void { FILE: src/server/api/GitHub.ts type Contributor (line 29) | interface Contributor { constant PATH_TO_CONTRIBUTORS_FILE (line 47) | const PATH_TO_CONTRIBUTORS_FILE = path.join(__dirname, '../../../databas... function refreshGitHubContributorsList (line 83) | function refreshGitHubContributorsList(): void { function getContributors (line 197) | function getContributors(): Contributor[] { FILE: src/server/api/LeaderboardAPI.ts constant MAX_N_PLAYERS_REQUEST_CAP (line 22) | const MAX_N_PLAYERS_REQUEST_CAP = 100; FILE: src/server/api/MemberAPI.ts type MemberResponse (line 22) | interface MemberResponse { FILE: src/server/api/NewsAPI.ts function getUnreadNewsCount (line 17) | function getUnreadNewsCount(req: Request, res: Response): void { function getUnreadNewsDatesEndpoint (line 46) | function getUnreadNewsDatesEndpoint(req: Request, res: Response): void { function markNewsAsRead (line 74) | function markNewsAsRead(req: Request, res: Response): void { FILE: src/server/api/PracticeProgress.int.test.ts constant VALID_CHECKMATE_ID (line 14) | const VALID_CHECKMATE_ID = validcheckmates.validCheckmates.easy[0]; FILE: src/server/api/PracticeProgress.ts function setPracticeProgressCookie (line 29) | function setPracticeProgressCookie(req: Request, res: Response, next: Fu... function createPracticeProgressCookie (line 84) | function createPracticeProgressCookie(res: Response, checkmates_beaten: ... function deletePracticeProgressCookie (line 98) | function deletePracticeProgressCookie(res: Response): void { function getCheckmatesBeaten (line 110) | function getCheckmatesBeaten(userId: number): string { function checkmatesBeatenToStringArray (line 118) | function checkmatesBeatenToStringArray(checkmates_beaten: string): strin... function postCheckmateBeaten (line 127) | function postCheckmateBeaten(req: Request, res: Response): void { FILE: src/server/api/Prefs.int.test.ts constant VALID_PREFS_1 (line 12) | const VALID_PREFS_1 = { constant VALID_PREFS_2 (line 20) | const VALID_PREFS_2 = { FILE: src/server/api/Prefs.ts type Preferences (line 21) | type Preferences = z.infer; function setPrefsCookie (line 48) | function setPrefsCookie(req: Request, res: Response, next: NextFunction)... function createPrefsCookie (line 101) | function createPrefsCookie(res: Response, preferences: Preferences): void { function deletePreferencesCookie (line 115) | function deletePreferencesCookie(res: Response): void { function getPrefs (line 127) | function getPrefs(userId: number): Preferences | undefined { function postPrefs (line 135) | function postPrefs(req: Request, res: Response): void { FILE: src/server/config/certOptions.ts function getCertOptions (line 12) | function getCertOptions(): { key: Buffer; cert: Buffer } { FILE: src/server/config/generateCert.ts function generateSelfSignedCertificate (line 17) | function generateSelfSignedCertificate(): void { function ensureSelfSignedCertificate (line 55) | function ensureSelfSignedCertificate(): void { FILE: src/server/config/i18n.ts function initTranslations (line 9) | function initTranslations(): void { FILE: src/server/config/paths.ts constant LOGS_DIR (line 13) | const LOGS_DIR = path.join(__dirname, '..', '..', '..', 'logs'); FILE: src/server/config/setupDev.ts function initDevEnvironment (line 12) | function initDevEnvironment(): void { function ensureDevelopmentAccounts (line 23) | async function ensureDevelopmentAccounts(): Promise { FILE: src/server/config/translationLoader.ts type Translations (line 22) | type Translations = Record; type LanguageTranslations (line 24) | type LanguageTranslations = { default: Record }; type Changelog (line 39) | type Changelog = z.infer; function loadTranslations (line 70) | function loadTranslations(): Translations { function deepMerge (line 108) | function deepMerge(source: Record, target: Record { function removeOutdated (line 182) | function removeOutdated(object: TomlTable, changelog: Changelog): TomlTa... function remove_key (line 214) | function remove_key(key_string: string, object: Record): Re... function html_escape (line 233) | function html_escape(value: any): any { FILE: src/server/controllers/authController.ts function testPasswordForRequest (line 33) | async function testPasswordForRequest(req: Request, res: Response): Prom... function verifyBodyHasLoginFormData (line 77) | function verifyBodyHasLoginFormData(req: Request, res: Response): boolean { FILE: src/server/controllers/authRatelimiter.ts type LoginAttemptData (line 15) | type LoginAttemptData = { function rateLimitLogin (line 53) | function rateLimitLogin(req: Request, res: Response, browserAgent: strin... function getBrowserAgent (line 106) | function getBrowserAgent(req: Request, username: string): string { function incrementBrowserAgentLoginAttemptCounter (line 116) | function incrementBrowserAgentLoginAttemptCounter(browserAgent: string, ... function resetBrowserAgentLoginAttemptCounter (line 130) | function resetBrowserAgentLoginAttemptCounter(browserAgent: string): void { function resetTimerToDeleteBrowserAgent (line 138) | function resetTimerToDeleteBrowserAgent(browserAgent: string): void { function cancelTimerToDeleteBrowserAgent (line 147) | function cancelTimerToDeleteBrowserAgent(browserAgent: string): void { function startTimerToDeleteBrowserAgent (line 157) | function startTimerToDeleteBrowserAgent(browserAgent: string): void { function onIncorrectPassword (line 170) | function onIncorrectPassword(browserAgent: string, username: string): vo... function onCorrectPassword (line 185) | function onCorrectPassword(browserAgent: string): void { FILE: src/server/controllers/authenticationTokens/accessTokenIssuer.ts function accessTokenIssuer (line 23) | function accessTokenIssuer(req: Request, res: Response): void { function createAccessTokenCookie (line 43) | function createAccessTokenCookie(res: Response, accessToken: string): vo... FILE: src/server/controllers/authenticationTokens/sessionManager.ts function freshenSession (line 23) | function freshenSession( function createNewSession (line 62) | function createNewSession( function revokeSession (line 86) | function revokeSession(res: Response): void { function createSessionCookies (line 103) | function createSessionCookies( function createMemberInfoCookie (line 127) | function createMemberInfoCookie(res: Response, userId: number, username:... function deleteSessionCookies (line 147) | function deleteSessionCookies(res: Response): void { FILE: src/server/controllers/authenticationTokens/tokenSigner.ts type TokenPayload (line 20) | interface TokenPayload { constant ACCESS_TOKEN_SECRET (line 28) | const ACCESS_TOKEN_SECRET = process.env['ACCESS_TOKEN_SECRET']; constant REFRESH_TOKEN_SECRET (line 29) | const REFRESH_TOKEN_SECRET = process.env['REFRESH_TOKEN_SECRET']; function signAccessToken (line 44) | function signAccessToken(user_id: number, username: string, roles: Role[... function signRefreshToken (line 54) | function signRefreshToken(user_id: number, username: string, roles: Role... function generatePayload (line 61) | function generatePayload(user_id: number, username: string, roles: Role[... FILE: src/server/controllers/authenticationTokens/tokenValidator.ts constant ACCESS_TOKEN_SECRET (line 24) | const ACCESS_TOKEN_SECRET = process.env['ACCESS_TOKEN_SECRET']; constant REFRESH_TOKEN_SECRET (line 25) | const REFRESH_TOKEN_SECRET = process.env['REFRESH_TOKEN_SECRET']; function isAccessTokenValid (line 33) | function isAccessTokenValid(token: string): function isRefreshTokenValid (line 68) | function isRefreshTokenValid( function resolveRefreshTokenRecord (line 112) | function resolveRefreshTokenRecord(token: string, IP?: string): RefreshT... function decodeToken (line 147) | function decodeToken(token: string, isRefreshToken: boolean): TokenPaylo... FILE: src/server/controllers/awsWebhook.ts function handleSesWebhook (line 20) | async function handleSesWebhook(req: Request, res: Response): Promise { function doPasswordFormatChecks (line 357) | function doPasswordFormatChecks(password: string, req: Request, res: Res... FILE: src/server/controllers/createAccountController.unit.test.ts function checkProfanity (line 17) | function checkProfanity(string: string): boolean { FILE: src/server/controllers/deleteAccountController.ts type DeleteReason (line 31) | type DeleteReason = (typeof validDeleteReasons)[number]; function removeAccount (line 41) | async function removeAccount(req: Request, res: Response): Promise { function deleteAccount (line 119) | function deleteAccount(user_id: number, reason_deleted: string): void { function isValidDeleteReason (line 135) | function isValidDeleteReason(reason: string): reason is DeleteReason { FILE: src/server/controllers/deployController.ts function handlePrepareRestart (line 22) | async function handlePrepareRestart(req: Request, res: Response): Promis... FILE: src/server/controllers/emailController.ts function createEmailHtmlWrapper (line 20) | function createEmailHtmlWrapper(title: string, contentHtml: string): str... function sendPasswordResetEmail (line 31) | async function sendPasswordResetEmail(recipientEmail: string, resetUrl: ... function sendEmailConfirmation (line 62) | async function sendEmailConfirmation(user_id: number): Promise { function requestConfirmEmail (line 137) | function requestConfirmEmail(req: Request, res: Response): void { function sendRatingAbuseEmail (line 165) | async function sendRatingAbuseEmail(messageSubject: string, messageText:... FILE: src/server/controllers/loginController.ts function handleLogin (line 26) | async function handleLogin(req: Request, res: Response): Promise { FILE: src/server/controllers/logoutController.ts function handleLogout (line 11) | async function handleLogout(req: Request, res: Response): Promise { FILE: src/server/controllers/passwordResetController.ts constant PASSWORD_RESET_TOKEN_EXPIRY_MILLIS (line 16) | const PASSWORD_RESET_TOKEN_EXPIRY_MILLIS: number = 1000 * 60 * 60; function handleForgotPasswordRequest (line 19) | async function handleForgotPasswordRequest(req: Request, res: Response):... type TokenRecord (line 109) | type TokenRecord = { user_id: number; hashed_token: string }; function handleResetPassword (line 115) | async function handleResetPassword(req: Request, res: Response): Promise... FILE: src/server/controllers/roles.ts type Role (line 18) | type Role = (typeof validRoles)[number]; function giveRole (line 25) | function giveRole(userId: number, role: Role): void { function areRolesHigherInPriority (line 80) | function areRolesHigherInPriority(roles1: Role[] | null, roles2: Role[] ... FILE: src/server/controllers/verifyAccountController.ts function verifyAccount (line 24) | async function verifyAccount(req: Request, res: Response): Promise { function manuallyVerifyUser (line 117) | function manuallyVerifyUser( function _executeVerificationUpdate (line 150) | function _executeVerificationUpdate( FILE: src/server/database/backupManager.ts constant BACKUPS_DIR (line 21) | const BACKUPS_DIR = path.join(__dirname, '../../../backups'); constant MAX_BACKUP_AGE_MS (line 22) | const MAX_BACKUP_AGE_MS = 1000 * 60 * 60 * 24 * 30; constant BACKUP_INTERVAL_MS (line 23) | const BACKUP_INTERVAL_MS = 1000 * 60 * 60 * 24; function startDailyBackups (line 31) | function startDailyBackups(): void { function performBackup (line 48) | function performBackup(): Promise { function doBackup (line 60) | async function doBackup(): Promise { function purgeOldBackups (line 78) | function purgeOldBackups(): void { FILE: src/server/database/blacklistManager.ts function addToBlacklist (line 7) | function addToBlacklist(email: string, reason: string): void { function removeFromBlacklist (line 22) | function removeFromBlacklist(email: string): void { function isBlacklisted (line 40) | function isBlacklisted(email: string): boolean { FILE: src/server/database/cleanupTasks.ts constant CLEANUP_INTERVAL_MS (line 19) | const CLEANUP_INTERVAL_MS = 1000 * 60 * 60 * 24; function startPeriodicDatabaseCleanupTasks (line 22) | function startPeriodicDatabaseCleanupTasks(): void { function performCleanupTasks (line 27) | function performCleanupTasks(): void { function checkDatabaseIntegrity (line 37) | function checkDatabaseIntegrity(): void { function deleteExpiredPasswordResetTokens (line 57) | function deleteExpiredPasswordResetTokens(): void { function cleanUpExpiredRefreshTokens (line 80) | function cleanUpExpiredRefreshTokens(): void { function removeOldUnverifiedMembers (line 113) | function removeOldUnverifiedMembers(): void { FILE: src/server/database/database.ts function prepareStatement (line 42) | function prepareStatement(query: string): Database.Statement { type SupportedColumnTypes (line 50) | type SupportedColumnTypes = string | number | boolean | null; function run (line 58) | function run(query: string, params: SupportedColumnTypes[] = []): Databa... function get (line 69) | function get(query: string, params: SupportedColumnTypes[] = []): T |... function all (line 80) | function all(query: string, params: SupportedColumnTypes[] = []): T[] { function close (line 86) | function close(): void { function backup (line 96) | async function backup(destPath: string): Promise { function columnExists (line 101) | function columnExists(tableName: string, columnName: string): boolean { function transaction (line 135) | function transaction( FILE: src/server/database/databaseTables.ts function generateTables (line 99) | function generateTables(): void { function initDatabase (line 353) | function initDatabase(): void { function clearAllTables (line 361) | function clearAllTables(): void { FILE: src/server/database/editorSavesManager.ts type EditorSavesListRecord (line 15) | type EditorSavesListRecord = { type EditorSavesIcnRecord (line 22) | type EditorSavesIcnRecord = { constant MAX_SAVED_POSITIONS (line 35) | const MAX_SAVED_POSITIONS = 50; constant QUOTA_EXCEEDED_ERROR (line 38) | const QUOTA_EXCEEDED_ERROR = 'QUOTA_EXCEEDED'; function getAllSavedPositionsForUser (line 49) | function getAllSavedPositionsForUser(user_id: number): EditorSavesListRe... function addSavedPosition (line 78) | function addSavedPosition( function getSavedPositionICN (line 153) | function getSavedPositionICN(name: string, user_id: number): EditorSaves... function deleteSavedPosition (line 175) | function deleteSavedPosition(name: string, user_id: number): RunResult { FILE: src/server/database/gamesManager.ts type GamesRecord (line 16) | interface GamesRecord { type GamesColumn (line 34) | type GamesColumn = keyof GamesRecord; function genUniqueGameID (line 42) | function genUniqueGameID(): number { function generateRandomGameId (line 54) | function generateRandomGameId(): number { function isGameIdTaken (line 64) | function isGameIdTaken(game_id: number): boolean { function getGameData (line 90) | function getGameData( function getMultipleGameData (line 150) | function getMultipleGameData( FILE: src/server/database/leaderboardsManager.ts type LeaderboardEntry (line 23) | interface LeaderboardEntry { function addUserToLeaderboard (line 41) | function addUserToLeaderboard( function updatePlayerLeaderboardRating (line 67) | function updatePlayerLeaderboardRating( function isPlayerInLeaderboard (line 99) | function isPlayerInLeaderboard(user_id: number, leaderboard_id: Leaderbo... type PlayerLeaderboardRating (line 132) | type PlayerLeaderboardRating = { function getPlayerLeaderboardRating_core (line 142) | function getPlayerLeaderboardRating_core( function getPlayerLeaderboardRating (line 160) | function getPlayerLeaderboardRating( function _getAllUserLeaderboardEntries (line 182) | function _getAllUserLeaderboardEntries(user_id: number): LeaderboardEntr... function getTopPlayersForLeaderboard (line 211) | function getTopPlayersForLeaderboard( function getPlayerRankInLeaderboard (line 258) | function getPlayerRankInLeaderboard( function getEloOfPlayerInLeaderboard (line 313) | function getEloOfPlayerInLeaderboard(user_id: number, leaderboard_id: Le... function startPeriodicLeaderboardRatingDeviationUpdate (line 324) | function startPeriodicLeaderboardRatingDeviationUpdate(): void { function updateAllRatingDeviationsofLeaderboardTable (line 329) | function updateAllRatingDeviationsofLeaderboardTable(): void { FILE: src/server/database/liveGamesManager.ts type LiveGamesRecord (line 14) | interface LiveGamesRecord extends LiveGameData { type LiveGameData (line 19) | interface LiveGameData { constant INSERT_QUERY (line 44) | const INSERT_QUERY = ` constant DELETE_QUERY (line 55) | const DELETE_QUERY = `DELETE FROM live_games WHERE game_id = ?`; constant SELECT_ALL_QUERY (line 57) | const SELECT_ALL_QUERY = `SELECT * FROM live_games`; function insertLiveGame (line 65) | function insertLiveGame(record: LiveGamesRecord): void { function updateLiveGame (line 97) | function updateLiveGame(game_id: number, updates: Partial)... function deleteLiveGame (line 117) | function deleteLiveGame(game_id: number): void { function getAllLiveGames (line 130) | function getAllLiveGames(): LiveGamesRecord[] { FILE: src/server/database/livePlayerGamesManager.ts type LivePlayerGamesRecord (line 14) | interface LivePlayerGamesRecord extends LivePlayerData { type LivePlayerData (line 20) | interface LivePlayerData extends LivePlayerDisconnectData { type LivePlayerDisconnectData (line 29) | interface LivePlayerDisconnectData { constant INSERT_QUERY (line 38) | const INSERT_QUERY = ` constant SELECT_BY_GAME_QUERY (line 46) | const SELECT_BY_GAME_QUERY = `SELECT * FROM live_player_games WHERE game... function insertLivePlayerGame (line 54) | function insertLivePlayerGame(record: LivePlayerGamesRecord): void { function updateLivePlayerGame (line 83) | function updateLivePlayerGame( function getLivePlayerGamesForGame (line 111) | function getLivePlayerGamesForGame(game_id: number): LivePlayerGamesReco... FILE: src/server/database/memberManager.ts type MemberRecord (line 20) | interface MemberRecord { type MembersColumn (line 38) | type MembersColumn = keyof MemberRecord; constant SQLITE_CONSTRAINT_ERROR (line 43) | const SQLITE_CONSTRAINT_ERROR = 'SQLITE_CONSTRAINT'; constant USER_NOT_FOUND_ERROR (line 46) | const USER_NOT_FOUND_ERROR = 'USER_NOT_FOUND'; function addUser (line 64) | function addUser( function deleteUser (line 140) | function deleteUser(user_id: number, reason_deleted: DeleteReason): void { function validateMemberQueryArgs (line 193) | function validateMemberQueryArgs( function getMemberDataByCriteria (line 242) | function getMemberDataByCriteria( function getMultipleMemberDataByCriteria (line 271) | function getMultipleMemberDataByCriteria( function updateMemberColumns (line 308) | function updateMemberColumns( function updateLoginCountAndLastSeen (line 362) | function updateLoginCountAndLastSeen(userId: number): void { function updateLastSeen (line 394) | function updateLastSeen(userId: number): void { function genUniqueUserID (line 428) | function genUniqueUserID(): number { function doesMemberOfIDExist (line 444) | function doesMemberOfIDExist(user_id: number): boolean { function isUserIdTaken (line 470) | function isUserIdTaken(userId: number): boolean { function isUsernameTaken (line 503) | function isUsernameTaken(username: string): boolean { function isEmailTaken (line 531) | function isEmailTaken(email: string): boolean { FILE: src/server/database/playerGamesManager.ts type PlayerGamesRecord (line 18) | interface PlayerGamesRecord { type PlayerGamesColumn (line 28) | type PlayerGamesColumn = keyof PlayerGamesRecord; function getOpponentsOfUserFromGames (line 39) | function getOpponentsOfUserFromGames( function getRecentNRatedGamesForUser (line 108) | function getRecentNRatedGamesForUser( FILE: src/server/database/ratingAbuseManager.ts type RatingAbuseRecord (line 18) | interface RatingAbuseRecord { type RatingAbuseColumn (line 25) | type RatingAbuseColumn = keyof RatingAbuseRecord; type ModifyQueryResult (line 28) | type ModifyQueryResult = { success: true; result: RunResult } | { succes... function addEntryToRatingAbuseTable (line 38) | function addEntryToRatingAbuseTable(user_id: number, leaderboard_id: num... function isEntryInRatingAbuseTable (line 85) | function isEntryInRatingAbuseTable(user_id: number, leaderboard_id: numb... function getRatingAbuseData (line 124) | function getRatingAbuseData( function updateRatingAbuseColumns (line 189) | function updateRatingAbuseColumns( FILE: src/server/database/refreshTokenManager.ts type RefreshTokenRecord (line 18) | type RefreshTokenRecord = { function findRefreshToken (line 40) | function findRefreshToken(token: string): RefreshTokenRecord | undefined { function findRefreshTokensForUsers (line 61) | function findRefreshTokensForUsers(user_id_list: number[]): RefreshToken... function addRefreshToken (line 87) | function addRefreshToken(req: Request, userId: number, token: string): v... function deleteRefreshToken (line 117) | function deleteRefreshToken(token: string): void { function deleteAllRefreshTokensForUser (line 134) | function deleteAllRefreshTokensForUser(userId: number): void { function updateRefreshTokenIP (line 154) | function updateRefreshTokenIP(token: string, ip: string | null): void { function markRefreshTokenAsConsumed (line 174) | function markRefreshTokenAsConsumed(token: string): void { FILE: src/server/game/gamemanager/abortresigngame.ts function abortGame (line 22) | function abortGame(_ws: CustomWebSocket, servergame: ServerGame): void { function resignGame (line 54) | function resignGame(ws: CustomWebSocket, servergame: ServerGame): void { FILE: src/server/game/gamemanager/activeplayers.ts function addUserToActiveGames (line 37) | function addUserToActiveGames(user: AuthMemberInfo, id: number): void { function removeUserFromActiveGame (line 49) | function removeUserFromActiveGame(user: AuthMemberInfo, gameID: number):... function isSocketInAnActiveGame (line 75) | function isSocketInAnActiveGame(ws: CustomWebSocket): boolean { function hasColorInGameSeenConclusion (line 90) | function hasColorInGameSeenConclusion(match: MatchInfo, color: Player): ... function getIDOfGamePlayerIsIn (line 105) | function getIDOfGamePlayerIsIn(player: AuthMemberInfo): number | undefin... FILE: src/server/game/gamemanager/afkdisconnect.ts function cancelAutoAFKResignTimer (line 43) | function cancelAutoAFKResignTimer(servergame: ServerGame, alertOpponent:... function startDisconnectTimer (line 69) | function startDisconnectTimer( function cancelDisconnectTimers (line 136) | function cancelDisconnectTimers(match: MatchInfo): void { function cancelDisconnectTimer (line 148) | function cancelDisconnectTimer( FILE: src/server/game/gamemanager/cheatreport.ts type ReportMessage (line 27) | type ReportMessage = z.infer; function onReport (line 35) | function onReport( FILE: src/server/game/gamemanager/drawoffers.ts function isDrawOfferOpen (line 34) | function isDrawOfferOpen(match: MatchInfo): boolean { function doesColorHaveExtendedDrawOffer (line 42) | function doesColorHaveExtendedDrawOffer(match: MatchInfo, color: Player)... function hasColorOfferedDrawTooFast (line 50) | function hasColorOfferedDrawTooFast({ match, basegame }: ServerGame, col... function openDrawOffer (line 66) | function openDrawOffer({ match, basegame }: ServerGame, color: Player): ... function closeDrawOffer (line 84) | function closeDrawOffer(match: MatchInfo): void { function getLastDrawOfferPlyOfColor (line 92) | function getLastDrawOfferPlyOfColor(match: MatchInfo, color: Player): nu... FILE: src/server/game/gamemanager/gamecount.ts function broadcastGameCountToInviteSubs (line 11) | function broadcastGameCountToInviteSubs(): void { function getActiveGameCount (line 16) | function getActiveGameCount(): number { FILE: src/server/game/gamemanager/gamelogger.ts function logGame (line 45) | function logGame(servergame: ServerGame): RatingData | undefined { function logGame_orchestrator (line 82) | function logGame_orchestrator(servergame: ServerGame): RatingData | unde... function updateLeaderboardsInTransaction (line 114) | function updateLeaderboardsInTransaction( function addGameRecordsInTransaction (line 185) | function addGameRecordsInTransaction( function updateAllPlayerStatsInTransaction (line 257) | function updateAllPlayerStatsInTransaction( function updateSinglePlayerStatsInTransaction (line 287) | function updateSinglePlayerStatsInTransaction( function getICNOfGame (line 339) | function getICNOfGame(game: Game): string { function getPlayerMoveCountsInGame (line 377) | function getPlayerMoveCountsInGame({ match, basegame }: ServerGame): Pla... FILE: src/server/game/gamemanager/gamemanager.ts constant PRINT_GAMES (line 58) | const PRINT_GAMES = false; function createGame (line 81) | function createGame( function issueUniqueGameId (line 152) | function issueUniqueGameId(): number { function isMemberInSomeActiveGame (line 166) | function isMemberInSomeActiveGame(username: string): boolean { function startDisconnectCushionTimerAndPersist (line 184) | function startDisconnectCushionTimerAndPersist(servergame: ServerGame, c... function startDisconnectTimerAndPersist (line 195) | function startDisconnectTimerAndPersist( function unsubClientFromGameBySocket (line 211) | function unsubClientFromGameBySocket(ws: CustomWebSocket, { unsubNotByCh... function getGameByID (line 244) | function getGameByID(id: number): ServerGame | undefined { function getGameByPlayer (line 253) | function getGameByPlayer(player: AuthMemberInfo): ServerGame | undefined { function getGameBySocket (line 265) | function getGameBySocket(ws: CustomWebSocket): ServerGame | undefined { function onRequestRemovalFromPlayersInActiveGames (line 286) | function onRequestRemovalFromPlayersInActiveGames( function pushGameClock (line 319) | function pushGameClock({ basegame, match }: ServerGame): number | undefi... function setGameConclusion (line 350) | function setGameConclusion(servergame: ServerGame, conclusion: GameConcl... function finalizeConclusion (line 363) | function finalizeConclusion(servergame: ServerGame, conclusion: GameConc... function teardownGame (line 403) | function teardownGame(servergame: ServerGame): void { function onPlayerLostOnTime (line 439) | function onPlayerLostOnTime(servergame: ServerGame): void { function onPlayerLostByDisconnect (line 459) | function onPlayerLostByDisconnect(servergame: ServerGame, colorWon: Play... function onPlayerLostByAbandonment (line 482) | function onPlayerLostByAbandonment(servergame: ServerGame, colorWon: Pla... function deleteGame (line 499) | function deleteGame(servergame: ServerGame): void { function prepGamesForShutdown (line 558) | function prepGamesForShutdown(): void { function restoreLiveGames (line 582) | function restoreLiveGames(): void { FILE: src/server/game/gamemanager/gamerouter.ts type GameMessage (line 38) | type GameMessage = z.infer; function routeGameMessage (line 47) | function routeGameMessage(ws: CustomWebSocket, contents: GameMessage, id... FILE: src/server/game/gamemanager/gameutility.ts type PlayerDisconnect (line 58) | type PlayerDisconnect = { type PlayerData (line 97) | interface PlayerData { type MatchInfo (line 115) | interface MatchInfo { type ServerGame (line 165) | type ServerGame = { function initMatch (line 180) | function initMatch( function assignWhiteBlackPlayersFromInvite (line 222) | function assignWhiteBlackPlayersFromInvite( function subscribeClientToGame (line 258) | function subscribeClientToGame( function unsubClientFromGame (line 295) | function unsubClientFromGame(match: MatchInfo, ws: CustomWebSocket): void { function sendGameInfoToPlayer (line 314) | function sendGameInfoToPlayer( function getRatingDataForGamePlayers (line 347) | function getRatingDataForGamePlayers( function constructMetadataOfGame (line 367) | function constructMetadataOfGame( function resyncToGame (line 409) | function resyncToGame( function broadcastGameUpdate (line 428) | function broadcastGameUpdate(servergame: ServerGame): void { function sendGameUpdateToColor (line 442) | function sendGameUpdateToColor( function getGameUpdateMessageContents (line 460) | function getGameUpdateMessageContents( function sendRatingChangeToAllPlayers (line 488) | function sendRatingChangeToAllPlayers(match: MatchInfo, ratingdata: Rati... function getRatingChangeMessageContents (line 500) | function getRatingChangeMessageContents( function getParticipantState (line 517) | function getParticipantState(match: MatchInfo, color: Player, whosTurn: ... function doesSocketBelongToGame_ReturnColor (line 554) | function doesSocketBelongToGame_ReturnColor( function doesPlayerBelongToGame_ReturnColor (line 570) | function doesPlayerBelongToGame_ReturnColor( function sendMessageToSocketOfColor (line 589) | function sendMessageToSocketOfColor( function printGame (line 618) | function printGame(servergame: ServerGame): void { function getSimplifiedGameString (line 628) | function getSimplifiedGameString(servergame: ServerGame): string { function isGameOver (line 657) | function isGameOver(basegame: Game): boolean { function isAutoResignDisconnectTimerActiveForColor (line 667) | function isAutoResignDisconnectTimerActiveForColor(match: MatchInfo, col... function sendUpdatedClockToColor (line 676) | function sendUpdatedClockToColor(servergame: ServerGame, color: Player):... function getGameClockValues (line 698) | function getGameClockValues(basegame: Game): ClockValues { function updateClockValues (line 711) | function updateClockValues(basegame: Game): undefined { function sendMoveToColor (line 736) | function sendMoveToColor({ basegame, match }: ServerGame, color: Player,... function simplifyMove (line 759) | function simplifyMove(move: MoveRecord): { token: string } { function cancelDeleteGameTimer (line 766) | function cancelDeleteGameTimer(match: MatchInfo): void { function isGameResignable (line 776) | function isGameResignable(basegame: Game): boolean { function isGameBorderlineResignable (line 785) | function isGameBorderlineResignable(basegame: Game): boolean { function getColorThatPlayedMoveIndex (line 796) | function getColorThatPlayedMoveIndex(basegame: Game, i: number): Player { FILE: src/server/game/gamemanager/joingame.ts function onJoinGame (line 20) | function onJoinGame(ws: CustomWebSocket): void { FILE: src/server/game/gamemanager/liveGameRestore.ts type RestoredGame (line 48) | interface RestoredGame { type PendingTimers (line 55) | interface PendingTimers { type DisconnectTimerState (line 70) | interface DisconnectTimerState { function restoreAllLiveGames (line 88) | function restoreAllLiveGames(): RestoredGame[] { function restoreSingleGame (line 127) | function restoreSingleGame( function reconstructPlayerIdentities (line 196) | function reconstructPlayerIdentities( function reconstructMetadata (line 251) | function reconstructMetadata( function reconstructClockValues (line 284) | function reconstructClockValues( function reconstructConclusion (line 315) | function reconstructConclusion(gameRow: LiveGamesRecord): GameConclusion... function reconstructMatchInfo (line 341) | function reconstructMatchInfo( function parseMoves (line 383) | function parseMoves(movesString: string): MoveRecord[] { function computePendingTimers (line 391) | function computePendingTimers( FILE: src/server/game/gamemanager/liveGameValues.ts function getMovesString (line 36) | function getMovesString(servergame: ServerGame): string { function getPlayerEloString (line 51) | function getPlayerEloString(basegame: Game, player: Player): string | nu... function getDisconnectColumnData (line 63) | function getDisconnectColumnData(disconnect: PlayerDisconnect): LivePlay... function persistCurrentClockTimes (line 76) | function persistCurrentClockTimes(servergame: ServerGame): void { function buildPlayerRecord (line 90) | function buildPlayerRecord( function onGameCreated (line 115) | function onGameCreated(servergame: ServerGame): void { function onMoveSubmitted (line 152) | function onMoveSubmitted(servergame: ServerGame): void { function onGameConcluded (line 173) | function onGameConcluded(servergame: ServerGame): void { function onDrawOfferExtended (line 202) | function onDrawOfferExtended(servergame: ServerGame, offeringColor: Play... function onDrawOfferDeclined (line 215) | function onDrawOfferDeclined(servergame: ServerGame): void { function onPlayerDisconnected (line 225) | function onPlayerDisconnected(servergame: ServerGame, color: Player): vo... function onPlayerReconnected (line 233) | function onPlayerReconnected(servergame: ServerGame, color: Player): void { function onPlayerAFK (line 244) | function onPlayerAFK(servergame: ServerGame): void { function onPlayerAFKReturn (line 253) | function onPlayerAFKReturn(servergame: ServerGame): void { function onPositionPasted (line 262) | function onPositionPasted(servergame: ServerGame): void { function onGameDeleted (line 272) | function onGameDeleted(game_id: number): void { FILE: src/server/game/gamemanager/movesubmission.ts type SubmitMoveMessage (line 40) | type SubmitMoveMessage = z.infer; constant DIGITS_PER_SECOND (line 43) | const DIGITS_PER_SECOND = 4.5; function submitMove (line 54) | function submitMove( function applyServerValidatedMove (line 161) | function applyServerValidatedMove( function applyClientReportedMove (line 210) | function applyClientReportedMove( function getMaxAllowedCoordinateDigits (line 248) | function getMaxAllowedCoordinateDigits(gameStartTime: number): number { function isMoveWithinDistanceCap (line 266) | function isMoveWithinDistanceCap(moveParsed: MoveParsed, gameStartTime: ... function doesMoveCheckOut (line 283) | function doesMoveCheckOut(move: string): MoveParsed | false { function doesGameConclusionCheckOut (line 304) | function doesGameConclusionCheckOut( FILE: src/server/game/gamemanager/onAFK.ts function onAFK (line 34) | function onAFK(ws: CustomWebSocket, servergame: ServerGame): void { function onAFK_Return (line 86) | function onAFK_Return(ws: CustomWebSocket, servergame: ServerGame): void { FILE: src/server/game/gamemanager/onOfferDraw.ts function offerDraw (line 31) | function offerDraw(ws: CustomWebSocket, servergame: ServerGame): void { function acceptDraw (line 62) | function acceptDraw(ws: CustomWebSocket, servergame: ServerGame): void { function declineDraw (line 84) | function declineDraw(ws: CustomWebSocket, servergame: ServerGame): void { FILE: src/server/game/gamemanager/pastereport.ts function onPaste (line 24) | function onPaste(ws: CustomWebSocket, servergame: ServerGame): void { FILE: src/server/game/gamemanager/ratingabuse.ts constant GAME_INTERVAL_TO_MEASURE (line 58) | const GAME_INTERVAL_TO_MEASURE = 5; constant SUSPICION_TOTAL_WEIGHT_THRESHHOLD (line 61) | const SUSPICION_TOTAL_WEIGHT_THRESHHOLD = 1.0; constant SUSPICIOUS_USER_NOTIFICATION_BUFFER_MILLIS (line 64) | const SUSPICIOUS_USER_NOTIFICATION_BUFFER_MILLIS = 1000 * 60 * 60 * 24; constant TOO_CLOSE_GAMES_MILLIS (line 71) | const TOO_CLOSE_GAMES_MILLIS = 1000 * 60 * 3.5; constant SUSPICIOUS_MOVE_COUNT (line 78) | const SUSPICIOUS_MOVE_COUNT = 25; constant SUSPICIOUS_TIME_DURATION_MILLIS (line 81) | const SUSPICIOUS_TIME_DURATION_MILLIS = 1000 * 60 * 3; constant SUSPICIOUS_ACCOUNT_AGE_MILLIS (line 84) | const SUSPICIOUS_ACCOUNT_AGE_MILLIS = 1000 * 60 * 60 * 24 * 5; type RatingAbuseRelevantPlayerGamesRecord (line 92) | type RatingAbuseRelevantPlayerGamesRecord = Pick< type RatingAbuseRelevantGamesRecord (line 101) | type RatingAbuseRelevantGamesRecord = Pick< type RatingAbuseRelevantGameInfo (line 114) | type RatingAbuseRelevantGameInfo = RatingAbuseRelevantPlayerGamesRecord & type RatingAbuseRelevantMemberRecord (line 118) | type RatingAbuseRelevantMemberRecord = { type SuspicionLevelRecord (line 125) | type SuspicionLevelRecord = { function measureRatingAbuseAfterGame (line 143) | function measureRatingAbuseAfterGame(servergame: ServerGame): void { function measurePlayerRatingAbuse (line 181) | function measurePlayerRatingAbuse(user_id: number, username: string, lea... function checkCloseGamePairs (line 405) | function checkCloseGamePairs( function checkMoveCounts (line 432) | function checkMoveCounts( function checkDurations (line 460) | function checkDurations( function checkClockAtEnd (line 491) | function checkClockAtEnd( function checkOpponentSameness (line 535) | function checkOpponentSameness( function checkIPAddresses (line 558) | function checkIPAddresses( function checkOpponentAccountAge (line 600) | function checkOpponentAccountAge( FILE: src/server/game/gamemanager/ratingcalculation.ts constant DEFAULT_LEADERBOARD_ELO (line 13) | const DEFAULT_LEADERBOARD_ELO = 1500.0; constant MINIMUM_LEADERBOARD_ELO (line 16) | const MINIMUM_LEADERBOARD_ELO = 400.0; constant DEFAULT_LEADERBOARD_RD (line 19) | const DEFAULT_LEADERBOARD_RD = 350.0; constant MINIMUM_LEADERBOARD_RD (line 29) | const MINIMUM_LEADERBOARD_RD = 50.0; constant UNCERTAIN_LEADERBOARD_RD (line 32) | const UNCERTAIN_LEADERBOARD_RD = 220.0; constant RATING_PERIOD_DURATION (line 41) | const RATING_PERIOD_DURATION = 1000 * 60 * 60 * 24 * 15; constant RD_UPDATE_FREQUENCY (line 44) | const RD_UPDATE_FREQUENCY = 1000 * 60 * 60 * 24; type PlayerRatingData (line 50) | type PlayerRatingData = { type RatingData (line 60) | type RatingData = PlayerGroup; function getTrueRD (line 67) | function getTrueRD(rating_deviation: number, rd_last_update_date: string... function g (line 90) | function g(RD: number): number { function E (line 95) | function E(r: number, r_opp: number, RD_opp: number): number { function d_squared (line 100) | function d_squared(r: number, r_opp: number, RD_opp: number): number { function new_rating (line 106) | function new_rating( function new_RD (line 121) | function new_RD(r: number, RD: number, r_opp: number, RD_opp: number): n... function computeRatingDataChanges (line 135) | function computeRatingDataChanges(ratingdata: RatingData, victor: Player... FILE: src/server/game/gamemanager/resync.ts function resyncToGame (line 36) | function resyncToGame(ws: CustomWebSocket, gameID: any, replyToMessageID... function sendClientLoggedGame (line 79) | function sendClientLoggedGame(ws: CustomWebSocket, gameID: number): void { FILE: src/server/game/invitesmanager/acceptinvite.ts type AcceptInviteMessage (line 38) | type AcceptInviteMessage = z.infer; function acceptInvite (line 46) | function acceptInvite( function informThemGameAborted (line 141) | function informThemGameAborted( FILE: src/server/game/invitesmanager/cancelinvite.ts type CancelInviteMessage (line 20) | type CancelInviteMessage = z.infer; function cancelInvite (line 28) | function cancelInvite( FILE: src/server/game/invitesmanager/createinvite.ts type CreateInviteMessage (line 61) | type CreateInviteMessage = z.infer; function createInvite (line 69) | function createInvite( function getInviteFromWebsocketMessageContents (line 118) | function getInviteFromWebsocketMessageContents( FILE: src/server/game/invitesmanager/invitesmanager.ts function getPublicInvitesListSafe (line 67) | function getPublicInvitesListSafe(): SafeInvite[] { function addMyPrivateInviteToList (line 83) | function addMyPrivateInviteToList( function onPublicInvitesChange (line 103) | function onPublicInvitesChange(ws?: CustomWebSocket, replyto?: number): ... function broadcastInvites (line 113) | function broadcastInvites(ws?: CustomWebSocket, replyto?: number): void { function sendClientInvitesList (line 139) | function sendClientInvitesList( function addInvite (line 159) | function addInvite(ws: CustomWebSocket, invite: Invite, replyto?: number... function deleteInviteByIndex (line 182) | function deleteInviteByIndex( function userHasInvite (line 214) | function userHasInvite(ws: CustomWebSocket): boolean { function existingInviteHasID (line 225) | function existingInviteHasID(id: string): boolean { function getInviteAndIndexByID (line 235) | function getInviteAndIndexByID(id: string): { invite: Invite; index: num... function findSocketFromOwner (line 249) | function findSocketFromOwner(owner: AuthMemberInfo): CustomWebSocket | u... function subToInvitesList (line 269) | function subToInvitesList(ws: CustomWebSocket): void { function unsubFromInvitesList (line 278) | function unsubFromInvitesList(ws: CustomWebSocket, closureNotByChoice?: ... function cancelTimerToDeleteUsersInvitesFromNetworkInterruption (line 297) | function cancelTimerToDeleteUsersInvitesFromNetworkInterruption(ws: Cust... function deleteUserInvitesIfNotConnected (line 318) | function deleteUserInvitesIfNotConnected(info: AuthMemberInfo): void { function deleteUsersExistingInvite (line 337) | function deleteUsersExistingInvite( FILE: src/server/game/invitesmanager/invitesrouter.ts type InvitesMessage (line 21) | type InvitesMessage = z.infer; function routeInvitesMessage (line 30) | function routeInvitesMessage(ws: CustomWebSocket, contents: InvitesMessa... FILE: src/server/game/invitesmanager/invitessubscribers.ts function getInviteSubscribers (line 28) | function getInviteSubscribers(): typeof subscribedClients { function broadcastToAllInviteSubs (line 37) | function broadcastToAllInviteSubs(action: string, message: any): void { function addSocketToInvitesSubs (line 46) | function addSocketToInvitesSubs(ws: CustomWebSocket): void { function removeSocketFromInvitesSubs (line 62) | function removeSocketFromInvitesSubs(ws: CustomWebSocket): void { function doesUserHaveActiveConnection (line 80) | function doesUserHaveActiveConnection(info: AuthMemberInfo): boolean { FILE: src/server/game/invitesmanager/inviteutility.ts type Invite (line 18) | interface Invite extends SafeInvite { type SafeInvite (line 27) | interface SafeInvite { function isInvitePrivate (line 43) | function isInvitePrivate(invite: Invite): boolean { function isInvitePublic (line 50) | function isInvitePublic(invite: Invite): boolean { function makeInviteSafe (line 58) | function makeInviteSafe(invite: Invite): SafeInvite { function safelyCopyInvite (line 75) | function safelyCopyInvite(invite: Invite): SafeInvite { function memberInfoEq (line 81) | function memberInfoEq(u1: AuthMemberInfo, u2: AuthMemberInfo): boolean { FILE: src/server/game/servermetadatautil.ts type PlayerMetaInput (line 17) | interface PlayerMetaInput { function buildGameMetadata (line 38) | function buildGameMetadata( FILE: src/server/game/statlogger.ts function logGame (line 72) | function logGame({ basegame, match }: ServerGame): void { function incrementMonthsGamesPlayed (line 107) | function incrementMonthsGamesPlayed( function saveStats (line 126) | async function saveStats(): Promise { FILE: src/server/game/timecontrol.ts function isValid (line 30) | function isValid(time_control: TimeControl): boolean { FILE: src/server/middleware/banned.ts function isIPBanned (line 59) | function isIPBanned(ip: string): boolean { function isBrowserIDBanned (line 63) | function isBrowserIDBanned(browserID: string): boolean { FILE: src/server/middleware/errorHandler.ts function errorHandler (line 8) | function errorHandler(err: Error, req: Request, res: Response, _next: Fu... FILE: src/server/middleware/logEvents.ts function logEvents (line 23) | async function logEvents(message: string, logName: string): Promise { function logEventsAndPrint (line 48) | async function logEventsAndPrint(message: string, logName: string): Prom... function reqLogger (line 56) | function reqLogger(req: Request, res: Response, next: () => void): void { function logWebsocketStart (line 88) | function logWebsocketStart(req: IncomingMessage, ws: CustomWebSocket): v... function logReqWebsocketIn (line 102) | function logReqWebsocketIn(ws: CustomWebSocket, messageData: string): vo... function logReqWebsocketOut (line 113) | function logReqWebsocketOut(ws: CustomWebSocket, messageData: string): v... FILE: src/server/middleware/middleware.ts function configureMiddleware (line 74) | function configureMiddleware(app: Express): void { FILE: src/server/middleware/rateLimit.ts constant DEV_BUILD (line 20) | const DEV_BUILD = process.env['NODE_ENV'] === 'development'; constant ARE_RATE_LIMITING (line 24) | const ARE_RATE_LIMITING = !DEV_BUILD; function getIpBrowserAgentKey (line 83) | function getIpBrowserAgentKey(IP: string, userAgent: string): string { function rateLimit (line 95) | function rateLimit(req: Request, res: Response, next: NextFunction): void { function rateLimitWebSocket (line 153) | function rateLimitWebSocket(req: IncomingMessage, ws: CustomWebSocket): ... function incrementClientConnectionCount (line 189) | function incrementClientConnectionCount(userKey: string): void { function countRecentRequests (line 242) | function countRecentRequests(): void { function logAttackBegin (line 274) | function logAttackBegin(): void { function logAttackEnd (line 280) | function logAttackEnd(): void { FILE: src/server/middleware/rateLimiters.ts function generic_handler (line 16) | function generic_handler(req: Request, res: Response): Response { FILE: src/server/middleware/send404.ts function send404 (line 12) | function send404(req: Request, res: Response): void { FILE: src/server/middleware/verifyJWT.ts function verifyJWT (line 33) | function verifyJWT(req: Request, res: Response, next: NextFunction): void { function verifyAccessToken (line 53) | function verifyAccessToken(req: IdentifiedRequest, res: Response): boole... function verifyRefreshToken (line 86) | function verifyRefreshToken(req: IdentifiedRequest, res: Response): void { function verifyJWTWebSocket (line 132) | function verifyJWTWebSocket(ws: CustomWebSocket): void { function verifyRefreshToken_WebSocket (line 142) | function verifyRefreshToken_WebSocket(ws: CustomWebSocket): void { FILE: src/server/server.ts constant DEV_BUILD (line 28) | const DEV_BUILD = process.env['NODE_ENV'] === 'development'; constant HTTPPORT (line 29) | const HTTPPORT = DEV_BUILD ? process.env['HTTPPORT_LOCAL'] : process.env... constant HTTPSPORT (line 30) | const HTTPSPORT = DEV_BUILD ? process.env['HTTPSPORT_LOCAL'] : process.e... function handleCleanup (line 46) | function handleCleanup(signal: string): void { FILE: src/server/socket/closeSocket.ts function onclose (line 15) | function onclose(ws: CustomWebSocket, code: number, reason: Buffer): void { function cancelRenewConnectionTimer (line 39) | function cancelRenewConnectionTimer(ws: CustomWebSocket): void { FILE: src/server/socket/echoTracker.ts function addTimeoutToEchoTimers (line 27) | function addTimeoutToEchoTimers(messageID: number, timeout: NodeJS.Timeo... function deleteEchoTimerForMessageID (line 35) | function deleteEchoTimerForMessageID(messageIDEchoIsFor: number): boolean { FILE: src/server/socket/generalrouter.ts type ValidUnsub (line 16) | type ValidUnsub = (typeof validUnsubs)[number]; type GeneralMessage (line 23) | type GeneralMessage = z.infer; function routeGeneralMessage (line 28) | function routeGeneralMessage(ws: CustomWebSocket, message: GeneralMessag... function handleSubbing (line 48) | function handleSubbing(ws: CustomWebSocket, value: 'invites'): void { function handleUnsubbing (line 61) | function handleUnsubbing(ws: CustomWebSocket, key: ValidUnsub, closureNo... FILE: src/server/socket/openSocket.ts function onConnectionRequest (line 34) | function onConnectionRequest(socket: WebSocket, req: IncomingMessage): v... function closeIfInvalidAndAddMetadata (line 88) | function closeIfInvalidAndAddMetadata( function addListenersToSocket (line 147) | function addListenersToSocket(req: IncomingMessage, ws: CustomWebSocket)... function onerror (line 165) | function onerror(ws: CustomWebSocket, error: Error): void { FILE: src/server/socket/receiveSocketMessage.ts type WebsocketInMessage (line 33) | type WebsocketInMessage = z.infer; function onmessage (line 67) | function onmessage(req: IncomingMessage, ws: CustomWebSocket, rawMessage... function rateLimitAndLogMessage (line 141) | function rateLimitAndLogMessage( FILE: src/server/socket/sendSocketMessage.ts type WebsocketOutMessage (line 28) | interface WebsocketOutMessage { function sendSocketMessage (line 70) | function sendSocketMessage( function sendNotify (line 144) | function sendNotify( function sendNotifyError (line 159) | function sendNotifyError(ws: CustomWebSocket, translationCode: Translati... function rescheduleRenewConnection (line 174) | function rescheduleRenewConnection(ws: CustomWebSocket): void { function cancelRenewConnectionTimer (line 185) | function cancelRenewConnectionTimer(ws: CustomWebSocket): void { function renewConnection (line 194) | function renewConnection(ws: CustomWebSocket): void { FILE: src/server/socket/socketManager.ts function addConnectionToConnectionLists (line 51) | function addConnectionToConnectionLists(ws: CustomWebSocket): void { function addConnectionToList (line 71) | function addConnectionToList( function startTimerToExpireSocket (line 80) | function startTimerToExpireSocket(ws: CustomWebSocket): void { function removeConnectionFromConnectionLists (line 93) | function removeConnectionFromConnectionLists( function removeConnectionFromList (line 117) | function removeConnectionFromList( function terminateAllIPSockets (line 133) | function terminateAllIPSockets(IP: string): void { function closeAllSocketsOfSession (line 152) | function closeAllSocketsOfSession(jwt: string, closureCode: number, clos... function closeAllSocketsOfMember (line 167) | function closeAllSocketsOfMember( function AddVerificationToAllSocketsOfMember (line 187) | function AddVerificationToAllSocketsOfMember(user_id: number): void { function doesClientHaveMaxSocketCount (line 206) | function doesClientHaveMaxSocketCount(IP: string): boolean { function doesSessionHaveMaxSocketCount (line 216) | function doesSessionHaveMaxSocketCount(jwt: string): boolean { function unsubSocketFromAllSubs (line 224) | function unsubSocketFromAllSubs(ws: CustomWebSocket, closureNotByChoice:... function generateUniqueIDForSocket (line 234) | function generateUniqueIDForSocket(): string { FILE: src/server/socket/socketRouter.ts function routeIncomingSocketMessage (line 19) | function routeIncomingSocketMessage(ws: CustomWebSocket, message: Websoc... FILE: src/server/socket/socketServer.ts function start (line 14) | function start(httpsServer: HttpsServer): void { FILE: src/server/socket/socketUtility.ts type CustomWebSocket (line 16) | interface CustomWebSocket extends WebSocket { function printSocket (line 57) | function printSocket(ws: CustomWebSocket): void { function stringifySocketMetadata (line 66) | function stringifySocketMetadata(ws: CustomWebSocket): string { function getSimplifiedMetadata (line 81) | function getSimplifiedMetadata(ws: CustomWebSocket): Partial void, errorMessage: string): bool... function executeSafely_async (line 38) | async function executeSafely_async( FILE: src/server/utility/lockFile.ts function readFile (line 18) | async function readFile(path: string, buffer: BufferEncoding = 'utf-8... function writeFile (line 35) | async function writeFile(path: string, object: any): Promise { FILE: src/server/utility/mailer.ts type SendMailOptions (line 13) | type SendMailOptions = { constant AWS_REGION (line 20) | const AWS_REGION = process.env['AWS_REGION']; constant EMAIL_FROM_ADDRESS (line 21) | const EMAIL_FROM_ADDRESS = process.env['EMAIL_FROM_ADDRESS']; constant AWS_ACCESS_KEY_ID (line 22) | const AWS_ACCESS_KEY_ID = process.env['AWS_ACCESS_KEY_ID']; constant AWS_SECRET_ACCESS_KEY (line 23) | const AWS_SECRET_ACCESS_KEY = process.env['AWS_SECRET_ACCESS_KEY']; constant FROM (line 28) | const FROM = EMAIL_FROM_ADDRESS; function send (line 54) | async function send(options: SendMailOptions): Promise { FILE: src/server/utility/newsUtil.ts function getLatestNewsDate (line 22) | function getLatestNewsDate(): string | null { function getAllNewsDates (line 49) | function getAllNewsDates(): string[] { function countUnreadNews (line 69) | function countUnreadNews(lastReadDate: string | null): number { function getUnreadNewsDates (line 91) | function getUnreadNewsDates(lastReadDate: string | null): string[] { FILE: src/server/utility/startupLogger.ts function writeStartupLog (line 16) | function writeStartupLog(message: string): void { function logServerStarted (line 30) | function logServerStarted(): void { function logServerStopped (line 39) | function logServerStopped(signal: string): void { FILE: src/server/utility/translate.ts constant DEFAULT_LANGUAGE (line 14) | const DEFAULT_LANGUAGE = 'en-US'; function getLanguageToServe (line 33) | function getLanguageToServe(req: Request): string { function getTranslation (line 55) | function getTranslation(key: TranslationKeys, language: string = DEFAULT... function getTranslationForReq (line 66) | function getTranslationForReq(key: TranslationKeys, req: Request): string { FILE: src/server/utility/urlUtils.ts function getAppBaseUrl (line 9) | function getAppBaseUrl(): string { FILE: src/server/utility/zodlogger.ts function logZodError (line 15) | function logZodError(json: any, zodError: z.ZodError, contextMessage: st... FILE: src/shared/chess/logic/boardchanges.ts type Change (line 34) | type Change = { type genericChangeFunc (line 66) | type genericChangeFunc = (_actiondata: T, _change: Change) => void; type ActionList (line 74) | interface ActionList { type ChangeApplication (line 81) | interface ChangeApplication { function queueCapture (line 114) | function queueCapture( function queueAddPiece (line 131) | function queueAddPiece(changes: Array, piece: Piece): Change[] { function queueDeletePiece (line 142) | function queueDeletePiece(changes: Array, main: boolean, piece: ... function queueMovePiece (line 154) | function queueMovePiece( function runChanges (line 174) | function runChanges( function applyChanges (line 191) | function applyChanges( function addPiece (line 225) | function addPiece({ boardsim, basegame }: FullGame, change: Change): void { function deletePiece (line 276) | function deletePiece({ boardsim }: FullGame, change: Change): void { function movePiece (line 305) | function movePiece({ boardsim }: FullGame, change: Change): void { function returnPiece (line 321) | function returnPiece({ boardsim }: FullGame, change: Change): void { function runChanges_Position (line 346) | function runChanges_Position(position: Map, changes: ... function getCapturedPieceTypes (line 375) | function getCapturedPieceTypes(move: MoveFull): Set { function wasACapture (line 386) | function wasACapture(move: MoveFull): boolean { FILE: src/shared/chess/logic/checkdetection.ts function detectCheck (line 32) | function detectCheck( function isSquareBeingAttacked (line 63) | function isSquareBeingAttacked( function doesVicinityAttackSquare (line 105) | function doesVicinityAttackSquare( function doesSpecialAttackSquare (line 142) | function doesSpecialAttackSquare( function doesSlideAttackSquare (line 222) | function doesSlideAttackSquare( function doesLineAttackSquare (line 263) | function doesLineAttackSquare( FILE: src/shared/chess/logic/checkmate.ts function detectCheckmateOrStalemate (line 30) | function detectCheckmateOrStalemate(gamefile: FullGame): GameConclusion ... FILE: src/shared/chess/logic/checkresolver.ts function removeCheckInvalidMoves (line 57) | function removeCheckInvalidMoves( function removeCheckInvalidMoves_Individual (line 91) | function removeCheckInvalidMoves_Individual( function removeCheckInvalidMoves_Sliding (line 117) | function removeCheckInvalidMoves_Sliding( function addressChecks (line 149) | function addressChecks( function addressPins (line 258) | function addressPins( function restrictSlideBetweenSquares (line 366) | function restrictSlideBetweenSquares( function appendBlockingMoves (line 426) | function appendBlockingMoves( function appendPathBlockingMoves (line 499) | function appendPathBlockingMoves( function appendMoveToIndividualsAvoidDuplicates (line 524) | function appendMoveToIndividualsAvoidDuplicates(individuals: CoordsTagge... function sortChecks (line 536) | function sortChecks(checks: CheckInfo[]): CheckInfo[] { function isMoveCheckInvalid (line 556) | function isMoveCheckInvalid( function getSimulatedCheck (line 575) | function getSimulatedCheck( FILE: src/shared/chess/logic/clock.ts type ClockData (line 23) | type ClockData = { function init (line 67) | function init(players: Iterable, time_control: TimeControl): Clo... function edit (line 98) | function edit(currentClocks: ClockData, clockValues: ClockValues): void { function push (line 126) | function push(basegame: Game, clocks: ClockData): number | undefined { function stop (line 150) | function stop(basegame: Game): void { function endGame (line 165) | function endGame(basegame: Game): void { function update (line 178) | function update(basegame: Game): Player | undefined { function getColorTickingTrueTimeRemaining (line 212) | function getColorTickingTrueTimeRemaining(clocks: ClockData): number | u... function printClocks (line 218) | function printClocks(basegame: Game): void { function createEdit (line 228) | function createEdit(clocks: ClockData): ClockValues { FILE: src/shared/chess/logic/fourdimensionalmoves.ts function fourDimensionalPawnMove (line 33) | function fourDimensionalPawnMove( function pawnLegalMoves (line 52) | function pawnLegalMoves( function addPossibleEnPassant (line 175) | function addPossibleEnPassant( function appendPawnMoveAndAttachPromoteTag (line 215) | function appendPawnMoveAndAttachPromoteTag( function doesPieceHaveSpecialRight (line 229) | function doesPieceHaveSpecialRight(boardsim: Board, coords: Coords): boo... function doFourDimensionalPawnMove (line 235) | function doFourDimensionalPawnMove(boardsim: Board, piece: Piece, move: ... function fourDimensionalKnightMove (line 276) | function fourDimensionalKnightMove( function fourDimensionalKingMove (line 343) | function fourDimensionalKingMove( function kingLegalMoves (line 366) | function kingLegalMoves( FILE: src/shared/chess/logic/gamefile.ts type Snapshot (line 33) | interface Snapshot { type Game (line 48) | type Game = { type ClockDependant (line 62) | type ClockDependant = type Board (line 76) | type Board = { type FullGame (line 112) | type FullGame = { type Additional (line 119) | interface Additional { function initGame (line 137) | function initGame( function initBoard (line 173) | function initBoard( function loadGameWithBoard (line 273) | function loadGameWithBoard( function initFullGame (line 308) | function initFullGame( FILE: src/shared/chess/logic/icn/icncommentutils.ts type Command (line 18) | type Command = (typeof validCommands)[number]; type CommandObject (line 24) | interface CommandObject { type ExtractedCommentData (line 32) | interface ExtractedCommentData { function combineCommentAndCommands (line 55) | function combineCommentAndCommands(cmdObjs: CommandObject[], comment?: s... function formatCommandSequence (line 70) | function formatCommandSequence(cmdObj: CommandObject): string { function extractCommandsFromComment (line 84) | function extractCommandsFromComment(commentString: string): ExtractedCom... function createClkCommandObject (line 121) | function createClkCommandObject(timeMillis: number): CommandObject { function getMillisFromClkTimeValue (line 168) | function getMillisFromClkTimeValue(clkValueString: string): number { FILE: src/shared/chess/logic/icn/icnconverter.ts type LongFormatIn (line 38) | interface LongFormatIn extends LongFormatBase { type LongFormatOut (line 44) | interface LongFormatOut extends LongFormatBase { type LongFormatBase (line 50) | interface LongFormatBase { type NamedCaptureMoveGroups (line 65) | type NamedCaptureMoveGroups = { type MovePreprint (line 78) | interface MovePreprint extends MoveParsed { type MoveParsed (line 92) | interface MoveParsed extends MoveCoords { type MoveCoords (line 104) | interface MoveCoords { type PresetAnnotes (line 115) | type PresetAnnotes = { type PlayerCode (line 140) | type PlayerCode = (typeof player_codes)[keyof typeof player_codes]; function isPromotionListDefaultPromotions (line 232) | function isPromotionListDefaultPromotions(promotionList: RawType[]): boo... function getPieceAbbrevRegexSource (line 287) | function getPieceAbbrevRegexSource(capturing: boolean): string { function getPieceEntryRegexSource (line 300) | function getPieceEntryRegexSource(capturing: boolean): string { function getPromotionRegexSource (line 309) | function getPromotionRegexSource(capturing: boolean): string { function getMoveRegexSource (line 328) | function getMoveRegexSource(capturing: boolean): string { function getAbbrFromType (line 472) | function getAbbrFromType(type: number): string { function getTypeFromAbbr (line 490) | function getTypeFromAbbr(pieceAbbr: string): number { function LongToShort_Format (line 531) | function LongToShort_Format( function ShortToLong_Format (line 813) | function ShortToLong_Format(icn: string): LongFormatOut { function getCompactMoveFromDraft (line 1218) | function getCompactMoveFromDraft(moveCoords: MoveCoords): string { function getCompactMoveFromParts (line 1226) | function getCompactMoveFromParts( function getShortFormMoveFromMove (line 1243) | function getShortFormMoveFromMove( function parseTokenMove (line 1318) | function parseTokenMove(tokenMove: string): MoveParsed { function getParsedMoveFromNamedCapturedMoveGroups (line 1338) | function getParsedMoveFromNamedCapturedMoveGroups( function getShortFormMovesFromMoves (line 1381) | function getShortFormMovesFromMoves( function getShortFormMovesFromMoves_MoveNumbers (line 1413) | function getShortFormMovesFromMoves_MoveNumbers( function parseShortFormMoves (line 1472) | function parseShortFormMoves(shortformMoves: string): MoveParsed[] { function getShortFormPosition (line 1501) | function getShortFormPosition( function generateSpecialRights (line 1525) | function generateSpecialRights( function generatePositionFromShortForm (line 1581) | function generatePositionFromShortForm(shortposition: string): { function parsePresetSquares (line 1617) | function parsePresetSquares(presetSquares: string): Coords[] { function parsePresetRays (line 1630) | function parsePresetRays(presetRays: string): BaseRay[] { FILE: src/shared/chess/logic/initvariant.ts type VariantOptions (line 22) | interface VariantOptions { function getVariantGamerules (line 46) | function getVariantGamerules( function getPieceMovesets (line 64) | function getPieceMovesets( function getVariantVariantOptions (line 86) | function getVariantVariantOptions( FILE: src/shared/chess/logic/insufficientmaterial.ts type PieceCount (line 28) | type PieceCount = number | [number, number]; type Scenario (line 30) | type Scenario = TypeGroup; constant INSUFFMAT_SCENARIOS (line 49) | const INSUFFMAT_SCENARIOS: readonly Scenario[] = [ constant INSUFFMAT_SCENARIOS_FINITE (line 137) | const INSUFFMAT_SCENARIOS_FINITE: readonly Scenario[] = [ function makeScenReadable (line 170) | function makeScenReadable(scen: Scenario): string { function withPieces (line 185) | function withPieces(addedPieces: Scenario, scenarios: readonly Scenario[... function isSubsumedBy (line 194) | function isSubsumedBy(a: Scenario, b: Scenario): boolean { function hasMorePieces (line 206) | function hasMorePieces(a: PieceCount, b: PieceCount): boolean { function isScenarioInsuffMat (line 223) | function isScenarioInsuffMat(scenario: Scenario, boardIsFinite: boolean)... function getCoordsParity (line 232) | function getCoordsParity(coords: Coords): 0 | 1 { function sumTupleCount (line 236) | function sumTupleCount(tuple: [number, number]): number { function orderTupleDescending (line 240) | function orderTupleDescending(tuple: [number, number]): [number, number] { function normalizeBishopParities (line 255) | function normalizeBishopParities(scen: Scenario): void { function doesPositionSupportInsuffmat (line 284) | function doesPositionSupportInsuffmat(gameRules: GameRules, boardsim: Bo... function buildBoardScenario (line 321) | function buildBoardScenario(boardsim: Board, exclude?: (coords: Coords) ... function invertScenario (line 355) | function invertScenario(scenario: Scenario): Scenario { function detectInsufficientMaterial (line 374) | function detectInsufficientMaterial( function buildBoardScenarios (line 419) | function buildBoardScenarios(gameRules: GameRules, boardsim: Board): Sce... FILE: src/shared/chess/logic/legalmoves.ts type SlideLimits (line 39) | type SlideLimits = [bigint | null, bigint | null]; type LegalMoves (line 42) | interface LegalMoves { type Vicinity (line 59) | type Vicinity = Record; constant MAX_BRUTE_SIMULATIONS (line 68) | const MAX_BRUTE_SIMULATIONS = 200n; function genVicinity (line 81) | function genVicinity(pieceMovesets: RawTypeGroup<() => PieceMoveset>): V... function genSpecialVicinity (line 110) | function genSpecialVicinity( function getPieceMoveset (line 135) | function getPieceMoveset(boardsim: Board, pieceType: number): PieceMoves... function getBlockingFuncFromPieceMoveset (line 146) | function getBlockingFuncFromPieceMoveset(pieceMoveset: PieceMoveset): Bl... function getIgnoreFuncFromPieceMoveset (line 153) | function getIgnoreFuncFromPieceMoveset(pieceMoveset: PieceMoveset): Igno... function getEmptyLegalMoves (line 163) | function getEmptyLegalMoves(moveset: PieceMoveset): LegalMoves { function appendPotentialMoves (line 176) | function appendPotentialMoves(piece: Piece, moveset: PieceMoveset, legal... function shiftIndividualMovesetByCoords (line 195) | function shiftIndividualMovesetByCoords(indivMoveset: readonly Coords[],... function appendSpecialMoves (line 209) | function appendSpecialMoves( function removeObstructedMoves (line 228) | function removeObstructedMoves( function removeInvalidIndividualMoves (line 258) | function removeInvalidIndividualMoves( function removeObstructedSlidingMoves (line 284) | function removeObstructedSlidingMoves( function testSquareValidity (line 326) | function testSquareValidity( function testCaptureValidity (line 358) | function testCaptureValidity( function calculateAll (line 380) | function calculateAll(gamefile: FullGame, piece: Piece): LegalMoves { function calculateAllPremoves (line 403) | function calculateAllPremoves(gamefile: FullGame, piece: Piece): LegalMo... function slide_CalcLegalLimit (line 431) | function slide_CalcLegalLimit( function enforceWorldBorderOnSlideLimit (line 495) | function enforceWorldBorderOnSlideLimit( function calcPiecesLegalSlideLimitOnSpecificLine (line 546) | function calcPiecesLegalSlideLimitOnSpecificLine( function checkIfMoveLegal (line 586) | function checkIfMoveLegal( function doSlideRangesContainSquare (line 621) | function doSlideRangesContainSquare( function doesSlidingMovesetContainSquare (line 652) | function doesSlidingMovesetContainSquare( function hasAtleast1Move (line 681) | function hasAtleast1Move(moves: LegalMoves, gamefile: FullGame, piece: P... FILE: src/shared/chess/logic/movepiece.ts type SpecialTags (line 37) | interface SpecialTags extends MoveSpecialTags, UISpecialTags {} type MoveSpecialTags (line 43) | interface MoveSpecialTags { type UISpecialTags (line 78) | interface UISpecialTags { type CoordsTagged (line 92) | type CoordsTagged = Coords & Partial; type MoveRecord (line 95) | interface MoveRecord extends MoveCoords { type MoveTagged (line 108) | type MoveTagged = MoveCoords & Partial; type Edit (line 111) | interface Edit { type MoveFull (line 123) | interface MoveFull extends Edit, MoveTagged, MoveRecord { constant MOVE_SPECIAL_TAGS (line 150) | const MOVE_SPECIAL_TAGS = [ constant UI_SPECIAL_TAGS (line 163) | const UI_SPECIAL_TAGS = ['promoteTrigger'] satisfies ReadonlyArray(gamefile: FullGame, moveTagged: MoveTagg... function getSimulatedConclusion (line 674) | function getSimulatedConclusion( FILE: src/shared/chess/logic/movesets.ts type Movesets (line 22) | type Movesets = RawTypeGroup; type RawMovesets (line 25) | type RawMovesets = RawTypeGroup; type RawPieceMoveset (line 28) | interface RawPieceMoveset { type PieceMoveset (line 66) | interface PieceMoveset extends RawPieceMoveset { type SlidingMoves (line 80) | type SlidingMoves = { type IgnoreFunction (line 97) | type IgnoreFunction = (_startCoords: Coords, _endCoords: Coords) => bool... type BlockingFunction (line 111) | type BlockingFunction = ( type SpecialFunction (line 121) | type SpecialFunction = ( function defaultBlockingFunction (line 136) | function defaultBlockingFunction( function defaultIgnoreFunction (line 146) | function defaultIgnoreFunction(): boolean { function generateCompassMoves (line 153) | function generateCompassMoves(distance: bigint): Coords[] { function generateLeaperMoves (line 166) | function generateLeaperMoves(m: bigint, n: bigint): Coords[] { function getPieceDefaultMovesets (line 184) | function getPieceDefaultMovesets(slideLimit: bigint | null = null): Move... function getPossibleSlides (line 314) | function getPossibleSlides(pieceMovesets: RawTypeGroup<() => PieceMovese... function convertRawMovesetsToPieceMovesets (line 325) | function convertRawMovesetsToPieceMovesets(pieceMovesets: RawTypeGroup(gamefile: FullGame, action: () => T): T { function isOpponentsMoveLegal (line 71) | function isOpponentsMoveLegal( function isTokenMoveLegal (line 104) | function isTokenMoveLegal(gamefile: FullGame, tokenMove: unknown): MoveV... function validateMove (line 133) | function validateMove(gamefile: FullGame, moveCoords: MoveCoords): MoveV... function validateConclusion (line 260) | function validateConclusion( FILE: src/shared/chess/logic/organizedpieces.ts type OrganizedPieces (line 37) | interface OrganizedPieces { type TypeRanges (line 74) | type TypeRanges = Map; type TypeRange (line 77) | interface TypeRange { type LineKey (line 87) | type LineKey = `${bigint}|${bigint}`; function processInitialPosition (line 105) | function processInitialPosition( function regenerateLists (line 259) | function regenerateLists( function generatePositionFromPieces (line 386) | function generatePositionFromPieces({ coords, types }: OrganizedPieces):... function registerPieceInSpace (line 410) | function registerPieceInSpace( function removePieceFromSpace (line 445) | function removePieceFromSpace( function calcRemainingExistingTypes (line 498) | function calcRemainingExistingTypes( function getListExtrasOfType (line 551) | function getListExtrasOfType( function getTypeUndefinedsBehavior (line 573) | function getTypeUndefinedsBehavior( function areHippogonalsPresentInGame (line 590) | function areHippogonalsPresentInGame(slidingPossible: Vec2[]): boolean { function getKeyFromLine (line 615) | function getKeyFromLine(step: Vec2, coords: Coords): LineKey { function getCFromKey (line 622) | function getCFromKey(lineKey: LineKey): bigint { function getXFromLine (line 639) | function getXFromLine(step: Coords, coords: Coords): bigint { FILE: src/shared/chess/logic/repetition.ts type Flux (line 22) | type Flux = `${string},${string},${number | string}`; function detectRepetitionDraw (line 31) | function detectRepetitionDraw({ basegame, boardsim }: FullGame): GameCon... FILE: src/shared/chess/logic/specialdetect.ts function kings (line 45) | function kings( function pawns (line 178) | function pawns( function getEnPassantGamefileProperty (line 265) | function getEnPassantGamefileProperty( function addPossibleEnPassant (line 282) | function addPossibleEnPassant( function appendPawnMoveAndAttachPromoteTag (line 319) | function appendPawnMoveAndAttachPromoteTag( function roses (line 341) | function roses( function doesPieceHaveSpecialRight (line 455) | function doesPieceHaveSpecialRight(boardsim: Board, coords: Coords): boo... function isPawnPromotion (line 469) | function isPawnPromotion(basegame: Game, type: number, coordsClicked: Co... function transferSpecialTags_FromCoordsToMove (line 484) | function transferSpecialTags_FromCoordsToMove(coords: CoordsTagged, move... function transferSpecialTags_FromCoordsToCoords (line 495) | function transferSpecialTags_FromCoordsToCoords( function transferSpecialTag (line 511) | function transferSpecialTag( FILE: src/shared/chess/logic/specialmove.ts type SpecialMoveFunction (line 19) | type SpecialMoveFunction = (_boardsim: Board, _piece: Piece, _move: Move... type MoveRunning (line 22) | interface MoveRunning extends MoveTagged, Edit {} type SpecialVicinity (line 30) | type SpecialVicinity = RawTypeGroup; function kings (line 55) | function kings(boardsim: Board, piece: Piece, move: MoveRunning): boolean { function pawns (line 79) | function pawns(boardsim: Board, piece: Piece, move: MoveRunning): boolean { function roses (line 119) | function roses(boardsim: Board, piece: Piece, move: MoveRunning): boolean { function getDefaultSpecialVicinitiesByPiece (line 134) | function getDefaultSpecialVicinitiesByPiece(): SpecialVicinity { FILE: src/shared/chess/logic/state.ts type GameState (line 15) | interface GameState { type LocalGameState (line 21) | interface LocalGameState { type GlobalGameState (line 42) | interface GlobalGameState { type inCheck (line 52) | type inCheck = false | Coords[]; type MoveState (line 73) | interface MoveState { type StateChange (line 82) | type StateChange = type CheckInfo (line 115) | type CheckInfo = { type EnPassant (line 135) | interface EnPassant { function createCheckState (line 151) | function createCheckState( function createChecksState (line 164) | function createChecksState( function createEnPassantState (line 179) | function createEnPassantState(move: Edit, current?: EnPassant, future?: ... function createSpecialRightsState (line 196) | function createSpecialRightsState( function createMoveRuleState (line 207) | function createMoveRuleState(move: Edit, current: number, future: number... function applyMove (line 219) | function applyMove( function applyLocalStateChanges (line 236) | function applyLocalStateChanges( function applyGlobalStateChanges (line 246) | function applyGlobalStateChanges( function applyLocalState (line 258) | function applyLocalState(gamestate: LocalGameState, state: StateChange, ... function applyGlobalState (line 274) | function applyGlobalState(gamestate: GlobalGameState, state: StateChange... FILE: src/shared/chess/logic/wincondition.ts function getGameConclusion (line 38) | function getGameConclusion(gamefile: FullGame): GameConclusion | undefin... function detectRoyalCapture (line 56) | function detectRoyalCapture({ boardsim, basegame }: FullGame): GameConcl... function detectAllroyalscaptured (line 72) | function detectAllroyalscaptured({ boardsim, basegame }: FullGame): Game... function detectAllpiecescaptured (line 101) | function detectAllpiecescaptured({ boardsim, basegame }: FullGame): Game... function detectKoth (line 125) | function detectKoth({ boardsim, basegame }: FullGame): GameConclusion | ... function detectMoveRule (line 163) | function detectMoveRule({ boardsim, basegame }: FullGame): GameConclusio... function wasLastMoveARoyalCapture (line 172) | function wasLastMoveARoyalCapture(boardsim: Board): boolean | undefined { function isCheckmateCompatibleWithGame (line 205) | function isCheckmateCompatibleWithGame({ boardsim, basegame }: FullGame)... FILE: src/shared/chess/util/bdcoords.ts function FromCoords (line 10) | function FromCoords(coords: Coords, precision?: number): BDCoords { function FromDoubleCoords (line 15) | function FromDoubleCoords(coords: DoubleCoords): BDCoords { function areCoordsIntegers (line 27) | function areCoordsIntegers(coords: BDCoords): boolean { function coordsToBigInt (line 38) | function coordsToBigInt(coords: BDCoords): Coords { function coordsToDoubles (line 47) | function coordsToDoubles(coords: BDCoords): DoubleCoords { FILE: src/shared/chess/util/boardutil.ts type Piece (line 20) | interface Piece { function getPieceCountOfGame (line 43) | function getPieceCountOfGame( function getRoyalCountOfGame (line 71) | function getRoyalCountOfGame(o: OrganizedPieces): number { function getPieceCountOfColor (line 87) | function getPieceCountOfColor(o: OrganizedPieces, color: Player): number { function getPieceCountOfType (line 106) | function getPieceCountOfType(o: OrganizedPieces, type: number): number { function getPieceCountOfTypeRange (line 113) | function getPieceCountOfTypeRange(range: TypeRange): number { function getPieceCount_IncludingUndefineds (line 120) | function getPieceCount_IncludingUndefineds(o: OrganizedPieces): number { function getCoordsOfAllPieces (line 131) | function getCoordsOfAllPieces(o: OrganizedPieces): Coords[] { function getRoyalCoordsOfColor (line 145) | function getRoyalCoordsOfColor(o: OrganizedPieces, color: Player): Coord... function getBoundingBoxOfAllPieces (line 166) | function getBoundingBoxOfAllPieces(o: OrganizedPieces): BoundingBox | un... function getJumpingRoyalCoordsOfColor (line 231) | function getJumpingRoyalCoordsOfColor(o: OrganizedPieces, color: Player)... function iteratePiecesInTypeRange (line 253) | function iteratePiecesInTypeRange( function iteratePiecesInTypeRange_IncludeUndefineds (line 274) | function iteratePiecesInTypeRange_IncludeUndefineds( function getCoordsOfTypeRange (line 288) | function getCoordsOfTypeRange(o: OrganizedPieces, coords: Coords[], rang... function getCoordsFromIdx (line 302) | function getCoordsFromIdx(o: OrganizedPieces, idx: number): Coords { function isIdxUndefinedPiece (line 306) | function isIdxUndefinedPiece(o: OrganizedPieces, idx: number): boolean { function getTypeFromCoords (line 310) | function getTypeFromCoords(o: OrganizedPieces, coords: Coords): number |... function getIdxFromCoords (line 317) | function getIdxFromCoords(o: OrganizedPieces, coords: Coords): number | ... function getPieceFromCoords (line 324) | function getPieceFromCoords(o: OrganizedPieces, coords: Coords): Piece |... function getPieceFromCoordsKey (line 336) | function getPieceFromCoordsKey(o: OrganizedPieces, coordsKey: CoordsKey)... function getRelativeIdx (line 348) | function getRelativeIdx(o: OrganizedPieces, idx: number): number { function getAbsoluteIdx (line 353) | function getAbsoluteIdx(o: OrganizedPieces, piece: Piece): number { function getPieceFromIdx (line 362) | function getPieceFromIdx(o: OrganizedPieces, idx: number): Piece | undef... function getDefinedPieceFromIdx (line 371) | function getDefinedPieceFromIdx(o: OrganizedPieces, idx: number): Piece { function getTypeRangeFromIdx (line 380) | function getTypeRangeFromIdx(o: OrganizedPieces, idx: number): TypeRange { function isPieceOnCoords (line 389) | function isPieceOnCoords(o: OrganizedPieces, coords: Coords): boolean { FILE: src/shared/chess/util/clockutil.ts function getTextContentFromTimeRemain (line 11) | function getTextContentFromTimeRemain(time: number): string { function isClockValueInfinite (line 28) | function isClockValueInfinite(clock: TimeControl): boolean { function getClockFromKey (line 37) | function getClockFromKey(key: TimeControl): string { function getMinutesAndIncrementFromClock (line 50) | function getMinutesAndIncrementFromClock( function splitTimeControl (line 64) | function splitTimeControl(time_control: TimeControl): { FILE: src/shared/chess/util/coordutil.ts type Coords (line 17) | type Coords = [bigint, bigint]; type BDCoords (line 24) | type BDCoords = [BigDecimal, BigDecimal]; type DoubleCoords (line 27) | type DoubleCoords = [number, number]; type CoordsKey (line 37) | type CoordsKey = `${bigint},${bigint}`; function getKeyFromCoords (line 42) | function getKeyFromCoords(coords: Coords): CoordsKey { function getCoordsFromKey (line 51) | function getCoordsFromKey(key: CoordsKey): Coords { function areCoordsEqual (line 56) | function areCoordsEqual(coord1: Coords, coord2: Coords): boolean { function areBDCoordsEqual (line 61) | function areBDCoordsEqual(coord1: BDCoords, coord2: BDCoords): boolean { function addCoords (line 68) | function addCoords(coord1: Coords, coord2: Coords): Coords { function addBDCoords (line 73) | function addBDCoords(coord1: BDCoords, coord2: BDCoords): BDCoords { function subtractCoords (line 83) | function subtractCoords(minuendCoord: Coords, subtrahendCoord: Coords): ... function subtractBDCoords (line 93) | function subtractBDCoords(minuendCoord: BDCoords, subtrahendCoord: BDCoo... function subtractDoubleCoords (line 106) | function subtractDoubleCoords( function copyCoords (line 116) | function copyCoords(coords: Coords): Coords { function copyBDCoords (line 123) | function copyBDCoords(coords: BDCoords): BDCoords { function lerpCoords (line 136) | function lerpCoords(start: BDCoords, end: BDCoords, t: number): BDCoords { function lerpCoordsDouble (line 149) | function lerpCoordsDouble(start: DoubleCoords, end: DoubleCoords, t: num... function stringifyCoords (line 161) | function stringifyCoords(coords: Coords): string { function stringifyBDCoords (line 166) | function stringifyBDCoords(coords: BDCoords): string { FILE: src/shared/chess/util/gamefileutility.ts function isGameOver (line 22) | function isGameOver(basegame: Game): boolean { function isCurrentViewedPositionInCheck (line 29) | function isCurrentViewedPositionInCheck(boardsim: Board): boolean { function getCheckCoordsOfCurrentViewedPosition (line 37) | function getCheckCoordsOfCurrentViewedPosition(boardsim: Board): Coords[] { function setConclusion (line 47) | function setConclusion(basegame: Game, conclusion: GameConclusion | unde... function isOpponentUsingWinCondition (line 69) | function isOpponentUsingWinCondition( function doGameOverChecks (line 85) | function doGameOverChecks(gamefile: FullGame): void { function getPlayerCount (line 93) | function getPlayerCount(basegame: Game): number { function getUniquePlayersInTurnOrder (line 98) | function getUniquePlayersInTurnOrder(turnOrder: Player[]): Player[] { FILE: src/shared/chess/util/gamerules.ts type GameRules (line 12) | interface GameRules { function doesColorHaveWinCondition (line 47) | function doesColorHaveWinCondition( function getWinConditionCountOfColor (line 57) | function getWinConditionCountOfColor(gameRules: GameRules, player: Playe... function swapCheckmateForRoyalCapture (line 65) | function swapCheckmateForRoyalCapture(gameRules: GameRules): void { FILE: src/shared/chess/util/metadatautil.ts type MetadataKey (line 18) | type MetadataKey = keyof MetaData; constant GUEST_NAME_ICN_METADATA (line 23) | const GUEST_NAME_ICN_METADATA = '(Guest)' as const; function getResultFromVictor (line 32) | function getResultFromVictor(victor?: Player | null): string { function getFormattedElo (line 41) | function getFormattedElo(rating: Rating): string { function getWhiteBlackRatingDiff (line 50) | function getWhiteBlackRatingDiff(eloChange: number): string { FILE: src/shared/chess/util/moveutil.ts function isIncrementingLegal (line 21) | function isIncrementingLegal(boardsim: Board): boolean { function isDecrementingLegal (line 29) | function isDecrementingLegal(boardsim: Board): boolean { function isIndexOutOfRange (line 37) | function isIndexOutOfRange(moves: MoveCoords[], index: number): boolean { function getLastMove (line 44) | function getLastMove(moves: MoveFull[]): MoveFull | undefined { function getCurrentMove (line 53) | function getCurrentMove(boardsim: Board): MoveFull | undefined { function getMoveFromIndex (line 62) | function getMoveFromIndex(moves: MoveFull[], index: number): MoveFull { function areWeViewingLatestMove (line 70) | function areWeViewingLatestMove(boardsim: Board): boolean { function getPlyCount (line 79) | function getPlyCount(moves: MoveFull[]): number { function flagLastMoveAsMate (line 86) | function flagLastMoveAsMate(boardsim: Board): void { function isGameResignable (line 96) | function isGameResignable(game: Game | Board): boolean { function getColorThatPlayedMoveIndex (line 103) | function getColorThatPlayedMoveIndex(basegame: Game, index: number): Pla... function getWhosTurnAtMoveIndex (line 113) | function getWhosTurnAtMoveIndex(basegame: Game, moveIndex: number): Play... function doesAnyPlayerGet2TurnsInARow (line 120) | function doesAnyPlayerGet2TurnsInARow(basegame: Game): boolean { function stripSpecialMoveTagsFromCoords (line 135) | function stripSpecialMoveTagsFromCoords(coords: CoordsTagged): Coords { FILE: src/shared/chess/util/typeutil.ts constant SVGLESS_TYPES (line 127) | const SVGLESS_TYPES: Set = new Set([rawTypes.VOID]); function GenPlayerGroupSchema (line 135) | function GenPlayerGroupSchema( type StrPlayer (line 146) | type StrPlayer = (typeof strcolors)[number]; type RawType (line 147) | type RawType = (typeof rawTypes)[keyof typeof rawTypes]; type Player (line 148) | type Player = (typeof players)[keyof typeof players]; type RawTypeGroup (line 151) | type RawTypeGroup = { type TypeGroup (line 156) | type TypeGroup = { [t: number]: T }; type PlayerGroup (line 159) | type PlayerGroup = { function getRawType (line 165) | function getRawType(type: number): RawType { function getColorFromType (line 169) | function getColorFromType(type: number): Player { function buildType (line 173) | function buildType(type: RawType, color: Player): number { function splitType (line 178) | function splitType(type: number): [RawType, Player] { function buildAllTypesForPlayers (line 183) | function buildAllTypesForPlayers(players: Player[], rawTypes: RawType[])... function forEachPieceType (line 193) | function forEachPieceType( function invertType (line 206) | function invertType(type: number): number { function invertPlayer (line 216) | function invertPlayer(player: Player): Player { function getRawTypeStr (line 224) | function getRawTypeStr(type: RawType): string { function getPlayerFromString (line 228) | function getPlayerFromString(string: StrPlayer): Player { function deleteUnusedFromRawTypeGroup (line 235) | function deleteUnusedFromRawTypeGroup( function debugType (line 249) | function debugType(type: number): string { FILE: src/shared/chess/util/winconutil.ts constant GAMERULE_WIN_CONDITIONS (line 22) | const GAMERULE_WIN_CONDITIONS = [ constant WIN_CONDITIONS (line 34) | const WIN_CONDITIONS = [...GAMERULE_WIN_CONDITIONS, 'time', 'resignation... constant MOVE_TRIGGERED_DRAW_CONDITIONS (line 37) | const MOVE_TRIGGERED_DRAW_CONDITIONS = [ constant DRAW_CONDITIONS (line 45) | const DRAW_CONDITIONS = [...MOVE_TRIGGERED_DRAW_CONDITIONS, 'agreement']... constant MOVE_TRIGGERED_CONCLUSIONS (line 52) | const MOVE_TRIGGERED_CONCLUSIONS = [ type WinCondition (line 60) | type WinCondition = (typeof WIN_CONDITIONS)[number]; type GameruleWinCondition (line 62) | type GameruleWinCondition = (typeof GAMERULE_WIN_CONDITIONS)[number]; type DrawCondition (line 64) | type DrawCondition = (typeof DRAW_CONDITIONS)[number]; type AbortCondition (line 66) | type AbortCondition = 'aborted'; type MoveTriggeredCondition (line 67) | type MoveTriggeredCondition = (typeof MOVE_TRIGGERED_CONCLUSIONS)[number]; type Condition (line 73) | type Condition = WinCondition | DrawCondition | AbortCondition; type GameConclusion (line 78) | type GameConclusion = z.infer; constant TERMINATION_IN_ENGLISH (line 100) | const TERMINATION_IN_ENGLISH = { function isConclusionMoveTriggered (line 128) | function isConclusionMoveTriggered(condition: Condition): boolean { function getTerminationInEnglish (line 137) | function getTerminationInEnglish(gameRules: GameRules, condition: Condit... FILE: src/shared/chess/variants/fourdimensionalgenerator.ts type Dimensions (line 21) | type Dimensions = { function set4DBoardDimensions (line 58) | function set4DBoardDimensions(boards_x: bigint, boards_y: bigint, board_... function get4DBoardDimensions (line 72) | function get4DBoardDimensions(): Dimensions { function setMovementType (line 76) | function setMovementType(strong_kings_and_queens: boolean, strong_pawns:... function getMovementType (line 85) | function getMovementType(): { STRONG_KINGS_AND_QUEENS: boolean; STRONG_P... function gen4DPosition (line 99) | function gen4DPosition( function gen4DMoveset (line 193) | function gen4DMoveset( function getPawnVicinity (line 307) | function getPawnVicinity(board_spacing: bigint, strong_pawns: boolean): ... function getKnightVicinity (line 352) | function getKnightVicinity(board_spacing: bigint): Coords[] { function getKingVicinity (line 382) | function getKingVicinity(board_spacing: bigint, strong_kings_and_queens:... FILE: src/shared/chess/variants/omega3generator.ts function genPositionOfOmegaCubed (line 17) | function genPositionOfOmegaCubed(): Map { function surroundPositionInVoidBox (line 177) | function surroundPositionInVoidBox(position: Map, box... FILE: src/shared/chess/variants/omega4generator.ts function genPositionOfOmegaFourth (line 14) | function genPositionOfOmegaFourth(): Map { FILE: src/shared/chess/variants/servervalidation.ts constant POSITION_STRING_THRESHOLD (line 23) | const POSITION_STRING_THRESHOLD = 2500; function doesVariantSupportServerValidation (line 34) | function doesVariantSupportServerValidation( function isGameInstantlyDeleted (line 55) | function isGameInstantlyDeleted( FILE: src/shared/chess/variants/validleaderboard.ts type Leaderboard (line 18) | type Leaderboard = (typeof Leaderboards)[keyof typeof Leaderboards]; FILE: src/shared/chess/variants/variant.ts function isVariantValid (line 47) | function isVariantValid(variantName: string | undefined): variantName is... function resolveVariantCode (line 58) | function resolveVariantCode(variantName: string | undefined): VariantCod... function resolveAndNormalizeVariantInMetadata (line 80) | function resolveAndNormalizeVariantInMetadata(metadata: { Variant?: stri... function getStartingPositionOfVariant (line 99) | function getStartingPositionOfVariant( function getGameRulesOfVariant (line 133) | function getGameRulesOfVariant(variantCode: VariantCode, timestamp: numb... function getVariantGameRuleModifications (line 142) | function getVariantGameRuleModifications( function getGameRules (line 158) | function getGameRules(modifications: GameRuleModifications = {}): GameRu... function getBareMinimumGameRules (line 191) | function getBareMinimumGameRules(): GameRules { function getApplicableTimestampEntry (line 200) | function getApplicableTimestampEntry( function getMovesetsOfVariant (line 230) | function getMovesetsOfVariant( function getMovesets (line 264) | function getMovesets( function getSpecialMovesOfVariant (line 283) | function getSpecialMovesOfVariant( function getSpecialVicinityOfVariant (line 300) | function getSpecialVicinityOfVariant( function getSquarePresets (line 317) | function getSquarePresets(variantCode: VariantCode | null): Coords[] { function getRayPresets (line 324) | function getRayPresets(variantCode: VariantCode | null): BaseRay[] { function getVariantWorldBorder (line 331) | function getVariantWorldBorder(variantCode: VariantCode | null): bigint ... function getVariantPositionString (line 342) | function getVariantPositionString(variantCode: VariantCode, timestamp: n... function getVariantName (line 352) | function getVariantName(variantCode: VariantCode): string { FILE: src/shared/chess/variants/variantdictionary.ts type GameRuleModifications (line 23) | interface GameRuleModifications { type TimeVariantProperty (line 33) | type TimeVariantProperty = type Variant (line 40) | type Variant = { type VariantCode (line 92) | type VariantCode = keyof typeof variantDictionary; function buildVariantDictionary (line 509) | function buildVariantDictionary(dict: { [key in K]: Va... function repeatPromotionsAllowedForEachColor (line 520) | function repeatPromotionsAllowedForEachColor( FILE: src/shared/components/header/pieceThemes.ts type PieceColorGroup (line 12) | type PieceColorGroup = { function getLocationsForTypes (line 82) | function getLocationsForTypes(types: Iterable): Set { function getLocationForType (line 91) | function getLocationForType(type: RawType): string | null { function getBaseColorForType (line 95) | function getBaseColorForType(type: RawType, team: Player): Color { FILE: src/shared/components/header/themes.ts type ThemeProperties (line 28) | interface ThemeProperties { function getPropertyOfTheme (line 295) | function getPropertyOfTheme(themeName: string, property: keyof ThemeProp... function isThemeValid (line 305) | function isThemeValid(themeName: string): boolean { FILE: src/shared/game_version.ts constant GAME_VERSION (line 7) | const GAME_VERSION = '1.10.1'; FILE: src/shared/types.ts type Rating (line 17) | type Rating = z.infer; type TimeControl (line 28) | type TimeControl = z.infer; type ServerUsernameContainer (line 37) | type ServerUsernameContainer = z.infer; type MovePacket (line 68) | type MovePacket = z.infer; type DrawOfferInfo (line 75) | type DrawOfferInfo = z.infer; type ParticipantState (line 95) | type ParticipantState = z.infer; type GameUpdateMessage (line 108) | type GameUpdateMessage = z.infer; type OpponentsMoveMessage (line 124) | type OpponentsMoveMessage = z.infer; type MetaData (line 136) | type MetaData = z.infer; type PlayerRatingChangeInfo (line 172) | type PlayerRatingChangeInfo = z.infer; FILE: src/shared/util/EventBus.ts class EventBus (line 7) | class EventBus> { method addEventListener (line 10) | addEventListener( method removeEventListener (line 20) | removeEventListener( method dispatch (line 28) | dispatch( FILE: src/shared/util/editorutil.ts constant MAX_POSITION_NAME_LENGTH (line 10) | const MAX_POSITION_NAME_LENGTH = 70; constant MAX_ICN_LENGTH (line 13) | const MAX_ICN_LENGTH = 1_000_000; FILE: src/shared/util/isprime.ts type MontgomeryReductionContext (line 41) | interface MontgomeryReductionContext { type BigIntResolvable (line 55) | type BigIntResolvable = number | string | bigint; type PrimalityTestOptions (line 58) | interface PrimalityTestOptions { constant ZERO (line 81) | const ZERO = 0n; constant ONE (line 82) | const ONE = 1n; constant TWO (line 83) | const TWO = 2n; constant FOUR (line 84) | const FOUR = 4n; constant LIMIT_DETERMINISM (line 85) | const LIMIT_DETERMINISM = 2n ** 64n; constant LOWER_LIMIT_MONTGOMMERY (line 86) | const LOWER_LIMIT_MONTGOMMERY = 10n ** 30n; constant MAX_SAFE_INTEGER_BIGINT (line 87) | const MAX_SAFE_INTEGER_BIGINT = BigInt(Number.MAX_SAFE_INTEGER); constant LIMIT_2 (line 93) | const LIMIT_2 = 2047; constant LIMIT_2_3 (line 94) | const LIMIT_2_3 = 1373653; constant LIMIT_2_3_5 (line 95) | const LIMIT_2_3_5 = 25326001; constant LIMIT_2_3_5_7 (line 96) | const LIMIT_2_3_5_7 = 3215031751; constant LIMIT_2_3_5_7_11 (line 97) | const LIMIT_2_3_5_7_11 = 2152302898747; constant LIMIT_2_3_5_7_11_13 (line 98) | const LIMIT_2_3_5_7_11_13 = 3474749660383; constant LIMIT_2_3_5_7_11_13_17 (line 99) | const LIMIT_2_3_5_7_11_13_17 = 341550071728321; constant SAFE_SQRT (line 100) | const SAFE_SQRT = Math.sqrt(Number.MAX_SAFE_INTEGER); constant INT_BASES (line 106) | const INT_BASES = [2, 3, 5, 7, 11, 13, 17, 19, 23] as const; constant BIGINT_BASES (line 107) | const BIGINT_BASES = [2n, 325n, 9375n, 28178n, 450775n, 9780504n, 179526... function invertPowerOfTwo (line 115) | function invertPowerOfTwo(exp: number, base: bigint): bigint { function twoMultiplicity (line 133) | function twoMultiplicity(n: bigint): bigint { function getRandomBitString (line 150) | function getRandomBitString(numBits: number): string { function getReductionContext (line 164) | function getReductionContext(base: bigint): MontgomeryReductionContext { function montgomeryReduce (line 186) | function montgomeryReduce(n: bigint, ctx: MontgomeryReductionContext): b... function montgomerySqr (line 207) | function montgomerySqr(n: bigint, ctx: MontgomeryReductionContext): bigi... function montgomeryMul (line 218) | function montgomeryMul(a: bigint, b: bigint, ctx: MontgomeryReductionCon... function montgomeryPow (line 241) | function montgomeryPow(n: bigint, exp: bigint, ctx: MontgomeryReductionC... function validateBases (line 276) | function validateBases( function modProductNumber (line 298) | function modProductNumber(p1: number, p2: number, modulus: number): numb... function modSquaredNumber (line 310) | function modSquaredNumber(base: number, modulus: number): number { function modPowNumber (line 322) | function modPowNumber(base: number, exponent: number, modulus: number): ... function modPowBigint (line 343) | function modPowBigint(base: bigint, exponent: bigint, modulus: bigint): ... function primalityTest (line 365) | function primalityTest(n: BigIntResolvable, options?: PrimalityTestOptio... function primalityTestNumber (line 378) | function primalityTestNumber(n: number): boolean { function primalityTestBigint (line 436) | function primalityTestBigint( function getAdaptiveNumRounds (line 566) | function getAdaptiveNumRounds(inputBits: number): number { FILE: src/shared/util/jsutil.ts function deepCopyObject (line 17) | function deepCopyObject(src: T): T { function copyFloat32Array (line 62) | function copyFloat32Array(src: Float32Array): Float32Array { function binarySearch (line 84) | function binarySearch(sortedArray: number[], value: number): { found: bo... function addElementToOrganizedArray (line 110) | function addElementToOrganizedArray(sortedArray: number[], value: number... function findIndexOfPointInOrganizedArray (line 127) | function findIndexOfPointInOrganizedArray(sortedArray: number[], point: ... function copyPropertiesToObject (line 138) | function copyPropertiesToObject(objSrc: Record, objDest: Re... function isEmpty (line 149) | function isEmpty(obj: object): boolean { function invertObj (line 161) | function invertObj(obj: Record): Record { function estimateMemorySizeOf (line 179) | function estimateMemorySizeOf(obj: any): string { function stringifyReplacer (line 292) | function stringifyReplacer(key: string, value: any): any { type FixedArrayConstructor (line 338) | type FixedArrayConstructor = (typeof FixedArrayInfo)[keyof typeof FixedA... function parseReviver (line 344) | function parseReviver(key: string, value: any): any { function ensureJSONString (line 365) | function ensureJSONString(input: any, errorMessage?: string): string { FILE: src/shared/util/math/bimath.ts constant ZERO (line 10) | const ZERO: bigint = 0n; constant ONE (line 11) | const ONE: bigint = 1n; function abs (line 20) | function abs(bigint: bigint): bigint { function countDigits (line 30) | function countDigits(bigint: bigint): number { function bitLength_bisection (line 53) | function bitLength_bisection(x: bigint): number { function estimateBigIntSize (line 98) | function estimateBigIntSize(bi: bigint): number { function posMod (line 130) | function posMod(a: bigint, b: bigint): bigint { function min (line 135) | function min(a: bigint, b: bigint): bigint { function max (line 140) | function max(a: bigint, b: bigint): bigint { function compare (line 150) | function compare(a: bigint, b: bigint): -1 | 0 | 1 { function clamp (line 155) | function clamp(value: bigint, min: bigint, max: bigint): bigint { function GCD (line 165) | function GCD(a: bigint, b: bigint): bigint { function formatBigIntExponential (line 224) | function formatBigIntExponential(bigint: bigint, precision: number): str... FILE: src/shared/util/math/bounds.ts type BoundingBox (line 16) | interface BoundingBox { type UnboundedRectangle (line 31) | interface UnboundedRectangle { type BoundingBoxBD (line 44) | interface BoundingBoxBD { type DoubleBoundingBox (line 56) | interface DoubleBoundingBox { constant TWO (line 69) | const TWO = bd.fromNumber(2.0); function getBoxFromCoordsList (line 76) | function getBoxFromCoordsList(coordsList: Coords[]): BoundingBox { function castDoubleBoundingBoxToBigDecimal (line 94) | function castDoubleBoundingBoxToBigDecimal(box: DoubleBoundingBox): Boun... function castBoundingBoxToBigDecimal (line 103) | function castBoundingBoxToBigDecimal(box: BoundingBox): BoundingBoxBD { function expandBoxToContainSquare (line 125) | function expandBoxToContainSquare(box: BoundingBox, coord: Coords): void { function expandBDBoxToContainSquare (line 132) | function expandBDBoxToContainSquare(box: BoundingBoxBD, coord: BDCoords)... function mergeBoundingBoxBDs (line 142) | function mergeBoundingBoxBDs(box1: BoundingBoxBD, box2: BoundingBoxBD): ... function mergeBoundingBoxDoubles (line 154) | function mergeBoundingBoxDoubles(box1: BoundingBox, box2: BoundingBox): ... function translateBoundingBox (line 167) | function translateBoundingBox(box: BoundingBox, translation: Coords): Bo... function clampDoubleBoundingBox (line 181) | function clampDoubleBoundingBox( function boxContainsBox (line 199) | function boxContainsBox( function boxContainsBoxBD (line 215) | function boxContainsBoxBD(outerBox: BoundingBoxBD, innerBox: BoundingBox... function areBoxesDisjoint (line 228) | function areBoxesDisjoint(box1: DoubleBoundingBox, box2: DoubleBoundingB... function boxContainsSquare (line 240) | function boxContainsSquare(box: BoundingBox | UnboundedRectangle, square... function boxContainsSquareBD (line 252) | function boxContainsSquareBD(box: BoundingBoxBD, square: BDCoords): bool... function boxContainsSquareDouble (line 264) | function boxContainsSquareDouble(box: DoubleBoundingBox, square: DoubleC... function calcCenterOfBoundingBox (line 276) | function calcCenterOfBoundingBox(box: BoundingBoxBD): BDCoords { function printBDBox (line 285) | function printBDBox(box: BoundingBoxBD): void { FILE: src/shared/util/math/geometry.ts type IntersectionPoint (line 21) | type IntersectionPoint = { type BaseRay (line 32) | type BaseRay = { start: Coords; vector: Vec2 }; constant ZERO (line 36) | const ZERO = bd.fromBigInt(0n); function calcIntersectionPointOfLines (line 49) | function calcIntersectionPointOfLines( function calcIntersectionPointOfLinesBD (line 77) | function calcIntersectionPointOfLinesBD( function intersectLineAndVerticalLine (line 102) | function intersectLineAndVerticalLine(A1: bigint, B1: bigint, C1: bigint... function intersectLineAndVerticalLineBD (line 114) | function intersectLineAndVerticalLineBD( function intersectLineAndHorizontalLine (line 132) | function intersectLineAndHorizontalLine(A1: bigint, B1: bigint, C1: bigi... function intersectLineAndHorizontalLineBD (line 144) | function intersectLineAndHorizontalLineBD( function solveForUnknownAxis (line 167) | function solveForUnknownAxis( function solveForUnknownAxisBD (line 187) | function solveForUnknownAxisBD( function intersectLineSegments (line 221) | function intersectLineSegments( function intersectLineAndSegment (line 257) | function intersectLineAndSegment( function intersectRayAndSegment (line 296) | function intersectRayAndSegment(ray: Ray, segP1: Coords, segP2: Coords):... function intersectRays (line 362) | function intersectRays(ray1: Ray, ray2: Ray): BDCoords | undefined { function isPointOnSegment (line 406) | function isPointOnSegment(point: BDCoords, segStart: BDCoords, segEnd: B... function closestPointOnLineSegment (line 430) | function closestPointOnLineSegment( function findCrossSectionalWidthPoints (line 472) | function findCrossSectionalWidthPoints(vector: Vec2, boundingBox: Boundi... function findLineBoxIntersections (line 519) | function findLineBoxIntersections( function findLineBoxIntersectionsBD (line 574) | function findLineBoxIntersectionsBD( function normalizeIntersection (line 601) | function normalizeIntersection(intersection: BDCoords, vector: Vec2): BD... function findLineBoxIntersectionsBDHelper (line 609) | function findLineBoxIntersectionsBDHelper( function roundPointToNearestGridpoint (line 713) | function roundPointToNearestGridpoint(point: BDCoords, gridSize: bigint)... FILE: src/shared/util/math/math.ts type Color (line 12) | type Color = [number, number, number, number]; function clamp (line 19) | function clamp(value: number, min: number, max: number): number { function posMod (line 29) | function posMod(a: number, b: number): number { function easeInOut (line 39) | function easeInOut(t: number): number { function easeIn (line 47) | function easeIn(t: number): number { function easeOut (line 55) | function easeOut(t: number): number { function getSineWaveVariation (line 62) | function getSineWaveVariation(time: number, min: number, max: number): n... FILE: src/shared/util/math/vectors.ts type Vec2 (line 18) | type Vec2 = [bigint, bigint]; type Vec2Key (line 25) | type Vec2Key = `${bigint},${bigint}`; type Vec3 (line 28) | type Vec3 = [number, number, number]; type Ray (line 34) | type Ray = { type LineCoefficients (line 47) | type LineCoefficients = [bigint, bigint, bigint]; type LineCoefficientsBD (line 52) | type LineCoefficientsBD = [BigDecimal, BigDecimal, BigDecimal]; constant VECTORS_ORTHOGONAL (line 58) | const VECTORS_ORTHOGONAL: Coords[] = [[1n,0n],[0n,1n]]; constant VECTORS_DIAGONAL (line 61) | const VECTORS_DIAGONAL: Coords[] = [[1n,1n],[1n,-1n]]; constant VECTORS_HIPPOGONAL (line 64) | const VECTORS_HIPPOGONAL: Coords[] = [[1n,2n],[1n,-2n],[2n,1n],[2n,-1n]]; function getKeyFromVec2 (line 71) | function getKeyFromVec2(vec2: Vec2): Vec2Key { function getVec2FromKey (line 78) | function getVec2FromKey(vec2Key: Vec2Key): Vec2 { function convertVectorToDoubles (line 85) | function convertVectorToDoubles(vec2: Vec2): DoubleCoords { function getLineGeneralFormFromCoordsAndVec (line 92) | function getLineGeneralFormFromCoordsAndVec(coords: Coords, vector: Vec2... function getLineGeneralFormFromCoordsAndVecBD (line 104) | function getLineGeneralFormFromCoordsAndVecBD(coords: BDCoords, vector: ... function getLineGeneralFormFrom2Coords (line 123) | function getLineGeneralFormFrom2Coords(coords1: Coords, coords2: Coords)... function convertCoeficcientsToBD (line 165) | function convertCoeficcientsToBD(line: LineCoefficients): LineCoefficien... function calculateVectorFromPoints (line 172) | function calculateVectorFromPoints(start: Coords, end: Coords): Vec2 { function calculateVectorFromBDPoints (line 179) | function calculateVectorFromBDPoints(start: BDCoords, end: BDCoords): BD... function getLineCFromCoordsAndVec (line 190) | function getLineCFromCoordsAndVec(coords: Coords, vector: Vec2): bigint { function areLinesInGeneralFormEqual (line 212) | function areLinesInGeneralFormEqual(line1: LineCoefficients, line2: Line... function getXYComponents_FromAngle (line 226) | function getXYComponents_FromAngle(theta: number): DoubleCoords { function dotProduct (line 234) | function dotProduct(v1: Vec2, v2: Vec2): bigint { function dotProductBD (line 242) | function dotProductBD(v1: BDCoords, v2: BDCoords): BigDecimal { function dotProductDoubles (line 250) | function dotProductDoubles(v1: DoubleCoords, v2: DoubleCoords): number { function negateVector (line 259) | function negateVector(vec2: Vec2): Vec2 { function negateBDVector (line 268) | function negateBDVector(vec2: BDCoords): BDCoords { function negateDoubleVector (line 277) | function negateDoubleVector(vec2: DoubleCoords): DoubleCoords { function absVector (line 286) | function absVector(vec2: Vec2): Vec2 { function normalizeVector (line 294) | function normalizeVector(vec2: Vec2): Vec2 { function normalizeVectorBD (line 310) | function normalizeVectorBD(vec2: BDCoords): DoubleCoords { function getPerpendicularVector (line 323) | function getPerpendicularVector(vec2: Vec2): Vec2 { function getPerpendicularLine (line 333) | function getPerpendicularLine(lineCoeffs: LineCoefficients, point: BDCoo... function degreesToRadians (line 359) | function degreesToRadians(angleDegrees: number): number { function euclideanDistance (line 368) | function euclideanDistance(point1: Coords, point2: Coords): BigDecimal { function euclideanDistanceBD (line 377) | function euclideanDistanceBD(point1: BDCoords, point2: BDCoords): BigDec... function euclideanDistanceDoubles (line 384) | function euclideanDistanceDoubles(point1: DoubleCoords, point2: DoubleCo... function manhattanDistance (line 393) | function manhattanDistance(point1: Coords, point2: Coords): bigint { function chebyshevDistance (line 407) | function chebyshevDistance(point1: Coords, point2: Coords): bigint { function chebyshevDistanceBD (line 414) | function chebyshevDistanceBD(point1: BDCoords, point2: BDCoords): BigDec... function chebyshevDistanceDoubles (line 424) | function chebyshevDistanceDoubles(point1: DoubleCoords, point2: DoubleCo... FILE: src/shared/util/timeutil.ts function minutesToMillis (line 12) | function minutesToMillis(minutes: number): number { function secondsToMillis (line 19) | function secondsToMillis(seconds: number): number { function convertTimestampToUTCDateUTCTime (line 29) | function convertTimestampToUTCDateUTCTime(timestamp: number): { UTCDate:... function convertUTCDateUTCTimeToTimeStamp (line 52) | function convertUTCDateUTCTimeToTimeStamp(UTCDate: string, UTCTime: stri... function getTotalMilliseconds (line 65) | function getTotalMilliseconds(options: { function getCurrentMonth (line 102) | function getCurrentMonth(): string { function getCurrentDay (line 112) | function getCurrentDay(): string { function isCurrentDateWithinRange (line 128) | function isCurrentDateWithinRange( function timestampToISO (line 148) | function timestampToISO(timestamp: number): string { function isoToTimestamp (line 155) | function isoToTimestamp(isoString: string): number { function sqliteToTimestamp (line 165) | function sqliteToTimestamp(sqliteString: string): number { function sqliteToISO (line 176) | function sqliteToISO(sqliteString: string): string { function isoToSQLite (line 185) | function isoToSQLite(isoString: string): string { function timestampToSqlite (line 198) | function timestampToSqlite(timestamp: number): string { FILE: src/shared/util/tokenConfig.ts constant ACCESS_TOKEN_EXPIRY_MILLIS (line 9) | const ACCESS_TOKEN_EXPIRY_MILLIS: number = 1000 * 60 * 15; FILE: src/shared/util/uuid.ts constant BASE_36_CHARSET (line 9) | const BASE_36_CHARSET: string = '0123456789abcdefghijklmnopqrstuvwxyz'; constant BASE_62_CHARSET (line 10) | const BASE_62_CHARSET: string = '0123456789abcdefghijklmnopqrstuvwxyzABC... function generateID_Base62 (line 15) | function generateID_Base62(length: number): string { function generateID_Base36 (line 22) | function generateID_Base36(length: number): string { function generateIDWithCharset (line 31) | function generateIDWithCharset(length: number, characters: string): stri... function genUniqueID (line 46) | function genUniqueID(length: number, object: Record): string { function generateNumbID (line 55) | function generateNumbID(length: number): number { function base10ToBase62 (line 65) | function base10ToBase62(num: number): string { function base62ToBase10 (line 91) | function base62ToBase10(base62Str: string): number { FILE: src/shared/util/validators.ts type PasswordValidationResult (line 13) | enum PasswordValidationResult { type EmailValidationResult (line 20) | enum EmailValidationResult { type UsernameValidationResult (line 26) | enum UsernameValidationResult { type PasswordValidationResultTranslations (line 34) | type PasswordValidationResultTranslations = type EmailValidationResultTranslations (line 38) | type EmailValidationResultTranslations = 'js-email_too_long' | 'js-email... type UsernameValidationResultTranslations (line 39) | type UsernameValidationResultTranslations = function getPasswordErrorTranslation (line 63) | function getPasswordErrorTranslation( function getEmailErrorTranslation (line 69) | function getEmailErrorTranslation( function getUsernameErrorTranslation (line 75) | function getUsernameErrorTranslation( function validatePassword (line 116) | function validatePassword(password: string): PasswordValidationResult { function validateEmail (line 129) | function validateEmail(email: string): EmailValidationResult { function validateEmailFormat (line 135) | function validateEmailFormat(email: string): boolean { function validateUsername (line 149) | function validateUsername(username: string): UsernameValidationResult { function onlyLettersAndNumbers (line 158) | function onlyLettersAndNumbers(string: string): boolean { FILE: src/shared/util/wsutil.ts function wasSocketClosureNotByTheirChoice (line 93) | function wasSocketClosureNotByTheirChoice(code: number, reason: string):... FILE: src/tests/integrationUtils.ts function createAndLoginUser (line 15) | async function createAndLoginUser(): Promise<{ FILE: src/tests/testRequest.ts function testRequest (line 11) | function testRequest(): { FILE: src/types/globals.d.ts type ClientTranslations (line 12) | type ClientTranslations = TranslationsObject['index']['javascript'] & type DocumentEventMap (line 44) | interface DocumentEventMap { type Request (line 58) | interface Request { FILE: src/types/translations.ts type TranslationKeys (line 14) | type TranslationKeys = type TranslationsObject (line 603) | interface TranslationsObject {