diff --git a/.gitignore b/.gitignore index 015e13d3de..4ce9e397dc 100644 --- a/.gitignore +++ b/.gitignore @@ -108,8 +108,8 @@ google-services.json # Performance results (Flashlight) .perf/ -# ESLint -.eslintcache +# Oxlint +.oxlintcache # i18n src/locale/locales/_build/ diff --git a/.oxlintrc.json b/.oxlintrc.json new file mode 100644 index 0000000000..63739f1f48 --- /dev/null +++ b/.oxlintrc.json @@ -0,0 +1,407 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": [ + "typescript", + "react", + "import" + ], + "categories": { + "correctness": "off" + }, + "options": { + "typeAware": true + }, + "env": { + "builtin": true + }, + "settings": { + "import-x/extensions": [ + ".ts", + ".tsx", + ".cts", + ".mts", + ".js", + ".jsx", + ".cjs", + ".mjs" + ], + "import-x/external-module-folders": [ + "node_modules", + "node_modules/@types" + ], + "import-x/parsers": { + "@typescript-eslint/parser": [ + ".ts", + ".tsx", + ".cts", + ".mts" + ] + }, + "import-x/resolver": { + "node": { + "extensions": [ + ".js", + ".web.js", + ".ios.js", + ".android.js" + ] + } + } + }, + "ignorePatterns": [ + "**/__mocks__/*.ts", + "ios/**", + "android/**", + "coverage/**", + "*.lock", + ".husky/**", + "patches/**", + "*.html", + "bskyweb/**", + "bskyembed/**", + "bskyogcard/**", + "src/locale/locales/_build/**", + "src/locale/locales/**/*.js", + "*.e2e.ts", + "*.e2e.tsx", + "eslint.config.mjs", + ".jscodeshift/**" + ], + "rules": { + "constructor-super": "error", + "for-direction": "error", + "getter-return": "error", + "no-async-promise-executor": "error", + "no-case-declarations": "error", + "no-class-assign": "error", + "no-compare-neg-zero": "error", + "no-cond-assign": "error", + "no-const-assign": "error", + "no-constant-binary-expression": "error", + "no-constant-condition": "error", + "no-control-regex": "error", + "no-debugger": "error", + "no-delete-var": "error", + "no-dupe-class-members": "error", + "no-dupe-else-if": "error", + "no-dupe-keys": "error", + "no-duplicate-case": "error", + "no-empty": "error", + "no-empty-character-class": "error", + "no-empty-pattern": "error", + "no-empty-static-block": "error", + "no-ex-assign": "error", + "no-extra-boolean-cast": "error", + "no-fallthrough": "error", + "no-func-assign": "error", + "no-global-assign": "error", + "no-import-assign": "error", + "no-invalid-regexp": "error", + "no-irregular-whitespace": "error", + "no-loss-of-precision": "error", + "no-misleading-character-class": "error", + "no-new-native-nonconstructor": "error", + "no-nonoctal-decimal-escape": "error", + "no-obj-calls": "error", + "no-prototype-builtins": "error", + "no-redeclare": "error", + "no-regex-spaces": "error", + "no-self-assign": "error", + "no-setter-return": "error", + "no-shadow-restricted-names": "error", + "no-sparse-arrays": "error", + "no-this-before-super": "error", + "no-unexpected-multiline": "error", + "no-unreachable": "error", + "no-unsafe-finally": "error", + "no-unsafe-negation": "error", + "no-unsafe-optional-chaining": "error", + "no-unused-labels": "error", + "no-unused-private-class-members": "error", + "no-unused-vars": "error", + "no-useless-backreference": "error", + "no-useless-catch": "error", + "no-useless-escape": "error", + "no-with": "error", + "require-yield": "error", + "use-isnan": "error", + "valid-typeof": "error", + "no-array-constructor": "error", + "no-unused-expressions": "error", + "import/namespace": "off", + "import/default": "error", + "import/no-named-as-default": "warn", + "import/no-named-as-default-member": "warn", + "import/no-duplicates": "warn", + "react/rules-of-hooks": "error", + "react/exhaustive-deps": "warn", + "typescript/await-thenable": "error", + "typescript/ban-ts-comment": "error", + "typescript/no-array-delete": "error", + "typescript/no-base-to-string": "error", + "typescript/no-duplicate-enum-values": "error", + "typescript/no-duplicate-type-constituents": "error", + "typescript/no-empty-object-type": "error", + "typescript/no-explicit-any": "error", + "typescript/no-extra-non-null-assertion": "error", + "typescript/no-floating-promises": "error", + "typescript/no-for-in-array": "error", + "typescript/no-implied-eval": "error", + "typescript/no-misused-new": "error", + "typescript/no-misused-promises": "error", + "typescript/no-namespace": "error", + "typescript/no-non-null-asserted-optional-chain": "error", + "typescript/no-redundant-type-constituents": "error", + "typescript/no-require-imports": "error", + "typescript/no-this-alias": "error", + "typescript/no-unnecessary-type-assertion": "error", + "typescript/no-unnecessary-type-constraint": "error", + "typescript/no-unsafe-argument": "error", + "typescript/no-unsafe-assignment": "error", + "typescript/no-unsafe-call": "error", + "typescript/no-unsafe-declaration-merging": "error", + "typescript/no-unsafe-enum-comparison": "error", + "typescript/no-unsafe-function-type": "error", + "typescript/no-unsafe-member-access": "error", + "typescript/no-unsafe-return": "error", + "typescript/no-unsafe-unary-minus": "error", + "typescript/no-wrapper-object-types": "error", + "typescript/only-throw-error": "error", + "typescript/prefer-as-const": "error", + "typescript/prefer-namespace-keyword": "error", + "typescript/prefer-promise-reject-errors": "error", + "typescript/require-await": "error", + "typescript/restrict-plus-operands": "error", + "typescript/restrict-template-expressions": "error", + "typescript/triple-slash-reference": "error", + "typescript/unbound-method": "error" + }, + "overrides": [ + { + "files": [ + "**/*.ts", + "**/*.tsx", + "**/*.mts", + "**/*.cts" + ], + "rules": { + "constructor-super": "off", + "getter-return": "off", + "no-class-assign": "off", + "no-const-assign": "off", + "no-dupe-class-members": "off", + "no-dupe-keys": "off", + "no-func-assign": "off", + "no-import-assign": "off", + "no-new-native-nonconstructor": "off", + "no-obj-calls": "off", + "no-redeclare": "off", + "no-setter-return": "off", + "no-this-before-super": "off", + "no-unreachable": "off", + "no-unsafe-negation": "off", + "no-var": "error", + "no-with": "off", + "prefer-const": "error", + "prefer-rest-params": "error", + "prefer-spread": "error" + } + }, + { + "files": [ + "**/*.{js,jsx,ts,tsx}" + ], + "rules": { + "bsky-internal/avoid-unwrapped-text": [ + "error", + { + "impliedTextComponents": [ + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "P", + "Admonition", + "Admonition.Admonition", + "Toast.Action", + "AgeAssuranceAdmonition", + "Span", + "StackedButton" + ], + "impliedTextProps": [], + "suggestedTextWrappers": { + "Button": "ButtonText", + "ToggleButton.Button": "ToggleButton.ButtonText", + "SegmentedControl.Item": "SegmentedControl.ItemText" + } + } + ], + "bsky-internal/use-exact-imports": "error", + "bsky-internal/use-prefixed-imports": "error", + "bsky-internal/lingui-msg-rule": "error", + "react/display-name": "error", + "react/jsx-key": "error", + "react/jsx-no-comment-textnodes": "error", + "react/jsx-no-duplicate-props": "error", + "react/jsx-no-target-blank": "error", + "react/jsx-no-undef": "error", + "react/no-children-prop": "error", + "react/no-danger-with-children": "error", + "react/no-direct-mutation-state": "error", + "react/no-find-dom-node": "error", + "react/no-is-mounted": "error", + "react/no-render-return-value": "error", + "react/no-string-refs": "error", + "react/no-unescaped-entities": "off", + "react/no-unknown-property": "error", + "react/no-unsafe": "off", + "react/react-in-jsx-scope": "off", + "react/hook-use-state": "warn", + "react-native/no-inline-styles": "off", + "react-native-a11y/has-accessibility-hint": "error", + "react-native-a11y/has-accessibility-props": "error", + "react-native-a11y/has-valid-accessibility-actions": "error", + "react-native-a11y/has-valid-accessibility-component-type": "error", + "react-native-a11y/has-valid-accessibility-descriptors": "error", + "react-native-a11y/has-valid-accessibility-role": "error", + "react-native-a11y/has-valid-accessibility-state": "error", + "react-native-a11y/has-valid-accessibility-states": "error", + "react-native-a11y/has-valid-accessibility-traits": "error", + "react-native-a11y/has-valid-accessibility-value": "error", + "react-native-a11y/no-nested-touchables": "error", + "react-native-a11y/has-valid-accessibility-ignores-invert-colors": "error", + "react-native-a11y/has-valid-accessibility-live-region": "error", + "react-native-a11y/has-valid-important-for-accessibility": "error", + "react-compiler/react-compiler": "warn", + "simple-import-sort/imports": [ + "error", + { + "groups": [ + [ + "^\\u0000" + ], + [ + "^node:" + ], + [ + "^(react\\/(.*)$)|^(react$)|^(react-native(.*)$)", + "^(expo(.*)$)|^(expo$)", + "^(?!(?:alf|components|lib|locale|logger|platform|screens|state|view)(?:$|\\/))@?\\w" + ], + [ + "^(?:#\\/)?(?:lib|state|logger|platform|locale)(?:$|\\/)", + "^(?:#\\/)?view(?:$|\\/)", + "^(?:#\\/)?screens(?:$|\\/)", + "^(?:#\\/)?alf(?:$|\\/)", + "^(?:#\\/)?components(?:$|\\/)", + "^#\\/", + "^\\." + ], + [ + "^" + ] + ] + } + ], + "simple-import-sort/exports": "error", + "no-unused-vars": [ + "error", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_.+", + "caughtErrors": "none", + "ignoreRestSiblings": true + } + ], + "no-restricted-imports": [ + "error", + { + "paths": [ + { + "name": "react", + "importNames": [ + "React", + "default" + ], + "message": "React is already in the global type namespace. Use named imports for runtime modules." + } + ] + } + ], + "no-empty-pattern": "off", + "no-async-promise-executor": "off", + "no-constant-binary-expression": "warn", + "prefer-const": "off", + "no-empty": "off", + "no-unsafe-optional-chaining": "off", + "no-prototype-builtins": "off", + "no-var": "off", + "prefer-rest-params": "off", + "no-case-declarations": "off", + "no-irregular-whitespace": "off", + "no-useless-escape": "off", + "no-sparse-arrays": "off", + "no-fallthrough": "off", + "no-control-regex": "off", + "no-unused-expressions": [ + "error", + { + "allowTernary": true + } + ], + "import/consistent-type-specifier-style": [ + "warn", + "prefer-inline" + ], + "import/no-nodejs-modules": "error", + "typescript/consistent-type-imports": [ + "warn", + { + "prefer": "type-imports", + "fixStyle": "inline-type-imports" + } + ], + "typescript/no-require-imports": "off", + "typescript/ban-ts-comment": "off", + "typescript/no-empty-object-type": "off", + "typescript/no-unsafe-function-type": "off", + "typescript/no-unsafe-assignment": "off", + "typescript/unbound-method": "off", + "typescript/no-unsafe-argument": "off", + "typescript/no-unsafe-return": "off" + }, + "jsPlugins": [ + "eslint-plugin-bsky-internal", + "eslint-plugin-react-native", + "eslint-plugin-react-native-a11y", + "eslint-plugin-react-compiler", + "eslint-plugin-simple-import-sort" + ], + "env": { + "es2026": true, + "browser": true, + "node": true + } + }, + { + "files": [ + "bskyogcard/**/*.{js,jsx,ts,tsx}", + "dev-env/**/*.{js,jsx,ts,tsx}" + ], + "rules": { + "import/no-nodejs-modules": "off" + } + }, + { + "files": [ + "**/__tests__/**/*.{js,jsx,ts,tsx}", + "**/*.test.{js,jsx,ts,tsx}" + ], + "env": { + "jest": true + } + } + ] +} \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md index e26e9e3f86..066eaad914 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -30,7 +30,7 @@ pnpm ios # Run on iOS # Testing & Quality # IMPORTANT: Always use these pnpm scripts, never call the underlying tools directly pnpm test # Run Jest tests -pnpm lint # Run ESLint +pnpm lint # Run Oxlint pnpm typecheck # Run TypeScript type checking pnpm prettier # Run Prettier for code formatting diff --git a/eslint-suppressions.json b/eslint-suppressions.json deleted file mode 100644 index d3db4dfa15..0000000000 --- a/eslint-suppressions.json +++ /dev/null @@ -1,2262 +0,0 @@ -{ - "modules/bottom-sheet/src/BottomSheetNativeComponent.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "modules/expo-background-notification-handler/src/BackgroundNotificationHandlerProvider.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "modules/expo-background-notification-handler/src/ExpoBackgroundNotificationHandlerModule.web.ts": { - "@typescript-eslint/require-await": { - "count": 4 - } - }, - "modules/expo-bluesky-swiss-army/src/PlatformInfo/index.native.ts": { - "@typescript-eslint/no-unsafe-call": { - "count": 3 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 3 - } - }, - "modules/expo-bluesky-swiss-army/src/Referrer/index.android.ts": { - "@typescript-eslint/no-unsafe-call": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "modules/expo-bluesky-swiss-army/src/SharedPrefs/index.native.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 9 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 9 - } - }, - "modules/expo-bluesky-swiss-army/src/VisibilityView/index.native.tsx": { - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "modules/expo-bluesky-swiss-army/src/VisibilityView/index.tsx": { - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/Navigation.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/Splash.android.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/Splash.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/ageAssurance/components/RedirectOverlay.tsx": { - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/alf/util/flatten.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 9 - } - }, - "src/alf/util/systemUI.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/alf/util/useGutters.ts": { - "react-hooks/immutability": { - "count": 5 - } - }, - "src/analytics/PassiveAnalytics.tsx": { - "react-hooks/purity": { - "count": 1 - } - }, - "src/analytics/features/index.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/analytics/identifiers/session.test.ts": { - "@typescript-eslint/no-unsafe-call": { - "count": 9 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 9 - } - }, - "src/analytics/metadata.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/analytics/metrics/client.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 8 - }, - "@typescript-eslint/require-await": { - "count": 5 - } - }, - "src/analytics/metrics/client.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - }, - "@typescript-eslint/no-floating-promises": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/analytics/utils.ts": { - "react-hooks/immutability": { - "count": 1 - } - }, - "src/components/AppLanguageDropdown.tsx": { - "@typescript-eslint/no-unsafe-enum-comparison": { - "count": 1 - } - }, - "src/components/Autocomplete/useAutocomplete/index.ts": { - "react-hooks/immutability": { - "count": 1 - } - }, - "src/components/BotAccountAlert.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/Composer/index.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-redundant-type-constituents": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 7 - }, - "react-hooks/immutability": { - "count": 1 - }, - "react-hooks/refs": { - "count": 1 - } - }, - "src/components/DebugFieldDisplay.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/Dialog/index.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/components/Dialog/index.web.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 3 - }, - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/components/DraggableList/index.web.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/components/EmojiPicker/preload.web.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/components/FeedCard.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/components/FocusScope/index.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - }, - "react-hooks/refs": { - "count": 1 - } - }, - "src/components/InternationalPhoneCodeSelect.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/components/KnownFollowers.tsx": { - "react-hooks/refs": { - "count": 6 - } - }, - "src/components/Lightbox/Lightbox.web.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/components/Lightbox/pager/ImageItem/ImageItem.android.tsx": { - "react-hooks/immutability": { - "count": 1 - } - }, - "src/components/Lightbox/pager/ImageItem/ImageItem.ios.tsx": { - "react-hooks/refs": { - "count": 1 - } - }, - "src/components/LikedByList.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 2 - } - }, - "src/components/Lists.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/components/Menu/types.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/components/Portal.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/components/Post/Embed/ExternalEmbed/ExternalGif.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 3 - } - }, - "src/components/Post/Embed/ImageEmbed.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerWeb.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-enum-comparison": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - }, - "react-hooks/immutability": { - "count": 1 - } - }, - "src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/utils.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 3 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 3 - } - }, - "src/components/PostControls/BookmarkButton.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - } - }, - "src/components/PostControls/DiscoverDebug.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/PostControls/ShareMenu/ShareMenuItems.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 3 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 3 - } - }, - "src/components/PostControls/ShareMenu/index.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/ProfileHoverCard/index.web.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 3 - }, - "@typescript-eslint/require-await": { - "count": 1 - }, - "react-hooks/immutability": { - "count": 1 - }, - "react-hooks/refs": { - "count": 2 - } - }, - "src/components/ProgressGuide/FollowDialog.tsx": { - "react-hooks/refs": { - "count": 2 - } - }, - "src/components/RichTextTag.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/components/Select/index.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/components/Select/index.web.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/components/Select/types.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "src/components/SendErrorReportDialog.tsx": { - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/components/StarterPack/Main/ProfilesList.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/components/StarterPack/ProfileStarterPacks.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - } - }, - "src/components/StarterPack/QrCodeDialog.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 5 - }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - }, - "@typescript-eslint/require-await": { - "count": 4 - } - }, - "src/components/StarterPack/ShareDialog.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - }, - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/components/StarterPack/Wizard/WizardEditListDialog.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/components/Tooltip/index.tsx": { - "@typescript-eslint/no-base-to-string": { - "count": 1 - } - }, - "src/components/Tooltip/index.web.tsx": { - "@typescript-eslint/no-base-to-string": { - "count": 1 - } - }, - "src/components/WhoCanReply.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "react-hooks/refs": { - "count": 1 - } - }, - "src/components/ageAssurance/AgeAssuranceErrors.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/components/ageAssurance/AgeAssuranceInitDialog.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 2 - }, - "react-hooks/purity": { - "count": 1 - } - }, - "src/components/ageAssurance/AgeAssuranceRedirectDialog.tsx": { - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/components/contacts/components/OTPInput.tsx": { - "react-hooks/refs": { - "count": 1 - } - }, - "src/components/contacts/screens/GetContacts.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/contacts/screens/VerifyNumber.tsx": { - "@typescript-eslint/require-await": { - "count": 1 - }, - "react-hooks/purity": { - "count": 1 - } - }, - "src/components/contacts/screens/ViewMatches.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/components/dialogs/DeviceLocationRequestDialog.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/components/dialogs/EmailDialog/components/ResendEmailText.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/dialogs/EmailDialog/data/useAccountEmailState.ts": { - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/components/dialogs/EmailDialog/screens/Manage2FA/Disable.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 3 - } - }, - "src/components/dialogs/EmailDialog/screens/Manage2FA/Enable.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/components/dialogs/EmailDialog/screens/Update.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 3 - } - }, - "src/components/dialogs/EmailDialog/screens/Verify.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 3 - } - }, - "src/components/dialogs/LanguageSelectDialog.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/components/dialogs/LinkWarning.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/dialogs/MutedWords.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-floating-promises": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 3 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - }, - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/components/dialogs/PostInteractionSettingsDialog.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - }, - "react-hooks/preserve-manual-memoization": { - "count": 1 - } - }, - "src/components/dialogs/ServerInput.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/dialogs/StarterPackDialog.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/components/dialogs/SwitchAccount.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/dialogs/lists/CreateListFromStarterPackDialog.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/components/dialogs/lists/CreateOrEditListDialog.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/components/dialogs/nuxs/FindContactsAnnouncement.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/dialogs/nuxs/index.tsx": { - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - }, - "react-hooks/immutability": { - "count": 1 - }, - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/components/forms/DateField/index.web.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/components/forms/SearchInput.tsx": { - "react-hooks/refs": { - "count": 1 - } - }, - "src/components/forms/SegmentedControl.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/components/forms/TextField.tsx": { - "react-hooks/refs": { - "count": 1 - } - }, - "src/components/forms/ToggleButton.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/components/hooks/useFollowMethods.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/components/hooks/useLandingEntry.native.ts": { - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/components/hooks/useLandingEntry.ts": { - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/components/hooks/useRefreshOnFocus.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/hooks/useRichText.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/images/AutoSizedImage.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/components/images/Gallery/index.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 4 - }, - "react-hooks/refs": { - "count": 1 - } - }, - "src/components/images/Gallery/useKeyboardHandlers.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "src/components/images/Gallery/usePointerHandlers.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "src/components/images/ImageLayoutGrid.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/components/images/ImageLayoutGridItem.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/components/intents/VerifyEmailIntentDialog.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/components/interstitials/TrendingVideos.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/components/moderation/ContentHider.tsx": { - "react-hooks/immutability": { - "count": 1 - } - }, - "src/components/moderation/LabelsOnMeDialog.tsx": { - "react-hooks/purity": { - "count": 1 - } - }, - "src/components/moderation/ModerationDetailsDialog.tsx": { - "react-hooks/purity": { - "count": 1 - } - }, - "src/components/verification/VerificationCreatePrompt.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/components/verification/VerificationRemovePrompt.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/features/liveEvents/preferences.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/features/liveNow/index.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "src/geolocation/service.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/lib/ScrollContext.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "src/lib/api/feed/demo.ts": { - "@typescript-eslint/require-await": { - "count": 2 - } - }, - "src/lib/api/feed/posts.ts": { - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/lib/async/retry.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/lib/async/until.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/lib/broadcast/stub.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/lib/custom-animations/CountWheel.web.tsx": { - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/lib/functions.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 25 - } - }, - "src/lib/getUserDisplayName.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/lib/haptics.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/lib/hooks/useAccountSwitcher.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/lib/hooks/useAnimatedValue.ts": { - "react-hooks/refs": { - "count": 1 - } - }, - "src/lib/hooks/useDraggableScrollView.ts": { - "react-hooks/refs": { - "count": 1 - } - }, - "src/lib/hooks/useIntentHandler.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/lib/hooks/useNonReactiveCallback.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 1 - } - }, - "src/lib/hooks/useOTAUpdates.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 4 - } - }, - "src/lib/hooks/usePermissions.ts": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-enum-comparison": { - "count": 5 - } - }, - "src/lib/hooks/usePermissions.web.ts": { - "@typescript-eslint/require-await": { - "count": 3 - } - }, - "src/lib/hooks/useRequireEmailVerification.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/lib/hooks/useTLDs.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/lib/hooks/useToggleMutationQueue.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 2 - } - }, - "src/lib/hooks/useWebScrollRestoration.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "react-hooks/immutability": { - "count": 1 - } - }, - "src/lib/international-telephone-codes.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/lib/link-meta/link-meta.ts": { - "@typescript-eslint/no-unsafe-member-access": { - "count": 9 - } - }, - "src/lib/media/manip.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-floating-promises": { - "count": 5 - } - }, - "src/lib/media/manip.web.ts": { - "@typescript-eslint/prefer-promise-reject-errors": { - "count": 1 - }, - "@typescript-eslint/require-await": { - "count": 3 - } - }, - "src/lib/media/picker.web.tsx": { - "@typescript-eslint/require-await": { - "count": 2 - } - }, - "src/lib/media/save-image.ios.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/lib/media/save-image.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/lib/notifications/notifications.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 5 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-enum-comparison": { - "count": 2 - }, - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/lib/react-query.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - }, - "react-hooks/refs": { - "count": 1 - } - }, - "src/lib/routes/links.ts": { - "@typescript-eslint/no-redundant-type-constituents": { - "count": 1 - } - }, - "src/lib/routes/router.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/lib/routes/types.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/lib/sharing.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/lib/strings/errors.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 14 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 14 - } - }, - "src/lib/translation/index.tsx": { - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/lib/useGetEmojis/getEmojis.ts": { - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/logger/types.ts": { - "@typescript-eslint/no-redundant-type-constituents": { - "count": 1 - } - }, - "src/screens/Deactivated.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/screens/E2E/SharedPreferencesTesterScreen.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 6 - }, - "@typescript-eslint/require-await": { - "count": 6 - } - }, - "src/screens/Feeds/NoFollowingFeed.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/screens/Feeds/NoSavedFeedsOfAnyType.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/Home/NoFeedsPinned.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/List/ListHiddenScreen.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 3 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/Log.tsx": { - "@typescript-eslint/no-unsafe-enum-comparison": { - "count": 2 - } - }, - "src/screens/Login/index.tsx": { - "react-hooks/refs": { - "count": 1 - }, - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/screens/Messages/ChatList.tsx": { - "react-hooks/immutability": { - "count": 1 - } - }, - "src/screens/Moderation/index.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/screens/ModerationInteractionSettings/index.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/screens/Onboarding/StepFinished/ValuePropositionPager.tsx": { - "react-hooks/refs": { - "count": 4 - } - }, - "src/screens/Onboarding/StepFinished/index.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/Onboarding/StepInterests/index.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/screens/Onboarding/StepProfile/index.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/Onboarding/StepSuggestedStarterpacks/StarterPackCard.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/Onboarding/StepSuggestedStarterpacks/index.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/PostThread/components/ThreadItemAnchorFollowButton.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 4 - } - }, - "src/screens/PostThread/index.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 3 - }, - "react-hooks/preserve-manual-memoization": { - "count": 1 - }, - "react-hooks/refs": { - "count": 4 - } - }, - "src/screens/Profile/Header/EditProfileDialog.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/Profile/Header/ProfileHeaderLabeler.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 3 - } - }, - "src/screens/Profile/Header/Shell.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/screens/Profile/KnownFollowers.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 2 - } - }, - "src/screens/Profile/Sections/Feed.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/screens/Profile/components/GermButton.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/screens/Profile/components/ProfileFeedHeader.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 5 - } - }, - "src/screens/ProfileList/FeedSection.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/screens/ProfileList/components/Header.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 3 - } - }, - "src/screens/ProfileList/components/MoreOptionsMenu.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 5 - } - }, - "src/screens/ProfileList/components/SubscribeMenu.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 2 - } - }, - "src/screens/ProfileList/index.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/screens/SavedFeeds.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 2 - } - }, - "src/screens/Search/Shell.tsx": { - "react-hooks/refs": { - "count": 4 - } - }, - "src/screens/Search/modules/ExploreSuggestedAccounts.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/screens/Search/modules/ExploreTrendingTopics.tsx": { - "react-hooks/purity": { - "count": 2 - } - }, - "src/screens/Search/modules/ExploreTrendingVideos.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/screens/Settings/AboutSettings.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/screens/Settings/AppPasswords.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/Settings/AutomationLabelSettings.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/screens/Settings/FindContactsSettings.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-floating-promises": { - "count": 3 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/screens/Settings/InterestsSettings.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/screens/Settings/components/ChangeHandleDialog.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 4 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/Settings/components/ChangePasswordDialog.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/screens/Settings/components/CopyButton.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/screens/Settings/components/DeactivateAccountDialog.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/screens/Settings/components/DeleteAccountDialog.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/screens/Settings/components/DisableEmail2FADialog.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 4 - } - }, - "src/screens/Settings/components/OTAInfo.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/screens/Signup/StepCaptcha/CaptchaWebView.tsx": { - "react-hooks/purity": { - "count": 1 - } - }, - "src/screens/Signup/StepInfo/Policies.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/screens/Signup/StepInfo/index.tsx": { - "react-hooks/refs": { - "count": 3 - } - }, - "src/screens/SignupQueued.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - }, - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/screens/StarterPack/StarterPackLandingScreen.tsx": { - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/screens/StarterPack/StarterPackScreen.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - }, - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/screens/StarterPack/Wizard/StepFeeds.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/StarterPack/Wizard/StepProfiles.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/screens/StarterPack/Wizard/index.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - }, - "@typescript-eslint/require-await": { - "count": 1 - } - }, - "src/state/a11y.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/cache/profile-shadow.ts": { - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/state/cache/thread-mutes.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/state/cache/types.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/state/feed-feedback.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - }, - "react-hooks/refs": { - "count": 2 - } - }, - "src/state/gallery.ts": { - "@typescript-eslint/prefer-promise-reject-errors": { - "count": 1 - } - }, - "src/state/messages/events/agent.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 4 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/state/messages/message-drafts.tsx": { - "react-hooks/refs": { - "count": 1 - } - }, - "src/state/persisted/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/state/persisted/index.web.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 4 - } - }, - "src/state/persisted/util.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/state/preferences/alt-text-required.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/preferences/autoplay.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/preferences/disable-haptics.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/preferences/external-embeds-prefs.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/preferences/hidden-posts.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/preferences/in-app-browser.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/preferences/kawaii.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/state/preferences/languages.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/preferences/large-alt-badge.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/preferences/subtitles.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/preferences/trending.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/preferences/used-starter-packs.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/queries/activity-subscriptions.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/queries/actor-autocomplete.ts": { - "react-hooks/immutability": { - "count": 2 - } - }, - "src/state/queries/app-passwords.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/state/queries/bookmarks/useBookmarkMutation.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/state/queries/bookmarks/useBookmarksQuery.ts": { - "@typescript-eslint/require-await": { - "count": 2 - } - }, - "src/state/queries/explore-feed-previews.tsx": { - "react-hooks/refs": { - "count": 4 - } - }, - "src/state/queries/feed.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/queries/handle.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/queries/list.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 7 - } - }, - "src/state/queries/my-lists.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/state/queries/notifications/feed.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/state/queries/notifications/unread.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 4 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 4 - }, - "react-hooks/refs": { - "count": 1 - } - }, - "src/state/queries/nuxs/definitions.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/state/queries/pinned-post.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/state/queries/post-feed.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - }, - "@typescript-eslint/no-floating-promises": { - "count": 3 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 3 - } - }, - "src/state/queries/postgate/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 3 - }, - "@typescript-eslint/require-await": { - "count": 2 - } - }, - "src/state/queries/preferences/index.ts": { - "react-hooks/immutability": { - "count": 1 - } - }, - "src/state/queries/preferences/useThreadPreferences.ts": { - "react-hooks/refs": { - "count": 2 - } - }, - "src/state/queries/starter-packs.ts": { - "@typescript-eslint/require-await": { - "count": 1 - }, - "react-hooks/immutability": { - "count": 1 - } - }, - "src/state/queries/suggested-follows.ts": { - "@typescript-eslint/no-unused-vars": { - "count": 1 - } - }, - "src/state/queries/threadgate/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-floating-promises": { - "count": 3 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - }, - "@typescript-eslint/require-await": { - "count": 3 - } - }, - "src/state/queries/util.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/state/session/agent.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/state/shell/color-mode.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/state/shell/composer/index.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/shell/onboarding.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 5 - } - }, - "src/state/shell/progress-guide.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-floating-promises": { - "count": 4 - } - }, - "src/state/shell/reminders.ts": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/state/shell/tick-every-minute.tsx": { - "react-hooks/purity": { - "count": 1 - } - }, - "src/storage/archive/index.ts": { - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/storage/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/view/com/auth/SplashScreen.web.tsx": { - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/view/com/composer/Composer.tsx": { - "react-hooks/immutability": { - "count": 2 - }, - "react-hooks/preserve-manual-memoization": { - "count": 3 - }, - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/view/com/composer/SelectMediaButton.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/view/com/composer/drafts/DraftsButton.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/view/com/composer/drafts/state/queries.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/view/com/composer/drafts/state/storage.ts": { - "@typescript-eslint/require-await": { - "count": 3 - } - }, - "src/view/com/composer/photos/EditImageDialog.web.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/view/com/composer/photos/Gallery.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/view/com/composer/photos/OpenCameraBtn.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/view/com/composer/select-language/SuggestedLanguage.tsx": { - "react-hooks/refs": { - "count": 1 - }, - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/view/com/composer/text-input/TextInput.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/view/com/composer/text-input/TextInput.web.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "react-hooks/refs": { - "count": 1 - } - }, - "src/view/com/composer/text-input/web/Autocomplete.tsx": { - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - }, - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/view/com/feeds/ComposerPrompt.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/view/com/feeds/FeedPage.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/view/com/feeds/ProfileFeedgens.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - }, - "@typescript-eslint/no-floating-promises": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 3 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/view/com/lists/MyLists.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 3 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 6 - } - }, - "src/view/com/lists/ProfileLists.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - }, - "@typescript-eslint/no-floating-promises": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 3 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/view/com/notifications/NotificationFeed.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-floating-promises": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 6 - }, - "react-hooks/set-state-in-effect": { - "count": 1 - } - }, - "src/view/com/notifications/NotificationFeedItem.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - }, - "@typescript-eslint/no-misused-promises": { - "count": 3 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/view/com/pager/Pager.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - }, - "react-hooks/refs": { - "count": 1 - } - }, - "src/view/com/pager/Pager.web.tsx": { - "react-hooks/immutability": { - "count": 1 - }, - "react-hooks/preserve-manual-memoization": { - "count": 1 - }, - "react-hooks/refs": { - "count": 1 - } - }, - "src/view/com/pager/PagerWithHeader.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "src/view/com/pager/PagerWithHeader.web.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/view/com/pager/TabBar.tsx": { - "react-hooks/immutability": { - "count": 1 - } - }, - "src/view/com/pager/TabBar.web.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 4 - } - }, - "src/view/com/post-thread/PostLikedBy.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 2 - } - }, - "src/view/com/post-thread/PostQuotes.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/view/com/post-thread/PostRepostedBy.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 2 - } - }, - "src/view/com/posts/FeedShutdownMsg.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - } - }, - "src/view/com/posts/PostFeed.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/view/com/posts/PostFeedErrorMessage.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 8 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 9 - } - }, - "src/view/com/profile/ProfileFollowers.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 2 - } - }, - "src/view/com/profile/ProfileFollows.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 2 - } - }, - "src/view/com/testing/TestCtrls.e2e.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-misused-promises": { - "count": 9 - } - }, - "src/view/com/util/EmptyState.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/view/com/util/ErrorBoundary.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/view/com/util/EventStopper.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/view/com/util/Link.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/view/com/util/LoadingPlaceholder.tsx": { - "react-hooks/purity": { - "count": 1 - } - }, - "src/view/com/util/MainScrollProvider.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "src/view/com/util/UserAvatar.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 3 - } - }, - "src/view/com/util/UserBanner.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 3 - } - }, - "src/view/com/util/Views.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "src/view/com/util/Views.web.tsx": { - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/view/com/util/forms/Button.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - } - }, - "src/view/screens/Feeds.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 3 - }, - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/view/screens/Home.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 1 - } - }, - "src/view/screens/ModerationBlockedAccounts.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 3 - } - }, - "src/view/screens/ModerationMutedAccounts.tsx": { - "@typescript-eslint/no-misused-promises": { - "count": 3 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, - "src/view/screens/Notifications.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 3 - } - }, - "src/view/screens/Storybook/ListContained.tsx": { - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 2 - } - }, - "src/view/shell/Drawer.tsx": { - "@typescript-eslint/no-floating-promises": { - "count": 2 - } - }, - "src/view/shell/createNativeStackNavigatorWithAuth.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, - "@typescript-eslint/no-unsafe-call": { - "count": 1 - }, - "react-hooks/refs": { - "count": 13 - } - }, - "src/view/shell/desktop/Search.tsx": { - "@typescript-eslint/no-unsafe-call": { - "count": 3 - }, - "@typescript-eslint/no-unsafe-member-access": { - "count": 3 - }, - "react-hooks/refs": { - "count": 3 - } - }, - "src/view/shell/index.web.tsx": { - "react-hooks/set-state-in-effect": { - "count": 1 - } - } -} \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs deleted file mode 100644 index d8bf2d6ecb..0000000000 --- a/eslint.config.mjs +++ /dev/null @@ -1,319 +0,0 @@ -// @ts-check -import js from '@eslint/js' -import tseslint from 'typescript-eslint' -import {defineConfig} from 'eslint/config' -import react from 'eslint-plugin-react' -import reactHooks from 'eslint-plugin-react-hooks' -// @ts-expect-error no types -import reactNative from 'eslint-plugin-react-native' -// @ts-expect-error no types -import reactNativeA11y from 'eslint-plugin-react-native-a11y' -import simpleImportSort from 'eslint-plugin-simple-import-sort' -import importX from 'eslint-plugin-import-x' -import lingui from 'eslint-plugin-lingui' -import reactCompiler from 'eslint-plugin-react-compiler' -import bskyInternal from 'eslint-plugin-bsky-internal' -import globals from 'globals' -import tsParser from '@typescript-eslint/parser' - -export default defineConfig( - /** - * Global ignores - */ - { - ignores: [ - '**/__mocks__/*.ts', - 'ios/**', - 'android/**', - 'coverage/**', - '*.lock', - '.husky/**', - 'patches/**', - '*.html', - 'bskyweb/**', - 'bskyembed/**', - 'bskyogcard/**', - 'src/locale/locales/_build/**', - 'src/locale/locales/**/*.js', - '*.e2e.ts', - '*.e2e.tsx', - 'eslint.config.mjs', - 'babel.config.js', - 'metro.config.js', - '.jscodeshift/**', - ], - }, - - /** - * Base configurations - */ - js.configs.recommended, - tseslint.configs.recommendedTypeChecked, - reactHooks.configs.flat.recommended, - importX.flatConfigs.recommended, - importX.flatConfigs.typescript, - importX.flatConfigs['react-native'], - - /** - * Main configuration for all JS/TS/JSX/TSX files - */ - { - files: ['**/*.{js,jsx,ts,tsx}'], - plugins: { - react, - 'react-native': reactNative, - 'react-native-a11y': reactNativeA11y, - 'simple-import-sort': simpleImportSort, - // @ts-expect-error - not sure why - lingui, - 'react-compiler': reactCompiler, - 'bsky-internal': bskyInternal, - }, - languageOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - globals: { - ...globals.browser, - ...globals.node, - }, - parserOptions: { - parser: tsParser, - projectService: true, - tsconfigRootDir: import.meta.dirname, - ecmaFeatures: { - jsx: true, - }, - }, - }, - settings: { - react: { - version: 'detect', - }, - componentWrapperFunctions: ['observer'], - }, - rules: { - /** - * Custom rules - */ - 'bsky-internal/avoid-unwrapped-text': [ - 'error', - { - impliedTextComponents: [ - 'H1', - 'H2', - 'H3', - 'H4', - 'H5', - 'H6', - 'P', - 'Admonition', - 'Admonition.Admonition', - 'Toast.Action', - 'AgeAssuranceAdmonition', - 'Span', - 'StackedButton', - ], - impliedTextProps: [], - suggestedTextWrappers: { - Button: 'ButtonText', - 'ToggleButton.Button': 'ToggleButton.ButtonText', - 'SegmentedControl.Item': 'SegmentedControl.ItemText', - }, - }, - ], - 'bsky-internal/use-exact-imports': 'error', - 'bsky-internal/use-prefixed-imports': 'error', - 'bsky-internal/lingui-msg-rule': 'error', - - /** - * React & React Native - */ - ...react.configs.recommended.rules, - ...react.configs['jsx-runtime'].rules, - 'react/hook-use-state': 'warn', - 'react/no-unescaped-entities': 'off', - 'react/prop-types': 'off', - 'react-native/no-inline-styles': 'off', - ...reactNativeA11y.configs.all.rules, - 'react-compiler/react-compiler': 'warn', - 'react-hooks/set-state-in-effect': 'error', - 'react-hooks/purity': 'error', - 'react-hooks/refs': 'error', - 'react-hooks/immutability': 'error', - - /** - * Import sorting - */ - 'simple-import-sort/imports': [ - 'error', - { - groups: [ - // Side effect imports. - ['^\\u0000'], - // Node.js builtins prefixed with `node:`. - ['^node:'], - // Packages. - // Things that start with a letter (or digit or underscore), or `@` followed by a letter. - // React/React Native prioritized, followed by expo - // Followed by all packages excluding unprefixed relative ones - [ - '^(react\\/(.*)$)|^(react$)|^(react-native(.*)$)', - '^(expo(.*)$)|^(expo$)', - '^(?!(?:alf|components|lib|locale|logger|platform|screens|state|view)(?:$|\\/))@?\\w', - ], - // Relative imports. - // Ideally, anything that starts with a dot or # - // due to unprefixed relative imports being used, we whitelist the relative paths we use - // (?:$|\\/) matches end of string or / - [ - '^(?:#\\/)?(?:lib|state|logger|platform|locale)(?:$|\\/)', - '^(?:#\\/)?view(?:$|\\/)', - '^(?:#\\/)?screens(?:$|\\/)', - '^(?:#\\/)?alf(?:$|\\/)', - '^(?:#\\/)?components(?:$|\\/)', - '^#\\/', - '^\\.', - ], - // anything else - hopefully we don't have any of these - ['^'], - ], - }, - ], - 'simple-import-sort/exports': 'error', - - /** - * Import linting - */ - 'import-x/consistent-type-specifier-style': ['warn', 'prefer-inline'], - 'import-x/no-unresolved': [ - 'error', - { - /* - * The `postinstall` hook runs `compile-if-needed` locally, but not in - * CI. For CI-sake, ignore this. - */ - ignore: ['^#\/locale\/locales\/.+\/messages'], - }, - ], - 'import-x/no-extraneous-dependencies': [ - 'error', - { - whitelist: [ - // test files only - '@jest/globals', - // we only use a really simple util from this, and we know it will be present - 'expo-modules-core', - // this is a dep for @atproto/api, but we absolutely need them in sync, so just - // rely on the transient version - '@atproto/common-web', - ], - }, - ], - 'import-x/no-nodejs-modules': 'error', - - /** - * TypeScript-specific rules - */ - 'no-unused-vars': 'off', // off, we use TS-specific rule below - '@typescript-eslint/no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_.+', - caughtErrors: 'none', - ignoreRestSiblings: true, - }, - ], - '@typescript-eslint/consistent-type-imports': [ - 'warn', - {prefer: 'type-imports', fixStyle: 'inline-type-imports'}, - ], - '@typescript-eslint/no-require-imports': 'off', - '@typescript-eslint/no-unused-expressions': [ - 'error', - { - allowTernary: true, - }, - ], - /** - * Maintain previous behavior via eslint-suppressions.json - these are - * stricter in typescript-eslint v8. `off` ones are a bit too nit-picky. - */ - '@typescript-eslint/no-explicit-any': 'error', - '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/no-empty-object-type': 'off', - '@typescript-eslint/no-unsafe-function-type': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/unbound-method': 'off', - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - '@typescript-eslint/no-unsafe-member-access': 'error', - '@typescript-eslint/no-unsafe-call': 'error', - '@typescript-eslint/no-floating-promises': 'error', - '@typescript-eslint/no-misused-promises': 'error', - '@typescript-eslint/require-await': 'error', - '@typescript-eslint/no-unsafe-enum-comparison': 'error', - '@typescript-eslint/no-unnecessary-type-assertion': 'error', - '@typescript-eslint/no-redundant-type-constituents': 'error', - '@typescript-eslint/no-duplicate-type-constituents': 'error', - '@typescript-eslint/no-base-to-string': 'error', - '@typescript-eslint/prefer-promise-reject-errors': 'error', - '@typescript-eslint/await-thenable': 'error', - - 'no-restricted-imports': [ - 'error', - { - paths: [ - { - name: 'react', - importNames: ['React', 'default'], - message: - 'React is already in the global type namespace. Use named imports for runtime modules.', - }, - ], - }, - ], - - /** - * Turn off rules that we haven't enforced thus far - */ - 'no-empty-pattern': 'off', - 'no-async-promise-executor': 'off', - 'no-constant-binary-expression': 'warn', - 'prefer-const': 'off', - 'no-empty': 'off', - 'no-unsafe-optional-chaining': 'off', - 'no-prototype-builtins': 'off', - 'no-var': 'off', - 'prefer-rest-params': 'off', - 'no-case-declarations': 'off', - 'no-irregular-whitespace': 'off', - 'no-useless-escape': 'off', - 'no-sparse-arrays': 'off', - 'no-fallthrough': 'off', - 'no-control-regex': 'off', - }, - }, - - /** - * bskyogcard, dev-env - server-side, Node.js imports are fine - */ - { - files: ['bskyogcard/**/*.{js,jsx,ts,tsx}', 'dev-env/**/*.{js,jsx,ts,tsx}'], - rules: { - 'import-x/no-nodejs-modules': 'off', - }, - }, - - /** - * Test files configuration - */ - { - files: ['**/__tests__/**/*.{js,jsx,ts,tsx}', '**/*.test.{js,jsx,ts,tsx}'], - languageOptions: { - globals: { - ...globals.jest, - }, - }, - }, -) diff --git a/eslint/__tests__/avoid-unwrapped-text.test.js b/eslint/__disabled_tests__/avoid-unwrapped-text.disabled-test.js similarity index 97% rename from eslint/__tests__/avoid-unwrapped-text.test.js rename to eslint/__disabled_tests__/avoid-unwrapped-text.disabled-test.js index 52138b334a..a24884588c 100644 --- a/eslint/__tests__/avoid-unwrapped-text.test.js +++ b/eslint/__disabled_tests__/avoid-unwrapped-text.disabled-test.js @@ -1,16 +1,11 @@ -const {RuleTester} = require('eslint') -const tseslint = require('typescript-eslint') +const {RuleTester} = require('oxlint/plugins-dev') const avoidUnwrappedText = require('../avoid-unwrapped-text') const ruleTester = new RuleTester({ + eslintCompat: true, languageOptions: { - parser: tseslint.parser, parserOptions: { - ecmaFeatures: { - jsx: true, - }, - ecmaVersion: 'latest', - sourceType: 'module', + lang: 'tsx', }, }, }) diff --git a/eslint/__tests__/lingui-msg-rule.test.js b/eslint/__disabled_tests__/lingui-msg-rule.disabled-test.js similarity index 94% rename from eslint/__tests__/lingui-msg-rule.test.js rename to eslint/__disabled_tests__/lingui-msg-rule.disabled-test.js index 74c94f4142..76caf3271e 100644 --- a/eslint/__tests__/lingui-msg-rule.test.js +++ b/eslint/__disabled_tests__/lingui-msg-rule.disabled-test.js @@ -1,16 +1,11 @@ -const {RuleTester} = require('eslint') -const tseslint = require('typescript-eslint') +const {RuleTester} = require('oxlint/plugins-dev') const linguiMsgRule = require('../lingui-msg-rule') const ruleTester = new RuleTester({ + eslintCompat: true, languageOptions: { - parser: tseslint.parser, parserOptions: { - ecmaFeatures: { - jsx: true, - }, - ecmaVersion: 'latest', - sourceType: 'module', + lang: 'tsx', }, }, }) diff --git a/eslint/__disabled_tests__/note.md b/eslint/__disabled_tests__/note.md new file mode 100644 index 0000000000..c320cb2a41 --- /dev/null +++ b/eslint/__disabled_tests__/note.md @@ -0,0 +1,3 @@ +## Eslint plugin tests + +These are disabled as Oxlint’s RuleTester doesn’t work well with Hermes. diff --git a/oxlint-suppressions.json b/oxlint-suppressions.json new file mode 100644 index 0000000000..685e7144c3 --- /dev/null +++ b/oxlint-suppressions.json @@ -0,0 +1,1958 @@ +{ + "modules/bottom-sheet/src/BottomSheetNativeComponent.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-unsafe-call": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "modules/expo-background-notification-handler/src/BackgroundNotificationHandlerProvider.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "modules/expo-background-notification-handler/src/ExpoBackgroundNotificationHandlerModule.web.ts": { + "typescript/require-await": { + "count": 4 + } + }, + "modules/expo-bluesky-swiss-army/src/PlatformInfo/index.native.ts": { + "typescript/no-unsafe-call": { + "count": 3 + }, + "typescript/no-unsafe-member-access": { + "count": 3 + } + }, + "modules/expo-bluesky-swiss-army/src/Referrer/index.android.ts": { + "typescript/no-unsafe-call": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "modules/expo-bluesky-swiss-army/src/SharedPrefs/index.native.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 9 + }, + "typescript/no-unsafe-member-access": { + "count": 9 + } + }, + "modules/expo-bluesky-swiss-army/src/VisibilityView/index.native.tsx": { + "typescript/no-unsafe-call": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "modules/expo-bluesky-swiss-army/src/VisibilityView/index.tsx": { + "typescript/require-await": { + "count": 1 + } + }, + "src/Navigation.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/Splash.android.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/Splash.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/ageAssurance/components/RedirectOverlay.tsx": { + "typescript/require-await": { + "count": 1 + } + }, + "src/alf/util/flatten.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 9 + } + }, + "src/alf/util/systemUI.ts": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/analytics/features/index.ts": { + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/require-await": { + "count": 1 + } + }, + "src/analytics/identifiers/session.test.ts": { + "typescript/no-unsafe-call": { + "count": 9 + }, + "typescript/no-unsafe-member-access": { + "count": 9 + } + }, + "src/analytics/metadata.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/analytics/metrics/client.test.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 8 + }, + "typescript/require-await": { + "count": 5 + } + }, + "src/analytics/metrics/client.ts": { + "typescript/no-explicit-any": { + "count": 5 + }, + "typescript/no-floating-promises": { + "count": 2 + }, + "typescript/no-unsafe-call": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/components/AppLanguageDropdown.tsx": { + "typescript/no-unsafe-enum-comparison": { + "count": 1 + } + }, + "src/components/BotAccountAlert.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/Composer/index.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-redundant-type-constituents": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 7 + } + }, + "src/components/DebugFieldDisplay.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/Dialog/index.tsx": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/components/Dialog/index.web.tsx": { + "typescript/no-explicit-any": { + "count": 4 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 3 + }, + "typescript/require-await": { + "count": 1 + } + }, + "src/components/DraggableList/index.web.tsx": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/components/EmojiPicker/preload.web.ts": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/components/FeedCard.tsx": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/components/FocusScope/index.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/components/InternationalPhoneCodeSelect.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/components/Lightbox/Lightbox.web.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/components/LikedByList.tsx": { + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/components/Lists.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/components/Menu/types.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/components/Portal.tsx": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/components/Post/Embed/ExternalEmbed/ExternalGif.tsx": { + "typescript/no-floating-promises": { + "count": 3 + } + }, + "src/components/Post/Embed/ImageEmbed.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerWeb.tsx": { + "typescript/no-floating-promises": { + "count": 2 + }, + "typescript/no-unsafe-enum-comparison": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/utils.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 3 + }, + "typescript/no-unsafe-member-access": { + "count": 3 + } + }, + "src/components/PostControls/BookmarkButton.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/components/PostControls/DiscoverDebug.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/PostControls/ShareMenu/ShareMenuItems.tsx": { + "typescript/no-floating-promises": { + "count": 3 + }, + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx": { + "typescript/no-floating-promises": { + "count": 3 + } + }, + "src/components/PostControls/ShareMenu/index.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/ProfileHoverCard/index.web.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 3 + }, + "typescript/require-await": { + "count": 1 + } + }, + "src/components/RichTextTag.tsx": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/components/Select/index.tsx": { + "typescript/no-explicit-any": { + "count": 4 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/components/Select/index.web.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/components/Select/types.ts": { + "typescript/no-explicit-any": { + "count": 3 + } + }, + "src/components/SendErrorReportDialog.tsx": { + "typescript/require-await": { + "count": 1 + } + }, + "src/components/StarterPack/Main/ProfilesList.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/components/StarterPack/ProfileStarterPacks.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/components/StarterPack/QrCodeDialog.tsx": { + "typescript/no-floating-promises": { + "count": 5 + }, + "typescript/no-misused-promises": { + "count": 2 + }, + "typescript/require-await": { + "count": 4 + } + }, + "src/components/StarterPack/ShareDialog.tsx": { + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 2 + }, + "typescript/require-await": { + "count": 1 + } + }, + "src/components/StarterPack/Wizard/WizardEditListDialog.tsx": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/components/Tooltip/index.tsx": { + "typescript/no-base-to-string": { + "count": 1 + } + }, + "src/components/Tooltip/index.web.tsx": { + "typescript/no-base-to-string": { + "count": 1 + } + }, + "src/components/WhoCanReply.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/ageAssurance/AgeAssuranceErrors.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/components/ageAssurance/AgeAssuranceInitDialog.tsx": { + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/components/ageAssurance/AgeAssuranceRedirectDialog.tsx": { + "typescript/require-await": { + "count": 1 + } + }, + "src/components/contacts/screens/GetContacts.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/contacts/screens/VerifyNumber.tsx": { + "typescript/require-await": { + "count": 1 + } + }, + "src/components/contacts/screens/ViewMatches.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/components/dialogs/DeviceLocationRequestDialog.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/components/dialogs/EmailDialog/components/ResendEmailText.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/dialogs/EmailDialog/screens/Manage2FA/Disable.tsx": { + "typescript/no-misused-promises": { + "count": 3 + } + }, + "src/components/dialogs/EmailDialog/screens/Manage2FA/Enable.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/components/dialogs/EmailDialog/screens/Update.tsx": { + "typescript/no-misused-promises": { + "count": 3 + } + }, + "src/components/dialogs/EmailDialog/screens/Verify.tsx": { + "typescript/no-misused-promises": { + "count": 3 + } + }, + "src/components/dialogs/LanguageSelectDialog.tsx": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/components/dialogs/LinkWarning.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/dialogs/MutedWords.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-floating-promises": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 3 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + }, + "typescript/require-await": { + "count": 1 + } + }, + "src/components/dialogs/PostInteractionSettingsDialog.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/components/dialogs/ServerInput.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/dialogs/StarterPackDialog.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/components/dialogs/SwitchAccount.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/dialogs/lists/CreateListFromStarterPackDialog.tsx": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/components/dialogs/lists/CreateOrEditListDialog.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/components/dialogs/nuxs/FindContactsAnnouncement.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/dialogs/nuxs/index.tsx": { + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/components/forms/DateField/index.web.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/components/forms/SegmentedControl.tsx": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/components/forms/ToggleButton.tsx": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/components/hooks/useFollowMethods.ts": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/components/hooks/useRefreshOnFocus.ts": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/hooks/useRichText.ts": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/images/AutoSizedImage.tsx": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/components/images/Gallery/index.tsx": { + "typescript/no-explicit-any": { + "count": 5 + }, + "typescript/no-unsafe-call": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 4 + } + }, + "src/components/images/Gallery/useKeyboardHandlers.ts": { + "typescript/no-explicit-any": { + "count": 6 + } + }, + "src/components/images/Gallery/usePointerHandlers.ts": { + "typescript/no-explicit-any": { + "count": 6 + } + }, + "src/components/images/ImageLayoutGrid.tsx": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/components/images/ImageLayoutGridItem.tsx": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/components/intents/VerifyEmailIntentDialog.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/components/interstitials/TrendingVideos.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/components/verification/VerificationCreatePrompt.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/components/verification/VerificationRemovePrompt.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/features/liveEvents/preferences.ts": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/features/liveNow/index.tsx": { + "typescript/no-explicit-any": { + "count": 3 + } + }, + "src/geolocation/service.ts": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/lib/ScrollContext.tsx": { + "typescript/no-explicit-any": { + "count": 3 + } + }, + "src/lib/api/feed/demo.ts": { + "typescript/require-await": { + "count": 2 + } + }, + "src/lib/api/feed/posts.ts": { + "typescript/require-await": { + "count": 1 + } + }, + "src/lib/async/retry.ts": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/lib/async/until.ts": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/lib/broadcast/stub.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/lib/functions.ts": { + "typescript/no-explicit-any": { + "count": 6 + }, + "typescript/no-unsafe-call": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 25 + } + }, + "src/lib/getUserDisplayName.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/lib/haptics.ts": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/lib/hooks/useAccountSwitcher.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/lib/hooks/useIntentHandler.ts": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/lib/hooks/useNonReactiveCallback.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 1 + } + }, + "src/lib/hooks/useOTAUpdates.ts": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 4 + } + }, + "src/lib/hooks/usePermissions.ts": { + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-enum-comparison": { + "count": 5 + } + }, + "src/lib/hooks/usePermissions.web.ts": { + "typescript/require-await": { + "count": 3 + } + }, + "src/lib/hooks/useRequireEmailVerification.tsx": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/lib/hooks/useTLDs.ts": { + "import/default": { + "count": 1 + }, + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/lib/hooks/useToggleMutationQueue.ts": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 2 + } + }, + "src/lib/hooks/useWebScrollRestoration.ts": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/lib/international-telephone-codes.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/lib/link-meta/link-meta.ts": { + "typescript/no-unsafe-member-access": { + "count": 9 + } + }, + "src/lib/media/manip.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-floating-promises": { + "count": 5 + } + }, + "src/lib/media/manip.web.ts": { + "typescript/prefer-promise-reject-errors": { + "count": 1 + }, + "typescript/require-await": { + "count": 3 + } + }, + "src/lib/media/picker.web.tsx": { + "typescript/require-await": { + "count": 2 + } + }, + "src/lib/media/save-image.ios.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/lib/media/save-image.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/lib/notifications/notifications.ts": { + "typescript/no-floating-promises": { + "count": 5 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-enum-comparison": { + "count": 2 + }, + "typescript/require-await": { + "count": 1 + } + }, + "src/lib/react-query.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/lib/routes/links.ts": { + "typescript/no-redundant-type-constituents": { + "count": 1 + } + }, + "src/lib/routes/router.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/lib/routes/types.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/lib/sharing.ts": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/lib/strings/email.ts": { + "import/default": { + "count": 1 + } + }, + "src/lib/strings/errors.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 14 + }, + "typescript/no-unsafe-member-access": { + "count": 14 + } + }, + "src/lib/useGetEmojis/getEmojis.ts": { + "typescript/require-await": { + "count": 1 + } + }, + "src/logger/types.ts": { + "typescript/no-redundant-type-constituents": { + "count": 1 + } + }, + "src/screens/Deactivated.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/screens/E2E/SharedPreferencesTesterScreen.tsx": { + "typescript/no-misused-promises": { + "count": 6 + }, + "typescript/require-await": { + "count": 6 + } + }, + "src/screens/Feeds/NoFollowingFeed.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/screens/Feeds/NoSavedFeedsOfAnyType.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/Home/NoFeedsPinned.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/List/ListHiddenScreen.tsx": { + "typescript/no-floating-promises": { + "count": 3 + }, + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/Log.tsx": { + "typescript/no-unsafe-enum-comparison": { + "count": 2 + } + }, + "src/screens/Moderation/index.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/screens/ModerationInteractionSettings/index.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/screens/Onboarding/StepFinished/index.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/Onboarding/StepInterests/index.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/require-await": { + "count": 1 + } + }, + "src/screens/Onboarding/StepProfile/index.tsx": { + "typescript/no-floating-promises": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/Onboarding/StepSuggestedStarterpacks/StarterPackCard.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/Onboarding/StepSuggestedStarterpacks/index.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/PostThread/components/ThreadItemAnchorFollowButton.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-unsafe-call": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 4 + } + }, + "src/screens/PostThread/index.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 3 + } + }, + "src/screens/Profile/Header/EditProfileDialog.tsx": { + "typescript/no-explicit-any": { + "count": 3 + }, + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/Profile/Header/ProfileHeaderLabeler.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 3 + } + }, + "src/screens/Profile/Header/Shell.tsx": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/screens/Profile/KnownFollowers.tsx": { + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/screens/Profile/Sections/Feed.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/screens/Profile/components/GermButton.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/screens/Profile/components/ProfileFeedHeader.tsx": { + "typescript/no-misused-promises": { + "count": 5 + } + }, + "src/screens/ProfileList/FeedSection.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/screens/ProfileList/components/Header.tsx": { + "typescript/no-misused-promises": { + "count": 3 + } + }, + "src/screens/ProfileList/components/MoreOptionsMenu.tsx": { + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 5 + } + }, + "src/screens/ProfileList/components/SubscribeMenu.tsx": { + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/screens/ProfileList/index.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/screens/SavedFeeds.tsx": { + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/screens/Search/modules/ExploreSuggestedAccounts.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/screens/Search/modules/ExploreTrendingVideos.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/screens/Settings/AboutSettings.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/screens/Settings/AppPasswords.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/Settings/AutomationLabelSettings.tsx": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/screens/Settings/FindContactsSettings.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-floating-promises": { + "count": 3 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/require-await": { + "count": 1 + } + }, + "src/screens/Settings/InterestsSettings.tsx": { + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/require-await": { + "count": 1 + } + }, + "src/screens/Settings/components/ChangeHandleDialog.tsx": { + "typescript/no-floating-promises": { + "count": 4 + }, + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/Settings/components/ChangePasswordDialog.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 2 + }, + "typescript/no-unsafe-call": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/screens/Settings/components/CopyButton.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/screens/Settings/components/DeactivateAccountDialog.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/screens/Settings/components/DeleteAccountDialog.tsx": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/screens/Settings/components/DisableEmail2FADialog.tsx": { + "typescript/no-misused-promises": { + "count": 4 + } + }, + "src/screens/Settings/components/OTAInfo.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/screens/Signup/StepInfo/Policies.tsx": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/screens/Signup/StepInfo/index.tsx": { + "import/default": { + "count": 1 + } + }, + "src/screens/SignupQueued.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 2 + }, + "typescript/no-unsafe-call": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/screens/StarterPack/StarterPackLandingScreen.tsx": { + "typescript/no-unsafe-call": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/screens/StarterPack/StarterPackScreen.tsx": { + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 2 + }, + "typescript/require-await": { + "count": 1 + } + }, + "src/screens/StarterPack/Wizard/StepFeeds.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/StarterPack/Wizard/StepProfiles.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/screens/StarterPack/Wizard/index.tsx": { + "typescript/no-floating-promises": { + "count": 2 + }, + "typescript/require-await": { + "count": 1 + } + }, + "src/state/a11y.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/cache/thread-mutes.tsx": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/state/cache/types.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/state/feed-feedback.tsx": { + "typescript/no-explicit-any": { + "count": 3 + } + }, + "src/state/gallery.ts": { + "typescript/prefer-promise-reject-errors": { + "count": 1 + } + }, + "src/state/messages/events/agent.ts": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 4 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/state/persisted/index.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/state/persisted/index.web.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 4 + } + }, + "src/state/persisted/util.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/state/preferences/alt-text-required.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/preferences/autoplay.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/preferences/disable-haptics.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/preferences/external-embeds-prefs.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/preferences/hidden-posts.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/preferences/in-app-browser.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/preferences/kawaii.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/preferences/languages.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/preferences/large-alt-badge.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/preferences/subtitles.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/preferences/trending.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/preferences/used-starter-packs.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/queries/activity-subscriptions.ts": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/queries/app-passwords.ts": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/state/queries/bookmarks/useBookmarkMutation.ts": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/state/queries/bookmarks/useBookmarksQuery.ts": { + "typescript/require-await": { + "count": 2 + } + }, + "src/state/queries/feed.ts": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/queries/handle.ts": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/queries/list.ts": { + "typescript/no-floating-promises": { + "count": 7 + } + }, + "src/state/queries/my-lists.ts": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/state/queries/notifications/feed.ts": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/state/queries/notifications/unread.tsx": { + "typescript/no-floating-promises": { + "count": 4 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 4 + } + }, + "src/state/queries/nuxs/definitions.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/state/queries/pinned-post.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/state/queries/post-feed.ts": { + "typescript/no-explicit-any": { + "count": 3 + }, + "typescript/no-floating-promises": { + "count": 3 + }, + "typescript/no-unsafe-member-access": { + "count": 3 + } + }, + "src/state/queries/postgate/index.ts": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 3 + }, + "typescript/require-await": { + "count": 2 + } + }, + "src/state/queries/starter-packs.ts": { + "typescript/require-await": { + "count": 1 + } + }, + "src/state/queries/suggested-follows.ts": { + "no-unused-vars": { + "count": 1 + } + }, + "src/state/queries/threadgate/index.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-floating-promises": { + "count": 3 + }, + "typescript/no-unsafe-call": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + }, + "typescript/require-await": { + "count": 3 + } + }, + "src/state/queries/util.ts": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/state/session/agent.ts": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/state/shell/color-mode.tsx": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/state/shell/composer/index.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/state/shell/onboarding.tsx": { + "typescript/no-floating-promises": { + "count": 5 + } + }, + "src/state/shell/progress-guide.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-floating-promises": { + "count": 4 + } + }, + "src/state/shell/reminders.ts": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/storage/archive/index.ts": { + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/storage/index.ts": { + "typescript/no-explicit-any": { + "count": 8 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/view/com/composer/SelectMediaButton.tsx": { + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/view/com/composer/drafts/DraftsButton.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/view/com/composer/drafts/state/queries.ts": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/view/com/composer/drafts/state/storage.ts": { + "typescript/require-await": { + "count": 3 + } + }, + "src/view/com/composer/photos/EditImageDialog.web.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/view/com/composer/photos/Gallery.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/view/com/composer/photos/OpenCameraBtn.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/view/com/composer/text-input/TextInput.tsx": { + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/view/com/composer/text-input/TextInput.web.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/view/com/composer/text-input/web/Autocomplete.tsx": { + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/view/com/feeds/ComposerPrompt.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/view/com/feeds/FeedPage.tsx": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/view/com/feeds/ProfileFeedgens.tsx": { + "typescript/no-explicit-any": { + "count": 3 + }, + "typescript/no-floating-promises": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 3 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/view/com/lists/MyLists.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 3 + }, + "typescript/no-unsafe-member-access": { + "count": 6 + } + }, + "src/view/com/lists/ProfileLists.tsx": { + "typescript/no-explicit-any": { + "count": 3 + }, + "typescript/no-floating-promises": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 3 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/view/com/notifications/NotificationFeed.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-floating-promises": { + "count": 1 + }, + "typescript/no-misused-promises": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 6 + } + }, + "src/view/com/notifications/NotificationFeedItem.tsx": { + "typescript/no-explicit-any": { + "count": 3 + }, + "typescript/no-misused-promises": { + "count": 3 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/view/com/pager/Pager.tsx": { + "typescript/no-explicit-any": { + "count": 4 + } + }, + "src/view/com/pager/PagerWithHeader.tsx": { + "typescript/no-explicit-any": { + "count": 3 + } + }, + "src/view/com/pager/PagerWithHeader.web.tsx": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/view/com/pager/TabBar.web.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 4 + } + }, + "src/view/com/post-thread/PostLikedBy.tsx": { + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/view/com/post-thread/PostQuotes.tsx": { + "typescript/no-misused-promises": { + "count": 2 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/view/com/post-thread/PostRepostedBy.tsx": { + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/view/com/posts/FeedShutdownMsg.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/view/com/posts/PostFeed.tsx": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/view/com/posts/PostFeedErrorMessage.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 8 + }, + "typescript/no-unsafe-member-access": { + "count": 9 + } + }, + "src/view/com/profile/ProfileFollowers.tsx": { + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/view/com/profile/ProfileFollows.tsx": { + "typescript/no-misused-promises": { + "count": 2 + } + }, + "src/view/com/util/EmptyState.tsx": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/view/com/util/ErrorBoundary.tsx": { + "typescript/no-explicit-any": { + "count": 2 + }, + "typescript/no-unsafe-call": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/view/com/util/EventStopper.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/view/com/util/Link.tsx": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/view/com/util/MainScrollProvider.tsx": { + "typescript/no-explicit-any": { + "count": 2 + } + }, + "src/view/com/util/UserAvatar.tsx": { + "typescript/no-misused-promises": { + "count": 3 + } + }, + "src/view/com/util/UserBanner.tsx": { + "typescript/no-misused-promises": { + "count": 3 + } + }, + "src/view/com/util/Views.tsx": { + "react/display-name": { + "count": 1 + }, + "typescript/no-explicit-any": { + "count": 1 + } + }, + "src/view/com/util/Views.web.tsx": { + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/view/com/util/forms/Button.tsx": { + "typescript/no-misused-promises": { + "count": 1 + } + }, + "src/view/screens/Feeds.tsx": { + "typescript/no-floating-promises": { + "count": 3 + }, + "typescript/no-misused-promises": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/view/screens/Home.tsx": { + "typescript/no-floating-promises": { + "count": 1 + } + }, + "src/view/screens/ModerationBlockedAccounts.tsx": { + "typescript/no-misused-promises": { + "count": 3 + } + }, + "src/view/screens/ModerationMutedAccounts.tsx": { + "typescript/no-misused-promises": { + "count": 3 + }, + "typescript/no-unsafe-member-access": { + "count": 1 + } + }, + "src/view/screens/Notifications.tsx": { + "typescript/no-floating-promises": { + "count": 3 + } + }, + "src/view/screens/Storybook/ListContained.tsx": { + "typescript/no-unsafe-call": { + "count": 1 + }, + "typescript/no-unsafe-member-access": { + "count": 2 + } + }, + "src/view/shell/Drawer.tsx": { + "typescript/no-floating-promises": { + "count": 2 + } + }, + "src/view/shell/createNativeStackNavigatorWithAuth.tsx": { + "typescript/no-explicit-any": { + "count": 1 + }, + "typescript/no-unsafe-call": { + "count": 1 + } + }, + "src/view/shell/desktop/Search.tsx": { + "typescript/no-unsafe-call": { + "count": 3 + }, + "typescript/no-unsafe-member-access": { + "count": 3 + } + } +} \ No newline at end of file diff --git a/package.json b/package.json index ec3fea40b2..0ffd9d742e 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "test-watch": "NODE_ENV=test jest --watchAll", "test-ci": "NODE_ENV=test jest --ci --forceExit --reporters=default --reporters=jest-junit", "test-coverage": "NODE_ENV=test jest --coverage", - "lint": "eslint --cache --quiet src modules", + "lint": "oxlint --quiet src modules", "lint-native": "swiftlint ./modules && ktlint ./modules", "lint-native:fix": "swiftlint --fix ./modules && ktlint --format ./modules", "typecheck": "tsgo --project ./tsconfig.check.json", @@ -256,7 +256,6 @@ "@babel/preset-env": "^7.26.0", "@babel/runtime": "^7.26.0", "@crowdin/cli": "^4.14.1", - "@eslint/js": "^9.39.2", "@lingui/babel-plugin-lingui-macro": "^5.9.2", "@lingui/cli": "^5.9.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", @@ -276,14 +275,8 @@ "babel-plugin-module-resolver": "^5.0.2", "babel-plugin-react-compiler": "19.1.0-rc.3", "babel-preset-expo": "~54.0.10", - "eslint": "^9.39.2", - "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-bsky-internal": "link:eslint", - "eslint-plugin-import-x": "^4.16.2", - "eslint-plugin-lingui": "^0.12.0", - "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-compiler": "19.1.0-rc.2", - "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-react-native": "^5.0.0", "eslint-plugin-react-native-a11y": "^3.5.1", "eslint-plugin-simple-import-sort": "^13.0.0", @@ -295,13 +288,14 @@ "jest-expo": "~54.0.17", "jest-junit": "^16.0.0", "lint-staged": "^17.0.8", + "oxlint": "^1.73.0", + "oxlint-tsgolint": "^0.24.0", "prettier": "^3.8.3", "react-native-dotenv": "^3.4.11", "react-refresh": "^0.14.0", "svgo": "^3.3.2", "ts-plugin-sort-import-suggestions": "^1.0.4", "typescript": "^6.0.2", - "typescript-eslint": "^8.58.0", "webpack-bundle-analyzer": "^4.10.1" }, "jest": { @@ -366,7 +360,7 @@ }, "lint-staged": { "*{.js,.jsx,.ts,.tsx}": [ - "eslint --cache --fix" + "oxlint --fix" ], "*{.js,.jsx,.ts,.tsx,.css}": [ "prettier --cache --write --ignore-unknown" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5adda5ff52..f6bd990946 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -725,9 +725,6 @@ importers: '@crowdin/cli': specifier: ^4.14.1 version: 4.14.2 - '@eslint/js': - specifier: ^9.39.2 - version: 9.39.4 '@lingui/babel-plugin-lingui-macro': specifier: ^5.9.2 version: 5.9.5(typescript@6.0.3) @@ -785,39 +782,21 @@ importers: babel-preset-expo: specifier: ~54.0.10 version: 54.0.10(@babel/core@7.29.0)(@babel/runtime@7.29.2)(expo@54.0.34(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.5(patch_hash=2656ac6deb71b92a4df4af4593d13ace6a5740936432e5e7e8ef32bc3cd05194)(@babel/core@7.29.0)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(patch_hash=2656ac6deb71b92a4df4af4593d13ace6a5740936432e5e7e8ef32bc3cd05194)(@babel/core@7.29.0)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-refresh@0.14.2) - eslint: - specifier: ^9.39.2 - version: 9.39.4(jiti@2.7.0) - eslint-import-resolver-typescript: - specifier: ^4.4.4 - version: 4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)) eslint-plugin-bsky-internal: specifier: link:eslint version: link:eslint - eslint-plugin-import-x: - specifier: ^4.16.2 - version: 4.16.2(@typescript-eslint/utils@8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0)) - eslint-plugin-lingui: - specifier: ^0.12.0 - version: 0.12.0(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) - eslint-plugin-react: - specifier: ^7.37.5 - version: 7.37.5(eslint@9.39.4(jiti@2.7.0)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 - version: 19.1.0-rc.2(eslint@9.39.4(jiti@2.7.0)) - eslint-plugin-react-hooks: - specifier: ^7.1.1 - version: 7.1.1(eslint@9.39.4(jiti@2.7.0)) + version: 19.1.0-rc.2(eslint@eslint) eslint-plugin-react-native: specifier: ^5.0.0 - version: 5.0.0(eslint@9.39.4(jiti@2.7.0)) + version: 5.0.0(eslint@eslint) eslint-plugin-react-native-a11y: specifier: ^3.5.1 - version: 3.5.1(eslint@9.39.4(jiti@2.7.0)) + version: 3.5.1(eslint@eslint) eslint-plugin-simple-import-sort: specifier: ^13.0.0 - version: 13.0.0(eslint@9.39.4(jiti@2.7.0)) + version: 13.0.0(eslint@eslint) file-loader: specifier: 6.2.0 version: 6.2.0(webpack@5.106.2(postcss@8.5.14)) @@ -845,6 +824,12 @@ importers: node: specifier: runtime:^24.18.0 version: runtime:24.18.0 + oxlint: + specifier: ^1.73.0 + version: 1.73.0(oxlint-tsgolint@0.24.0) + oxlint-tsgolint: + specifier: ^0.24.0 + version: 0.24.0 prettier: specifier: ^3.8.3 version: 3.8.3 @@ -863,9 +848,6 @@ importers: typescript: specifier: ^6.0.2 version: 6.0.3 - typescript-eslint: - specifier: ^8.58.0 - version: 8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) webpack-bundle-analyzer: specifier: ^4.10.1 version: 4.10.2 @@ -1710,15 +1692,6 @@ packages: resolution: {integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==} engines: {node: '>=0.8.0'} - '@emnapi/core@1.10.0': - resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - - '@emnapi/runtime@1.10.0': - resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - - '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - '@emoji-mart/data@1.2.1': resolution: {integrity: sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==} @@ -1884,44 +1857,6 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.2': - resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.21.2': - resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.5': - resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.39.4': - resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@expo/cli@54.0.24': resolution: {integrity: sha512-5xse1bEgnVUBhOrtttc6xTNJVvjyTRavpzuF0/0nuj+312vfSbk7EiRbG+xJ2pW/iZxnhLPJkFCrPYG0nmheAQ==} hasBin: true @@ -2103,26 +2038,6 @@ packages: resolution: {integrity: sha512-mUaMsgeUTpRIUOTn33EUXHRK6j7pxBjwqH4WpQyq+pukjd1AIzWlEa6w7i6bInJUcweGgP2beXZmaP6b6UPn7A==} engines: {node: '>=10'} - '@humanfs/core@0.19.2': - resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.8': - resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} - engines: {node: '>=18.18.0'} - - '@humanfs/types@0.15.0': - resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} - '@ide/backoff@1.0.0': resolution: {integrity: sha512-F0YfUDjvT+Mtt/R4xdl2X0EYCHMMiJqNLdxHD++jDT5ydEFIyqbCHh51Qx2E211dgZprPKhV7sHmnXKpLuvc5g==} @@ -2315,9 +2230,6 @@ packages: '@messageformat/parser@5.1.1': resolution: {integrity: sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg==} - '@napi-rs/wasm-runtime@0.2.12': - resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2330,8 +2242,157 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@package-json/types@0.0.12': - resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==} + '@oxlint-tsgolint/darwin-arm64@0.24.0': + resolution: {integrity: sha512-C2uMmwK5Bc4ri4ysZ6sA8Rcu+A5zBQTp6ml2u0CLLbRZp4kMFPV3yWk8B5DK9Aw7y9bbjogIm75tUwGLFzlsYQ==} + cpu: [arm64] + os: [darwin] + + '@oxlint-tsgolint/darwin-x64@0.24.0': + resolution: {integrity: sha512-Wgvt/1lRbDxmoNqWQKKcL+UIiqLmdJ+EWLpQa1qzoNVAfNB0PJpa82/8dH1twT/3rSs4zrP5TXPWl4juB71WuQ==} + cpu: [x64] + os: [darwin] + + '@oxlint-tsgolint/linux-arm64@0.24.0': + resolution: {integrity: sha512-PB1rxII7KV83+ASY4sSkXtqvpij6ME66+QCRL49uksi/ofs2Rf/UVboYr095n0Rkbl2wgvlsHGl6DHC361jQUQ==} + cpu: [arm64] + os: [linux] + + '@oxlint-tsgolint/linux-x64@0.24.0': + resolution: {integrity: sha512-xcz3CxKmjTQLREtE/UShh+ruWmm9nAb7UM9zKcD65BStiuYgOakAKkPHl4YS5DztpVcDrE0+HqbOolTlRKYWmw==} + cpu: [x64] + os: [linux] + + '@oxlint-tsgolint/win32-arm64@0.24.0': + resolution: {integrity: sha512-A2i6ZGBec3i20S7RaxkgHc6r3HYtD5Mn7j/mb22NkTz14u0JuudvTu6JggAnbGMcv8+dBKQI//EasxSPJLD8pw==} + cpu: [arm64] + os: [win32] + + '@oxlint-tsgolint/win32-x64@0.24.0': + resolution: {integrity: sha512-0ZbGd9qRB6zs82moekaKdEvncRANq49EAwfNX62JpTS46feXUhKAuoyVDvZMj6Rywejylrmmu79Wo6faYCo4Ew==} + cpu: [x64] + os: [win32] + + '@oxlint/binding-android-arm-eabi@1.73.0': + resolution: {integrity: sha512-HZQRN/UMBu+Ut+/9MiAChkbP4qZqrNOWBcNI45vOT40GVhbGR0JgHB87L48D4iAqFQIdVmeQYtV9RF89AjTKkg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxlint/binding-android-arm64@1.73.0': + resolution: {integrity: sha512-Gp+KJRylv2aW7thRpG5p1KTxZq4ZJFbWowrKzufNq9d3ssl3r3JviYV45/+p+7CN1Nv0zDd1e8Ex0b/HUDq4TQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxlint/binding-darwin-arm64@1.73.0': + resolution: {integrity: sha512-3de96NdtXhxERMjIz7wsp2HYMY6pMQycGxFWac2mFecAx6VeARF/IqFb1QIaqiCRIdfzBwzTed+pCTCoiS+CYA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.73.0': + resolution: {integrity: sha512-5zx/uPW32TiaOeVY1dQ/H5iOf0K1HOdFKOJhLqGl4o63+i1fpzoqqu/mKtd7OFgFjNCdhlyTGgjVkQTZm1ELcg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-freebsd-x64@1.73.0': + resolution: {integrity: sha512-qNe4gKHaGnLuZJ8toUg90JAa0S2vTVvDw+0bRi3q1avXZXDT4u5mMeECf3nD4HYrbdn1O7dXqWut4onY/yx/Xg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-linux-arm-gnueabihf@1.73.0': + resolution: {integrity: sha512-cCehYh5hTbfShm/fxTD6wwrGUWIpvX+N5OxmAMhFhDeTGXvw+BeNj889tpxsFQ9ZLatQ6wImuY8tsKLZ+FMz7w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.73.0': + resolution: {integrity: sha512-d5j5GDU/2dMgjVhw7TQT9ITrsIr1Y02KEXKyVGIXUkD+KiaxE9TP65FS2ZdgTBemQvoRL+gSBdbrIm3cQIeacg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.73.0': + resolution: {integrity: sha512-Eyf1SrP3+yR1DI3OJgOY2Pvrr9dWP9TK37xPaDYycwTtlGlI45erJAVIfH5/m/xosDt6BupJYEFi47bvbTuuyw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-arm64-musl@1.73.0': + resolution: {integrity: sha512-IlT/OJApEDKaMmCooHuncgJZbbCe7T5QIWmTZBEtYscWvzPQuuEinVcid6kwQRVQOUdb7PUCz4jQHnaYXdfJXw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-ppc64-gnu@1.73.0': + resolution: {integrity: sha512-L+JYcb/vdg5fmcH08V6o0YYLU28cTH1SPNulwJdvK9NK49aXSkYy6oNpKBmddArVOXYqNepriDGiZ04G54kh1Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-gnu@1.73.0': + resolution: {integrity: sha512-Qtk0g3bKV6OwWjIm7R8kQN1uOZRKQt/MODK2a8QfkwhTpXBD53ozx5XLVWLGDQAVyp2otLW4D2wB98XfAfMPGA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-musl@1.73.0': + resolution: {integrity: sha512-wX0NQKZVxltkAOVmzFcpOaMpdaUvsq1Eqpx9tkAfl71UdkTlSo1R4AdAnGccR1Fm2+TzFgZ22CyyGuZ41RDr/A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-s390x-gnu@1.73.0': + resolution: {integrity: sha512-vPe7UGBMWyiLTtnqS4xxgMQFSFGmtQwhwCxuiw6lXygaO6bVt0D8dFVg8Xv05eaiN3ybC0HXXHUAohFMFvqoCQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-gnu@1.73.0': + resolution: {integrity: sha512-2CwIWr9cemFC/CbRBWZvuk5mffz6ObmfFkfcC/9rTQ7f+icNhYr2kOjf9Rt8lLvugvkdGDOmkoVoFFHh6ClCTw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-musl@1.73.0': + resolution: {integrity: sha512-nDadfJgg7NBBxG0N560wOe7LLX5QiYp6qBaI7viuk5EUORFBktU/NfV0MbTqU3gTqQDCh4VyxKdo5VADxk9w8Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxlint/binding-openharmony-arm64@1.73.0': + resolution: {integrity: sha512-wGjJC+NLH9xP+IKGn9RDW94ojJR/wPbg5WCnQjj/oReaOtCQthr8ws1zICe77JFmo4ouUdeTHHZL/ESGiF6Pmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-win32-arm64-msvc@1.73.0': + resolution: {integrity: sha512-I7X47GPGljw225YUQ5SbC/rb1Kkdrd0yQf0x+hYxeKS6DpfjMbo9ccQPQ6LNY6BoJQ1sHhgDUGuMn5Vg5gHT6w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.73.0': + resolution: {integrity: sha512-5lWj+3h+74Fm1jYOO9qkJA4xkAlZA099DkXppuXsk7UpnpZLttsefrZU469vChGaG6hcSqrkKXQOvMTZtbjeNg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.73.0': + resolution: {integrity: sha512-WaNRvh4f6zY9CvUQk2YoA1O90ieWrIklI84+HXFr9Isjz9CSESrdqo/RtIYt4Dll/cAchqGDMehfaZd0vqEFZw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -3468,9 +3529,6 @@ packages: resolution: {integrity: sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==} engines: {node: '>= 10'} - '@tybys/wasm-util@0.10.2': - resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} - '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -3648,65 +3706,6 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@8.59.3': - resolution: {integrity: sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.59.3 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/parser@8.59.3': - resolution: {integrity: sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/project-service@8.59.3': - resolution: {integrity: sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/scope-manager@8.59.3': - resolution: {integrity: sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.59.3': - resolution: {integrity: sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/type-utils@8.59.3': - resolution: {integrity: sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/types@8.59.3': - resolution: {integrity: sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.59.3': - resolution: {integrity: sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/utils@8.59.3': - resolution: {integrity: sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/visitor-keys@8.59.3': - resolution: {integrity: sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260512.1': resolution: {integrity: sha512-l9AJi/TIVMPx5R1c7fxZCSA7eUaHeA0C9Mxdxx/oQJo1K/GtbI3mzYe/SiKNltko1KSdKUmWVhPwxTOS289REg==} engines: {node: '>=16.20.0'} @@ -3757,109 +3756,6 @@ packages: '@ungap/structured-clone@1.3.1': resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} - '@unrs/resolver-binding-android-arm-eabi@1.11.1': - resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} - cpu: [arm] - os: [android] - - '@unrs/resolver-binding-android-arm64@1.11.1': - resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} - cpu: [arm64] - os: [android] - - '@unrs/resolver-binding-darwin-arm64@1.11.1': - resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} - cpu: [arm64] - os: [darwin] - - '@unrs/resolver-binding-darwin-x64@1.11.1': - resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} - cpu: [x64] - os: [darwin] - - '@unrs/resolver-binding-freebsd-x64@1.11.1': - resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} - cpu: [x64] - os: [freebsd] - - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} - cpu: [arm] - os: [linux] - - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} - cpu: [arm] - os: [linux] - - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-x64-musl@1.11.1': - resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-wasm32-wasi@1.11.1': - resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} - cpu: [arm64] - os: [win32] - - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} - cpu: [ia32] - os: [win32] - - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} - cpu: [x64] - os: [win32] - '@urql/core@5.2.0': resolution: {integrity: sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==} @@ -3948,11 +3844,6 @@ packages: peerDependencies: acorn: ^8.14.0 - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.5: resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} engines: {node: '>=0.4.0'} @@ -4109,14 +4000,6 @@ packages: resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} engines: {node: '>= 0.4'} - array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.4: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} @@ -4544,10 +4427,6 @@ packages: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - comment-parser@1.4.6: - resolution: {integrity: sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==} - engines: {node: '>= 12.0.0'} - commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -4812,9 +4691,6 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -4891,10 +4767,6 @@ packages: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dom-converter@0.2.0: resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} @@ -5034,10 +4906,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-iterator-helpers@1.3.2: - resolution: {integrity: sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==} - engines: {node: '>= 0.4'} - es-module-lexer@2.1.0: resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} @@ -5086,60 +4954,12 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-import-context@0.1.9: - resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - peerDependencies: - unrs-resolver: ^1.0.0 - peerDependenciesMeta: - unrs-resolver: - optional: true - - eslint-import-resolver-typescript@4.4.4: - resolution: {integrity: sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==} - engines: {node: ^16.17.0 || >=18.6.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - - eslint-plugin-import-x@4.16.2: - resolution: {integrity: sha512-rM9K8UBHcWKpzQzStn1YRN2T5NvdeIfSVoKu/lKF41znQXHAUcBbYXe5wd6GNjZjTrP7viQ49n1D83x/2gYgIw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/utils': ^8.56.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - eslint-import-resolver-node: '*' - peerDependenciesMeta: - '@typescript-eslint/utils': - optional: true - eslint-import-resolver-node: - optional: true - - eslint-plugin-lingui@0.12.0: - resolution: {integrity: sha512-2+9P3thudGIBI10sDWYUIrGs3HIP09gv0XF98RDzZs34GAsAsGTUoSgrttKS1knAU5dwbrFKhNKu2LMrjRECag==} - engines: {node: '>=16.0.0'} - peerDependencies: - eslint: ^8.37.0 || ^9.0.0 - typescript: ^5.0.0 || ^6.0.0 - eslint-plugin-react-compiler@19.1.0-rc.2: resolution: {integrity: sha512-oKalwDGcD+RX9mf3NEO4zOoUMeLvjSvcbbEOpquzmzqEEM2MQdp7/FY/Hx9NzmUwFzH1W9SKTz5fihfMldpEYw==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} peerDependencies: eslint: '>=7' - eslint-plugin-react-hooks@7.1.1: - resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} - engines: {node: '>=18'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 - eslint-plugin-react-native-a11y@3.5.1: resolution: {integrity: sha512-vqnXZpAiov0lxYNfEYgwABpkiBYRrt0dbtOafPkw6QaFeA0uZ+s3w9opeEMoFmV36WFxLiCxHb9fvOJ+EUc2xQ==} engines: {node: '>=12.0'} @@ -5154,12 +4974,6 @@ packages: peerDependencies: eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-react@7.37.5: - resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-simple-import-sort@13.0.0: resolution: {integrity: sha512-McAc+/Nlvcg4byY/CABGH8kqnefWBj8s3JA2okEtz8ixbECQgU46p0HkTUKa4YS7wvgGceimlc34p1nXqbWqtA==} peerDependencies: @@ -5169,49 +4983,15 @@ packages: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@5.0.1: - resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - eslint@9.39.4: - resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - esm@3.2.25: resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} engines: {node: '>=6'} - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - esquery@1.7.0: - resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} - engines: {node: '>=0.10'} - esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -5590,9 +5370,6 @@ packages: fast-json-stringify@6.4.0: resolution: {integrity: sha512-ibRCQ0GZKJIQ+P3Et1h0LhPgp3PMTYk0MH8O+kW3lNYsvmaQww5Nn3f1jf73Q0jR1Yz3a1CDP4/NZD3vOajWJQ==} - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-text-encoding@1.0.6: resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==} @@ -5624,10 +5401,6 @@ packages: picomatch: optional: true - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - file-loader@6.2.0: resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} engines: {node: '>= 10.13.0'} @@ -5672,13 +5445,6 @@ packages: find-yarn-workspace-root@2.0.0: resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.4.2: - resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} @@ -5787,9 +5553,6 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - getenv@1.0.0: resolution: {integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==} engines: {node: '>=6'} @@ -5833,10 +5596,6 @@ packages: engines: {node: '>=16 || 14 >=14.17'} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - globals@17.6.0: resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} engines: {node: '>=18'} @@ -6042,10 +5801,6 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} - image-size@1.2.1: resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} engines: {node: '>=16.x'} @@ -6132,9 +5887,6 @@ packages: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} - is-bun-module@2.0.0: - resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -6326,10 +6078,6 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} - engines: {node: '>= 0.4'} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -6552,9 +6300,6 @@ packages: engines: {node: '>=6'} hasBin: true - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -6567,9 +6312,6 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -6586,9 +6328,6 @@ packages: resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} engines: {node: '>=18'} - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -6607,10 +6346,6 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - libphonenumber-js@1.13.1: resolution: {integrity: sha512-GEw0GLL7YUUA6nv21IsCvVjtI5Ejn84sjbdfQ9KxdbqEVOk1PZh7xejn01EEiniKw+dBeCfim+8MGeuvVuE2BA==} @@ -6739,9 +6474,6 @@ packages: lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.shuffle@4.2.0: resolution: {integrity: sha512-V/rTAABKLFjoecTZjKSv+A1ZomG8hZg8hlgeG6wwQVD9AGv+10zqqSf6mFq2tVA703Zd5R0YhSuSlXA+E/Ei+Q==} @@ -7035,11 +6767,6 @@ packages: engines: {node: ^18 || >=20} hasBin: true - napi-postinstall@0.3.4: - resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - hasBin: true - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -7060,10 +6787,6 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-exports-info@1.6.0: - resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} - engines: {node: '>= 0.4'} - node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -7260,14 +6983,6 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - object.entries@1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - object.values@1.2.1: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} @@ -7317,10 +7032,6 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - ora@3.4.0: resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} engines: {node: '>=6'} @@ -7336,6 +7047,23 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + oxlint-tsgolint@0.24.0: + resolution: {integrity: sha512-giCk5sEvG02d5tzPmFMX3hem8ndzEEu1xvGYS5OwNfO2WGl6ZVxt5LjE0yiMDoz94INI7XkXwgFAQiydPvVHDw==} + hasBin: true + + oxlint@1.73.0: + resolution: {integrity: sha512-u91G9TJzU6yqKWNZUYprQB07W7YvntZXaRxQ6CkoytepYhLWUXWsr1M8zUJ34VatNPuUAr3Z8GH+O2A331CluQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=0.24.0' + vite-plus: '*' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + vite-plus: + optional: true + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -7698,10 +7426,6 @@ packages: resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - prettier@3.8.3: resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} engines: {node: '>=14'} @@ -8236,9 +7960,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve-workspace-root@2.0.1: resolution: {integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==} @@ -8254,11 +7975,6 @@ packages: resolve@1.7.1: resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==} - resolve@2.0.0-next.6: - resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==} - engines: {node: '>= 0.4'} - hasBin: true - restore-cursor@2.0.0: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} engines: {node: '>=4'} @@ -8561,10 +8277,6 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - stable-hash-x@0.2.0: - resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} - engines: {node: '>=12.0.0'} - stable@0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' @@ -8637,13 +8349,6 @@ packages: resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} engines: {node: '>=20'} - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - string.prototype.trim@1.2.10: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} @@ -8887,12 +8592,6 @@ packages: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} - ts-api-utils@2.5.0: - resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -8902,10 +8601,6 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} @@ -8942,13 +8637,6 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.59.3: - resolution: {integrity: sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} @@ -9013,9 +8701,6 @@ packages: unplugin@1.0.1: resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} - unrs-resolver@1.11.1: - resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} - update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true @@ -9277,10 +8962,6 @@ packages: wonka@6.3.6: resolution: {integrity: sha512-MXH+6mDHAZ2GuMpgKS055FR6v0xVP3XwquxIMYXgiW+FejHQlMGlvVRZT4qMCxR+bEo/FCtIdKxwej9WV3YQag==} - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - wrap-ansi@10.0.0: resolution: {integrity: sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==} engines: {node: '>=20'} @@ -9425,12 +9106,6 @@ packages: peerDependencies: zod: ^3.24.4 - zod-validation-error@4.0.2: - resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.25.0 || ^4.0.0 - zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} @@ -10471,22 +10146,6 @@ snapshots: dependencies: '@types/hammerjs': 2.0.46 - '@emnapi/core@1.10.0': - dependencies: - '@emnapi/wasi-threads': 1.2.1 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.10.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.1': - dependencies: - tslib: 2.8.1 - optional: true - '@emoji-mart/data@1.2.1': {} '@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@19.1.0)': @@ -10572,52 +10231,6 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.7.0))': - dependencies: - eslint: 9.39.4(jiti@2.7.0) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.2': {} - - '@eslint/config-array@0.21.2': - dependencies: - '@eslint/object-schema': 2.1.7 - debug: 4.4.3 - minimatch: 3.1.5 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.4.2': - dependencies: - '@eslint/core': 0.17.0 - - '@eslint/core@0.17.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.5': - dependencies: - ajv: 6.15.0 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.4': {} - - '@eslint/object-schema@2.1.7': {} - - '@eslint/plugin-kit@0.4.1': - dependencies: - '@eslint/core': 0.17.0 - levn: 0.4.1 - '@expo/cli@54.0.24(expo@54.0.34(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.5(patch_hash=2656ac6deb71b92a4df4af4593d13ace6a5740936432e5e7e8ef32bc3cd05194)(@babel/core@7.29.0)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(patch_hash=2656ac6deb71b92a4df4af4593d13ace6a5740936432e5e7e8ef32bc3cd05194)(@babel/core@7.29.0)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(patch_hash=2656ac6deb71b92a4df4af4593d13ace6a5740936432e5e7e8ef32bc3cd05194)(@babel/core@7.29.0)(@types/react@19.1.17)(react@19.1.0))': dependencies: '@0no-co/graphql.web': 1.2.0 @@ -11044,22 +10657,6 @@ snapshots: dependencies: dom-mutator: 0.6.0 - '@humanfs/core@0.19.2': - dependencies: - '@humanfs/types': 0.15.0 - - '@humanfs/node@0.16.8': - dependencies: - '@humanfs/core': 0.19.2 - '@humanfs/types': 0.15.0 - '@humanwhocodes/retry': 0.4.3 - - '@humanfs/types@0.15.0': {} - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.4.3': {} - '@ide/backoff@1.0.0': {} '@ipld/dag-cbor@9.2.7': @@ -11385,13 +10982,6 @@ snapshots: dependencies: moo: 0.5.3 - '@napi-rs/wasm-runtime@0.2.12': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.2 - optional: true - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -11404,7 +10994,80 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@package-json/types@0.0.12': {} + '@oxlint-tsgolint/darwin-arm64@0.24.0': + optional: true + + '@oxlint-tsgolint/darwin-x64@0.24.0': + optional: true + + '@oxlint-tsgolint/linux-arm64@0.24.0': + optional: true + + '@oxlint-tsgolint/linux-x64@0.24.0': + optional: true + + '@oxlint-tsgolint/win32-arm64@0.24.0': + optional: true + + '@oxlint-tsgolint/win32-x64@0.24.0': + optional: true + + '@oxlint/binding-android-arm-eabi@1.73.0': + optional: true + + '@oxlint/binding-android-arm64@1.73.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.73.0': + optional: true + + '@oxlint/binding-darwin-x64@1.73.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.73.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.73.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.73.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.73.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.73.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.73.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.73.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.73.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.73.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.73.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.73.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.73.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.73.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.73.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.73.0': + optional: true '@pkgjs/parseargs@0.11.0': optional: true @@ -12676,11 +12339,6 @@ snapshots: '@tootallnate/once@2.0.1': {} - '@tybys/wasm-util@0.10.2': - dependencies: - tslib: 2.8.1 - optional: true - '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.29.3 @@ -12899,97 +12557,6 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.59.3(@typescript-eslint/parser@8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.3 - '@typescript-eslint/type-utils': 8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.3 - eslint: 9.39.4(jiti@2.7.0) - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.59.3 - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/typescript-estree': 8.59.3(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.3 - debug: 4.4.3 - eslint: 9.39.4(jiti@2.7.0) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.59.3(typescript@6.0.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.3(typescript@6.0.3) - '@typescript-eslint/types': 8.59.3 - debug: 4.4.3 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.59.3': - dependencies: - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/visitor-keys': 8.59.3 - - '@typescript-eslint/tsconfig-utils@8.59.3(typescript@6.0.3)': - dependencies: - typescript: 6.0.3 - - '@typescript-eslint/type-utils@8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/typescript-estree': 8.59.3(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) - debug: 4.4.3 - eslint: 9.39.4(jiti@2.7.0) - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.59.3': {} - - '@typescript-eslint/typescript-estree@8.59.3(typescript@6.0.3)': - dependencies: - '@typescript-eslint/project-service': 8.59.3(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.59.3(typescript@6.0.3) - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/visitor-keys': 8.59.3 - debug: 4.4.3 - minimatch: 10.2.5 - semver: 7.8.0 - tinyglobby: 0.2.16 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.59.3 - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/typescript-estree': 8.59.3(typescript@6.0.3) - eslint: 9.39.4(jiti@2.7.0) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.59.3': - dependencies: - '@typescript-eslint/types': 8.59.3 - eslint-visitor-keys: 5.0.1 - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260512.1': optional: true @@ -13023,65 +12590,6 @@ snapshots: '@ungap/structured-clone@1.3.1': {} - '@unrs/resolver-binding-android-arm-eabi@1.11.1': - optional: true - - '@unrs/resolver-binding-android-arm64@1.11.1': - optional: true - - '@unrs/resolver-binding-darwin-arm64@1.11.1': - optional: true - - '@unrs/resolver-binding-darwin-x64@1.11.1': - optional: true - - '@unrs/resolver-binding-freebsd-x64@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-x64-musl@1.11.1': - optional: true - - '@unrs/resolver-binding-wasm32-wasi@1.11.1': - dependencies: - '@napi-rs/wasm-runtime': 0.2.12 - optional: true - - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - optional: true - - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - optional: true - - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - optional: true - '@urql/core@5.2.0': dependencies: '@0no-co/graphql.web': 1.2.0 @@ -13198,10 +12706,6 @@ snapshots: dependencies: acorn: 8.16.0 - acorn-jsx@5.3.2(acorn@8.16.0): - dependencies: - acorn: 8.16.0 - acorn-walk@8.3.5: dependencies: acorn: 8.16.0 @@ -13344,21 +12848,6 @@ snapshots: es-abstract: 1.24.2 es-shim-unscopables: 1.1.0 - array.prototype.flatmap@1.3.3: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-shim-unscopables: 1.1.0 - - array.prototype.tosorted@1.1.4: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-shim-unscopables: 1.1.0 - arraybuffer.prototype.slice@1.0.4: dependencies: array-buffer-byte-length: 1.0.2 @@ -13876,8 +13365,6 @@ snapshots: commander@8.3.0: {} - comment-parser@1.4.6: {} - commondir@1.0.1: {} compressible@2.0.18: @@ -14163,8 +13650,6 @@ snapshots: deep-extend@0.6.0: {} - deep-is@0.1.4: {} - deepmerge@4.3.1: {} default-gateway@6.0.3: @@ -14229,10 +13714,6 @@ snapshots: dependencies: '@leichtgewicht/ip-codec': 2.0.5 - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - dom-converter@0.2.0: dependencies: utila: 0.4.0 @@ -14406,25 +13887,6 @@ snapshots: es-errors@1.3.0: {} - es-iterator-helpers@1.3.2: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-set-tostringtag: 2.1.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - iterator.prototype: 1.1.5 - math-intrinsics: 1.1.0 - es-module-lexer@2.1.0: {} es-object-atoms@1.1.1: @@ -14495,190 +13957,46 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-import-context@0.1.9(unrs-resolver@1.11.1): - dependencies: - get-tsconfig: 4.14.0 - stable-hash-x: 0.2.0 - optionalDependencies: - unrs-resolver: 1.11.1 - - eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)): - dependencies: - debug: 4.4.3 - eslint: 9.39.4(jiti@2.7.0) - eslint-import-context: 0.1.9(unrs-resolver@1.11.1) - get-tsconfig: 4.14.0 - is-bun-module: 2.0.0 - stable-hash-x: 0.2.0 - tinyglobby: 0.2.16 - unrs-resolver: 1.11.1 - optionalDependencies: - eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0)) - transitivePeerDependencies: - - supports-color - - eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0)): - dependencies: - '@package-json/types': 0.0.12 - '@typescript-eslint/types': 8.59.3 - comment-parser: 1.4.6 - debug: 4.4.3 - eslint: 9.39.4(jiti@2.7.0) - eslint-import-context: 0.1.9(unrs-resolver@1.11.1) - is-glob: 4.0.3 - minimatch: 10.2.5 - semver: 7.8.0 - stable-hash-x: 0.2.0 - unrs-resolver: 1.11.1 - optionalDependencies: - '@typescript-eslint/utils': 8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) - transitivePeerDependencies: - - supports-color - - eslint-plugin-lingui@0.12.0(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3): - dependencies: - '@typescript-eslint/utils': 8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) - eslint: 9.39.4(jiti@2.7.0) - micromatch: 4.0.8 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.39.4(jiti@2.7.0)): + eslint-plugin-react-compiler@19.1.0-rc.2(eslint@eslint): dependencies: '@babel/core': 7.29.0 '@babel/parser': 7.29.3 '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.29.0) - eslint: 9.39.4(jiti@2.7.0) + eslint: link:eslint hermes-parser: 0.25.1 zod: 3.25.76 zod-validation-error: 3.5.4(zod@3.25.76) transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@7.1.1(eslint@9.39.4(jiti@2.7.0)): - dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.3 - eslint: 9.39.4(jiti@2.7.0) - hermes-parser: 0.25.1 - zod: 3.25.76 - zod-validation-error: 4.0.2(zod@3.25.76) - transitivePeerDependencies: - - supports-color - - eslint-plugin-react-native-a11y@3.5.1(eslint@9.39.4(jiti@2.7.0)): + eslint-plugin-react-native-a11y@3.5.1(eslint@eslint): dependencies: '@babel/runtime': 7.29.2 ast-types-flow: 0.0.7 - eslint: 9.39.4(jiti@2.7.0) + eslint: link:eslint jsx-ast-utils: 3.3.5 eslint-plugin-react-native-globals@0.1.2: {} - eslint-plugin-react-native@5.0.0(eslint@9.39.4(jiti@2.7.0)): + eslint-plugin-react-native@5.0.0(eslint@eslint): dependencies: - eslint: 9.39.4(jiti@2.7.0) + eslint: link:eslint eslint-plugin-react-native-globals: 0.1.2 - eslint-plugin-react@7.37.5(eslint@9.39.4(jiti@2.7.0)): + eslint-plugin-simple-import-sort@13.0.0(eslint@eslint): dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.3.2 - eslint: 9.39.4(jiti@2.7.0) - estraverse: 5.3.0 - hasown: 2.0.3 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.5 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.6 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - - eslint-plugin-simple-import-sort@13.0.0(eslint@9.39.4(jiti@2.7.0)): - dependencies: - eslint: 9.39.4(jiti@2.7.0) + eslint: link:eslint eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.1: {} - - eslint-visitor-keys@5.0.1: {} - - eslint@9.39.4(jiti@2.7.0): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.5 - '@eslint/js': 9.39.4 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.8 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.6 - ajv: 6.15.0 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3 - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.7.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.5 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.7.0 - transitivePeerDependencies: - - supports-color - esm@3.2.25: optional: true - espree@10.4.0: - dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - eslint-visitor-keys: 4.2.1 - esprima@4.0.1: {} - esquery@1.7.0: - dependencies: - estraverse: 5.3.0 - esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -15131,8 +14449,6 @@ snapshots: json-schema-ref-resolver: 3.0.0 rfdc: 1.4.1 - fast-levenshtein@2.0.6: {} - fast-text-encoding@1.0.6: {} fast-uri@3.1.2: {} @@ -15167,10 +14483,6 @@ snapshots: optionalDependencies: picomatch: 4.0.4 - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.106.2(postcss@8.5.14)): dependencies: loader-utils: 2.0.4 @@ -15235,13 +14547,6 @@ snapshots: dependencies: micromatch: 4.0.8 - flat-cache@4.0.1: - dependencies: - flatted: 3.4.2 - keyv: 4.5.4 - - flatted@3.4.2: {} - flow-enums-runtime@0.0.6: {} follow-redirects@1.16.0: {} @@ -15337,10 +14642,6 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.14.0: - dependencies: - resolve-pkg-maps: 1.0.0 - getenv@1.0.0: {} getenv@2.0.0: {} @@ -15395,8 +14696,6 @@ snapshots: minipass: 4.2.8 path-scurry: 1.11.1 - globals@14.0.0: {} - globals@17.6.0: {} globalthis@1.0.4: @@ -15618,8 +14917,6 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.5: {} - image-size@1.2.1: dependencies: queue: 6.0.2 @@ -15708,10 +15005,6 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-bun-module@2.0.0: - dependencies: - semver: 7.8.0 - is-callable@1.2.7: {} is-ci@3.0.1: @@ -15895,15 +15188,6 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - iterator.prototype@1.1.5: - dependencies: - define-data-property: 1.1.4 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - has-symbols: 1.1.0 - set-function-name: 2.0.2 - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -16364,8 +15648,6 @@ snapshots: jsesc@3.1.0: {} - json-buffer@3.0.1: {} - json-parse-even-better-errors@2.3.1: {} json-schema-ref-resolver@3.0.0: @@ -16376,8 +15658,6 @@ snapshots: json-schema-traverse@1.0.0: {} - json-stable-stringify-without-jsonify@1.0.1: {} - json5@2.2.3: {} jsonfile@6.2.1: @@ -16395,10 +15675,6 @@ snapshots: jwt-decode@4.0.0: {} - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - kleur@3.0.3: {} lan-network@0.2.1: {} @@ -16414,11 +15690,6 @@ snapshots: leven@3.1.0: {} - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - libphonenumber-js@1.13.1: {} lighthouse-logger@1.4.2: @@ -16529,8 +15800,6 @@ snapshots: lodash.memoize@4.1.2: {} - lodash.merge@4.6.2: {} - lodash.shuffle@4.2.0: {} lodash.throttle@4.1.1: {} @@ -16903,8 +16172,6 @@ snapshots: nanoid@5.1.11: {} - napi-postinstall@0.3.4: {} - natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -16920,13 +16187,6 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-exports-info@1.6.0: - dependencies: - array.prototype.flatmap: 1.3.3 - es-errors: 1.3.0 - object.entries: 1.1.9 - semver: 6.3.1 - node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -16993,20 +16253,6 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - object.entries@1.1.9: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.1 - object.values@1.2.1: dependencies: call-bind: 1.0.9 @@ -17057,15 +16303,6 @@ snapshots: opener@1.5.2: {} - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - ora@3.4.0: dependencies: chalk: 2.4.2 @@ -17095,6 +16332,38 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + oxlint-tsgolint@0.24.0: + optionalDependencies: + '@oxlint-tsgolint/darwin-arm64': 0.24.0 + '@oxlint-tsgolint/darwin-x64': 0.24.0 + '@oxlint-tsgolint/linux-arm64': 0.24.0 + '@oxlint-tsgolint/linux-x64': 0.24.0 + '@oxlint-tsgolint/win32-arm64': 0.24.0 + '@oxlint-tsgolint/win32-x64': 0.24.0 + + oxlint@1.73.0(oxlint-tsgolint@0.24.0): + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.73.0 + '@oxlint/binding-android-arm64': 1.73.0 + '@oxlint/binding-darwin-arm64': 1.73.0 + '@oxlint/binding-darwin-x64': 1.73.0 + '@oxlint/binding-freebsd-x64': 1.73.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.73.0 + '@oxlint/binding-linux-arm-musleabihf': 1.73.0 + '@oxlint/binding-linux-arm64-gnu': 1.73.0 + '@oxlint/binding-linux-arm64-musl': 1.73.0 + '@oxlint/binding-linux-ppc64-gnu': 1.73.0 + '@oxlint/binding-linux-riscv64-gnu': 1.73.0 + '@oxlint/binding-linux-riscv64-musl': 1.73.0 + '@oxlint/binding-linux-s390x-gnu': 1.73.0 + '@oxlint/binding-linux-x64-gnu': 1.73.0 + '@oxlint/binding-linux-x64-musl': 1.73.0 + '@oxlint/binding-openharmony-arm64': 1.73.0 + '@oxlint/binding-win32-arm64-msvc': 1.73.0 + '@oxlint/binding-win32-ia32-msvc': 1.73.0 + '@oxlint/binding-win32-x64-msvc': 1.73.0 + oxlint-tsgolint: 0.24.0 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -17418,8 +16687,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - prelude-ls@1.2.1: {} - prettier@3.8.3: {} pretty-bytes@5.6.0: {} @@ -18117,8 +17384,6 @@ snapshots: resolve-from@5.0.0: {} - resolve-pkg-maps@1.0.0: {} - resolve-workspace-root@2.0.1: {} resolve.exports@2.0.3: {} @@ -18134,15 +17399,6 @@ snapshots: dependencies: path-parse: 1.0.7 - resolve@2.0.0-next.6: - dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.2 - node-exports-info: 1.6.0 - object-keys: 1.1.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@2.0.0: dependencies: onetime: 2.0.1 @@ -18482,8 +17738,6 @@ snapshots: sprintf-js@1.0.3: {} - stable-hash-x@0.2.0: {} - stable@0.1.8: {} stack-generator@2.0.10: @@ -18559,27 +17813,6 @@ snapshots: get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 - string.prototype.matchall@4.0.12: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.0 - - string.prototype.repeat@1.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.24.2 - string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.9 @@ -18814,20 +18047,12 @@ snapshots: dependencies: punycode: 2.3.1 - ts-api-utils@2.5.0(typescript@6.0.3): - dependencies: - typescript: 6.0.3 - ts-interface-checker@0.1.13: {} ts-plugin-sort-import-suggestions@1.0.4: {} tslib@2.8.1: {} - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - type-detect@4.0.8: {} type-fest@0.21.3: {} @@ -18875,17 +18100,6 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.59.3(@typescript-eslint/parser@8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/parser': 8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.59.3(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.3(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) - eslint: 9.39.4(jiti@2.7.0) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - typescript@6.0.3: {} ua-parser-js@0.7.41: {} @@ -18935,30 +18149,6 @@ snapshots: webpack-sources: 3.4.1 webpack-virtual-modules: 0.5.0 - unrs-resolver@1.11.1: - dependencies: - napi-postinstall: 0.3.4 - optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.11.1 - '@unrs/resolver-binding-android-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-x64': 1.11.1 - '@unrs/resolver-binding-freebsd-x64': 1.11.1 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 - '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-musl': 1.11.1 - '@unrs/resolver-binding-wasm32-wasi': 1.11.1 - '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 - '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 - '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: browserslist: 4.28.2 @@ -19291,8 +18481,6 @@ snapshots: wonka@6.3.6: {} - word-wrap@1.2.5: {} - wrap-ansi@10.0.0: dependencies: ansi-styles: 6.2.3 @@ -19414,8 +18602,4 @@ snapshots: dependencies: zod: 3.25.76 - zod-validation-error@4.0.2(zod@3.25.76): - dependencies: - zod: 3.25.76 - zod@3.25.76: {}