From 8787bd0f2e40c7fb9c63e64f7cdfc31720748bb4 Mon Sep 17 00:00:00 2001 From: automated-signal <37887102+automated-signal@users.noreply.github.com> Date: Wed, 2 Sep 2026 15:00:42 -0500 Subject: [PATCH] Upgrade oxlint Co-authored-by: Jamie <113370520+jamiebuilds-signal@users.noreply.github.com> --- .oxlintrc.json | 85 ++++++- app/main.main.ts | 2 +- ci.js | 2 + codemods/react-jsx/02-to-named-exports.mjs | 2 +- codemods/react-jsx/04-fix-type-references.mjs | 1 + package.json | 4 +- .../types/src/datetime/MuteExpiration.std.ts | 2 +- pnpm-lock.yaml | 233 +++++++++--------- scripts/utils/better-blockmap.d.ts | 2 +- ts/LibSignalStores.node.ts | 2 +- ts/axo/AxoDialog.dom.stories.tsx | 4 - ts/axo/AxoSymbol.dom.stories.tsx | 2 - ts/axo/fields/_AxoBaseField.dom.tsx | 2 - ts/calling/VideoSupport.preload.ts | 2 +- ts/components/AutoSizeInput.dom.tsx | 2 - ts/components/AvatarTextEditor.dom.tsx | 2 - ts/components/AvatarUploadButton.dom.tsx | 2 - ts/components/CallScreen.dom.tsx | 1 + ts/components/CallingPip.dom.stories.tsx | 2 +- ts/components/Checkbox.dom.tsx | 2 - ts/components/CircleCheckbox.dom.tsx | 2 - ts/components/CompositionInput.dom.tsx | 3 +- ts/components/CompositionUpload.dom.tsx | 2 - ts/components/ContextMenu.dom.tsx | 2 +- ts/components/DebugLogWindow.dom.tsx | 2 - .../DirectCallRemoteParticipant.dom.tsx | 2 - .../GroupCallRemoteParticipant.dom.tsx | 2 - ts/components/Lightbox.dom.tsx | 3 +- ts/components/MediaEditor.dom.tsx | 2 - ts/components/Preferences.dom.stories.tsx | 4 +- ts/components/Preferences.dom.tsx | 2 +- ts/components/QrCode.dom.tsx | 1 + ts/components/StoryImage.dom.tsx | 2 - ts/components/TextAttachment.dom.tsx | 2 - ts/components/conversation/GIF.dom.tsx | 2 - .../TimelineMessage.dom.stories.tsx | 4 - .../InstallScreenQrCodeNotScannedStep.dom.tsx | 1 + .../donations/DonateInputAmount.dom.tsx | 2 - .../donations/DonateInputCardCvc.dom.tsx | 2 - .../donations/DonateInputCardExp.dom.tsx | 2 - .../donations/DonateInputCardNumber.dom.tsx | 2 - ts/jobs/AttachmentBackupManager.preload.ts | 3 +- ts/models/conversations.preload.ts | 3 +- ts/services/backups/errors.std.ts | 2 +- ts/sql/Server.node.ts | 7 +- ts/sql/hydration.std.ts | 6 +- ts/sql/util.std.ts | 2 +- ts/state/smart/StoryCreator.preload.tsx | 2 +- .../SignalProtocolStore_test.preload.ts | 3 +- .../quill/signal-clipboard_test.dom.ts | 23 +- .../senderCertificate_test.preload.ts | 2 +- ts/test-node/jobs/JobQueue_test.node.ts | 2 +- ts/test-node/jobs/TestJobQueueStore.node.ts | 2 +- ts/test-node/processSent_test.node.ts | 1 + ts/test-node/util/schemas_test.node.ts | 3 +- ts/textsecure/Errors.std.ts | 2 +- ts/textsecure/EventTarget.std.ts | 2 +- ts/textsecure/ProvisioningCipher.node.ts | 2 +- ts/textsecure/SendMessage.preload.ts | 2 +- ts/textsecure/WebAPI.preload.ts | 2 +- ts/textsecure/WebsocketResources.preload.ts | 2 +- ts/textsecure/messageReceiverEvents.std.ts | 2 +- ts/types/Attachment.std.ts | 2 +- ts/types/LocalExport.std.ts | 3 +- ts/types/MIME.std.ts | 2 +- ts/util/asyncIterables.std.ts | 2 +- ts/util/callLinksRingrtc.node.ts | 2 +- ts/util/callingMessageToProto.node.ts | 4 +- ts/util/createProxyAgent.node.ts | 8 +- ts/util/desktopCapturer.preload.ts | 2 +- ts/util/editHelpers.std.ts | 2 +- ts/util/iterables.std.ts | 2 +- ts/util/onCallLinkUpdateSync.preload.ts | 2 +- ts/util/signalRoutes.std.ts | 2 +- ts/util/uploads/tusProtocol.node.ts | 9 +- ts/windows/AppProvider.dom.tsx | 2 +- ts/windows/main/phase1-ipc.preload.ts | 2 +- 77 files changed, 274 insertions(+), 249 deletions(-) diff --git a/.oxlintrc.json b/.oxlintrc.json index d35815bc02..1fa02540a4 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -401,6 +401,12 @@ ], // [correctness] (πŸ’‘ suggestion) Require all forwardRef components include a ref parameter "react/forward-ref-uses-ref": "error", + // [correctness] react-compiler: Disallows assigning to or mutating variables declared outside a component or hook during render; side effects must run outside of render. + "react/globals": "off", // DECIDEME (errors: 6) + // [correctness] react-comiler: Disallows mutating props, state, hook arguments, hook return values, and other values that are immutable by the Rules of React. + "react/immutability": "off", // DECIDEME (errors: 10) + // [correctness] react-compiler: Warns on usage of library APIs known to be incompatible with memoization + "react/incompatible-library": "off", // DECIDEME (errors: 3) // [correctness] Disallow missing key props in iterators/collection literals "react/jsx-key": "off", // [correctness] Disallow duplicate properties in JSX @@ -433,6 +439,16 @@ "react/no-unsafe": "error", // [correctness] Disallow usage of setState in componentWillUpdate "react/no-will-update-set-state": "error", + // [correctness] react-compiler: Validates that existing manual memoization (useMemo, useCallback, React.memo) is preserved by the React Compiler + "react/preserve-manual-memoization": "off", // DECIDEME (errors: 11) + // [correctness] react-compiler: Validates that components and hooks are pure by checking that they do not call known-impure functions such as Math.random(), Date.now(), or performance.now() during render. + "react/purity": "off", // DECIDEME (errors: 103) + // [correctness] react-compiler: Validates correct usage of refs: ref.current may not be read or written during render, only in event handlers and effects. + "react/refs": "off", // DECIDEME (errors: 99) + // [correctness] react-compiler: Disallows calling setState synchronously inside an effect body. + "react/set-state-in-effect": "off", // DECIDEME (errors: 64) + // [correctness] react-compiler: Validates usage of the useMemo() hook against common mistakes + "react/use-memo": "off", // DECIDEME (errors: 1) // [correctness] Disallow void DOM elements (e.g. ,
) from receiving children "react/void-dom-elements-no-children": "error", // [correctness] (βœ… recommended) (πŸ’‘ suggestion) (πŸ’­ needs type info) @@ -555,6 +571,8 @@ "eslint/no-undef": "error", // [nursery] Disallow unreachable code after return, throw, continue, and break statements "eslint/no-unreachable": "error", // [reason: Cannot enable `tsconfig.json#allowUnreachableCode` yet] + // [nursery] Disallow loops with a body that allows only one iteration + "eslint/no-unreachable-loop": "off", // DECIDEME (errors: 2) // [nursery] Disallow variable assignments when the value is not used "eslint/no-useless-assignment": "off", // DECIDEME (errors: 28) // [nursery] Forbid any invalid exports, i.e. re-export of the same name. @@ -658,7 +676,7 @@ // [pedantic] (🚧 planned autofix) Disallow calling some Object.prototype methods directly on objects "eslint/no-prototype-builtins": "error", // [pedantic] Disallow variable redeclaration - "eslint/no-redeclare": "error", + "eslint/no-redeclare": "off", // [pedantic] Disallow comparisons where both sides are exactly the same "eslint/no-self-compare": "error", // [pedantic] (πŸ’‘ suggestion) Disallow throwing literals as exceptions @@ -829,12 +847,16 @@ "unicorn/prefer-math-trunc": "off", // DECIDEME (errors: 6) // [pedantic] (🚧 planned autofix) Prefer using String, Number, BigInt, Boolean, and Symbol directly. "unicorn/prefer-native-coercion-functions": "off", // DECIDEME (errors: 10) + // [pedantic] (πŸ’‘ suggestion) Prefer Number() over parseFloat() and base-10 parseInt(). + "unicorn/prefer-number-coercion": "off", // DECIDEME (errors: 53) // [pedantic] (πŸ› οΈ autofix) Prefer borrowing methods from the prototype instead of the instance. "unicorn/prefer-prototype-methods": "error", // [pedantic] (πŸ› οΈ autofix) Prefer .querySelector() over .getElementById(), .querySelectorAll() over .getElementsByClassName() and .getElementsByTagName() and .getElementsByName(). "unicorn/prefer-query-selector": "off", // DECIDEME (errors: 9) // [pedantic] (πŸ› οΈ autofix) Prefer RegExp#test() over String#match() and RegExp#exec(). "unicorn/prefer-regexp-test": "error", + // [pedantic] (πŸ› οΈ autofix) Enforces combining multiple Array#{push,unshift}(), Element#classList.{add,remove}(), and importScripts() into a single call. + "unicorn/prefer-single-call": "off", // DECIDEME (errors: 30) // [pedantic] (πŸ› οΈ autofix) Prefer String#replaceAll() over regex searches with the global flag. "unicorn/prefer-string-replace-all": "off", // DECIDEME (errors: 52) // [pedantic] (πŸ› οΈ autofix) Prefer String#slice() over String#substr() and String#substring(). @@ -850,6 +872,11 @@ // Category: Perf // ------------------------------------------------------------------------ + // [perf] react-compiler: Disallows deriving values from state inside an effect and storing them back into state + "react/no-deriving-state-in-effects": "off", // DECIDEME (errors: 2) + // [perf] Disallows using object, array, function, class, regex, JSX, or new-constructed values as default values for destructured React component props. + "react/no-object-type-as-default-prop": "off", // DECIDEME (errors: 11) + // [perf] Disallow await inside of loops "eslint/no-await-in-loop": "error", // [perf] Disallow unnecessary calls to .call() and .apply() @@ -985,6 +1012,8 @@ "node/no-path-concat": "error", // [restriction] Disallow the use of process.env "node/no-process-env": "off", // DECIDEME (errors: 101) + // [restriction] Disallows the use of top-level await, including for await...of loops and await using declarations that are not nested inside a function. + "node/no-top-level-await": "off", // DECIDEME (errors: 118) // [restriction] (πŸ’‘ suggestion) Disallows bitwise operators where logical operators are expected. "oxc/bad-bitwise-operator": "error", // [restriction] Disallows the use of async/await. @@ -1009,8 +1038,12 @@ "react/forbid-dom-props": "error", // [restriction] Disallow certain elements "react/forbid-elements": "error", + // [restriction] react-compiler: Reports internal React Compiler invariant violations + "react/invariant": "off", // DECIDEME (errors: 1) // [restriction] (🚧 planned autofix) Disallow file extensions that may contain JSX "react/jsx-filename-extension": "off", // DECIDEME (errors: 884) + // [restriction] + "react/jsx-no-literals": "off", // [restriction] Disallows cloneElement "react/no-clone-element": "error", // [restriction] Disallow usage of dangerous JSX properties @@ -1025,6 +1058,10 @@ "react/only-export-components": "off", // DECIDEME (errors: 172) // [restriction] Prevents the use of React class components. "react/prefer-function-component": "error", + // [restriction] react-compiler: Reports Oxlint suppressions of React rules inside a component or hook + "react/rule-suppression": "off", // DECIDEME (errors: 18) + // [restriction] react-compiler: Reports code that React Compiler cannot yet analyze because it uses features the compiler has not implemented + "react/todo": "off", // DECIDEME (errors: 14) // [restriction] Require explicit return types on functions and class methods "typescript/explicit-function-return-type": "off", // DECIDEME (errors: 2062) // [restriction] Require explicit accessibility modifiers on class properties and methods. @@ -1064,6 +1101,8 @@ "typescript/promise-function-async": "off", // DECIDEME (errors: 440) // [restriction] (πŸ’‘ suggestion) (πŸ’­ needs type info) Enforce typing arguments in Promise rejection callbacks as unknown "typescript/use-unknown-in-catch-callback-variable": "off", // DECIDEME (errors: 41) + // [restriction] Enforce specific import styles per module. + "unicorn/import-style": "off", // DECIDEME (errors: 103) // [restriction] Enforce specifying rules to disable in eslint-disable comments. "unicorn/no-abusive-eslint-disable": "off", // DECIDEME (errors: 1) // [restriction] (🚧 planned autofix) Disallow anonymous functions and classes as the default export. @@ -1169,6 +1208,8 @@ "eslint/no-useless-computed-key": "error", // [style] (πŸ› οΈ autofix) Require or disallow method and property shorthand syntax for object literals "eslint/object-shorthand": "error", + // [style] (πŸ› οΈ autofix) Enforces variables to be declared either together or separately. + "eslint/one-var": ["error", "never"], // [style] (⚠️ πŸ› οΈ dangerous autofix) Require or disallow assignment operator shorthand where possible "eslint/operator-assignment": "error", // [style] (πŸ› οΈ autofix) Require const declarations for variables that are never reassigned after declared @@ -1177,6 +1218,8 @@ "eslint/prefer-destructuring": "off", // DECIDEME (errors: 218) // [style] (πŸ› οΈ autofix) Disallow the use of Math.pow in favor of the ** operator "eslint/prefer-exponentiation-operator": "error", + // [style] (πŸ’‘ suggestion) Enforce using named capture group in regular expression + "eslint/prefer-named-capture-group": "off", // DECIDEME (errors: 102) // [style] (πŸ› οΈ autofix) Disallow parseInt() and Number.parseInt() in favor of binary, octal, and hexadecimal literals "eslint/prefer-numeric-literals": "error", // [style] (πŸ› οΈ autofix) Disallow use of Object.prototype.hasOwnProperty.call() and prefer use of Object.hasOwn() @@ -1207,6 +1250,8 @@ "import/first": "error", // [style] Prefer named exports to be grouped together in a single export declaration "import/group-exports": "off", // DECIDEME (errors: 7192) + // [style] (πŸ› οΈ autofix) Enforces having one or more empty lines after the last top-level import statement or require call. + "import/newline-after-import": "off", // DECIDEME (errors: 2) // [style] Forbid anonymous values as default exports. "import/no-anonymous-default-export": "error", // [style] Forbid repeated import of the same module in multiple places. @@ -1314,10 +1359,14 @@ // "jest/require-hook": "error", // [style] Require test cases and hooks to be inside a describe block // "jest/require-top-level-describe": "error", + // [style] Require return statements after callbacks. + "node/callback-return": "off", // DECIDEME (errors: 54) // [style] Require require() calls to be placed at top-level module scope "node/global-require": "error", // [style] (πŸ› οΈ autofix) Disallow the assignment to exports "node/no-exports-assign": "error", + // [style] Disallows synchronous methods from being called in Node.js code. + "node/no-sync": "off", // DECIDEME (errors: 283) // [style] Disallow creating new promises outside of utility libs (use util.promisify instead). "promise/avoid-new": "off", // DECIDEME (errors: 88) // [style] (🚧 planned autofix) Disallow nested then() or catch() statements. @@ -1332,6 +1381,8 @@ "promise/prefer-await-to-then": "error", // [style] (🚧 planned autofix) Prefer catch to then(a, b)/then(null, b) for handling errors. "promise/prefer-catch": "off", // DECIDEME (errors: 1) + // [style] Enforces a consistent function form for React function components. + "react/function-component-definition": "off", // DECIDEME (errors: 285) // [style] (🚧 planned autofix) Ensure destructuring and symmetric naming of useState hook value and setter variables. "react/hook-use-state": "off", // DECIDEME (errors: 46) // [style] (πŸ› οΈ autofix) Enforce boolean attributes notation in JSX @@ -1374,6 +1425,8 @@ "typescript/consistent-type-definitions": ["error", "type"], // [style] (πŸ› οΈ autofix) Enforce consistent usage of type imports "typescript/consistent-type-imports": "error", + // [style] (🚧 planned autofix) Enforce using a particular method signature syntax. + "typescript/method-signature-style": "off", // DECIDEME (errors: 18) // [style] (🚧 planned autofix) Disallow the declaration of empty interfaces "typescript/no-empty-interface": "error", // [reason: FILLMEIN] // [style] (πŸ’‘ suggestion) Disallow explicit type declarations for variables or parameters initialized to a number, string, or boolean @@ -1399,13 +1452,17 @@ // [style] (πŸ› οΈ autofix) Enforce consistent style for element existence checks with indexOf(), lastIndexOf(), findIndex(), and findLastIndex(). "unicorn/consistent-existence-index-check": "off", // DECIDEME (errors: 15) // [style] (🚧 planned autofix) Enforces the only valid way of Error subclassing. It works with any super class that ends in Error. - "custom-error-definition": "off", // TODO + "unicorn/custom-error-definition": "off", // TODO // [style] (πŸ› οΈ autofix) Enforce no spaces between braces. "unicorn/empty-brace-spaces": "off", // DECIDEME (errors: 0) // [style] Enforce passing a message value when creating a built-in error. "unicorn/error-message": "off", // DECIDEME (errors: 13) + // [style] (πŸ› οΈ autofix) Enforce or disallow explicit delay argument for setTimeout() and setInterval(). + "unicorn/explicit-timer-delay": "off", // DECIDEME (errors: 6) // [style] Enforce a case style for filenames. "unicorn/filename-case": "off", // DECIDEME (errors: 666) + // [style] Limit the depth of nested calls. + "unicorn/max-nested-calls": "off", // DECIDEME (errors: 193) // [style] (🚧 planned autofix) Disallow using the this argument in array methods. "unicorn/no-array-method-this-argument": "off", // DECIDEME (errors: 2) // [style] (⚠️ πŸ› οΈ dangerous autofix) Disallow member access from await expression. @@ -1438,6 +1495,8 @@ "unicorn/prefer-default-parameters": "error", // [style] (πŸ› οΈ autofix) Prefer .textContent over .innerText. "unicorn/prefer-dom-node-text-content": "off", // DECIDEME (errors: 9) + // [style] (πŸ’‘ suggestion) Prefer `export from` over `import` + `export` + "unicorn/prefer-export-from": "off", // DECIDEME (errors: 27) // [style] (πŸ’‘ suggestion) Prefer globalThis over window, self, and global. "unicorn/prefer-global-this": "off", // DECIDEME (errors: 2242) // [style] (πŸ’‘ suggestion) Prefer .includes() over .indexOf(), .lastIndexOf(), and Array#some() when checking for existence or non-existence. @@ -1516,6 +1575,7 @@ // ------------------------------------------------------------------------ // Category: Suspicious // ------------------------------------------------------------------------ + // [suspicious] Enforce the use of variables within the scope they are defined "eslint/block-scoped-var": "error", // [suspicious] Disallow extending native types @@ -1568,14 +1628,24 @@ "promise/no-multiple-resolved": "error", // [suspicious] Disallow using promises inside of callbacks. "promise/no-promise-in-callback": "error", + // [suspicious] react-compiler: Disallows calling capitalized functions or methods directly during render instead of rendering them with JSX, since capitalized names are reserved for components. + "react/capitalized-calls": "off", // DECIDEME (errors: 1) + // [suspicious] react-compiler: Validates that effect dependency arrays are exhaustive and contain no extraneous values. + "react/exhaustive-effect-dependencies": "off", // DECIDEME (errors: 40) + // [suspicious] react-compiler: Validates hooks must be called unconditionally, in a consistent order, at the top level of a component or hook, and not be used as first-class values. + "react/hooks": "off", // DECIDEME (errors: 1) // [suspicious] (🚧 planned autofix) Enforce sandbox attribute on iframe elements "react/iframe-missing-sandbox": "error", // [suspicious] Disallow comments from being inserted as text nodes "react/jsx-no-comment-textnodes": "error", // [suspicious] (🚧 planned autofix) Disallow usage of javascript: URLs "react/jsx-no-script-url": "error", + // [suspicious] react-compiler: Validates that useMemo() and useCallback() declare comprehensive dependency lists without extraneous values. + "react/memo-dependencies": "off", // DECIDEME (errors: 7) // [suspicious] Enforce that namespaces are not used in React elements "react/no-namespace": "error", + // [suspicious] Disallows defining React components inside other components. + "react/no-unstable-nested-components": "off", // DECIDEME (errors: 8) // [suspicious] Disallow missing React when using JSX "react/react-in-jsx-scope": "off", // [suspicious] Enforce style prop value is an object @@ -1602,6 +1672,8 @@ "unicorn/consistent-function-scoping": "off", // DECIDEME (errors: 86) // [suspicious] Disallow recursive access to this within getters and setters. "unicorn/no-accessor-recursion": "error", + // [suspicious] Disallows using reference values as Array#fill() values. + "unicorn/no-array-fill-with-reference-type": "off", // DECIDEME (errors: 5) // [suspicious] (πŸ› οΈ autofix) Prefer Array#toReversed() over Array#reverse(). "unicorn/no-array-reverse": "off", // DECIDEME (errors: 20) // [suspicious] (πŸ› οΈ autofix) Prefer Array#toSorted() over Array#sort(). @@ -1857,7 +1929,14 @@ "typescript/parameter-properties": "off", "typescript/prefer-readonly": "off", "unicorn/prefer-node-protocol": "off", - "eslint/no-console": "off" + "eslint/no-console": "off", + "typescript/no-unnecessary-type-assertion": "off" + } + }, + { + "files": ["packages/mock-server/certs/**/*.js"], + "rules": { + "typescript/no-var-requires": "off" } }, diff --git a/app/main.main.ts b/app/main.main.ts index e82204be55..618516fe56 100644 --- a/app/main.main.ts +++ b/app/main.main.ts @@ -498,7 +498,7 @@ function prepareFileUrl( options: PrepareUrlOptions = {} ): string { const filePath = join(...pathSegments); - const fileUrl = pathToFileURL(filePath) as URL; + const fileUrl = pathToFileURL(filePath); return prepareUrl(fileUrl, options); } diff --git a/ci.js b/ci.js index 86fda6fadc..46b5022138 100644 --- a/ci.js +++ b/ci.js @@ -17,9 +17,11 @@ try { }); } +// oxlint-disable-next-line typescript/no-var-requires const { Util } = require('config/lib/util.js'); // Must be loaded after parsing SIGNAL_CI_CONFIG +// oxlint-disable-next-line typescript/no-var-requires const config = require('./bundles/config.js').default; Util.extendDeep(config, parsedConfig); diff --git a/codemods/react-jsx/02-to-named-exports.mjs b/codemods/react-jsx/02-to-named-exports.mjs index 869ba92b2b..5ef42958c9 100644 --- a/codemods/react-jsx/02-to-named-exports.mjs +++ b/codemods/react-jsx/02-to-named-exports.mjs @@ -37,7 +37,7 @@ export default declare(function transform({ types: t }) { } // (Mistake) Ignore type imports. Should have considered these - // but otherΒ linting managed to fix it up. + // but other linting managed to fix it up. if (path.node.importKind === 'type') { return; } diff --git a/codemods/react-jsx/04-fix-type-references.mjs b/codemods/react-jsx/04-fix-type-references.mjs index 3576076776..4785bb51ce 100644 --- a/codemods/react-jsx/04-fix-type-references.mjs +++ b/codemods/react-jsx/04-fix-type-references.mjs @@ -26,6 +26,7 @@ export default declare(function transform({ types: t }) { * }} State */ + // oxlint-disable typescript/no-unnecessary-type-assertion /** @type {PluginObj} */ return { // Setup state for the transform, we don't want to re-import diff --git a/package.json b/package.json index 67374b98f0..eee90bfe5d 100644 --- a/package.json +++ b/package.json @@ -282,8 +282,8 @@ "normalize-path": "3.0.0", "npm-run-all2": "8.0.4", "oxc-transform": "0.131.0", - "oxlint": "1.65.0", - "oxlint-tsgolint": "0.22.1", + "oxlint": "1.80.0", + "oxlint-tsgolint": "7.0.2001", "p-limit": "7.3.0", "p-map": "7.0.4", "p-queue": "9.1.0", diff --git a/packages/types/src/datetime/MuteExpiration.std.ts b/packages/types/src/datetime/MuteExpiration.std.ts index b9df97bba6..e868cbf46c 100644 --- a/packages/types/src/datetime/MuteExpiration.std.ts +++ b/packages/types/src/datetime/MuteExpiration.std.ts @@ -43,7 +43,7 @@ export namespace MuteExpiration { if (input <= 0) { return UNMUTED; } - return Schema.parse(Math.min(input, ALWAYS) as MuteExpiration); + return Schema.parse(Math.min(input, ALWAYS)); } /** @public */ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc025e435f..ac5787eeea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -424,7 +424,7 @@ importers: version: 10.4.0(jiti@2.7.0)(supports-color@8.1.1) eslint-plugin-better-tailwindcss: specifier: 4.5.0 - version: 4.5.0(@typescript/typescript6@6.0.2)(eslint@10.4.0)(oxlint@1.65.0)(tailwindcss@4.3.0) + version: 4.5.0(@typescript/typescript6@6.0.2)(eslint@10.4.0)(oxlint@1.80.0)(tailwindcss@4.3.0) execa: specifier: 9.6.1 version: 9.6.1 @@ -522,11 +522,11 @@ importers: specifier: 0.131.0 version: 0.131.0 oxlint: - specifier: 1.65.0 - version: 1.65.0(oxlint-tsgolint@0.22.1) + specifier: 1.80.0 + version: 1.80.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: - specifier: 0.22.1 - version: 0.22.1 + specifier: 7.0.2001 + version: 7.0.2001 p-limit: specifier: 7.3.0 version: 7.3.0 @@ -2644,154 +2644,154 @@ packages: cpu: [x64] os: [win32] - '@oxlint-tsgolint/darwin-arm64@0.22.1': - resolution: {integrity: sha512-4150Lpgc1YM09GcjA6GSrra1JoPjC7aOpfywLjWEY4vW0Sd1qKzqHF1WRaiw0/qUZ40OATYdv3aRd7ipPkWQbw==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/darwin-arm64/-/darwin-arm64-0.22.1.tgz} + '@oxlint-tsgolint/darwin-arm64@7.0.2001': + resolution: {integrity: sha512-CUJEdbSZ54+Xy9OXqOhWLTKZKV0BBiV7C2i/ygyVmXtkUNXx5YCzN8DpSSshTAKktoL7S+tnQ/ftFG/i7X896w==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/darwin-arm64/-/darwin-arm64-7.0.2001.tgz} cpu: [arm64] os: [darwin] - '@oxlint-tsgolint/darwin-x64@0.22.1': - resolution: {integrity: sha512-vFWcPWYOgZs4HWcgS1EjUZg33NLcNfEYU49KGImmCfZWkflENrmBYV4HN/C0YeAPum6ZZ/goPSvQrB/cOD+NfA==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/darwin-x64/-/darwin-x64-0.22.1.tgz} + '@oxlint-tsgolint/darwin-x64@7.0.2001': + resolution: {integrity: sha512-pXfBb5BqONCcgrXQNUZWXgiYmRSWJzd97S8i41VVOh6ut0tyo+cJ5FKFpczDHxiVNfj/3e7c9B4MtztNdpIVCw==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/darwin-x64/-/darwin-x64-7.0.2001.tgz} cpu: [x64] os: [darwin] - '@oxlint-tsgolint/linux-arm64@0.22.1': - resolution: {integrity: sha512-6LiUpP0Zir3+29FvBm7Y28q/dBjSHqTZ5MhG1Ckw4fGhI4cAvbcwXaKvbjx1TP7rRmBNOoq/M5xdpHjTb+GAew==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/linux-arm64/-/linux-arm64-0.22.1.tgz} + '@oxlint-tsgolint/linux-arm64@7.0.2001': + resolution: {integrity: sha512-roP7zujb/QDPzDwEKsFFpzNHHy91/Y7oX9vQXk78ekyZtcQj1QXDIMH33gjDdHBfRl4K9pZ36xhRgrP4Zr+R8A==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/linux-arm64/-/linux-arm64-7.0.2001.tgz} cpu: [arm64] os: [linux] - '@oxlint-tsgolint/linux-x64@0.22.1': - resolution: {integrity: sha512-fuX1hEQfpHauUbXADsfqVhRzrUrGabzGXbj5wsp2vKhV5uk/Rze8Mba9GdjFGECzvXudMGqHqxB4r6jGRdhxVA==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/linux-x64/-/linux-x64-0.22.1.tgz} + '@oxlint-tsgolint/linux-x64@7.0.2001': + resolution: {integrity: sha512-UDezNqdECVmngu2TPnjaS1YoAmcTaBoI5lV9vk3VahBxoi+I5r9k3iJTT7qZoYWOXTD/7T7bNcwRgrocR6BscQ==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/linux-x64/-/linux-x64-7.0.2001.tgz} cpu: [x64] os: [linux] - '@oxlint-tsgolint/win32-arm64@0.22.1': - resolution: {integrity: sha512-8SZidAj+jrbZf9ZjBEYW0tiNZ+KasqB2zgW26qdiPpQSF/DzURnPmXz651IeA9YsmbVdHGIooEHUmev6QJdquA==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/win32-arm64/-/win32-arm64-0.22.1.tgz} + '@oxlint-tsgolint/win32-arm64@7.0.2001': + resolution: {integrity: sha512-uJZhqB6pdXLuN+AD1F5082byyQti/NPmJA77GtcFlmT2HzRelqbNls3SaIqxpjdFgvSBF9g0yOKGBkGFg7kX8Q==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/win32-arm64/-/win32-arm64-7.0.2001.tgz} cpu: [arm64] os: [win32] - '@oxlint-tsgolint/win32-x64@0.22.1': - resolution: {integrity: sha512-QweSk9H5lFh5Y+WUf2Kq/OAN88V6+62ZwGhP38gqdRotI90luXSMkruFTj7Q2rYrzH4ZVNaSqx7NY8JpSfIzqg==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/win32-x64/-/win32-x64-0.22.1.tgz} + '@oxlint-tsgolint/win32-x64@7.0.2001': + resolution: {integrity: sha512-FkDRm8hx9OwzGQqyWG1tO5QrTLRApff9DzSgpz9QZau37BR8d1VYKOxMLGf6shPZntJFoTwIIJYT68VndYDCog==, tarball: https://registry.npmjs.org/@oxlint-tsgolint/win32-x64/-/win32-x64-7.0.2001.tgz} cpu: [x64] os: [win32] - '@oxlint/binding-android-arm-eabi@1.65.0': - resolution: {integrity: sha512-jDVaGNURT5pEA9qcabh6WusIoBNybOMMDPCx+EFt+gxo6rVvoUf0+73Xy5x81+ZrxU+ewk5uRBYifjy5pgkcnA==, tarball: https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.65.0.tgz} + '@oxlint/binding-android-arm-eabi@1.80.0': + resolution: {integrity: sha512-RM3Plj+biQpxa5d1GOOX6ciDlcUROmm4OZ/pLTpitkQt2mJv4jhtY4cbgaetOm5UKWZe05/TGQ6o1Vl8EOHkrA==, tarball: https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxlint/binding-android-arm64@1.65.0': - resolution: {integrity: sha512-v0z80IWNA7c9RhUydq9YprBxCVZrQ6Ixls2tdxUC1F/1FFqSfa7xTX+EJf0mj6+BKRg2zWXqWfcbJUnETlLlIw==, tarball: https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.65.0.tgz} + '@oxlint/binding-android-arm64@1.80.0': + resolution: {integrity: sha512-YlO5JEf0Yr2bUUlu8O8daVcUxtcGGbcSmyV7E7nSbJbfAdxTE0PFPwgnIlw7wXJaTYjb+qs5hI5q3jxUkI7cAw==, tarball: https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxlint/binding-darwin-arm64@1.65.0': - resolution: {integrity: sha512-pL/mG/5gMzBwp1gdc5+Cwi87F9j3XRnPxHGyVj5Zd+dCEV5YkKt0L70PB3EGmEEHxgn4H+jnMS3xLuXs6mZW/Q==, tarball: https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.65.0.tgz} + '@oxlint/binding-darwin-arm64@1.80.0': + resolution: {integrity: sha512-BULDOyO3AhsmdWfQeIUCykDt3dd7XZBGLhp1eIh56skRv01O+cNjNPwXMIbeW1x4+pxcln5if72wcRgViVo7PA==, tarball: https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxlint/binding-darwin-x64@1.65.0': - resolution: {integrity: sha512-jVTneaeuHtqTrKYnhrdH1buhnSorinvpy1sv43ayclfWx/e/DfdRWv+h1fopJcHQbYr5WMcZMmDvnfEBkPZ+1A==, tarball: https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.65.0.tgz} + '@oxlint/binding-darwin-x64@1.80.0': + resolution: {integrity: sha512-YJ4JzLw7N5TDSQFlA0hAQGHvnDZgyypm1yunObVWcWiF9KM7eGCJKYKLgTC2Fi/57OdnBhbj4OkzPGdFQJ6HyA==, tarball: https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxlint/binding-freebsd-x64@1.65.0': - resolution: {integrity: sha512-8lJQ7B6RloYDUhwVdbSpwT2eKsCN5KP1Scn18ly1tytCuhXhbs0nkfKHT4jWWZBJqmynWuzd+78bF7wILrj6pw==, tarball: https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.65.0.tgz} + '@oxlint/binding-freebsd-x64@1.80.0': + resolution: {integrity: sha512-AYUIk5QnL0s8oWAYsREZwkRYy1SupJTXALo93J1TgzHywxQtdM99FecRMQ87MXEdPQ0j1TmEpeeq3fGNkpvMqg==, tarball: https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxlint/binding-linux-arm-gnueabihf@1.65.0': - resolution: {integrity: sha512-EgmZY+DeWhLLEnNl70/49j3ltA8I6X9kxMfexupWi2Vwfp6RonGsBaHtGoedLolaU37ne7eDUgoxa3CFB95GZA==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.65.0.tgz} + '@oxlint/binding-linux-arm-gnueabihf@1.80.0': + resolution: {integrity: sha512-9hBZVANupQ89W9dXyE0n8doCyaW5pDyGn3y6XlIMPZ+rIKuyqkr3SNUXmVJIhuvUq0NBU3RBiSXXE69l4XI6KA==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.65.0': - resolution: {integrity: sha512-OJMWmAYRVBCPPxnYr3j5sXRwHPh1bAuMlTStGco1Z8q3HkvSH4h+A10E9MiRNYmLhUuli5a2P5wmfj8cagiF5Q==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.65.0.tgz} + '@oxlint/binding-linux-arm-musleabihf@1.80.0': + resolution: {integrity: sha512-SvS2uKqzY+pbfuvAHzH4338R6Zwo805GAwrIMVvK1KxoOWCIjZUdfzTCvilD7z6JK91v011+zYMryabhDo2AsQ==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm64-gnu@1.65.0': - resolution: {integrity: sha512-D8uNi50LsYKgS0vGARZDRx05TBZeSxAVdLGddSEqQLSU7xsiqdImHPEw55xq8sKA5rCc/4au/5uS7FQALWdLCg==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.65.0.tgz} + '@oxlint/binding-linux-arm64-gnu@1.80.0': + resolution: {integrity: sha512-tCLadyqRVL3pQTRPNg7cjXKvcvS4fbyXeQHhKk5BTJ1oftQln5/yIIWbu/Xom/DX41zv2P9QGt6+D/TtQVtY3A==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-arm64-musl@1.65.0': - resolution: {integrity: sha512-IpbA8QGbwFehQhO+YaHwmoI81f93xvywpspf8HrdPCWOIeKwYfM1dhVhO4YKfZewTRRQEPY/JFjTOXTgkwhKrA==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.65.0.tgz} + '@oxlint/binding-linux-arm64-musl@1.80.0': + resolution: {integrity: sha512-XfpCNRlOPcLlJl4Bn/FUhjqlR6BVavEykERBf/MV7YA9VZDa5g5znVqYhyviMafcxS9Pe/i/kPvHNO0U6svEHQ==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxlint/binding-linux-ppc64-gnu@1.65.0': - resolution: {integrity: sha512-ZSe8HgaZdgyHSv2+/pTG68z10+OarB18CkFKQOhRs3lmmP/p2vuigedK2e9d0ztoG2DU/duJzhxXBSjy/492HQ==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.65.0.tgz} + '@oxlint/binding-linux-ppc64-gnu@1.80.0': + resolution: {integrity: sha512-3I4yMwcFG9NeO8ioY6JBBuKsIm5GL/x7MATt1S4tVWaxPu5HcJ+XnLUbcVBTxG8q2Wu56HSj+NmXQiVYb1lp6A==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-gnu@1.65.0': - resolution: {integrity: sha512-DcTERf++v6HyPHukKAr0JFTRqB+YeDEvqzRgNDMaz7jITPf+tlJIwRxodlAqoXMYhNVEZhXdQM5RAAYH8/oPuw==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.65.0.tgz} + '@oxlint/binding-linux-riscv64-gnu@1.80.0': + resolution: {integrity: sha512-E1wAKymkpe1/E8helzBKdm81OBOF+ezxRyXRMEuik3ZpWDER5CPOKZwF66RsdwW98uwZv8UTFremUQtC1CzdJA==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-musl@1.65.0': - resolution: {integrity: sha512-xjhMwuFJwRh40NOBzol4gM5gqAa0xPCJU+GQLM6BydV8TbfkIA7JeyCFNhyfbE9Q/5EWcKYTx62R0cRcjP7DAA==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.65.0.tgz} + '@oxlint/binding-linux-riscv64-musl@1.80.0': + resolution: {integrity: sha512-+gLRGD4sIo3+VA++iham5UxD9tKSoJ/VOrROCEXIcknrYtQg6iIQgvjN0cpiRF7N6UYC7pJbvHJlDnMge5LRpQ==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxlint/binding-linux-s390x-gnu@1.65.0': - resolution: {integrity: sha512-lrWSXb8JzboPWYBG6Kunt/eemvjo2oCFXktShsm3yMToY7HjzKLjxh7CljSvGnnZH9oohNFHOKc9xYpGKCPm6w==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.65.0.tgz} + '@oxlint/binding-linux-s390x-gnu@1.80.0': + resolution: {integrity: sha512-aR0PrzHj9leW3NmzBAAP4EzdoBNoJcs9sjnIQPIwyRnBGYrRbXUIpEB5Q39AqK3PLY5JK5uEhDQDiUa1QSAstw==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-gnu@1.65.0': - resolution: {integrity: sha512-A7xfghw250m4a1sPV+q44Mow2G5bhiC9FBvhAuIhJS6QovWnqzuL5AFQPEuwOB+PM4DhABkqxVa3Iwe3Y/nFlQ==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.65.0.tgz} + '@oxlint/binding-linux-x64-gnu@1.80.0': + resolution: {integrity: sha512-vSVh5cSo3Xxs6ghBCcFJlpbkbENzDog1qXtoXLa/HC3aCrR4XO76GZbXmQoCPHnu99nQpdCeC3H9tdNICfDh7A==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-musl@1.65.0': - resolution: {integrity: sha512-reqOun1+pWO3fW6cv7bsa8hHG0TN3t/82qPdaoJo90FwugXiMjKhZMChmH5Z01cFNRHmxN4+543Fy8478cM/iA==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.65.0.tgz} + '@oxlint/binding-linux-x64-musl@1.80.0': + resolution: {integrity: sha512-FfzBXpNQ8u7/ZI/p8bl73MeZ508Ax3hxWp3SiJpEFiC+BB9XcXy5FAZHTLKDPSzrUpxQZSZJAVdDmuJp/+HDBQ==, tarball: https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxlint/binding-openharmony-arm64@1.65.0': - resolution: {integrity: sha512-KQpqOb/juDBO0xyloDkVDhOVxDUgAfZ2OAAVq99TJScJDzT319xry1QzB9LQohV9QGnA7p6m/XATZkMXc84lwA==, tarball: https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.65.0.tgz} + '@oxlint/binding-openharmony-arm64@1.80.0': + resolution: {integrity: sha512-zMzbkumtmprCgRwoYNzcB3iC39fXdJIMLMU33KdCjEGLlJGOEt1+LwQ4LF8ndLzAEKVz4BR0y3V6Xrkk3Nm3yA==, tarball: https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxlint/binding-win32-arm64-msvc@1.65.0': - resolution: {integrity: sha512-xfqcOc3nJFeAd1kDY4T9d3XeJIhr00twaaW0kOAzGPyUHkruXtNJv6zz1Ra9fRtSek5VpW2Yoj5AcwPIlT0ZiQ==, tarball: https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.65.0.tgz} + '@oxlint/binding-win32-arm64-msvc@1.80.0': + resolution: {integrity: sha512-ib6iRcrXsk4t1fm3iKcwksyWh1ZkZXC/2mEzakl0ai2+6HZunf1WWMZ/xP9EJAvw9g9K4UVTC3NF/+G2qLrbTQ==, tarball: https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.65.0': - resolution: {integrity: sha512-JV+pXm45p8sdgs3c7LOPAohW23optCNZETFOXUcjn6cS4PYZhEU/RI54Z5dHdMudab3nw7T48PZILthM+Q0COQ==, tarball: https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.65.0.tgz} + '@oxlint/binding-win32-ia32-msvc@1.80.0': + resolution: {integrity: sha512-xhRWBMpLxZvgKAH6+DJZmpP+W8Y8UdQOSU1JfxSWNXsaBaRGW77j+1hCuNHlzj7OH4SPN8fYd1q0o2qrDtoVyw==, tarball: https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxlint/binding-win32-x64-msvc@1.65.0': - resolution: {integrity: sha512-D7L/oBbskLss21bYrRbFuIs81AiSQV+wRzwck54dOkHIlq2qu1xjLz8u6jCqGH8Fltk8bB5DLBpVhE7v/fA8XQ==, tarball: https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.65.0.tgz} + '@oxlint/binding-win32-x64-msvc@1.80.0': + resolution: {integrity: sha512-yAnO7lwBYQnz2pcfBPIGQQZWIX5zd5R/1aAKIF3oE+TVj7IhoHcROjOkz3sRDngzqhfPKfFaXqug5j5rE5dn6Q==, tarball: https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -9345,19 +9345,22 @@ packages: resolution: {integrity: sha512-ml0/elXPNnDnuHo3VHmEMN2fnybmKx7YL+0E+gMQ0fuHRZHXYJzF6YJ01KsCWg6FXY6pbZcjm7DC3xwGHnB/BA==, tarball: https://registry.npmjs.org/oxc-transform/-/oxc-transform-0.131.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} - oxlint-tsgolint@0.22.1: - resolution: {integrity: sha512-YUSGSLUnoolsu8gxISEDio3q1rtsCozwfOzASUn3DT2mR2EeQ93uEEnen7s+6LpF+lyTQFln1pQfqwBh/fsVEg==, tarball: https://registry.npmjs.org/oxlint-tsgolint/-/oxlint-tsgolint-0.22.1.tgz} + oxlint-tsgolint@7.0.2001: + resolution: {integrity: sha512-KjK/XLcXr1DSyonKhsuFqJRiuKqcyG9j3LJ8nkOsrLzGvodBPqzHOKauy10asLMDI0sUpvb+1sxlzff3udZvfg==, tarball: https://registry.npmjs.org/oxlint-tsgolint/-/oxlint-tsgolint-7.0.2001.tgz} hasBin: true - oxlint@1.65.0: - resolution: {integrity: sha512-ChUuE3Q7XnAbscvT4XLMsH7HFJmLgLVv9lu+RRgFL5wSXnDqUOzTp5IS8qWDBGd/ZDSzQ2tbX8fjAmijlGLC7A==, tarball: https://registry.npmjs.org/oxlint/-/oxlint-1.65.0.tgz} + oxlint@1.80.0: + resolution: {integrity: sha512-5nTiSps4qdbCWLbxzuO00alHkEO2exR9YMN/ig6QXWrLsYSG0KaObOAM+l6oU2LcKPWoSAGYbkZIGEu1ViiWKA==, tarball: https://registry.npmjs.org/oxlint/-/oxlint-1.80.0.tgz} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - oxlint-tsgolint: '>=0.22.1' + oxlint-tsgolint: '>=7.0.2001' + vite-plus: '*' peerDependenciesMeta: oxlint-tsgolint: optional: true + vite-plus: + optional: true p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==, tarball: https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz} @@ -13364,79 +13367,79 @@ snapshots: '@oxc-transform/binding-win32-x64-msvc@0.131.0': optional: true - '@oxlint-tsgolint/darwin-arm64@0.22.1': + '@oxlint-tsgolint/darwin-arm64@7.0.2001': optional: true - '@oxlint-tsgolint/darwin-x64@0.22.1': + '@oxlint-tsgolint/darwin-x64@7.0.2001': optional: true - '@oxlint-tsgolint/linux-arm64@0.22.1': + '@oxlint-tsgolint/linux-arm64@7.0.2001': optional: true - '@oxlint-tsgolint/linux-x64@0.22.1': + '@oxlint-tsgolint/linux-x64@7.0.2001': optional: true - '@oxlint-tsgolint/win32-arm64@0.22.1': + '@oxlint-tsgolint/win32-arm64@7.0.2001': optional: true - '@oxlint-tsgolint/win32-x64@0.22.1': + '@oxlint-tsgolint/win32-x64@7.0.2001': optional: true - '@oxlint/binding-android-arm-eabi@1.65.0': + '@oxlint/binding-android-arm-eabi@1.80.0': optional: true - '@oxlint/binding-android-arm64@1.65.0': + '@oxlint/binding-android-arm64@1.80.0': optional: true - '@oxlint/binding-darwin-arm64@1.65.0': + '@oxlint/binding-darwin-arm64@1.80.0': optional: true - '@oxlint/binding-darwin-x64@1.65.0': + '@oxlint/binding-darwin-x64@1.80.0': optional: true - '@oxlint/binding-freebsd-x64@1.65.0': + '@oxlint/binding-freebsd-x64@1.80.0': optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.65.0': + '@oxlint/binding-linux-arm-gnueabihf@1.80.0': optional: true - '@oxlint/binding-linux-arm-musleabihf@1.65.0': + '@oxlint/binding-linux-arm-musleabihf@1.80.0': optional: true - '@oxlint/binding-linux-arm64-gnu@1.65.0': + '@oxlint/binding-linux-arm64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-arm64-musl@1.65.0': + '@oxlint/binding-linux-arm64-musl@1.80.0': optional: true - '@oxlint/binding-linux-ppc64-gnu@1.65.0': + '@oxlint/binding-linux-ppc64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-riscv64-gnu@1.65.0': + '@oxlint/binding-linux-riscv64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-riscv64-musl@1.65.0': + '@oxlint/binding-linux-riscv64-musl@1.80.0': optional: true - '@oxlint/binding-linux-s390x-gnu@1.65.0': + '@oxlint/binding-linux-s390x-gnu@1.80.0': optional: true - '@oxlint/binding-linux-x64-gnu@1.65.0': + '@oxlint/binding-linux-x64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-x64-musl@1.65.0': + '@oxlint/binding-linux-x64-musl@1.80.0': optional: true - '@oxlint/binding-openharmony-arm64@1.65.0': + '@oxlint/binding-openharmony-arm64@1.80.0': optional: true - '@oxlint/binding-win32-arm64-msvc@1.65.0': + '@oxlint/binding-win32-arm64-msvc@1.80.0': optional: true - '@oxlint/binding-win32-ia32-msvc@1.65.0': + '@oxlint/binding-win32-ia32-msvc@1.80.0': optional: true - '@oxlint/binding-win32-x64-msvc@1.65.0': + '@oxlint/binding-win32-x64-msvc@1.80.0': optional: true '@parcel/watcher-android-arm64@2.5.6': @@ -18471,7 +18474,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-better-tailwindcss@4.5.0(@typescript/typescript6@6.0.2)(eslint@10.4.0)(oxlint@1.65.0)(tailwindcss@4.3.0): + eslint-plugin-better-tailwindcss@4.5.0(@typescript/typescript6@6.0.2)(eslint@10.4.0)(oxlint@1.80.0)(tailwindcss@4.3.0): dependencies: '@eslint/css-tree': 4.0.3 '@valibot/to-json-schema': 1.7.0(valibot@1.4.0) @@ -18484,7 +18487,7 @@ snapshots: valibot: 1.4.0(@typescript/typescript6@6.0.2) optionalDependencies: eslint: 10.4.0(jiti@2.7.0)(supports-color@8.1.1) - oxlint: 1.65.0(oxlint-tsgolint@0.22.1) + oxlint: 1.80.0(oxlint-tsgolint@7.0.2001) transitivePeerDependencies: - '@eslint/css' - typescript @@ -21111,37 +21114,37 @@ snapshots: '@oxc-transform/binding-win32-ia32-msvc': 0.131.0 '@oxc-transform/binding-win32-x64-msvc': 0.131.0 - oxlint-tsgolint@0.22.1: + oxlint-tsgolint@7.0.2001: optionalDependencies: - '@oxlint-tsgolint/darwin-arm64': 0.22.1 - '@oxlint-tsgolint/darwin-x64': 0.22.1 - '@oxlint-tsgolint/linux-arm64': 0.22.1 - '@oxlint-tsgolint/linux-x64': 0.22.1 - '@oxlint-tsgolint/win32-arm64': 0.22.1 - '@oxlint-tsgolint/win32-x64': 0.22.1 + '@oxlint-tsgolint/darwin-arm64': 7.0.2001 + '@oxlint-tsgolint/darwin-x64': 7.0.2001 + '@oxlint-tsgolint/linux-arm64': 7.0.2001 + '@oxlint-tsgolint/linux-x64': 7.0.2001 + '@oxlint-tsgolint/win32-arm64': 7.0.2001 + '@oxlint-tsgolint/win32-x64': 7.0.2001 - oxlint@1.65.0(oxlint-tsgolint@0.22.1): + oxlint@1.80.0(oxlint-tsgolint@7.0.2001): optionalDependencies: - '@oxlint/binding-android-arm-eabi': 1.65.0 - '@oxlint/binding-android-arm64': 1.65.0 - '@oxlint/binding-darwin-arm64': 1.65.0 - '@oxlint/binding-darwin-x64': 1.65.0 - '@oxlint/binding-freebsd-x64': 1.65.0 - '@oxlint/binding-linux-arm-gnueabihf': 1.65.0 - '@oxlint/binding-linux-arm-musleabihf': 1.65.0 - '@oxlint/binding-linux-arm64-gnu': 1.65.0 - '@oxlint/binding-linux-arm64-musl': 1.65.0 - '@oxlint/binding-linux-ppc64-gnu': 1.65.0 - '@oxlint/binding-linux-riscv64-gnu': 1.65.0 - '@oxlint/binding-linux-riscv64-musl': 1.65.0 - '@oxlint/binding-linux-s390x-gnu': 1.65.0 - '@oxlint/binding-linux-x64-gnu': 1.65.0 - '@oxlint/binding-linux-x64-musl': 1.65.0 - '@oxlint/binding-openharmony-arm64': 1.65.0 - '@oxlint/binding-win32-arm64-msvc': 1.65.0 - '@oxlint/binding-win32-ia32-msvc': 1.65.0 - '@oxlint/binding-win32-x64-msvc': 1.65.0 - oxlint-tsgolint: 0.22.1 + '@oxlint/binding-android-arm-eabi': 1.80.0 + '@oxlint/binding-android-arm64': 1.80.0 + '@oxlint/binding-darwin-arm64': 1.80.0 + '@oxlint/binding-darwin-x64': 1.80.0 + '@oxlint/binding-freebsd-x64': 1.80.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.80.0 + '@oxlint/binding-linux-arm-musleabihf': 1.80.0 + '@oxlint/binding-linux-arm64-gnu': 1.80.0 + '@oxlint/binding-linux-arm64-musl': 1.80.0 + '@oxlint/binding-linux-ppc64-gnu': 1.80.0 + '@oxlint/binding-linux-riscv64-gnu': 1.80.0 + '@oxlint/binding-linux-riscv64-musl': 1.80.0 + '@oxlint/binding-linux-s390x-gnu': 1.80.0 + '@oxlint/binding-linux-x64-gnu': 1.80.0 + '@oxlint/binding-linux-x64-musl': 1.80.0 + '@oxlint/binding-openharmony-arm64': 1.80.0 + '@oxlint/binding-win32-arm64-msvc': 1.80.0 + '@oxlint/binding-win32-ia32-msvc': 1.80.0 + '@oxlint/binding-win32-x64-msvc': 1.80.0 + oxlint-tsgolint: 7.0.2001 p-cancelable@2.1.1: {} diff --git a/scripts/utils/better-blockmap.d.ts b/scripts/utils/better-blockmap.d.ts index 83c527b348..f8d5f7fbd4 100644 --- a/scripts/utils/better-blockmap.d.ts +++ b/scripts/utils/better-blockmap.d.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: AGPL-3.0-only declare module 'better-blockmap' { - import { Writable } from 'node:stream'; + import type { Writable } from 'node:stream'; type BlockMapOptions = { detectZipBoundary?: boolean; diff --git a/ts/LibSignalStores.node.ts b/ts/LibSignalStores.node.ts index c53062ad3a..a46074fca4 100644 --- a/ts/LibSignalStores.node.ts +++ b/ts/LibSignalStores.node.ts @@ -1,5 +1,6 @@ // Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only +// oxlint-disable max-classes-per-file import lodash from 'lodash'; @@ -107,7 +108,6 @@ export type IdentityKeysOptions = Readonly<{ zone?: Zone; }>; -// oxlint-disable-next-line max-classes-per-file export class IdentityKeys extends IdentityKeyStore { readonly #signalProtocolStore: SignalProtocolStore; readonly #ourServiceId: ServiceIdString; diff --git a/ts/axo/AxoDialog.dom.stories.tsx b/ts/axo/AxoDialog.dom.stories.tsx index 94968138b2..99b060f8c2 100644 --- a/ts/axo/AxoDialog.dom.stories.tsx +++ b/ts/axo/AxoDialog.dom.stories.tsx @@ -185,8 +185,6 @@ function TextInputField(props: { placeholder: string }) { return (
- {/* FIXME */} - {/* oxlint-disable-next-line jsx-a11y/control-has-associated-label */} - {/* FIXME */} - {/* oxlint-disable-next-line jsx-a11y/control-has-associated-label */} - {/* FIXME */} - {/* oxlint-disable-next-line jsx-a11y/control-has-associated-label */} - {/* FIXME */} - {/* oxlint-disable-next-line jsx-a11y/control-has-associated-label */} - {/* FIXME */} - {/* oxlint-disable-next-line jsx-a11y/control-has-associated-label */} - {/* FIXME */} - {/* oxlint-disable-next-line jsx-a11y/control-has-associated-label */} {i18n('icu:photo')} - {/* FIXME */} - {/* oxlint-disable-next-line jsx-a11y/control-has-associated-label */} ({ const getDefaultCall = (overrides: Overrides): ActiveDirectCallType => { return { ...getCommonActiveCallData(overrides), - callMode: CallMode.Direct as CallMode.Direct, + callMode: CallMode.Direct, callState: CallState.Accepted, peekedParticipants: [], hasRemoteAudio: true, diff --git a/ts/components/Checkbox.dom.tsx b/ts/components/Checkbox.dom.tsx index 4cb38801f6..bc80b3e9b5 100644 --- a/ts/components/Checkbox.dom.tsx +++ b/ts/components/Checkbox.dom.tsx @@ -45,8 +45,6 @@ export const Checkbox = forwardRef(function CheckboxInner( const checkboxNode = (
- {/* FIXME */} - {/* oxlint-disable-next-line jsx-a11y/control-has-associated-label */} - {/* FIXME */} - {/* oxlint-disable-next-line jsx-a11y/control-has-associated-label */} { diff --git a/ts/components/CompositionUpload.dom.tsx b/ts/components/CompositionUpload.dom.tsx index 50c0afa2eb..a2864aaa71 100644 --- a/ts/components/CompositionUpload.dom.tsx +++ b/ts/components/CompositionUpload.dom.tsx @@ -62,8 +62,6 @@ export const CompositionUpload = forwardRef( : null; return ( - // FIXME - // oxlint-disable-next-line jsx-a11y/control-has-associated-label ({ if (typeof children === 'function') { buttonNode = ( <> - {(children as (props: RenderButtonProps) => JSX.Element)({ + {children({ onClick: onClick || handleClick, onKeyDown: handleKeyDown, isMenuShowing, diff --git a/ts/components/DebugLogWindow.dom.tsx b/ts/components/DebugLogWindow.dom.tsx index 1ab669dd69..092f7115c1 100644 --- a/ts/components/DebugLogWindow.dom.tsx +++ b/ts/components/DebugLogWindow.dom.tsx @@ -134,8 +134,6 @@ export function DebugLogWindow({

- {/* FIXME */} - {/* oxlint-disable-next-line jsx-a11y/control-has-associated-label */} = memo( )} {wantsToShowVideo && ( - // FIXME - // oxlint-disable-next-line jsx-a11y/control-has-associated-label + {/* oxlint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */} {i18n('icu:lightboxImageAlt')} {image && (
- {/* FIXME */} - {/* oxlint-disable-next-line jsx-a11y/control-has-associated-label */} { const number = parseFloat(value); - onZoomFactorChange(number as unknown as ZoomFactorType); + onZoomFactorChange(number); }, [onZoomFactorChange] ); diff --git a/ts/components/QrCode.dom.tsx b/ts/components/QrCode.dom.tsx index e94a407926..69b4be8167 100644 --- a/ts/components/QrCode.dom.tsx +++ b/ts/components/QrCode.dom.tsx @@ -54,6 +54,7 @@ export function QrCode(props: PropsType): ReactElement { }; return ( + // oxlint-disable-next-line jsx-a11y/no-noninteractive-element-interactions {alt}( }} > {onChange ? ( - // FIXME - // oxlint-disable-next-line jsx-a11y/control-has-associated-label