From d18408700baaf2f189fa7de72060091fff0bd1ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gian=20Pe=C3=B1a?= <36643266+gianpena@users.noreply.github.com> Date: Thu, 27 Nov 2025 05:50:16 -0500 Subject: [PATCH 1/6] impr(timer/progress style): add flashing timer style (@gianpena) (#7139) ### Description This copies the existing `text` timerstyle except on timed modes, where it will only show the remaining progress (seconds) on every 15th second (shows on 1:00, 45, 30, 15 and 0). The motivation for this addition was that I wanted a middle ground between the `text` timerstyle (in my opinion just a _little_ too distracting) and no live progress indicator at all (I lose track of how much time remains in the test), and I believe this achieves that middle ground. --------- Co-authored-by: Miodec --- frontend/src/html/pages/settings.html | 5 ++- frontend/src/styles/settings.scss | 6 +++ frontend/src/ts/test/timer-progress.ts | 56 ++++++++++++++++++++++++++ packages/schemas/src/configs.ts | 9 ++++- 4 files changed, 74 insertions(+), 2 deletions(-) diff --git a/frontend/src/html/pages/settings.html b/frontend/src/html/pages/settings.html index b8557e36f211..a2c2d6646093 100644 --- a/frontend/src/html/pages/settings.html +++ b/frontend/src/html/pages/settings.html @@ -856,13 +856,16 @@
- Change the style of the timer/word count during a test. + Change the style of the timer/word count during a test. "Flash" styles + will briefly show the timer in timed modes every 15 seconds.
+ +
diff --git a/frontend/src/styles/settings.scss b/frontend/src/styles/settings.scss index 4c7c2d3c0413..f37ed4b68c31 100644 --- a/frontend/src/styles/settings.scss +++ b/frontend/src/styles/settings.scss @@ -339,6 +339,12 @@ } } + &[data-config-name="timerStyle"] { + .buttons { + grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr)); + } + } + &.tags { .tagsListAndButton { grid-area: buttons; diff --git a/frontend/src/ts/test/timer-progress.ts b/frontend/src/ts/test/timer-progress.ts index 12f33754566f..cbf5b2103f35 100644 --- a/frontend/src/ts/test/timer-progress.ts +++ b/frontend/src/ts/test/timer-progress.ts @@ -36,6 +36,22 @@ export function show(): void { textEl.classList.remove("hidden"); }, }); + } else if (Config.timerStyle === "flash mini") { + animate(miniEl, { + opacity: [0, 1], + duration: applyReducedMotion(125), + onBegin: () => { + miniEl.classList.remove("hidden"); + }, + }); + } else if (Config.timerStyle === "flash text") { + animate(textEl, { + opacity: [0, 1], + duration: applyReducedMotion(125), + onBegin: () => { + textEl.classList.remove("hidden"); + }, + }); } else if (Config.mode === "zen" || Config.timerStyle === "mini") { animate(miniEl, { opacity: [0, 1], @@ -124,6 +140,30 @@ export function update(): void { if (textEl !== null) { textEl.innerHTML = "
" + displayTime + "
"; } + } else if (Config.timerStyle === "flash mini") { + let displayTime = DateTime.secondsToString(maxtime - time); + if (maxtime === 0) { + displayTime = DateTime.secondsToString(time); + } + if (miniEl !== null) { + if ((maxtime - time) % 15 !== 0) { + miniEl.style.opacity = "0"; + } else { + miniEl.style.opacity = "1"; + } + miniEl.innerHTML = "
" + displayTime + "
"; + } + } else if (Config.timerStyle === "flash text") { + let displayTime = DateTime.secondsToString(maxtime - time); + if (maxtime === 0) { + displayTime = DateTime.secondsToString(time); + } + if (textEl !== null) { + textEl.innerHTML = + "
" + + `${(maxtime - time) % 15 !== 0 ? "" : displayTime}` + + "
"; + } } else if (Config.timerStyle === "mini") { let displayTime = DateTime.secondsToString(maxtime - time); if (maxtime === 0) { @@ -163,6 +203,18 @@ export function update(): void { } else { textEl.innerHTML = `
${getCurrentCount()}/${outof}
`; } + } else if (Config.timerStyle === "flash mini") { + if (outof === 0) { + miniEl.innerHTML = `${TestInput.input.getHistory().length}`; + } else { + miniEl.innerHTML = `${getCurrentCount()}/${outof}`; + } + } else if (Config.timerStyle === "flash text") { + if (outof === 0) { + textEl.innerHTML = `
${TestInput.input.getHistory().length}
`; + } else { + textEl.innerHTML = `
${getCurrentCount()}/${outof}
`; + } } else if (Config.timerStyle === "mini") { if (outof === 0) { miniEl.innerHTML = `${TestInput.input.getHistory().length}`; @@ -173,6 +225,10 @@ export function update(): void { } else if (Config.mode === "zen") { if (Config.timerStyle === "text") { textEl.innerHTML = `
${TestInput.input.getHistory().length}
`; + } else if (Config.timerStyle === "flash mini") { + miniEl.innerHTML = `${TestInput.input.getHistory().length}`; + } else if (Config.timerStyle === "flash text") { + textEl.innerHTML = `
${TestInput.input.getHistory().length}
`; } else { miniEl.innerHTML = `${TestInput.input.getHistory().length}`; } diff --git a/packages/schemas/src/configs.ts b/packages/schemas/src/configs.ts index 9eaf3b8b5667..e5a2f698f6ce 100644 --- a/packages/schemas/src/configs.ts +++ b/packages/schemas/src/configs.ts @@ -54,7 +54,14 @@ export type ConfidenceMode = z.infer; export const IndicateTyposSchema = z.enum(["off", "below", "replace", "both"]); export type IndicateTypos = z.infer; -export const TimerStyleSchema = z.enum(["off", "bar", "text", "mini"]); +export const TimerStyleSchema = z.enum([ + "off", + "bar", + "text", + "mini", + "flash text", + "flash mini", +]); export type TimerStyle = z.infer; export const LiveSpeedAccBurstStyleSchema = z.enum(["off", "text", "mini"]); From 5f305735def6ec5fa318483751a496b9ed32a5cc Mon Sep 17 00:00:00 2001 From: Miodec Date: Thu, 27 Nov 2025 12:36:11 +0100 Subject: [PATCH 2/6] chore: upgrade to prettier 3.7 --- backend/__tests__/vitest.d.ts | 3 +-- frontend/src/html/header.html | 24 ++++++++++++------------ frontend/src/privacy-policy.html | 2 +- package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 5 files changed, 24 insertions(+), 25 deletions(-) diff --git a/backend/__tests__/vitest.d.ts b/backend/__tests__/vitest.d.ts index 79bfe40dc595..56ef7efd2e5c 100644 --- a/backend/__tests__/vitest.d.ts +++ b/backend/__tests__/vitest.d.ts @@ -21,8 +21,7 @@ interface ThrowMatcher { declare module "vitest" { interface Assertion extends RestRequestMatcher, ThrowMatcher {} interface AsymmetricMatchersContaining - extends RestRequestMatcher, - ThrowMatcher {} + extends RestRequestMatcher, ThrowMatcher {} } interface MatcherResult { diff --git a/frontend/src/html/header.html b/frontend/src/html/header.html index d492410054e9..cd3116baf2d8 100644 --- a/frontend/src/html/header.html +++ b/frontend/src/html/header.html @@ -50,7 +50,7 @@

id="startTestButton" class="textButton view-start" href="/" - onclick="this.blur();" + onclick="this.blur()" router-link title="start test" > @@ -70,7 +70,7 @@

@@ -81,7 +81,7 @@

@@ -103,7 +103,7 @@

@@ -112,7 +112,7 @@

- diff --git a/frontend/src/privacy-policy.html b/frontend/src/privacy-policy.html index 170d44206f9c..f99d6e951003 100644 --- a/frontend/src/privacy-policy.html +++ b/frontend/src/privacy-policy.html @@ -355,7 +355,7 @@

Advertisements

especially for delivering ads to iOS and MacOS browsers. Users can opt out of the Common ID tracking cookie by clicking here diff --git a/package.json b/package.json index e70577d512d0..2b409c2d8dd5 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "lint-staged": "13.2.3", "only-allow": "1.2.1", "oxlint": "1.29.0", - "prettier": "3.6.2", + "prettier": "3.7.1", "turbo": "2.5.6", "vitest": "4.0.8" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee79d73d589b..31219991556c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: specifier: 1.29.0 version: 1.29.0 prettier: - specifier: 3.6.2 - version: 3.6.2 + specifier: 3.7.1 + version: 3.7.1 turbo: specifier: 2.5.6 version: 2.5.6 @@ -4862,8 +4862,8 @@ packages: electron-to-chromium@1.5.144: resolution: {integrity: sha512-eJIaMRKeAzxfBSxtjYnoIAw/tdD6VIH6tHBZepZnAbE3Gyqqs5mGN87DvcldPUbVkIljTK8pY0CMcUljP64lfQ==} - electron-to-chromium@1.5.261: - resolution: {integrity: sha512-cmyHEWFqEt3ICUNF93ShneOF47DHoSDbLb7E/AonsWcbzg95N+kPXeLNfkdzgTT/vEUcoW76fxbLBkeYtfoM8A==} + electron-to-chromium@1.5.262: + resolution: {integrity: sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==} electron-to-chromium@1.5.5: resolution: {integrity: sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==} @@ -7810,8 +7810,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + prettier@3.7.1: + resolution: {integrity: sha512-RWKXE4qB3u5Z6yz7omJkjWwmTfLdcbv44jUVHC5NpfXwFGzvpQM798FGv/6WNK879tc+Cn0AAyherCl1KjbyZQ==} engines: {node: '>=14'} hasBin: true @@ -13566,7 +13566,7 @@ snapshots: dependencies: baseline-browser-mapping: 2.8.31 caniuse-lite: 1.0.30001757 - electron-to-chromium: 1.5.261 + electron-to-chromium: 1.5.262 node-releases: 2.0.27 update-browserslist-db: 1.1.4(browserslist@4.28.0) @@ -14544,7 +14544,7 @@ snapshots: electron-to-chromium@1.5.144: {} - electron-to-chromium@1.5.261: {} + electron-to-chromium@1.5.262: {} electron-to-chromium@1.5.5: {} @@ -18265,7 +18265,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.6.2: {} + prettier@3.7.1: {} pretty-bytes@5.6.0: {} From 066192c2884cb5e8f004fa1c204ecad4524c61e6 Mon Sep 17 00:00:00 2001 From: Miodec Date: Thu, 27 Nov 2025 12:47:22 +0100 Subject: [PATCH 3/6] chore: use oxc plugin for prettier --- .prettierrc | 9 +- package.json | 1 + pnpm-lock.yaml | 219 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 221 insertions(+), 8 deletions(-) diff --git a/.prettierrc b/.prettierrc index dcdadfa35cf4..8ffdcc646e9c 100644 --- a/.prettierrc +++ b/.prettierrc @@ -4,12 +4,5 @@ "htmlWhitespaceSensitivity": "ignore", "trailingComma": "all", "endOfLine": "lf", - "overrides": [ - { - "files": ["*.ts"], - "options": { - "parser": "typescript" - } - } - ] + "plugins": ["@prettier/plugin-oxc"] } diff --git a/package.json b/package.json index 2b409c2d8dd5..84be39ce3526 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "@commitlint/cli": "17.7.1", "@commitlint/config-conventional": "19.2.2", "@monkeytype/release": "workspace:*", + "@prettier/plugin-oxc": "0.1.1", "@vitest/coverage-v8": "4.0.8", "conventional-changelog": "6.0.0", "eslint": "8.57.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 31219991556c..972ce9ab0e56 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@monkeytype/release': specifier: workspace:* version: link:packages/release + '@prettier/plugin-oxc': + specifier: 0.1.1 + version: 0.1.1 '@vitest/coverage-v8': specifier: 4.0.8 version: 4.0.8(vitest@4.0.8(@types/node@20.5.1)(happy-dom@20.0.10)(sass@1.70.0)(terser@5.44.1)(tsx@4.16.2)(yaml@2.8.1)) @@ -1388,6 +1391,15 @@ packages: resolution: {integrity: sha512-D/9dozteKcutI5OdxJd8rU+fL6XgaaRg60sPPJWkT33OCiRfkCu5wO5B/yXTaaL2e6EB0lcCBGe5E0XscZCvvQ==} engines: {node: '>=18'} + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} + + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emotion/is-prop-valid@1.2.2': resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} @@ -2403,6 +2415,9 @@ packages: cpu: [x64] os: [win32] + '@napi-rs/wasm-runtime@1.0.7': + resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} + '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} @@ -2572,6 +2587,98 @@ packages: resolution: {integrity: sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==} engines: {node: '>=14'} + '@oxc-parser/binding-android-arm64@0.99.0': + resolution: {integrity: sha512-V4jhmKXgQQdRnm73F+r3ZY4pUEsijQeSraFeaCGng7abSNJGs76X6l82wHnmjLGFAeY00LWtjcELs7ZmbJ9+lA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxc-parser/binding-darwin-arm64@0.99.0': + resolution: {integrity: sha512-Rp41nf9zD5FyLZciS9l1GfK8PhYqrD5kEGxyTOA2esTLeAy37rZxetG2E3xteEolAkeb2WDkVrlxPtibeAncMg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxc-parser/binding-darwin-x64@0.99.0': + resolution: {integrity: sha512-WVonp40fPPxo5Gs0POTI57iEFv485TvNKOHMwZRhigwZRhZY2accEAkYIhei9eswF4HN5B44Wybkz7Gd1Qr/5Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxc-parser/binding-freebsd-x64@0.99.0': + resolution: {integrity: sha512-H30bjOOttPmG54gAqu6+HzbLEzuNOYO2jZYrIq4At+NtLJwvNhXz28Hf5iEAFZIH/4hMpLkM4VN7uc+5UlNW3Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxc-parser/binding-linux-arm-gnueabihf@0.99.0': + resolution: {integrity: sha512-0Z/Th0SYqzSRDPs6tk5lQdW0i73UCupnim3dgq2oW0//UdLonV/5wIZCArfKGC7w9y4h8TxgXpgtIyD1kKzzlQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm-musleabihf@0.99.0': + resolution: {integrity: sha512-xo0wqNd5bpbzQVNpAIFbHk1xa+SaS/FGBABCd942SRTnrpxl6GeDj/s1BFaGcTl8MlwlKVMwOcyKrw/2Kdfquw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm64-gnu@0.99.0': + resolution: {integrity: sha512-u26I6LKoLTPTd4Fcpr0aoAtjnGf5/ulMllo+QUiBhupgbVCAlaj4RyXH/mvcjcsl2bVBv9E/gYJZz2JjxQWXBA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxc-parser/binding-linux-arm64-musl@0.99.0': + resolution: {integrity: sha512-qhftDo2D37SqCEl3ZTa367NqWSZNb1Ddp34CTmShLKFrnKdNiUn55RdokLnHtf1AL5ssaQlYDwBECX7XiBWOhw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxc-parser/binding-linux-riscv64-gnu@0.99.0': + resolution: {integrity: sha512-zxn/xkf519f12FKkpL5XwJipsylfSSnm36h6c1zBDTz4fbIDMGyIhHfWfwM7uUmHo9Aqw1pLxFpY39Etv398+Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxc-parser/binding-linux-s390x-gnu@0.99.0': + resolution: {integrity: sha512-Y1eSDKDS5E4IVC7Oxw+NbYAKRmJPMJTIjW+9xOWwteDHkFqpocKe0USxog+Q1uhzalD9M0p9eXWEWdGQCMDBMQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxc-parser/binding-linux-x64-gnu@0.99.0': + resolution: {integrity: sha512-YVJMfk5cFWB8i2/nIrbk6n15bFkMHqWnMIWkVx7r2KwpTxHyFMfu2IpeVKo1ITDSmt5nBrGdLHD36QRlu2nDLg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-linux-x64-musl@0.99.0': + resolution: {integrity: sha512-2+SDPrie5f90A1b9EirtVggOgsqtsYU5raZwkDYKyS1uvJzjqHCDhG/f4TwQxHmIc5YkczdQfwvN91lwmjsKYQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-wasm32-wasi@0.99.0': + resolution: {integrity: sha512-DKA4j0QerUWSMADziLM5sAyM7V53Fj95CV9SjP77bPfEfT7MnvFKnneaRMqPK1cpzjAGiQF52OBUIKyk0dwOQA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-parser/binding-win32-arm64-msvc@0.99.0': + resolution: {integrity: sha512-EaB3AvsxqdNUhh9FOoAxRZ2L4PCRwDlDb//QXItwyOJrX7XS+uGK9B1KEUV4FZ/7rDhHsWieLt5e07wl2Ti5AQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxc-parser/binding-win32-x64-msvc@0.99.0': + resolution: {integrity: sha512-sJN1Q8h7ggFOyDn0zsHaXbP/MklAVUvhrbq0LA46Qum686P3SZQHjbATqJn9yaVEvaSKXCshgl0vQ1gWkGgpcQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxc-project/types@0.99.0': + resolution: {integrity: sha512-LLDEhXB7g1m5J+woRSgfKsFPS3LhR9xRhTeIoEBm5WrkwMxn6eZ0Ld0c0K5eHB57ChZX6I3uSmmLjZ8pcjlRcw==} + '@oxlint/darwin-arm64@1.29.0': resolution: {integrity: sha512-XYsieDAI0kXJyvayHnmOW1qVydqklRRVT4O5eZmO/rdNCku5CoXsZvBvkPc3U8/9V1mRuen1sxbM9T5JsZqhdA==} cpu: [arm64] @@ -2634,6 +2741,10 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@prettier/plugin-oxc@0.1.1': + resolution: {integrity: sha512-gXqHoTpdHOE0WcbE25gDrBVJ09uGb+u29q73HoyA/o05SxCBT0XtTxocOzVTMo+vCBsXt74yf3XNSzeczbfiVQ==} + engines: {node: '>=14'} + '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -3120,6 +3231,9 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/bcrypt@5.0.2': resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==} @@ -7492,6 +7606,10 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + oxc-parser@0.99.0: + resolution: {integrity: sha512-MpS1lbd2vR0NZn1v0drpgu7RUFu3x9Rd0kxExObZc2+F+DIrV0BOMval/RO3BYGwssIOerII6iS8EbbpCCZQpQ==} + engines: {node: ^20.19.0 || >=22.12.0} + oxlint@1.29.0: resolution: {integrity: sha512-YqUVUhTYDqazV2qu3QSQn/H4Z1OP+fTnedgZWDk1/lDZxGfR0b1MqRVaEm3rRjBMLHP0zXlriIWUx+DD6UMaPA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -10829,6 +10947,22 @@ snapshots: gonzales-pe: 4.3.0 node-source-walk: 7.0.0 + '@emnapi/core@1.7.1': + dependencies: + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.7.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true + '@emotion/is-prop-valid@1.2.2': dependencies: '@emotion/memoize': 0.8.1 @@ -11880,6 +12014,13 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true + '@napi-rs/wasm-runtime@1.0.7': + dependencies: + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.10.1 + optional: true + '@noble/hashes@1.8.0': {} '@nodelib/fs.scandir@2.1.5': @@ -12067,6 +12208,55 @@ snapshots: '@opentelemetry/semantic-conventions@1.34.0': {} + '@oxc-parser/binding-android-arm64@0.99.0': + optional: true + + '@oxc-parser/binding-darwin-arm64@0.99.0': + optional: true + + '@oxc-parser/binding-darwin-x64@0.99.0': + optional: true + + '@oxc-parser/binding-freebsd-x64@0.99.0': + optional: true + + '@oxc-parser/binding-linux-arm-gnueabihf@0.99.0': + optional: true + + '@oxc-parser/binding-linux-arm-musleabihf@0.99.0': + optional: true + + '@oxc-parser/binding-linux-arm64-gnu@0.99.0': + optional: true + + '@oxc-parser/binding-linux-arm64-musl@0.99.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-gnu@0.99.0': + optional: true + + '@oxc-parser/binding-linux-s390x-gnu@0.99.0': + optional: true + + '@oxc-parser/binding-linux-x64-gnu@0.99.0': + optional: true + + '@oxc-parser/binding-linux-x64-musl@0.99.0': + optional: true + + '@oxc-parser/binding-wasm32-wasi@0.99.0': + dependencies: + '@napi-rs/wasm-runtime': 1.0.7 + optional: true + + '@oxc-parser/binding-win32-arm64-msvc@0.99.0': + optional: true + + '@oxc-parser/binding-win32-x64-msvc@0.99.0': + optional: true + + '@oxc-project/types@0.99.0': {} + '@oxlint/darwin-arm64@1.29.0': optional: true @@ -12112,6 +12302,10 @@ snapshots: '@polka/url@1.0.0-next.29': {} + '@prettier/plugin-oxc@0.1.1': + dependencies: + oxc-parser: 0.99.0 + '@protobufjs/aspromise@1.1.2': {} '@protobufjs/base64@1.1.2': {} @@ -12570,6 +12764,11 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/bcrypt@5.0.2': dependencies: '@types/node': 24.9.1 @@ -17962,6 +18161,26 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + oxc-parser@0.99.0: + dependencies: + '@oxc-project/types': 0.99.0 + optionalDependencies: + '@oxc-parser/binding-android-arm64': 0.99.0 + '@oxc-parser/binding-darwin-arm64': 0.99.0 + '@oxc-parser/binding-darwin-x64': 0.99.0 + '@oxc-parser/binding-freebsd-x64': 0.99.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.99.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.99.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.99.0 + '@oxc-parser/binding-linux-arm64-musl': 0.99.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.99.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.99.0 + '@oxc-parser/binding-linux-x64-gnu': 0.99.0 + '@oxc-parser/binding-linux-x64-musl': 0.99.0 + '@oxc-parser/binding-wasm32-wasi': 0.99.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.99.0 + '@oxc-parser/binding-win32-x64-msvc': 0.99.0 + oxlint@1.29.0: optionalDependencies: '@oxlint/darwin-arm64': 1.29.0 From 4b34854d3c46af15b1fe92cfb1a4e6bc5a4af21c Mon Sep 17 00:00:00 2001 From: Miodec Date: Thu, 27 Nov 2025 15:31:08 +0100 Subject: [PATCH 4/6] fix(ci): pretty check using wrong version, missing plugin !nuf --- .github/workflows/pretty-check.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pretty-check.yml b/.github/workflows/pretty-check.yml index ccb397ca6f4e..09eb7e2c3ef0 100644 --- a/.github/workflows/pretty-check.yml +++ b/.github/workflows/pretty-check.yml @@ -36,7 +36,8 @@ jobs: version: ${{ env.PNPM_VERSION }} - name: Install prettier - run: pnpm add -g prettier@3.6.2 + run: pnpm add -g prettier@3.7.1 @prettier/plugin-oxc@0.1.1 + - name: Get changed files id: get-changed-files From 94b3bb135d80ff102e15383ff57a22ae29c6bd32 Mon Sep 17 00:00:00 2001 From: Miodec Date: Thu, 27 Nov 2025 15:44:49 +0100 Subject: [PATCH 5/6] fix(ci): use -D for prettier install !nuf --- .github/workflows/pretty-check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pretty-check.yml b/.github/workflows/pretty-check.yml index 09eb7e2c3ef0..252c5465377a 100644 --- a/.github/workflows/pretty-check.yml +++ b/.github/workflows/pretty-check.yml @@ -35,8 +35,8 @@ jobs: with: version: ${{ env.PNPM_VERSION }} - - name: Install prettier - run: pnpm add -g prettier@3.7.1 @prettier/plugin-oxc@0.1.1 + - name: Install Prettier deps only + run: pnpm add -D -w prettier @prettier/plugin-oxc - name: Get changed files From 2cef523c3747e388fc3d9b3a5bae89d25614d64e Mon Sep 17 00:00:00 2001 From: Miodec Date: Thu, 27 Nov 2025 15:49:05 +0100 Subject: [PATCH 6/6] fix(ci): use install instead of add !nuf --- .github/workflows/pretty-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pretty-check.yml b/.github/workflows/pretty-check.yml index 252c5465377a..8864497a2997 100644 --- a/.github/workflows/pretty-check.yml +++ b/.github/workflows/pretty-check.yml @@ -36,7 +36,7 @@ jobs: version: ${{ env.PNPM_VERSION }} - name: Install Prettier deps only - run: pnpm add -D -w prettier @prettier/plugin-oxc + run: pnpm install -D -w prettier @prettier/plugin-oxc - name: Get changed files