diff --git a/backend/.oxlintrc.json b/backend/.oxlintrc.json index 2a232f066f9c..5742a920dbf4 100644 --- a/backend/.oxlintrc.json +++ b/backend/.oxlintrc.json @@ -21,6 +21,13 @@ "explicit-function-return-type": "off", "ban-ts-comment": "off" } + }, + { + "files": ["__tests__/**/*.d.ts"], + "rules": { + "typescript/consistent-type-definitions": "off", + "typescript/no-empty-object-type": "off" + } } ] } diff --git a/backend/package.json b/backend/package.json index 7ebd4153daf3..146b4cf56861 100644 --- a/backend/package.json +++ b/backend/package.json @@ -94,7 +94,7 @@ "eslint-watch": "8.0.0", "ioredis-mock": "7.4.0", "openapi3-ts": "2.0.2", - "oxlint": "1.7.0", + "oxlint": "1.8.0", "readline-sync": "1.4.10", "supertest": "6.2.3", "tsx": "4.16.2", diff --git a/backend/src/api/controllers/result.ts b/backend/src/api/controllers/result.ts index 96c0854823ad..cf9107658584 100644 --- a/backend/src/api/controllers/result.ts +++ b/backend/src/api/controllers/result.ts @@ -552,11 +552,9 @@ export async function addResult( const streak = await UserDAL.updateStreak(uid, completedEvent.timestamp); const badgeWaitingInInbox = ( - user.inbox - ?.map((i) => - (i.rewards ?? []).map((r) => (r.type === "badge" ? r.item.id : null)) - ) - .flat() ?? [] + user.inbox?.flatMap((i) => + (i.rewards ?? []).map((r) => (r.type === "badge" ? r.item.id : null)) + ) ?? [] ).includes(14); const shouldGetBadge = diff --git a/docs/SELF_HOSTING.md b/docs/SELF_HOSTING.md index fff6d00b8b8d..2504734b55ac 100644 --- a/docs/SELF_HOSTING.md +++ b/docs/SELF_HOSTING.md @@ -25,12 +25,12 @@ ## Prerequisites -- you need `docker` and `docker-compose-plugin` installed. Follow the [docker documentation](https://docs.docker.com/compose/install/) on how to do this. +- you need to have `docker` and `docker-compose-plugin` installed. Follow the [docker documentation](https://docs.docker.com/compose/install/) on how to do this. ## Quickstart -- create a new directory, e.g. `monkeytype` and open it. -- download the [docker-compose.yml](https://github.com/monkeytypegame/monkeytype/tree/master/docker/docker-compose.yml) +- create a new directory (e.g. `monkeytype`) and navigate into it. +- download the [docker-compose.yml](https://github.com/monkeytypegame/monkeytype/tree/master/docker/docker-compose.yml) file. - create an `.env` file, you can copy the content from the [example.env](https://github.com/monkeytypegame/monkeytype/tree/master/docker/example.env). - download the [backend-configuration.json](https://github.com/monkeytypegame/monkeytype/tree/master/docker/backend-configuration.json) - run `docker compose up -d` @@ -39,7 +39,7 @@ ## Account System -User signup/login is disabled by default. To allow users to signup you'll need to setup a Firebase project. +By default, user sign-up and login are disabled. To enable this, you'll need to set up a Firebase project. Stop the running docker containers using `docker compose down` before making any changes. ### Setup Firebase @@ -53,11 +53,11 @@ Stop the running docker containers using `docker compose down` before making any - go to `Authentication > Sign-in method` - enable `Email/Password` and save - generate service account - - open the project settings by clicking the `⚙` icon on the sidebar and `Project settings` - - go to `Service accounts` - - click `Generate new private key`. This will download a `.json` file. - - store the `.json` file as `serviceAccountKey.json` - - update the `docker-compose.yml` file and uncomment the first volume from the `monkeytype-backend` container + - go to your project settings by clicking the `⚙` icon in the sidebar, then `Project settings` + - navigate to the `Service accounts` tab + - click `Generate new private key` to download the `.json` file. + - save it as `serviceAccountKey.json` + - update `docker-compose.yml` and uncomment the volume block in the `monkeytype-backend` container to mount the Firebase service account: ```yaml #uncomment to enable the account system, check the SELF_HOSTING.md file - type: bind @@ -69,12 +69,12 @@ Stop the running docker containers using `docker compose down` before making any - update the `.env` file - open the [firebase console](https://console.firebase.google.com/) and open your project - open the project settings by clicking the `⚙` icon on the sidebar and `Project settings` - - if there is no app in your project create a new web-app `` + - if your project has no apps yet, create a new Web app (`` icon) - nickname `monkeytype` - uncheck `set up firebase hosting` - click `Register app` - select your app and select `Config` for `SDK setup and configuration` - - it will display sth like this: + - it will display something like this: ``` const firebaseConfig = { apiKey: "AAAAAAAA", @@ -112,7 +112,7 @@ Stop the running docker containers using `docker compose down` before making any ### Setup Recaptcha - [create](https://www.google.com/recaptcha/admin/create) a new recaptcha token - - label: monkeytype + - label: `monkeytype` - type: v2 - domain: the domain of the frontend - update the `.env` file with the site key from the previous step @@ -137,7 +137,7 @@ To enable emails for password reset and email verification update the following EMAIL_HOST=mail.myserver # your mailserver domain EMAIL_USER=mailuser # username to authenticate with your mailserver EMAIL_PASS=mailpass # password for the user -EMAIL_PORT=465 # port, likely 465 or 578 +EMAIL_PORT=465 # port, likely 465 or 587 EMAIL_FROM="Support " ``` @@ -185,5 +185,4 @@ Contains your firebase config, only needed if you want to allow users to signup. Configuration of the backend. Check the [default configuration](https://github.com/monkeytypegame/monkeytype/blob/master/backend/src/constants/base-configuration.ts#L8) for possible values. > [!NOTE] -> The configuration is applied on container startup only. You have to restart the container for your changes to become active. - +> Configuration changes are applied only on container startup. You must restart the container for your updates to take effect. diff --git a/frontend/.oxlintrc.json b/frontend/.oxlintrc.json index 41aae1d3434d..e0bbbabf00c5 100644 --- a/frontend/.oxlintrc.json +++ b/frontend/.oxlintrc.json @@ -23,6 +23,13 @@ "eqeqeq": "off", "ban-ts-comment": "off" } + }, + { + "files": ["__tests__/**/*.d.ts"], + "rules": { + "typescript/consistent-type-definitions": "off", + "typescript/no-empty-object-type": "off" + } } ] } diff --git a/frontend/package.json b/frontend/package.json index 22d037d0b390..b8965ab54041 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -62,7 +62,7 @@ "madge": "8.0.0", "magic-string": "0.30.17", "normalize.css": "8.0.1", - "oxlint": "1.7.0", + "oxlint": "1.8.0", "postcss": "8.4.31", "sass": "1.70.0", "subset-font": "2.3.0", diff --git a/frontend/src/ts/commandline/commandline.ts b/frontend/src/ts/commandline/commandline.ts index 0274e1868107..d05b1e229192 100644 --- a/frontend/src/ts/commandline/commandline.ts +++ b/frontend/src/ts/commandline/commandline.ts @@ -43,11 +43,11 @@ let subgroupOverride: CommandsSubgroup | null = null; let isAnimating = false; let lastSingleListModeInputValue = ""; -type CommandWithActiveState = Omit & { isActive: boolean }; +type CommandWithIsActive = Command & { isActive: boolean }; let lastState: | { - list: CommandWithActiveState[]; + list: CommandWithIsActive[]; usingSingleList: boolean; } | undefined; @@ -427,8 +427,7 @@ async function showCommands(): Promise { } } } - const { active: _active, ...restOfCommand } = command; - return { ...restOfCommand, isActive } as CommandWithActiveState; + return { ...command, isActive } as CommandWithIsActive; }); if ( @@ -461,7 +460,7 @@ async function showCommands(): Promise { let display = command.display; if (usingSingleList) { display = (command.singleListDisplay ?? "") || command.display; - if (command.configValue !== undefined) { + if (command.configValue !== undefined || command.active !== undefined) { display = display.replace( ``, `` + @@ -472,9 +471,10 @@ async function showCommands(): Promise { let finalIconHtml = iconHtml; if ( - !usingSingleList && - command.subgroup === undefined && - command.configValue !== undefined + (!usingSingleList && + command.subgroup === undefined && + command.configValue !== undefined) || + (!usingSingleList && command.active !== undefined) ) { finalIconHtml = configIconHtml; } diff --git a/package.json b/package.json index ee221b55bf0a..b6d0cc4f2ff5 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "knip": "2.19.2", "lint-staged": "13.2.3", "only-allow": "1.2.1", - "oxlint": "1.7.0", + "oxlint": "1.8.0", "prettier": "2.8.8", "turbo": "2.3.3", "vitest": "2.1.9" diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 3db4c1dcce58..803b2e95d7cc 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -23,7 +23,7 @@ "chokidar": "3.6.0", "eslint": "8.57.1", "madge": "8.0.0", - "oxlint": "1.7.0", + "oxlint": "1.8.0", "tsup": "8.4.0", "typescript": "5.5.4", "vitest": "2.1.9" diff --git a/packages/funbox/package.json b/packages/funbox/package.json index 1b5b15ba9b46..627d6f019f8b 100644 --- a/packages/funbox/package.json +++ b/packages/funbox/package.json @@ -19,7 +19,7 @@ "chokidar": "3.6.0", "eslint": "8.57.1", "madge": "8.0.0", - "oxlint": "1.7.0", + "oxlint": "1.8.0", "tsup": "8.4.0", "typescript": "5.5.4", "vitest": "2.1.9" diff --git a/packages/release/package.json b/packages/release/package.json index 8abdfdce99d2..271d4f2e8b33 100644 --- a/packages/release/package.json +++ b/packages/release/package.json @@ -14,7 +14,7 @@ "@monkeytype/eslint-config": "workspace:*", "eslint": "8.57.1", "nodemon": "3.1.4", - "oxlint": "1.7.0" + "oxlint": "1.8.0" }, "bin": { "monkeytype-release": "./src/index.js" diff --git a/packages/release/src/buildChangelog.js b/packages/release/src/buildChangelog.js index 3d8e2cf1d8c5..f754babe1f9e 100644 --- a/packages/release/src/buildChangelog.js +++ b/packages/release/src/buildChangelog.js @@ -326,19 +326,17 @@ async function main() { let log = convertStringToLog(logString); - const contributorCount = log - .map((l) => { - const filtered = l.usernames.filter((u) => { - const lowerCased = u.toLowerCase(); - return ( - lowerCased !== "monkeytype-bot" && - lowerCased !== "dependabot" && - lowerCased !== "miodec" - ); - }); - return filtered; - }) - .flat().length; + const contributorCount = log.flatMap((l) => { + const filtered = l.usernames.filter((u) => { + const lowerCased = u.toLowerCase(); + return ( + lowerCased !== "monkeytype-bot" && + lowerCased !== "dependabot" && + lowerCased !== "miodec" + ); + }); + return filtered; + }).length; let quoteAddCommits = log.filter((item) => itemIsAddingQuotes(item)); log = log.filter((item) => !itemIsAddingQuotes(item)); @@ -350,24 +348,24 @@ async function main() { if (quoteAddCommits.length > 0) { log.push({ - hashes: quoteAddCommits.map((item) => item.hashes).flat(), + hashes: quoteAddCommits.flatMap((item) => item.hashes), type: "impr", scope: "quotes", message: "add quotes in various languages", - usernames: quoteAddCommits.map((item) => item.usernames).flat(), - prs: quoteAddCommits.map((item) => item.prs).flat(), + usernames: quoteAddCommits.flatMap((item) => item.usernames), + prs: quoteAddCommits.flatMap((item) => item.prs), body: "", }); } if (quoteReportCommits.length > 0) { log.push({ - hashes: quoteReportCommits.map((item) => item.hashes).flat(), + hashes: quoteReportCommits.flatMap((item) => item.hashes), type: "fix", scope: "quotes", message: "update or remove quotes reported by users", - usernames: quoteReportCommits.map((item) => item.usernames).flat(), - prs: quoteReportCommits.map((item) => item.prs).flat(), + usernames: quoteReportCommits.flatMap((item) => item.usernames), + prs: quoteReportCommits.flatMap((item) => item.prs), body: "", }); } diff --git a/packages/schemas/package.json b/packages/schemas/package.json index 5b4fec8f258b..a67da94d7d40 100644 --- a/packages/schemas/package.json +++ b/packages/schemas/package.json @@ -20,7 +20,7 @@ "chokidar": "3.6.0", "eslint": "8.57.1", "madge": "8.0.0", - "oxlint": "1.7.0", + "oxlint": "1.8.0", "tsup": "8.4.0", "typescript": "5.5.4" }, diff --git a/packages/tsup-config/package.json b/packages/tsup-config/package.json index 5e471135d88b..c8fa9c3e9ba0 100644 --- a/packages/tsup-config/package.json +++ b/packages/tsup-config/package.json @@ -15,7 +15,7 @@ "devDependencies": { "@monkeytype/typescript-config": "workspace:*", "eslint": "8.57.1", - "oxlint": "1.7.0", + "oxlint": "1.8.0", "typescript": "5.5.4" }, "exports": { diff --git a/packages/util/package.json b/packages/util/package.json index 8f0a2303883a..7279ec148a81 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -17,7 +17,7 @@ "chokidar": "3.6.0", "eslint": "8.57.1", "madge": "8.0.0", - "oxlint": "1.7.0", + "oxlint": "1.8.0", "tsup": "8.4.0", "typescript": "5.5.4", "vitest": "2.1.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fbbece044694..f30a491b2eb0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,8 +39,8 @@ importers: specifier: 1.2.1 version: 1.2.1 oxlint: - specifier: 1.7.0 - version: 1.7.0 + specifier: 1.8.0 + version: 1.8.0 prettier: specifier: 2.8.8 version: 2.8.8 @@ -259,8 +259,8 @@ importers: specifier: 2.0.2 version: 2.0.2 oxlint: - specifier: 1.7.0 - version: 1.7.0 + specifier: 1.8.0 + version: 1.8.0 readline-sync: specifier: 1.4.10 version: 1.4.10 @@ -464,8 +464,8 @@ importers: specifier: 8.0.1 version: 8.0.1 oxlint: - specifier: 1.7.0 - version: 1.7.0 + specifier: 1.8.0 + version: 1.8.0 postcss: specifier: 8.4.31 version: 8.4.31 @@ -543,8 +543,8 @@ importers: specifier: 8.0.0 version: 8.0.0(typescript@5.5.4) oxlint: - specifier: 1.7.0 - version: 1.7.0 + specifier: 1.8.0 + version: 1.8.0 tsup: specifier: 8.4.0 version: 8.4.0(postcss@8.5.3)(tsx@4.16.2)(typescript@5.5.4)(yaml@2.5.0) @@ -610,8 +610,8 @@ importers: specifier: 8.0.0 version: 8.0.0(typescript@5.5.4) oxlint: - specifier: 1.7.0 - version: 1.7.0 + specifier: 1.8.0 + version: 1.8.0 tsup: specifier: 8.4.0 version: 8.4.0(postcss@8.5.3)(tsx@4.16.2)(typescript@5.5.4)(yaml@2.5.0) @@ -646,8 +646,8 @@ importers: specifier: 3.1.4 version: 3.1.4 oxlint: - specifier: 1.7.0 - version: 1.7.0 + specifier: 1.8.0 + version: 1.8.0 packages/schemas: dependencies: @@ -674,8 +674,8 @@ importers: specifier: 8.0.0 version: 8.0.0(typescript@5.5.4) oxlint: - specifier: 1.7.0 - version: 1.7.0 + specifier: 1.8.0 + version: 1.8.0 tsup: specifier: 8.4.0 version: 8.4.0(postcss@8.5.3)(tsx@4.16.2)(typescript@5.5.4)(yaml@2.5.0) @@ -696,8 +696,8 @@ importers: specifier: 8.57.1 version: 8.57.1 oxlint: - specifier: 1.7.0 - version: 1.7.0 + specifier: 1.8.0 + version: 1.8.0 typescript: specifier: 5.5.4 version: 5.5.4 @@ -725,8 +725,8 @@ importers: specifier: 8.0.0 version: 8.0.0(typescript@5.5.4) oxlint: - specifier: 1.7.0 - version: 1.7.0 + specifier: 1.8.0 + version: 1.8.0 tsup: specifier: 8.4.0 version: 8.4.0(postcss@8.5.3)(tsx@4.16.2)(typescript@5.5.4)(yaml@2.5.0) @@ -910,8 +910,8 @@ packages: resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.6': - resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + '@babel/helpers@7.28.2': + resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} engines: {node: '>=6.9.0'} '@babel/highlight@7.24.7': @@ -1303,8 +1303,8 @@ packages: resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.27.6': - resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} + '@babel/runtime@7.28.2': + resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} engines: {node: '>=6.9.0'} '@babel/template@7.25.0': @@ -1331,6 +1331,10 @@ packages: resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -2341,8 +2345,8 @@ packages: cpu: [arm64] os: [darwin] - '@oxlint/darwin-arm64@1.7.0': - resolution: {integrity: sha512-51vhCSQO4NSkedwEwOyqThiYqV0DAUkwNdqMQK0d29j5zmtNJJJRRBLeQuLGdstNmn3F7WMQ75Ci0/3Nq4ff8A==} + '@oxlint/darwin-arm64@1.8.0': + resolution: {integrity: sha512-1juYJF1xqRNkswzDSN1V44NoZ+O2Mkc9LjbkDB/UErb8dxTqFhCZC3CQR6Em55/tys1FtajXgK3B+ykWnY9HNQ==} cpu: [arm64] os: [darwin] @@ -2351,8 +2355,8 @@ packages: cpu: [x64] os: [darwin] - '@oxlint/darwin-x64@1.7.0': - resolution: {integrity: sha512-c0GN52yehYZ4TYuh4lBH9wYbBOI/RDOxZhJdBsttG0GwfvKYg/tiPNrNEsPzu0/rd1j6x3yT0zt6vezDMeC1sQ==} + '@oxlint/darwin-x64@1.8.0': + resolution: {integrity: sha512-5b7J/XE2eGhx3+vw6IFuuL0BbIF3wRzo4SWHVXN9rO3WYq2YpoHToY4C5WMWb8toVZcoJlx4Y1lq3IO2V78zTg==} cpu: [x64] os: [darwin] @@ -2361,8 +2365,8 @@ packages: cpu: [arm64] os: [linux] - '@oxlint/linux-arm64-gnu@1.7.0': - resolution: {integrity: sha512-pam/lbzbzVMDzc3f1hoRPtnUMEIqkn0dynlB5nUll/MVBSIvIPLS9kJLrRA48lrlqbkS9LGiF37JvpwXA58A9A==} + '@oxlint/linux-arm64-gnu@1.8.0': + resolution: {integrity: sha512-pzfk9IZBbYuIYn4sbT//Vox8B8e8hOZPkIQnNAdzhpGtRjV4NYOgNL5/h2QZC+ecmxl8H+Gi9WV6dyKjFrBtcw==} cpu: [arm64] os: [linux] @@ -2371,8 +2375,8 @@ packages: cpu: [arm64] os: [linux] - '@oxlint/linux-arm64-musl@1.7.0': - resolution: {integrity: sha512-LTyPy9FYS3SZ2XxJx+ITvlAq/ek5PtZK9Z2m3W72TA8hchGhJy5eQ+aotYjd/YVXOpGRpB12RdOpOTsZRu50bA==} + '@oxlint/linux-arm64-musl@1.8.0': + resolution: {integrity: sha512-6rpaeAG271wbUNM+WeJhdvJDDMwfoenm7rPY304dxnC+fcuR8Q0LSv09dGeNWrsqjjZuDP9R10qR154nysBxFg==} cpu: [arm64] os: [linux] @@ -2381,8 +2385,8 @@ packages: cpu: [x64] os: [linux] - '@oxlint/linux-x64-gnu@1.7.0': - resolution: {integrity: sha512-YtZ4DiAgjaEiqUiwnvtJ/znZMAAVPKR7pnsi6lqbA3BfXJ/IwMaNpdoGlCGVdDGeN4BuGCwnFtBVqKVvVg3DDg==} + '@oxlint/linux-x64-gnu@1.8.0': + resolution: {integrity: sha512-qPEF8tKMu+63b58gPfwU3KyJf2z9KyorbrC0yGXFHQLzRPEtrh6bAjf+AzCs3n8WhDR1K6jPgcPT4Sp8bahCyQ==} cpu: [x64] os: [linux] @@ -2391,8 +2395,8 @@ packages: cpu: [x64] os: [linux] - '@oxlint/linux-x64-musl@1.7.0': - resolution: {integrity: sha512-5aIpemNUBvwMMk4MCx1V3M6R9eMB1/SS6/24Orax9FqaI1lDX08tySdv696sr4Lms9ocA+rotxIPW9NP9439vA==} + '@oxlint/linux-x64-musl@1.8.0': + resolution: {integrity: sha512-JyErk/LsLg/tA3XkHhU8VIxahOdq56L99mbpMFGLTkOQgtnhY2MDAYULVgOuFFX3v6Q02o4mpIR/SwW/tRnZlg==} cpu: [x64] os: [linux] @@ -2401,8 +2405,8 @@ packages: cpu: [arm64] os: [win32] - '@oxlint/win32-arm64@1.7.0': - resolution: {integrity: sha512-fpFpkHwbAu0NcR5bc1WapCPcM9qSYi5lCRVOp1WwDoFLKI2b9/UWB8OEg8UHWV5dnBu7HZAWH/SEslYGkZNsbQ==} + '@oxlint/win32-arm64@1.8.0': + resolution: {integrity: sha512-QvhtDAU9bBdC2m5xO+ibKyMG4KZR44wB0vDbQ5YkQxJiuXrlleHLyz0+saFzVYQ/Fvc0QgIRTIwiVz9dzxidVw==} cpu: [arm64] os: [win32] @@ -2411,8 +2415,8 @@ packages: cpu: [x64] os: [win32] - '@oxlint/win32-x64@1.7.0': - resolution: {integrity: sha512-0EPWBWOiD3wZHgeWDlTUaiFzhzIonXykxYUC+NRerPQFkO/G+bd9uLMJddHDKqfP/7g8s3E5V6KvBvvFpb7U6g==} + '@oxlint/win32-x64@1.8.0': + resolution: {integrity: sha512-veXJXgF905UOvuxtmvzM328b4Itm8Fyu+lUq4PagXOmyRScevaVUXq6++ui3A/Gxd8yo0SHspHCbYkpuvJkXqQ==} cpu: [x64] os: [win32] @@ -4765,8 +4769,8 @@ packages: electron-to-chromium@1.5.144: resolution: {integrity: sha512-eJIaMRKeAzxfBSxtjYnoIAw/tdD6VIH6tHBZepZnAbE3Gyqqs5mGN87DvcldPUbVkIljTK8pY0CMcUljP64lfQ==} - electron-to-chromium@1.5.187: - resolution: {integrity: sha512-cl5Jc9I0KGUoOoSbxvTywTa40uspGJt/BDBoDLoxJRSBpWh4FFXBsjNRHfQrONsV/OoEjDfHUmZQa2d6Ze4YgA==} + electron-to-chromium@1.5.190: + resolution: {integrity: sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw==} electron-to-chromium@1.5.5: resolution: {integrity: sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==} @@ -7771,8 +7775,8 @@ packages: engines: {node: '>=8.*'} hasBin: true - oxlint@1.7.0: - resolution: {integrity: sha512-krJN1fIRhs3xK1FyVyPtYIV9tkT4WDoIwI7eiMEKBuCjxqjQt5ZemQm1htPvHqNDOaWFRFt4btcwFdU8bbwgvA==} + oxlint@1.8.0: + resolution: {integrity: sha512-kDC3zuplBM35GbrZ/3rRdDrZ6unpUkUjM8P3VSbyLgaYh2xZeg0TLLDbYALNAUyChVonNafXzgHZmbwnHfrTRg==} engines: {node: '>=8.*'} hasBin: true @@ -10570,11 +10574,11 @@ snapshots: '@babel/generator': 7.28.0 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helpers': 7.27.6 + '@babel/helpers': 7.28.2 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -10593,14 +10597,14 @@ snapshots: '@babel/generator@7.28.0': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/helper-compilation-targets@7.25.2': dependencies: @@ -10654,7 +10658,7 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -10668,7 +10672,7 @@ snapshots: '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -10693,7 +10697,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/helper-plugin-utils@7.27.1': {} @@ -10725,7 +10729,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -10745,7 +10749,7 @@ snapshots: dependencies: '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -10754,10 +10758,10 @@ snapshots: '@babel/template': 7.25.0 '@babel/types': 7.26.8 - '@babel/helpers@7.27.6': + '@babel/helpers@7.28.2': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/highlight@7.24.7': dependencies: @@ -11242,14 +11246,14 @@ snapshots: dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 esutils: 2.0.3 '@babel/runtime@7.25.0': dependencies: regenerator-runtime: 0.14.1 - '@babel/runtime@7.27.6': {} + '@babel/runtime@7.28.2': {} '@babel/template@7.25.0': dependencies: @@ -11261,7 +11265,7 @@ snapshots: dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/traverse@7.25.2': dependencies: @@ -11282,7 +11286,7 @@ snapshots: '@babel/helper-globals': 7.28.0 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -11297,6 +11301,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.2': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@bcoe/v8-coverage@0.2.3': {} '@colors/colors@1.5.0': @@ -12486,49 +12495,49 @@ snapshots: '@oxlint/darwin-arm64@0.16.12': optional: true - '@oxlint/darwin-arm64@1.7.0': + '@oxlint/darwin-arm64@1.8.0': optional: true '@oxlint/darwin-x64@0.16.12': optional: true - '@oxlint/darwin-x64@1.7.0': + '@oxlint/darwin-x64@1.8.0': optional: true '@oxlint/linux-arm64-gnu@0.16.12': optional: true - '@oxlint/linux-arm64-gnu@1.7.0': + '@oxlint/linux-arm64-gnu@1.8.0': optional: true '@oxlint/linux-arm64-musl@0.16.12': optional: true - '@oxlint/linux-arm64-musl@1.7.0': + '@oxlint/linux-arm64-musl@1.8.0': optional: true '@oxlint/linux-x64-gnu@0.16.12': optional: true - '@oxlint/linux-x64-gnu@1.7.0': + '@oxlint/linux-x64-gnu@1.8.0': optional: true '@oxlint/linux-x64-musl@0.16.12': optional: true - '@oxlint/linux-x64-musl@1.7.0': + '@oxlint/linux-x64-musl@1.8.0': optional: true '@oxlint/win32-arm64@0.16.12': optional: true - '@oxlint/win32-arm64@1.7.0': + '@oxlint/win32-arm64@1.8.0': optional: true '@oxlint/win32-x64@0.16.12': optional: true - '@oxlint/win32-x64@1.7.0': + '@oxlint/win32-x64@1.8.0': optional: true '@pkgjs/parseargs@0.11.0': @@ -14001,7 +14010,7 @@ snapshots: browserslist@4.25.1: dependencies: caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.187 + electron-to-chromium: 1.5.190 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.1) @@ -15078,7 +15087,7 @@ snapshots: electron-to-chromium@1.5.144: {} - electron-to-chromium@1.5.187: {} + electron-to-chromium@1.5.190: {} electron-to-chromium@1.5.5: {} @@ -19013,16 +19022,16 @@ snapshots: '@oxlint/win32-arm64': 0.16.12 '@oxlint/win32-x64': 0.16.12 - oxlint@1.7.0: + oxlint@1.8.0: optionalDependencies: - '@oxlint/darwin-arm64': 1.7.0 - '@oxlint/darwin-x64': 1.7.0 - '@oxlint/linux-arm64-gnu': 1.7.0 - '@oxlint/linux-arm64-musl': 1.7.0 - '@oxlint/linux-x64-gnu': 1.7.0 - '@oxlint/linux-x64-musl': 1.7.0 - '@oxlint/win32-arm64': 1.7.0 - '@oxlint/win32-x64': 1.7.0 + '@oxlint/darwin-arm64': 1.8.0 + '@oxlint/darwin-x64': 1.8.0 + '@oxlint/linux-arm64-gnu': 1.8.0 + '@oxlint/linux-arm64-musl': 1.8.0 + '@oxlint/linux-x64-gnu': 1.8.0 + '@oxlint/linux-x64-musl': 1.8.0 + '@oxlint/win32-arm64': 1.8.0 + '@oxlint/win32-x64': 1.8.0 p-defer@3.0.0: {} @@ -22042,7 +22051,7 @@ snapshots: '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) '@babel/core': 7.28.0 '@babel/preset-env': 7.28.0(@babel/core@7.28.0) - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@rollup/plugin-babel': 5.3.1(@babel/core@7.28.0)(rollup@2.79.2) '@rollup/plugin-node-resolve': 15.3.1(rollup@2.79.2) '@rollup/plugin-replace': 2.4.2(rollup@2.79.2)