The most customizable typing website with a minimalistic design and a ton of features. Test yourself in various modes, track your progress and improve your speed.
193 matches across 10 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | frontend/storybook/.storybook/main.ts | 44 | function patchAnimatedModalToNotThrow(): Plugin { |
| LOW | frontend/storybook/.storybook/main.ts | 86 | export function updateAccountChartButtons() {} |
| LOW | frontend/storybook/.storybook/main.ts | 106 | function stubVirtualLanguageHashes(): Plugin { |
| LOW | frontend/static/quotes/code_python.json | 353 | "text": "def combinations_with_replacement(iterable, r):\n\t# combinations_with_replacement('ABC', 2) --> AA AB AC |
| LOW | frontend/static/quotes/code_python.json | 359 | "text": "def combinations_with_replacement(iterable, r):\n\tpool = tuple(iterable)\n\tn = len(pool)\n\tfor indices |
| LOW | frontend/static/challenges/sourcecode.txt | 3129 | async function updateLeaderboardAndNotifyChanges(leaderboardTime) { |
| LOW | frontend/static/challenges/sourcecode.txt | 20793 | export function isSingleListCommandLineActive() { |
| LOW | frontend/static/challenges/sourcecode.txt | 21041 | function generateSingleListOfCommands() { |
| LOW | frontend/static/challenges/sourcecode.txt | 24215 | export function setCurrentWordElementIndex(val) { |
| LOW | frontend/static/challenges/sourcecode.txt | 24894 | export function arrangeCharactersRightToLeft() { |
| LOW | frontend/static/challenges/sourcecode.txt | 24900 | export function arrangeCharactersLeftToRight() { |
| LOW | frontend/static/challenges/sourcecode.txt | 27244 | export function incrementIncompleteSeconds(val) { |
| LOW | frontend/static/challenges/sourcecode.txt | 27383 | export function setKeypressTimingsTooLong() { |
| LOW | frontend/src/ts/firebase.ts | 115 | export async function signInWithEmailAndPassword( |
| LOW | frontend/src/ts/firebase.ts | 178 | export async function createUserWithEmailAndPassword( |
| LOW | frontend/src/ts/test/timer-progress.ts | 118 | function setTimerHtmlToInputLength(el: HTMLElement, wrapInDiv: boolean): void { |
| LOW | frontend/src/ts/test/words-generator.ts | 313 | async function applyEnglishPunctuationToWord(word: string): Promise<string> { |
| LOW | frontend/src/ts/test/words-generator.ts | 372 | async function applyBritishEnglishToWord( |
| LOW | frontend/src/ts/test/custom-text.ts | 202 | export function getCustomTextLongProgress(name: string): number { |
| LOW | frontend/src/ts/test/custom-text.ts | 209 | export function setCustomTextLongProgress( |
| LOW | frontend/src/ts/test/result.ts | 1209 | function updateResultChartDataVisibility(): void { |
| LOW | frontend/src/ts/test/test-logic.ts | 109 | export async function syncNotSignedInLastResult(uid: string): Promise<void> { |
| LOW | frontend/src/ts/test/caps-warning.ts | 7 | function updateCapsWarningVisibility(): void { |
| LOW | frontend/src/ts/test/test-ui.ts | 101 | export function keepWordsInputInTheCenter(force = false): void { |
| LOW | frontend/src/ts/test/test-ui.ts | 1580 | export function highlightAllLettersAsCorrect(wordIndex: number): void { |
| LOW | frontend/src/ts/test/test-ui.ts | 1681 | function showHideTestRestartButton(showHide: boolean): void { |
| LOW | frontend/src/ts/test/test-ui.ts | 1689 | export function getActiveWordTopAndHeightWithDifferentData(data: string): { |
| LOW | frontend/src/ts/test/test-ui.ts | 1776 | export function afterTestCompositionUpdate(): void { |
| LOW | frontend/src/ts/test/english-punctuation.ts | 70 | function shouldWholeReplacementWordBeCapitalised( |
| LOW | frontend/src/ts/test/funbox/list.ts | 60 | export function getActiveFunboxesWithProperty( |
| LOW | frontend/src/ts/test/funbox/list.ts | 72 | export function findSingleActiveFunboxWithProperty( |
| LOW | frontend/src/ts/test/funbox/list.ts | 88 | export function isFunboxActiveWithProperty(property: FunboxProperty): boolean { |
| LOW | frontend/src/ts/test/funbox/list.ts | 128 | export function isFunboxActiveWithFunction( |
| LOW | frontend/src/ts/test/events/data.ts | 247 | export function logEventsDataToTheConsole(): void { |
| LOW | frontend/src/ts/test/events/data.ts | 267 | export function logEventsDataToTheConsoleTable(): void { |
| LOW | frontend/src/ts/test/events/stats.ts | 56 | export function getStartToFirstKeypressMs(): number { |
| LOW | frontend/src/ts/test/events/stats.ts | 92 | function getRawLastKeypressToEndMs(): number { |
| LOW | frontend/src/ts/config/validation.ts | 38 | export function isConfigValueValidBoolean(key: string, val: boolean): boolean { |
| LOW | frontend/src/ts/config/funbox-validation.ts | 4 | export function canSetConfigWithCurrentFunboxes( |
| LOW | frontend/src/ts/config/persistence.ts | 41 | export function saveFullConfigToLocalStorage(noDbCheck = false): void { |
| LOW | frontend/src/ts/input/state.ts | 23 | export function incrementIncorrectShiftsInARow(): void { |
| LOW | frontend/src/ts/input/state.ts | 27 | export function resetIncorrectShiftsInARow(): void { |
| LOW | frontend/src/ts/input/state.ts | 47 | export function getLastInsertCompositionTextData(): string { |
| LOW | frontend/src/ts/input/state.ts | 51 | export function setLastInsertCompositionTextData(value: string): void { |
| LOW | frontend/src/ts/input/input-element.ts | 15 | export function appendToInputElementValue(value: string): void { |
| LOW | frontend/src/ts/input/input-element.ts | 29 | export function moveInputElementCaretToTheEnd(): void { |
| LOW | frontend/src/ts/input/input-element.ts | 33 | export function replaceInputElementLastValueChar(char: string): void { |
| LOW | frontend/src/ts/input/hotkeys/utils.ts | 44 | function isInteractiveElementFocused(): boolean { |
| LOW | frontend/src/ts/input/hotkeys/utils.ts | 58 | function handleHotkeyOnInteractiveElement( |
| LOW | frontend/src/ts/input/handlers/insert-text.ts | 302 | function normalizeDataAndUpdateInputIfNeeded( |
| LOW | frontend/src/ts/input/helpers/validation.ts | 54 | export function shouldInsertSpaceCharacter(options: { |
| LOW | frontend/src/ts/input/helpers/fail-or-finish.ts | 11 | export function checkIfFailedDueToMinBurst(options: { |
| LOW | frontend/src/ts/input/helpers/fail-or-finish.ts | 43 | export function checkIfFailedDueToDifficulty(options: { |
| LOW | frontend/src/ts/modals/simple-modals.ts | 67 | function getPreferredAuthenticationMethod( |
| LOW | frontend/src/ts/modals/simple-modals.ts | 78 | function isUsingPasswordAuthentication(): boolean { |
| LOW | frontend/src/ts/modals/simple-modals.ts | 82 | function isUsingGithubAuthentication(): boolean { |
| LOW | frontend/src/ts/modals/simple-modals.ts | 86 | function isUsingGoogleAuthentication(): boolean { |
| LOW | frontend/src/ts/utils/strings.ts | 70 | export function capitalizeFirstLetterOfEachWord(str: string): string { |
| LOW | frontend/src/ts/utils/strings.ts | 316 | export function areCharactersVisuallyEqual( |
| LOW | frontend/src/ts/utils/strings.ts | 395 | export function replaceUnderscoresWithSpaces(text: string): string { |
| 60 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | frontend/storybook/stories/UserProfile.stories.tsx | 121 | // 3, |
| LOW | frontend/__tests__/test/events/helpers.spec.ts | 161 | // const events = [ |
| LOW | frontend/static/challenges/sourcecode.txt | 901 | approved: false, |
| LOW | frontend/static/challenges/sourcecode.txt | 2481 | // if (result.timestamp > Math.round(Date.now() / 1000) * 1000 + 10) { |
| LOW | frontend/static/challenges/sourcecode.txt | 3541 | // return false; |
| LOW | frontend/static/challenges/sourcecode.txt | 3561 | // // language: result.language, |
| LOW | frontend/static/challenges/sourcecode.txt | 3581 | // if (pbs[result.mode][result.mode2] === undefined) { |
| LOW | frontend/static/challenges/sourcecode.txt | 3601 | // //no pb |
| LOW | frontend/static/challenges/sourcecode.txt | 3621 | // } |
| LOW | frontend/static/challenges/sourcecode.txt | 3641 | // // User.findOne({ uid: userdata.uid }, (err, user) => { |
| LOW | frontend/static/challenges/sourcecode.txt | 9341 | // Get the action to complete. |
| LOW | frontend/static/challenges/sourcecode.txt | 11441 | |
| LOW | frontend/static/challenges/sourcecode.txt | 16841 | gap: 0.5rem; |
| LOW | frontend/static/challenges/sourcecode.txt | 17041 | // } |
| LOW | frontend/static/challenges/sourcecode.txt | 17881 | // margin-top: 6px; |
| LOW | frontend/static/challenges/sourcecode.txt | 17901 | // div#KeyU.keymap-key, |
| LOW | frontend/static/challenges/sourcecode.txt | 17921 | // div#KeyLeftBracket.keymap-key, |
| LOW | frontend/static/challenges/sourcecode.txt | 17941 | // div#KeyM.keymap-key { |
| LOW | frontend/static/challenges/sourcecode.txt | 18881 | ret = colors[color]; |
| LOW | frontend/static/challenges/sourcecode.txt | 18901 | // async function check() { |
| LOW | frontend/static/challenges/sourcecode.txt | 19941 | if ($target.attr("tab") == "preset") { |
| LOW | frontend/static/challenges/sourcecode.txt | 19981 | ".pageSettings .section.themes .tabContainer .customTheme input[type=color]" |
| LOW | frontend/static/challenges/sourcecode.txt | 20001 | // document.documentElement.style.setProperty($colorVar, $pickedColor); |
| LOW | frontend/static/challenges/sourcecode.txt | 21241 | // setTheme(Config.theme, true); |
| LOW | frontend/static/challenges/sourcecode.txt | 21261 | // } |
| LOW | frontend/static/challenges/sourcecode.txt | 26781 | // $("#top .config .wordCount").removeClass("hidden"); |
| LOW | frontend/static/challenges/sourcecode.txt | 26801 | // $("#top .config .wordCount").addClass("hidden"); |
| LOW | frontend/static/themes/shadow.css | 41 | #typingTest .word letter.correct, |
| LOW | frontend/static/themes/rainbow_trail.css | 41 | #saveScreenshotButton:hover > i, |
| LOW | frontend/src/styles/popups.scss | 161 | // height: 2.25rem; |
| LOW | frontend/src/styles/popups.scss | 181 | // } |
| LOW | frontend/src/styles/test.scss | 921 | transition: opacity 0.125s; |
| LOW | frontend/src/styles/test.scss | 1041 | align-items: center; |
| LOW | frontend/src/styles/test.scss | 1121 | // // grid-area: infoAndTags; |
| LOW | frontend/src/styles/keymap.scss | 101 | display: grid; |
| LOW | frontend/src/ts/sentry.ts | 21 | release: envConfig.clientVersion, |
| LOW | frontend/src/ts/sentry.ts | 81 | return event; |
| LOW | frontend/src/ts/test/test-logic.ts | 981 | |
| LOW | frontend/src/ts/test/test-logic.ts | 1001 | // val2 = { |
| LOW | frontend/src/ts/test/test-ui.ts | 701 | // // we need to update word letters for that word |
| LOW | frontend/src/ts/modals/last-signed-out-result.ts | 41 | //safe because we check if it exists before showing the modal |
| LOW | frontend/src/ts/controllers/eg-ad-controller.ts | 61 | // if ( |
| LOW | frontend/src/ts/controllers/pw-ad-controller.ts | 241 | await ramp.displayUnits(); |
| LOW | frontend/src/ts/controllers/pw-ad-controller.ts | 261 | // }); |
| LOW | backend/__tests__/api/controllers/result.spec.ts | 761 | }); |
| LOW | backend/src/api/controllers/result.ts | 341 | ); |
| LOW | packages/release/src/buildChangelog.js | 1 | import { exec } from "child_process"; |
| LOW | packages/release/src/buildChangelog.js | 181 | |
| LOW | packages/release/src/buildChangelog.js | 201 | // } |
| LOW | packages/release/src/buildChangelog.js | 221 | |
| LOW | packages/release/src/buildChangelog.js | 301 | // "d2739e4f193137db4d86450f0d50b3489d75c106 d2739e4f1 docs: add new feature (#1234)", |
| LOW | .github/workflows/claude.yml | 41 | # This is an optional setting that allows Claude to read CI results on PRs |
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | frontend/static/challenges/sourcecode.txt | 26099 | ChartController.result.options.annotation.annotations.push({ |
| CRITICAL | frontend/static/challenges/sourcecode.txt | 26145 | ChartController.result.options.annotation.annotations.push({ |
| CRITICAL | frontend/static/challenges/sourcecode.txt | 26422 | ChartController.result.options.annotation.annotations.push({ |
| CRITICAL | frontend/src/ts/components/ui/form/FieldIndicator.tsx | 32 | text={props.field.state.meta.errors.join(", ")} |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | frontend/src/ts/controllers/pw-ad-controller.ts | 10 | // Step 1: Create the Ramp Object, NOTE: selector id needed for tagged units only |
| LOW | frontend/src/ts/controllers/pw-ad-controller.ts | 142 | // Step 2: Creates the Ramp Scripts |
| LOW | packages/schemas/src/shared.ts | 61 | // // Step 1: Define the schema for specific string values "10" and "25" |
| LOW | packages/schemas/src/shared.ts | 64 | // // Step 2: Use this schema as the key schema for another object |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …tend/__tests__/elements/test-activity-calendar.spec.ts | 1219 | function getData(from: string, to: string): number[] { |
| LOW | frontend/src/ts/test/custom-text.ts | 130 | export function getData(): CustomTextSettings { |
| LOW | …src/ts/elements/account-settings/blocked-user-table.ts | 13 | async function getData(): Promise<boolean> { |
| LOW | …tend/src/ts/elements/account-settings/ape-key-table.ts | 177 | async function getData(): Promise<boolean> { |
| LOW | frontend/src/ts/legacy-states/composition.ts | 18 | export function getData(): string { |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | frontend/static/quotes/code_ruby.json | 17 | "text": "class MegaGreeter\n\tattr_accessor :names\n\n\t# Create the object\n\tdef initialize(names = \"World\")\n |
| MEDIUM | frontend/static/quotes/code_bash.json | 53 | "text": "#!/bin/bash\n\n# Create a new directory\nNEW_DIR=\"/path/to/new_directory\"\nmkdir -p \"$NEW_DIR\"\necho |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | frontend/static/quotes/code_bash.json | 23 | "text": "#!/bin/bash\n\n# Check if a file exists\nFILE=\"/path/to/file.txt\"\nif [ -f \"$FILE\" ]; then\n echo \" |
| LOW | packages/release/bin/deployBackend.sh | 17 | # Print the output |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | frontend/static/quotes/code_arduino.json | 311 | "text": "void setup() {\n\tSerial.begin(9600);\n\twhile (!Serial) {\n\t\t;\n\t}\n\tSerial.println(\"\n\nString ind |
| LOW | frontend/static/quotes/code_arduino.json | 311 | "text": "void setup() {\n\tSerial.begin(9600);\n\twhile (!Serial) {\n\t\t;\n\t}\n\tSerial.println(\"\n\nString ind |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | frontend/static/quotes/code_arduino.json | 449 | "text": "#include <LiquidCrystal.h>\nLiquidCrystal lcd(12, 11, 5, 4, 3, 2);\nconst int switchPin = 6;\nint switchS |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | frontend/static/languages/typing_of_the_dead.json | 4374 | "Don't forget to wear your wig", |