diff --git a/.github/workflows/pretty-check.yml b/.github/workflows/pretty-check.yml
index 8864497a2997..46fb3fd1d6c4 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 install -D -w prettier @prettier/plugin-oxc
+ run: pnpm install -D -w prettier
- name: Get changed files
diff --git a/.prettierrc b/.prettierrc
index 8ffdcc646e9c..267b0d4c3660 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -3,6 +3,5 @@
"useTabs": false,
"htmlWhitespaceSensitivity": "ignore",
"trailingComma": "all",
- "endOfLine": "lf",
- "plugins": ["@prettier/plugin-oxc"]
+ "endOfLine": "lf"
}
diff --git a/frontend/src/html/popups.html b/frontend/src/html/popups.html
index 2b51f5751973..bbe596c993b9 100644
--- a/frontend/src/html/popups.html
+++ b/frontend/src/html/popups.html
@@ -742,6 +742,10 @@
autocomplete="off"
title="include"
/>
+
exclude
diff --git a/frontend/src/styles/inputs.scss b/frontend/src/styles/inputs.scss
index ca0768d7920c..2e3533bde952 100644
--- a/frontend/src/styles/inputs.scss
+++ b/frontend/src/styles/inputs.scss
@@ -102,6 +102,10 @@ label.checkboxWithSub {
}
}
+#wordFilterModal #exactMatchOnly {
+ width: 1.25em;
+}
+
input[type="checkbox"] {
appearance: none;
height: 1.25em;
diff --git a/frontend/src/ts/modals/word-filter.ts b/frontend/src/ts/modals/word-filter.ts
index fa3de51867a8..ad0913a9dd64 100644
--- a/frontend/src/ts/modals/word-filter.ts
+++ b/frontend/src/ts/modals/word-filter.ts
@@ -16,8 +16,17 @@ import { LayoutObject } from "@monkeytype/schemas/layouts";
type FilterPreset = {
display: string;
getIncludeString: (layout: LayoutObject) => string[][];
- getExcludeString: (layout: LayoutObject) => string[][];
-};
+} & (
+ | {
+ exactMatch: true;
+ }
+ | {
+ exactMatch?: false;
+ getExcludeString?: (layout: LayoutObject) => string[][];
+ }
+);
+
+const exactMatchCheckbox = $("#wordFilterModal #exactMatchOnly");
const presets: Record
= {
homeKeys: {
@@ -27,13 +36,7 @@ const presets: Record = {
const homeKeysRight = layout.keys.row3.slice(6, 10);
return [...homeKeysLeft, ...homeKeysRight];
},
- getExcludeString: (layout) => {
- const topRow = layout.keys.row2;
- const bottomRow = layout.keys.row4;
- const homeRowRight = layout.keys.row3.slice(10);
- const homeRowMiddle = layout.keys.row3.slice(4, 6);
- return [...topRow, ...homeRowMiddle, ...homeRowRight, ...bottomRow];
- },
+ exactMatch: true,
},
leftHand: {
display: "left hand",
@@ -43,12 +46,7 @@ const presets: Record = {
const bottomRowInclude = layout.keys.row4.slice(0, 5);
return [...topRowInclude, ...homeRowInclude, ...bottomRowInclude];
},
- getExcludeString: (layout) => {
- const topRowExclude = layout.keys.row2.slice(5);
- const homeRowExclude = layout.keys.row3.slice(5);
- const bottomRowExclude = layout.keys.row4.slice(5);
- return [...topRowExclude, ...homeRowExclude, ...bottomRowExclude];
- },
+ exactMatch: true,
},
rightHand: {
display: "right hand",
@@ -58,45 +56,28 @@ const presets: Record = {
const bottomRowInclude = layout.keys.row4.slice(4);
return [...topRowInclude, ...homeRowInclude, ...bottomRowInclude];
},
- getExcludeString: (layout) => {
- const topRowExclude = layout.keys.row2.slice(0, 5);
- const homeRowExclude = layout.keys.row3.slice(0, 5);
- const bottomRowExclude = layout.keys.row4.slice(0, 4);
- return [...topRowExclude, ...homeRowExclude, ...bottomRowExclude];
- },
+ exactMatch: true,
},
homeRow: {
display: "home row",
getIncludeString: (layout) => {
return layout.keys.row3;
},
- getExcludeString: (layout) => {
- const topRowExclude = layout.keys.row2;
- const bottomRowExclude = layout.keys.row4;
- return [...topRowExclude, ...bottomRowExclude];
- },
+ exactMatch: true,
},
topRow: {
display: "top row",
getIncludeString: (layout) => {
return layout.keys.row2;
},
- getExcludeString: (layout) => {
- const homeRowExclude = layout.keys.row3;
- const bottomRowExclude = layout.keys.row4;
- return [...homeRowExclude, ...bottomRowExclude];
- },
+ exactMatch: true,
},
bottomRow: {
display: "bottom row",
getIncludeString: (layout) => {
return layout.keys.row4;
},
- getExcludeString: (layout) => {
- const topRowExclude = layout.keys.row2;
- const homeRowExclude = layout.keys.row3;
- return [...topRowExclude, ...homeRowExclude];
- },
+ exactMatch: true,
},
};
@@ -165,10 +146,18 @@ function hide(hideOptions?: HideOptions): void {
}
async function filter(language: Language): Promise {
+ const exactMatchOnly = exactMatchCheckbox.is(":checked");
let filterin = $("#wordFilterModal .wordIncludeInput").val() as string;
filterin = Misc.escapeRegExp(filterin?.trim());
filterin = filterin.replace(/\s+/gi, "|");
- const regincl = new RegExp(filterin, "i");
+ let regincl;
+
+ if (exactMatchOnly) {
+ regincl = new RegExp("^[" + filterin + "]+$", "i");
+ } else {
+ regincl = new RegExp(filterin, "i");
+ }
+
let filterout = $("#wordFilterModal .wordExcludeInput").val() as string;
filterout = Misc.escapeRegExp(filterout.trim());
filterout = filterout.replace(/\s+/gi, "|");
@@ -202,7 +191,7 @@ async function filter(language: Language): Promise {
}
for (const word of languageWordList.words) {
const test1 = regincl.test(word);
- const test2 = regexcl.test(word);
+ const test2 = exactMatchOnly ? false : regexcl.test(word);
if (
((test1 && !test2) || (test1 && filterout === "")) &&
word.length <= maxLength &&
@@ -236,6 +225,19 @@ async function apply(set: boolean): Promise {
});
}
+function setExactMatchInput(disable: boolean): void {
+ const wordExcludeInputEl = $("#wordFilterModal #wordExcludeInput");
+
+ if (disable) {
+ $("#wordFilterModal #wordExcludeInput").val("");
+ wordExcludeInputEl.attr("disabled", "disabled");
+ } else {
+ wordExcludeInputEl.removeAttr("disabled");
+ }
+
+ exactMatchCheckbox.prop("checked", disable);
+}
+
function disableButtons(): void {
for (const button of modal.getModal().querySelectorAll("button")) {
button.setAttribute("disabled", "true");
@@ -270,13 +272,26 @@ async function setup(): Promise {
.map((x) => x[0])
.join(" "),
);
- $("#wordExcludeInput").val(
- presetToApply
- .getExcludeString(layout)
- .map((x) => x[0])
- .join(" "),
- );
+
+ if (presetToApply.exactMatch === true) {
+ setExactMatchInput(true);
+ } else {
+ setExactMatchInput(false);
+ if (presetToApply.getExcludeString !== undefined) {
+ $("#wordExcludeInput").val(
+ presetToApply
+ .getExcludeString(layout)
+ .map((x) => x[0])
+ .join(" "),
+ );
+ }
+ }
});
+
+ exactMatchCheckbox.on("change", () => {
+ setExactMatchInput(exactMatchCheckbox.is(":checked"));
+ });
+
$("#wordFilterModal button.addButton").on("click", () => {
$("#wordFilterModal .loadingIndicator").removeClass("hidden");
disableButtons();
diff --git a/frontend/src/ts/test/test-ui.ts b/frontend/src/ts/test/test-ui.ts
index 769d8e523e3d..972ece968389 100644
--- a/frontend/src/ts/test/test-ui.ts
+++ b/frontend/src/ts/test/test-ui.ts
@@ -1286,7 +1286,8 @@ function buildWordLettersHTML(
async function loadWordsHistory(): Promise {
$("#resultWordsHistory .words").empty();
let wordsHTML = "";
- for (let i = 0; i < TestInput.input.getHistory().length + 2; i++) {
+ const inputHistoryLength = TestInput.input.getHistory().length;
+ for (let i = 0; i < inputHistoryLength + 2; i++) {
const input = TestInput.input.getHistory(i);
const corrected = TestInput.corrected.getHistory(i);
const word = TestWords.words.get(i);
@@ -1303,8 +1304,19 @@ async function loadWordsHistory(): Promise {
throw new Error("empty input word");
}
- const errorClass =
- Config.mode === "zen" ? "" : input !== word ? "error" : "";
+ const isIncorrectWord = input !== word;
+ const isLastWord = i === inputHistoryLength - 1;
+ const isTimedTest =
+ Config.mode === "time" ||
+ (Config.mode === "custom" && CustomText.getLimitMode() === "time") ||
+ (Config.mode === "custom" && CustomText.getLimitValue() === 0);
+ const isPartiallyCorrect = word.substring(0, input.length) === input;
+
+ const shouldShowError =
+ Config.mode !== "zen" &&
+ !(isLastWord && isTimedTest && isPartiallyCorrect);
+
+ const errorClass = isIncorrectWord && shouldShowError ? "error" : "";
if (corrected !== undefined && corrected !== "") {
const correctedChar = !containsKorean
diff --git a/package.json b/package.json
index 84be39ce3526..2b409c2d8dd5 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,6 @@
"@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 972ce9ab0e56..31219991556c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -17,9 +17,6 @@ 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))
@@ -1391,15 +1388,6 @@ 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==}
@@ -2415,9 +2403,6 @@ 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}
@@ -2587,98 +2572,6 @@ 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]
@@ -2741,10 +2634,6 @@ 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==}
@@ -3231,9 +3120,6 @@ 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==}
@@ -7606,10 +7492,6 @@ 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}
@@ -10947,22 +10829,6 @@ 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
@@ -12014,13 +11880,6 @@ 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':
@@ -12208,55 +12067,6 @@ 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
@@ -12302,10 +12112,6 @@ 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': {}
@@ -12764,11 +12570,6 @@ 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
@@ -18161,26 +17962,6 @@ 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