diff --git a/.changeset/strict-sides-hang.md b/.changeset/strict-sides-hang.md
new file mode 100644
index 00000000000..1d6a68a625b
--- /dev/null
+++ b/.changeset/strict-sides-hang.md
@@ -0,0 +1,78 @@
+---
+"@uifabricshared/foundation-composable": patch
+"@fluentui-react-native/experimental-appearance-additions": patch
+"@uifabricshared/theming-react-native": patch
+"@uifabricshared/foundation-settings": patch
+"@fluentui-react-native/experimental-activity-indicator": patch
+"@fluentui-react-native/experimental-native-font-metrics": patch
+"@uifabricshared/foundation-compose": patch
+"@fluentui-react-native/experimental-native-date-picker": patch
+"@uifabricshared/foundation-tokens": patch
+"@fluentui-react-native/themed-stylesheet": patch
+"@uifabricshared/themed-settings": patch
+"@fluentui-react-native/contextual-menu": patch
+"@fluentui-react-native/lint-config-rules": patch
+"@uifabricshared/theme-registry": patch
+"@fluentui-react-native/vibrancy-view": patch
+"@fluentui-react-native/focus-trap-zone": patch
+"@fluentui-react-native/notification": patch
+"@uifabricshared/theming-ramp": patch
+"@fluentui-react-native/experimental-menu-button": patch
+"@fluentui-react-native/interactive-hooks": patch
+"@fluentui-react-native/persona-coin": patch
+"@fluentui-react-native/menu-button": patch
+"@fluentui-react-native/radio-group": patch
+"@fluentui-react-native/experimental-checkbox": patch
+"@fluentui-react-native/dropdown": patch
+"@fluentui-react-native/experimental-expander": patch
+"@fluentui-react-native/overflow": patch
+"@fluentui-react-native/composition": patch
+"@fluentui-react-native/use-styling": patch
+"@fluentui-react-native/android-theme": patch
+"@fluentui-react-native/default-theme": patch
+"@fluentui-react-native/theming-utils": patch
+"@fluentui-react-native/focus-zone": patch
+"@fluentui-react-native/pressable": patch
+"@fluentui-react-native/separator": patch
+"@fluentui-react-native/popover": patch
+"@fluentui-react-native/experimental-shimmer": patch
+"@fluentui-react-native/spinner": patch
+"@fluentui-react-native/tooltip": patch
+"@fluentui-react-native/use-tokens": patch
+"@fluentui-react-native/theme-tokens": patch
+"@fluentui-react-native/checkbox": patch
+"@fluentui-react-native/experimental-avatar": patch
+"@fluentui-react-native/drawer": patch
+"@fluentui-react-native/experimental-shadow": patch
+"@fluentui-react-native/framework": patch
+"@fluentui-react-native/use-slots": patch
+"@fluentui-react-native/apple-theme": patch
+"@fluentui-react-native/theme-types": patch
+"@fluentui-react-native/win32-theme": patch
+"@fluentui-react-native/callout": patch
+"@fluentui-react-native/divider": patch
+"@fluentui-react-native/persona": patch
+"@fluentui-react-native/tablist": patch
+"@fluentui-react-native/use-slot": patch
+"@fluentui-react-native/avatar": patch
+"@fluentui-react-native/button": patch
+"@fluentui-react-native/switch": patch
+"@fluentui-react-native/badge": patch
+"@fluentui-react-native/input": patch
+"@fluentui-react-native/stack": patch
+"@fluentui-react-native/chip": patch
+"@fluentui-react-native/icon": patch
+"@fluentui-react-native/link": patch
+"@fluentui-react-native/menu": patch
+"@fluentui-react-native/text": patch
+"@fluentui-react-native/theme": patch
+"@fluentui-react-native/framework-base": patch
+"@fluentui/react-native": patch
+"@fluentui-react-native/adapters": patch
+"@fluentui-react-native/styling-utils": patch
+"@fluentui-react-native/tokens": patch
+"@fluentui-react-native/tester": patch
+"@fluentui-react-native/codemods": patch
+---
+
+Migrate from ESLint to oxlint
diff --git a/.vscode/settings.json b/.vscode/settings.json
index cd67b1d819a..ca57aa4e7ed 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -4,9 +4,6 @@
"editor.trimAutoWhitespace": true,
"editor.insertSpaces": true,
"editor.tabSize": 2,
- "editor.codeActionsOnSave": {
- "source.fixAll.eslint": "explicit"
- },
// Use the OXC formatter as the default formatter which matches what yarn format will do
"editor.defaultFormatter": "oxc.oxc-vscode",
@@ -16,9 +13,6 @@
"prettier.printWidth": 140,
"prettier.trailingComma": "all",
- "eslint.enable": true,
- "eslint.workingDirectories": [{ "pattern": "./packages/framework/eslint-config-rules" }], // use the common eslint config file
-
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"*.js": "${capture}.js.map, ${capture}.d.ts, ${capture}.d.ts.map",
diff --git a/CLAUDE.md b/CLAUDE.md
index f887fb2719a..ac47cd97c0f 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -56,9 +56,10 @@ The project uses **Yarn 4** (Berry) in **pnpm mode** with **Lage** as the task r
```bash
yarn build # TypeScript build for all packages (outputs to lib/ and lib-commonjs/)
yarn test # Build, lint, and run tests across all packages
-yarn lint # ESLint across all packages
-yarn bundle # Bundle all packages
-yarn buildci # Full CI pipeline: build + test + lint + bundle + depcheck + check-publishing
+yarn lint # Lint across all packages
+yarn lage bundle # Bundle all packages
+yarn bundle:repo # Convenience wrapper for the repo bundle graph
+yarn lage buildci # Configured CI graph alias from lage.config.mjs
yarn clean # Clean build artifacts
```
diff --git a/README.md b/README.md
index f8ec4dc3375..af22e081926 100644
--- a/README.md
+++ b/README.md
@@ -102,8 +102,9 @@ For running tasks the repo has switched to using [Lage](https://github.com/micro
- `yarn build` - does the typescript build for all packages in the repository
- `yarn test` - will build, lint, and run any applicable tests on all packages in the repo
-- `yarn bundle` - will bundle all packages in the repo
-- `yarn buildci` - will build, lint, run tests, and bundle everything in the repo
+- `yarn lage bundle` - will bundle all packages in the repo
+- `yarn bundle:repo` - convenience wrapper for `yarn lage bundle`
+- `yarn lage buildci` - will build, lint, run tests, and run the configured repo checks
Note that Lage uses caching to avoid redundant steps and has very minimal output. To avoid caching add `--no-cache` as a command line argument. Similarly adding `--verbose` will give more detailed output.
diff --git a/apps/E2E/eslint.config.js b/apps/E2E/eslint.config.js
deleted file mode 100644
index 5ed9a7bc328..00000000000
--- a/apps/E2E/eslint.config.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = [
- ...baseConfig,
- {
- rules: {
- '@typescript-eslint/no-duplicate-enum-values': 'off',
- '@typescript-eslint/no-invalid-void-type': 'off',
- },
- },
-];
diff --git a/apps/E2E/oxlint.config.ts b/apps/E2E/oxlint.config.ts
new file mode 100644
index 00000000000..8b7f9d7bfb9
--- /dev/null
+++ b/apps/E2E/oxlint.config.ts
@@ -0,0 +1,12 @@
+import baseConfig from '@fluentui-react-native/lint-config-rules';
+import { defineConfig } from 'oxlint';
+
+export default defineConfig({
+ extends: [baseConfig],
+ rules: {
+ '@rnx-kit/no-export-all': 'off',
+ 'typescript/class-literal-property-style': 'off',
+ 'typescript/no-duplicate-enum-values': 'off',
+ 'typescript/no-invalid-void-type': 'off',
+ },
+});
diff --git a/apps/E2E/package.json b/apps/E2E/package.json
index c5809cf009e..55d6141f238 100644
--- a/apps/E2E/package.json
+++ b/apps/E2E/package.json
@@ -38,7 +38,7 @@
"e2etest:macos": "cross-env APPIUM_HOME=.appium wdio run wdio.conf.macos.js",
"e2etest:win32": "cross-env APPIUM_HOME=.appium wdio run wdio.conf.win32.js",
"e2etest:windows": "rimraf errorShots reports && cross-env APPIUM_HOME=.appium wdio run wdio.conf.windows.js",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package"
},
"dependencies": {
@@ -47,9 +47,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@babel/runtime": "catalog:",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/focus-zone": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.81.0",
"@react-native/metro-babel-transformer": "^0.81.0",
diff --git a/apps/E2E/wdio.conf.android.js b/apps/E2E/wdio.conf.android.js
index 57f2b3bb6bc..a8f3dac579d 100644
--- a/apps/E2E/wdio.conf.android.js
+++ b/apps/E2E/wdio.conf.android.js
@@ -34,7 +34,6 @@ exports.config = {
bail: 1, // If you only want to run your tests until a specific amount of tests have failed use bail (default is 0 - don't bail, run all tests).
waitforTimeout: defaultWaitForTimeout, // Default timeout for all waitForXXX commands.
connectionRetryTimeout: defaultConnectionRetryTimeout, // Timeout for any WebDriver request to a driver or grid.
- connectionRetryCount: 2, // Maximum count of request retries to the Selenium server.
specFileRetries: 2, // The number of times to retry the entire spec file when it fails as a whole.
port: 4723, // default appium port
@@ -141,7 +140,7 @@ exports.config = {
/**
* Function to be executed after a test (in Mocha/Jasmine).
*/
- afterTest: (test, context, results) => {
+ afterTest: (test, _context, results) => {
const resultString = results.passed ? 'Passed' : 'Failed';
console.log('\n Test Case: ' + test.description + '. Result: ' + resultString + '\n');
diff --git a/apps/E2E/wdio.conf.ios.js b/apps/E2E/wdio.conf.ios.js
index ee4704a42c3..b46f95936f3 100644
--- a/apps/E2E/wdio.conf.ios.js
+++ b/apps/E2E/wdio.conf.ios.js
@@ -32,7 +32,6 @@ exports.config = {
bail: 1, // If you only want to run your tests until a specific amount of tests have failed use bail (default is 0 - don't bail, run all tests).
waitforTimeout: defaultWaitForTimeout, // Default timeout for all waitForXXX commands.
connectionRetryTimeout: defaultConnectionRetryTimeout, // Timeout for any WebDriver request to a driver or grid.
- connectionRetryCount: 2, // Maximum count of request retries to the Selenium server.
specFileRetries: 2, // The number of times to retry the entire spec file when it fails as a whole.
port: 4723, // default appium port
@@ -139,7 +138,7 @@ exports.config = {
/**
* Function to be executed after a test (in Mocha/Jasmine).
*/
- afterTest: (test, context, results) => {
+ afterTest: (test, _context, results) => {
const resultString = results.passed ? 'Passed' : 'Failed';
console.log(`\nTest Case: "${test.description}".\nResult: "${resultString}".\nDuration: "${(results.duration / 600).toFixed(2)}s". \n`);
diff --git a/apps/E2E/wdio.conf.macos.js b/apps/E2E/wdio.conf.macos.js
index 02879bbb353..9794683e7ce 100644
--- a/apps/E2E/wdio.conf.macos.js
+++ b/apps/E2E/wdio.conf.macos.js
@@ -31,7 +31,6 @@ exports.config = {
bail: 1, // If you only want to run your tests until a specific amount of tests have failed use bail (default is 0 - don't bail, run all tests).
waitforTimeout: defaultWaitForTimeout, // Default timeout for all waitForXXX commands.
connectionRetryTimeout: defaultConnectionRetryTimeout, // Timeout for any WebDriver request to a driver or grid.
- connectionRetryCount: 2, // Maximum count of request retries to the Selenium server.
specFileRetries: 1, // The number of times to retry the entire spec file when it fails as a whole.
port: 4723, // default appium port
@@ -154,7 +153,7 @@ exports.config = {
/**
* Function to be executed after a test (in Mocha/Jasmine).
*/
- afterTest: (test, context, results) => {
+ afterTest: (test, _context, results) => {
const resultString = results.passed ? 'Passed' : 'Failed';
console.log(`\nTest Case: "${test.description}".\nResult: "${resultString}".\nDuration: "${(results.duration / 600).toFixed(2)}s". \n`);
diff --git a/apps/E2E/wdio.conf.win32.js b/apps/E2E/wdio.conf.win32.js
index 581ceb6a1dd..b25a0b0a44a 100644
--- a/apps/E2E/wdio.conf.win32.js
+++ b/apps/E2E/wdio.conf.win32.js
@@ -37,7 +37,6 @@ exports.config = {
bail: 1, // If you only want to run your tests until a specific amount of tests have failed use bail (default is 0 - don't bail, run all tests).
waitforTimeout: defaultWaitForTimeout, // Default timeout for all waitForXXX commands.
connectionRetryTimeout: defaultConnectionRetryTimeout, // Timeout for any WebDriver request to a driver or grid.
- connectionRetryCount: 2, // Maximum count of request retries to the Selenium server.
specFileRetries: 1, // The number of times to retry the entire spec file when it fails as a whole.
port: 4723, // default appium port
@@ -147,7 +146,7 @@ exports.config = {
/**
* Function to be executed after a test (in Mocha/Jasmine).
*/
- afterTest: async (test, context, results) => {
+ afterTest: async (test, _context, results) => {
const resultString = results.passed ? 'Passed' : 'Failed';
console.log(`\nTest Case: "${test.description}".\nResult: "${resultString}".\nDuration: "${(results.duration / 600).toFixed(2)}s". \n`);
diff --git a/apps/E2E/wdio.conf.windows.js b/apps/E2E/wdio.conf.windows.js
index e2a1a45b8c1..c324c920945 100644
--- a/apps/E2E/wdio.conf.windows.js
+++ b/apps/E2E/wdio.conf.windows.js
@@ -49,7 +49,6 @@ exports.config = {
bail: 1, // If you only want to run your tests until a specific amount of tests have failed use bail (default is 0 - don't bail, run all tests).
waitforTimeout: defaultWaitForTimeout, // Default timeout for all waitForXXX commands.
connectionRetryTimeout: defaultConnectionRetryTimeout, // Timeout for any WebDriver request to a driver or grid.
- connectionRetryCount: 2, // Maximum count of request retries to the Selenium server.
specFileRetries: 1, // The number of times to retry the entire spec file when it fails as a whole.
port: 4723, // default appium port
@@ -161,7 +160,7 @@ exports.config = {
/**
* Function to be executed after a test (in Mocha/Jasmine).
*/
- afterTest: (test, context, results) => {
+ afterTest: (test, _context, results) => {
const resultString = results.passed ? 'Passed' : 'Failed';
console.log(`\nTest Case: "${test.description}".\nResult: "${resultString}".\nDuration: "${(results.duration / 600).toFixed(2)}s". \n`);
diff --git a/apps/component-generator/component-templates/ComponentTemplate/eslint.config.js b/apps/component-generator/component-templates/ComponentTemplate/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/apps/component-generator/component-templates/ComponentTemplate/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/apps/component-generator/component-templates/ComponentTemplate/package.json b/apps/component-generator/component-templates/ComponentTemplate/package.json
index 7b3117d4ba3..706fd38778b 100644
--- a/apps/component-generator/component-templates/ComponentTemplate/package.json
+++ b/apps/component-generator/component-templates/ComponentTemplate/package.json
@@ -18,7 +18,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"just": "fluentui-scripts",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u",
@@ -28,7 +28,7 @@
"dependencies": {},
"devDependencies": {
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
diff --git a/apps/fluent-tester/eslint.config.js b/apps/fluent-tester/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/apps/fluent-tester/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/apps/fluent-tester/package.json b/apps/fluent-tester/package.json
index 2f752705294..993dbd527d6 100644
--- a/apps/fluent-tester/package.json
+++ b/apps/fluent-tester/package.json
@@ -26,7 +26,7 @@
"build": "fluentui-scripts build",
"build-cjs": "tsgo --outDir lib-commonjs",
"build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler",
- "bundle": "rnx-cli bundle --dev false",
+ "bundle": "yarn bundle:android && yarn bundle:ios && yarn bundle:macos",
"bundle:android": "rnx-cli bundle --dev false --platform android",
"bundle:ios": "rnx-cli bundle --dev false --platform ios",
"bundle:macos": "rnx-cli bundle --dev false --platform macos",
@@ -34,7 +34,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"ios": "rnx-cli run --platform ios",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"macos": "rnx-cli run --platform macos",
"format": "fluentui-scripts format",
@@ -55,7 +55,6 @@
"@babel/runtime": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
"@fluentui-react-native/callout": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/experimental-appearance-additions": "workspace:*",
"@fluentui-react-native/experimental-avatar": "workspace:*",
"@fluentui-react-native/experimental-checkbox": "workspace:*",
@@ -65,6 +64,7 @@
"@fluentui-react-native/experimental-shimmer": "workspace:*",
"@fluentui-react-native/focus-zone": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/menu-button": "workspace:*",
"@fluentui-react-native/radio-group": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
diff --git a/apps/tester-core/eslint.config.js b/apps/tester-core/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/apps/tester-core/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/apps/tester-core/oxlint.config.ts b/apps/tester-core/oxlint.config.ts
new file mode 100644
index 00000000000..ea61b574c96
--- /dev/null
+++ b/apps/tester-core/oxlint.config.ts
@@ -0,0 +1,12 @@
+import baseConfig from '@fluentui-react-native/lint-config-rules';
+import { defineConfig } from 'oxlint';
+
+export default defineConfig({
+ extends: [baseConfig],
+ rules: {
+ '@rnx-kit/no-export-all': 'off',
+ '@rnx-kit/no-foreach-with-captured-variables': 'off',
+ 'react-hooks/exhaustive-deps': 'off',
+ 'typescript/array-type': 'off',
+ },
+});
\ No newline at end of file
diff --git a/apps/tester-core/package.json b/apps/tester-core/package.json
index 300f21266a0..67d181497e8 100644
--- a/apps/tester-core/package.json
+++ b/apps/tester-core/package.json
@@ -29,7 +29,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package"
},
"dependencies": {
@@ -95,8 +95,8 @@
"@babel/core": "catalog:",
"@babel/runtime": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.81.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/apps/tester-core/src/TestComponents/Button/ButtonHOCTestSection.tsx b/apps/tester-core/src/TestComponents/Button/ButtonHOCTestSection.tsx
index cb2d0f1b345..28ec1f8abb1 100644
--- a/apps/tester-core/src/TestComponents/Button/ButtonHOCTestSection.tsx
+++ b/apps/tester-core/src/TestComponents/Button/ButtonHOCTestSection.tsx
@@ -13,8 +13,6 @@ const CustomText = Text.customize({ fontSize: 'header', color: '#ad0258' });
const CustomButton = Button.customize({ backgroundColor: 'pink' });
const CustomIconButton = Button.customize({ iconColor: 'yellow' });
const ComposedButton = Button.compose({
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore Not all slots have to be overridden for compose to work
slots: {
content: CustomText,
},
diff --git a/apps/win32-81/eslint.config.js b/apps/win32-81/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/apps/win32-81/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/apps/win32-81/package.json b/apps/win32-81/package.json
index 078f4d5d1ad..6722f3b0f0e 100644
--- a/apps/win32-81/package.json
+++ b/apps/win32-81/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"run-win32": "rex-win32 --bundle index.win32 --component FluentTester --basePath ./dist --useDirectDebugger --windowTitle \"FluentUI Tester\" --pluginProps --debugBundlePath index --jsEngine v8",
"run-win32-dev": "rex-win32 --bundle index --component FluentTester --basePath ./dist --useDirectDebugger --windowTitle \"FluentUI Tester\" --pluginProps --debugBundlePath index --jsEngine v8 --useFastRefresh",
@@ -48,8 +48,8 @@
"@babel/core": "catalog:",
"@babel/runtime": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/rex-win32": "0.81.0-preview.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/apps/win32/eslint.config.js b/apps/win32/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/apps/win32/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/apps/win32/package.json b/apps/win32/package.json
index 59b7566ee67..bb7c29a7451 100644
--- a/apps/win32/package.json
+++ b/apps/win32/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"run-win32": "rex-win32 --bundle index.win32 --component FluentTester --basePath ./dist --useDirectDebugger --windowTitle \"FluentUI Tester\" --pluginProps --debugBundlePath index --jsEngine v8",
"run-win32-dev": "rex-win32 --bundle index --component FluentTester --basePath ./dist --useDirectDebugger --windowTitle \"FluentUI Tester\" --pluginProps --debugBundlePath index --jsEngine v8 --useFastRefresh",
@@ -48,8 +48,8 @@
"@babel/core": "catalog:",
"@babel/runtime": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/rex-win32": "0.73.11-devmain.16.0.17615.15030",
"@react-native-community/cli": "^13.6.4",
diff --git a/package.json b/package.json
index 165bdab4fa2..4f83e0cf82a 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
"build": "lage build-all",
"clean-all": "node ./scripts/src/preinstall/clean-all.js",
"docs": "yarn workspace fluent-rn-website start",
- "bundle": "lage bundle",
+ "bundle:repo": "lage bundle",
"clean": "lage clean",
"change": "node .github/scripts/change.mts",
"changeset:version": "node .github/scripts/changeset-version-with-postbump.mts",
@@ -45,11 +45,11 @@
"@rnx-kit/lint-lockfile": "catalog:",
"babel-jest": "^29.7.0",
"cross-env": "catalog:",
- "eslint": "^9.39.2",
- "eslint-plugin-import": "^2.32.0",
"lage": "catalog:",
"markdown-link-check": "^3.8.7",
"oxfmt": "^0.35.0",
+ "oxlint": "^1.57.0",
+ "oxlint-tsgolint": "^0.17.4",
"typescript": "^5.8.0",
"zx": "^8.2.4"
},
diff --git a/packages/codemods/eslint.config.js b/packages/codemods/eslint.config.js
deleted file mode 100644
index 50bbe55be75..00000000000
--- a/packages/codemods/eslint.config.js
+++ /dev/null
@@ -1,8 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = [
- ...baseConfig,
- {
- ignores: ['src/transforms/__testfixtures__/**/*'],
- },
-];
diff --git a/packages/codemods/oxlint.config.ts b/packages/codemods/oxlint.config.ts
new file mode 100644
index 00000000000..6f6abf6dab5
--- /dev/null
+++ b/packages/codemods/oxlint.config.ts
@@ -0,0 +1,10 @@
+import baseConfig from '@fluentui-react-native/lint-config-rules';
+import { defineConfig } from 'oxlint';
+
+export default defineConfig({
+ extends: [baseConfig],
+ rules: {
+ 'typescript/consistent-type-definitions': 'off',
+ },
+ ignorePatterns: ['src/transforms/__testfixtures__/**/*'],
+});
diff --git a/packages/codemods/package.json b/packages/codemods/package.json
index d5fb6df4307..28411636e94 100644
--- a/packages/codemods/package.json
+++ b/packages/codemods/package.json
@@ -30,7 +30,7 @@
"build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler",
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"format": "fluentui-scripts format",
"test": "fluentui-scripts jest"
@@ -42,8 +42,8 @@
"devDependencies": {
"@babel/core": "catalog:",
"@babel/preset-env": "catalog:",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/react-configs": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
diff --git a/packages/components/Avatar/eslint.config.js b/packages/components/Avatar/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Avatar/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Avatar/package.json b/packages/components/Avatar/package.json
index 7c05f5993ce..c902b194dd1 100644
--- a/packages/components/Avatar/package.json
+++ b/packages/components/Avatar/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -47,10 +47,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/components/Avatar/src/Avatar.tsx b/packages/components/Avatar/src/Avatar.tsx
index 4a3d006d278..ec46540f36f 100644
--- a/packages/components/Avatar/src/Avatar.tsx
+++ b/packages/components/Avatar/src/Avatar.tsx
@@ -87,7 +87,7 @@ function renderAvatar(final: AvatarProps, avatarProps: AvatarProps, Slots: Slots
{initials}
) : avatarProps.icon ? (
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore - TODO, fix typing error
+ // @ts-expect-error - TODO, fix typing error
) : (
svgIconsEnabled && (
diff --git a/packages/components/Avatar/src/stylingUtils.android.ts b/packages/components/Avatar/src/stylingUtils.android.ts
index 0d71d89054e..649a9a2c5d3 100644
--- a/packages/components/Avatar/src/stylingUtils.android.ts
+++ b/packages/components/Avatar/src/stylingUtils.android.ts
@@ -1 +1 @@
-export * from './stylingUtils.mobile';
+export { getFallbackIconPath, getIconStyles, getRingConfig, getRingSpacing } from './stylingUtils.mobile';
diff --git a/packages/components/Avatar/src/stylingUtils.ios.ts b/packages/components/Avatar/src/stylingUtils.ios.ts
index 0d71d89054e..649a9a2c5d3 100644
--- a/packages/components/Avatar/src/stylingUtils.ios.ts
+++ b/packages/components/Avatar/src/stylingUtils.ios.ts
@@ -1 +1 @@
-export * from './stylingUtils.mobile';
+export { getFallbackIconPath, getIconStyles, getRingConfig, getRingSpacing } from './stylingUtils.mobile';
diff --git a/packages/components/Badge/eslint.config.js b/packages/components/Badge/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Badge/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Badge/package.json b/packages/components/Badge/package.json
index a61d2a09aa3..f38c98c12f0 100644
--- a/packages/components/Badge/package.json
+++ b/packages/components/Badge/package.json
@@ -24,7 +24,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -45,10 +45,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/Badge/src/CounterBadge/index.ts b/packages/components/Badge/src/CounterBadge/index.ts
index d68b21b263d..a5275183612 100644
--- a/packages/components/Badge/src/CounterBadge/index.ts
+++ b/packages/components/Badge/src/CounterBadge/index.ts
@@ -1,2 +1,10 @@
-export * from './CounterBadge.types';
-export * from './CounterBadge';
+export { counterBadgeName } from './CounterBadge.types';
+export type {
+ CounterBadgeInfo,
+ CounterBadgeProps,
+ CounterBadgeSlotProps,
+ CounterBadgeState,
+ CounterBadgeTokens,
+ CounterBadgeType,
+} from './CounterBadge.types';
+export { CounterBadge } from './CounterBadge';
diff --git a/packages/components/Badge/src/PresenceBadge/PresenceBadgeTokens.android.ts b/packages/components/Badge/src/PresenceBadge/PresenceBadgeTokens.android.ts
index 95a6c43f982..67ea517d3ff 100644
--- a/packages/components/Badge/src/PresenceBadge/PresenceBadgeTokens.android.ts
+++ b/packages/components/Badge/src/PresenceBadge/PresenceBadgeTokens.android.ts
@@ -1 +1 @@
-export * from './PresenceBadgeTokens.mobile';
+export { defaultPresenceBadgeTokens } from './PresenceBadgeTokens.mobile';
diff --git a/packages/components/Badge/src/PresenceBadge/PresenceBadgeTokens.ios.ts b/packages/components/Badge/src/PresenceBadge/PresenceBadgeTokens.ios.ts
index 95a6c43f982..67ea517d3ff 100644
--- a/packages/components/Badge/src/PresenceBadge/PresenceBadgeTokens.ios.ts
+++ b/packages/components/Badge/src/PresenceBadge/PresenceBadgeTokens.ios.ts
@@ -1 +1 @@
-export * from './PresenceBadgeTokens.mobile';
+export { defaultPresenceBadgeTokens } from './PresenceBadgeTokens.mobile';
diff --git a/packages/components/Badge/src/PresenceBadge/index.ts b/packages/components/Badge/src/PresenceBadge/index.ts
index 9d470176865..38ad398f20d 100644
--- a/packages/components/Badge/src/PresenceBadge/index.ts
+++ b/packages/components/Badge/src/PresenceBadge/index.ts
@@ -1,2 +1,15 @@
-export * from './PresenceBadge.types';
-export * from './PresenceBadge';
+export {
+ PresenceBadgeIcons,
+ PresenceBadgeStatuses,
+ presenceBadgeName,
+} from './PresenceBadge.types';
+export type {
+ PresenceBadgeIconPath,
+ PresenceBadgeIconTypes,
+ PresenceBadgeProps,
+ PresenceBadgeSlotProps,
+ PresenceBadgeStatus,
+ PresenceBadgeTokens,
+ PresenceBadgeType,
+} from './PresenceBadge.types';
+export { PresenceBadge } from './PresenceBadge';
diff --git a/packages/components/Badge/src/PresenceBadge/stylingUtils.android.ts b/packages/components/Badge/src/PresenceBadge/stylingUtils.android.ts
index 0d71d89054e..9441db09e6b 100644
--- a/packages/components/Badge/src/PresenceBadge/stylingUtils.android.ts
+++ b/packages/components/Badge/src/PresenceBadge/stylingUtils.android.ts
@@ -1 +1 @@
-export * from './stylingUtils.mobile';
+export { getIconPath } from './stylingUtils.mobile';
diff --git a/packages/components/Badge/src/PresenceBadge/stylingUtils.ios.ts b/packages/components/Badge/src/PresenceBadge/stylingUtils.ios.ts
index 0d71d89054e..9441db09e6b 100644
--- a/packages/components/Badge/src/PresenceBadge/stylingUtils.ios.ts
+++ b/packages/components/Badge/src/PresenceBadge/stylingUtils.ios.ts
@@ -1 +1 @@
-export * from './stylingUtils.mobile';
+export { getIconPath } from './stylingUtils.mobile';
diff --git a/packages/components/Button/eslint.config.js b/packages/components/Button/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Button/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Button/package.json b/packages/components/Button/package.json
index 6269de10c34..5f5ceed795b 100644
--- a/packages/components/Button/package.json
+++ b/packages/components/Button/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -55,10 +55,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/Button/src/CompoundButton/index.ts b/packages/components/Button/src/CompoundButton/index.ts
index 8752e247feb..f9587bb0081 100644
--- a/packages/components/Button/src/CompoundButton/index.ts
+++ b/packages/components/Button/src/CompoundButton/index.ts
@@ -1,2 +1,8 @@
-export * from './CompoundButton.types';
-export * from './CompoundButton';
+export { compoundButtonName } from './CompoundButton.types';
+export type {
+ CompoundButtonProps,
+ CompoundButtonSlotProps,
+ CompoundButtonTokens,
+ CompoundButtonType,
+} from './CompoundButton.types';
+export { CompoundButton } from './CompoundButton';
diff --git a/packages/components/Button/src/FAB/index.ts b/packages/components/Button/src/FAB/index.ts
index 6fef838afef..55f0790541c 100644
--- a/packages/components/Button/src/FAB/index.ts
+++ b/packages/components/Button/src/FAB/index.ts
@@ -1,2 +1,3 @@
-export * from './FAB.types';
-export * from './FAB';
+export { fabName } from './FAB.types';
+export type { FABAppearance, FABProps, FABSize, FABSlotProps, FABTokens, FABType } from './FAB.types';
+export { FAB } from './FAB';
diff --git a/packages/components/Button/src/ToggleButton/index.ts b/packages/components/Button/src/ToggleButton/index.ts
index e5a633d59fc..3751239fd90 100644
--- a/packages/components/Button/src/ToggleButton/index.ts
+++ b/packages/components/Button/src/ToggleButton/index.ts
@@ -1,3 +1,10 @@
-export * from './ToggleButton.types';
-export * from './ToggleButton';
+export { toggleButtonName } from './ToggleButton.types';
+export type {
+ ToggleButtonInfo,
+ ToggleButtonProps,
+ ToggleButtonSlotProps,
+ ToggleButtonTokens,
+ ToggleButtonType,
+} from './ToggleButton.types';
+export { ToggleButton } from './ToggleButton';
export { useToggleButton } from './useToggleButton';
diff --git a/packages/components/Button/src/deprecated/PrimaryButton/index.ts b/packages/components/Button/src/deprecated/PrimaryButton/index.ts
index ad4b80e70dc..4169657accd 100644
--- a/packages/components/Button/src/deprecated/PrimaryButton/index.ts
+++ b/packages/components/Button/src/deprecated/PrimaryButton/index.ts
@@ -1 +1 @@
-export * from './PrimaryButton';
+export { PrimaryButton } from './PrimaryButton';
diff --git a/packages/components/Button/src/deprecated/StealthButton/index.ts b/packages/components/Button/src/deprecated/StealthButton/index.ts
index 3f299dbb4d2..1ad5ff5e45a 100644
--- a/packages/components/Button/src/deprecated/StealthButton/index.ts
+++ b/packages/components/Button/src/deprecated/StealthButton/index.ts
@@ -1 +1 @@
-export * from './StealthButton';
+export { StealthButton } from './StealthButton';
diff --git a/packages/components/Callout/eslint.config.js b/packages/components/Callout/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Callout/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Callout/package.json b/packages/components/Callout/package.json
index d01fe2e0549..3e4e778ff08 100644
--- a/packages/components/Callout/package.json
+++ b/packages/components/Callout/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -43,9 +43,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/components/Checkbox/eslint.config.js b/packages/components/Checkbox/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Checkbox/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Checkbox/package.json b/packages/components/Checkbox/package.json
index e6e82436c9f..b5c002dfc1f 100644
--- a/packages/components/Checkbox/package.json
+++ b/packages/components/Checkbox/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -51,10 +51,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/Checkbox/src/deprecated/Checkbox.settings.ios.ts b/packages/components/Checkbox/src/deprecated/Checkbox.settings.ios.ts
index 811f48078f5..4553412d2de 100644
--- a/packages/components/Checkbox/src/deprecated/Checkbox.settings.ios.ts
+++ b/packages/components/Checkbox/src/deprecated/Checkbox.settings.ios.ts
@@ -1 +1 @@
-export * from './Checkbox.settings.android';
+export { checkboxSelectActionLabel, settings } from './Checkbox.settings.android';
diff --git a/packages/components/Checkbox/src/deprecated/Checkbox.settings.macos.ts b/packages/components/Checkbox/src/deprecated/Checkbox.settings.macos.ts
index 811f48078f5..4553412d2de 100644
--- a/packages/components/Checkbox/src/deprecated/Checkbox.settings.macos.ts
+++ b/packages/components/Checkbox/src/deprecated/Checkbox.settings.macos.ts
@@ -1 +1 @@
-export * from './Checkbox.settings.android';
+export { checkboxSelectActionLabel, settings } from './Checkbox.settings.android';
diff --git a/packages/components/Checkbox/src/deprecated/Checkbox.tsx b/packages/components/Checkbox/src/deprecated/Checkbox.tsx
index 319852f967a..d01b280eee8 100644
--- a/packages/components/Checkbox/src/deprecated/Checkbox.tsx
+++ b/packages/components/Checkbox/src/deprecated/Checkbox.tsx
@@ -84,7 +84,7 @@ export const Checkbox = compose({
break;
}
},
- [toggleChecked, userProps, state, pressable.props],
+ [toggleChecked],
);
const slotProps = mergeSettings(styleProps, {
diff --git a/packages/components/Chip/eslint.config.js b/packages/components/Chip/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Chip/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Chip/package.json b/packages/components/Chip/package.json
index 79c5d255ddb..00ac9d76b7b 100644
--- a/packages/components/Chip/package.json
+++ b/packages/components/Chip/package.json
@@ -23,7 +23,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -41,10 +41,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/Chip/src/useChip.ts b/packages/components/Chip/src/useChip.ts
index 514d29ece49..5f7fe3416f7 100644
--- a/packages/components/Chip/src/useChip.ts
+++ b/packages/components/Chip/src/useChip.ts
@@ -51,7 +51,7 @@ export const useChip = (props: ChipProps): ChipInfo => {
closeIconOnPress(e);
}
},
- [checkedValue, showCloseIcon, closeIconOnPress],
+ [closeIconOnPress, closeIconVisibile],
);
return {
diff --git a/packages/components/ContextualMenu/eslint.config.js b/packages/components/ContextualMenu/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/ContextualMenu/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/ContextualMenu/package.json b/packages/components/ContextualMenu/package.json
index a7f48e5acf5..210abfd11a6 100644
--- a/packages/components/ContextualMenu/package.json
+++ b/packages/components/ContextualMenu/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -48,10 +48,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/pressable": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/ContextualMenu/src/ContextualMenu.tsx b/packages/components/ContextualMenu/src/ContextualMenu.tsx
index ad7aaa27ec3..fffc06d82c7 100644
--- a/packages/components/ContextualMenu/src/ContextualMenu.tsx
+++ b/packages/components/ContextualMenu/src/ContextualMenu.tsx
@@ -36,7 +36,7 @@ export const CMContext = React.createContext({
export const ContextualMenu = compose({
displayName: contextualMenuName,
usePrepareProps: (userProps: ContextualMenuProps, useStyling: IUseComposeStyling) => {
- const { setShowMenu, maxHeight, maxWidth, shouldFocusOnMount = true, shouldFocusOnContainer = false, ...rest } = userProps;
+ const { setShowMenu, maxHeight, maxWidth, onDismiss, shouldFocusOnMount = true, shouldFocusOnContainer = false, ...rest } = userProps;
/**
* On macOS, focus isn't placed by default on the first focusable element. We get around this by focusing on the inner FocusZone
@@ -57,9 +57,9 @@ export const ContextualMenu = compose({
const data = useSelectedKey(null, userProps.onItemClick);
const dismissCallback = React.useCallback(() => {
- userProps.onDismiss();
+ onDismiss();
setShowMenu?.(false);
- }, [setShowMenu, userProps.onDismiss]);
+ }, [onDismiss, setShowMenu]);
const [containerFocus, setContainerFocus] = React.useState(true);
const toggleContainerFocus = React.useCallback(() => {
diff --git a/packages/components/ContextualMenu/src/ContextualMenuItem.tsx b/packages/components/ContextualMenu/src/ContextualMenuItem.tsx
index 2a78171f24e..b2d90013721 100644
--- a/packages/components/ContextualMenu/src/ContextualMenuItem.tsx
+++ b/packages/components/ContextualMenu/src/ContextualMenuItem.tsx
@@ -89,8 +89,6 @@ export const ContextualMenuItem = compose({
const onMouseLeaveModified = React.useCallback(
(e) => {
onBlur(e);
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore IViewWin32 doesn't have the event as an argument, while macOS does
onMouseLeave && onMouseLeave(e);
},
[onBlur, onMouseLeave],
diff --git a/packages/components/ContextualMenu/src/Submenu.tsx b/packages/components/ContextualMenu/src/Submenu.tsx
index efb1c2ebdce..f48c3fda316 100644
--- a/packages/components/ContextualMenu/src/Submenu.tsx
+++ b/packages/components/ContextualMenu/src/Submenu.tsx
@@ -20,7 +20,17 @@ import { submenuName } from './Submenu.types';
export const Submenu = compose({
displayName: submenuName,
usePrepareProps: (userProps: SubmenuProps, useStyling: IUseComposeStyling) => {
- const { setShowMenu, maxWidth, maxHeight, shouldFocusOnMount = true, shouldFocusOnContainer = true, ...rest } = userProps;
+ const {
+ setShowMenu,
+ maxWidth,
+ maxHeight,
+ onDismiss,
+ onItemClick,
+ onShow,
+ shouldFocusOnMount = true,
+ shouldFocusOnContainer = true,
+ ...rest
+ } = userProps;
/**
* On macOS, focus isn't placed by default on the first focusable element. We get around this by focusing on the inner FocusZone
@@ -41,25 +51,25 @@ export const Submenu = compose({
const context = React.useContext(CMContext);
// This hook updates the Selected Button and calls the customer's onClick function. This gets called after a button is pressed.
- const data = useSelectedKey(null, userProps.onItemClick);
+ const data = useSelectedKey(null, onItemClick);
- const onShow = React.useCallback(() => {
- userProps?.onShow && userProps.onShow();
+ const onShowCallback = React.useCallback(() => {
+ onShow && onShow();
context.isSubmenuOpen = true;
- }, [context]);
+ }, [context, onShow]);
- const onDismiss = React.useCallback(() => {
- userProps?.onDismiss();
+ const onDismissCallback = React.useCallback(() => {
+ onDismiss && onDismiss();
setShowMenu(false);
context.isSubmenuOpen = false;
- }, [context, setShowMenu]);
+ }, [context, onDismiss, setShowMenu]);
const dismissCallback = React.useCallback(() => {
- onDismiss();
+ onDismissCallback();
context?.onDismissMenu();
- }, [onDismiss, context]);
+ }, [context, onDismissCallback]);
- context.dismissSubmenu = onDismiss;
+ context.dismissSubmenu = onDismissCallback;
const [containerFocus, setContainerFocus] = React.useState(true);
const toggleContainerFocus = React.useCallback(() => {
@@ -80,10 +90,10 @@ export const Submenu = compose({
(e: any) => {
const arrowKey = I18nManager.isRTL ? 'ArrowRight' : 'ArrowLeft';
if (e.nativeEvent.key === arrowKey) {
- onDismiss();
+ onDismissCallback();
}
},
- [onDismiss],
+ [onDismissCallback],
);
// Explicitly override onKeyDown to override the native windows behavior of moving focus with arrow keys.
@@ -92,8 +102,8 @@ export const Submenu = compose({
const slotProps = mergeSettings(styleProps, {
root: {
...rest,
- onShow: onShow,
- onDismiss: onDismiss,
+ onShow: onShowCallback,
+ onDismiss: onDismissCallback,
setInitialFocus: shouldFocusOnMount,
},
container: {
diff --git a/packages/components/ContextualMenu/src/SubmenuItem.tsx b/packages/components/ContextualMenu/src/SubmenuItem.tsx
index feadcbbe6d8..79a8b305c80 100644
--- a/packages/components/ContextualMenu/src/SubmenuItem.tsx
+++ b/packages/components/ContextualMenu/src/SubmenuItem.tsx
@@ -24,6 +24,8 @@ export const SubmenuItem = compose({
usePrepareProps: (userProps: SubmenuItemProps, useStyling: IUseComposeStyling) => {
const defaultComponentRef = React.useRef(null);
const {
+ onHoverIn,
+ onHoverOut,
disabled,
expanded,
itemKey,
@@ -41,20 +43,26 @@ export const SubmenuItem = compose({
const cmRef = useViewCommandFocus(componentRef);
- const onItemHoverIn = React.useCallback((e) => {
- componentRef.current.focus();
- userProps.onHoverIn && userProps.onHoverIn(e);
- }, []);
+ const onItemHoverIn = React.useCallback(
+ (e) => {
+ componentRef.current.focus();
+ onHoverIn && onHoverIn(e);
+ },
+ [componentRef, onHoverIn],
+ );
const onHoverInDelay = Platform.select({
macos: 100,
default: 500, // win32
});
- const onItemHoverOut = React.useCallback((e) => {
- context?.dismissSubmenu && context.dismissSubmenu();
- userProps.onHoverOut && userProps.onHoverOut(e);
- }, []);
+ const onItemHoverOut = React.useCallback(
+ (e) => {
+ context?.dismissSubmenu && context.dismissSubmenu();
+ onHoverOut && onHoverOut(e);
+ },
+ [context, onHoverOut],
+ );
const onItemPress = React.useCallback(() => {
if (!disabled) {
@@ -79,14 +87,10 @@ export const SubmenuItem = compose({
* In the future, we can avoid needing to override onMouseEnter by handling submenu rendering internally rather than depending on the
* client to conditionally render it with onHoverIn.
*/
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore onMouseLeave not in PressableProps but is supported on desktop
const { onBlur, onMouseEnter, onMouseLeave, ...restPressableProps } = pressable.props;
const onMouseEnterModified = React.useCallback(
(e) => {
componentRef.current.focus();
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore IViewWin32 doesn't have the event as an argument, while macOS does
onMouseEnter && onMouseEnter(e);
},
[componentRef, onMouseEnter],
@@ -94,8 +98,6 @@ export const SubmenuItem = compose({
const onMouseLeaveModified = React.useCallback(
(e) => {
onBlur(e);
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore IViewWin32 doesn't have the event as an argument, while macOS does
onMouseLeave && onMouseLeave(e);
},
[onBlur, onMouseLeave],
diff --git a/packages/components/Divider/eslint.config.js b/packages/components/Divider/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Divider/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Divider/package.json b/packages/components/Divider/package.json
index fd2c72eeb9d..1f3677c1d3f 100644
--- a/packages/components/Divider/package.json
+++ b/packages/components/Divider/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -42,10 +42,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/FocusTrapZone/eslint.config.js b/packages/components/FocusTrapZone/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/FocusTrapZone/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/FocusTrapZone/package.json b/packages/components/FocusTrapZone/package.json
index 7a4548ad829..4c8f5f63523 100644
--- a/packages/components/FocusTrapZone/package.json
+++ b/packages/components/FocusTrapZone/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -41,9 +41,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/components/FocusZone/eslint.config.js b/packages/components/FocusZone/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/FocusZone/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/FocusZone/package.json b/packages/components/FocusZone/package.json
index c65058cd3a9..b3ff5bb8c20 100644
--- a/packages/components/FocusZone/package.json
+++ b/packages/components/FocusZone/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -41,9 +41,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/components/Icon/eslint.config.js b/packages/components/Icon/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Icon/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Icon/package.json b/packages/components/Icon/package.json
index 839d4fe3805..19a166dae34 100644
--- a/packages/components/Icon/package.json
+++ b/packages/components/Icon/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -41,9 +41,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/Input/eslint.config.js b/packages/components/Input/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Input/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Input/package.json b/packages/components/Input/package.json
index 08a13344d2d..52c95e8af63 100644
--- a/packages/components/Input/package.json
+++ b/packages/components/Input/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -45,10 +45,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/components/Link/eslint.config.js b/packages/components/Link/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Link/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Link/package.json b/packages/components/Link/package.json
index f81df8b0828..94a1ffff6bd 100644
--- a/packages/components/Link/package.json
+++ b/packages/components/Link/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -46,10 +46,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/components/Link/src/legacy/Link.settings.ts b/packages/components/Link/src/legacy/Link.settings.ts
index bc84f4943e8..461dfa517de 100644
--- a/packages/components/Link/src/legacy/Link.settings.ts
+++ b/packages/components/Link/src/legacy/Link.settings.ts
@@ -19,7 +19,7 @@ export const settings: IComposeSettings = [
accessible: true,
focusable: true,
enableFocusRing: false,
- ...{ cursor: 'pointer' },
+ cursor: 'pointer',
accessibilityRole: 'link',
style: {
display: 'flex',
diff --git a/packages/components/Menu/eslint.config.js b/packages/components/Menu/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Menu/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Menu/package.json b/packages/components/Menu/package.json
index 9eac7646652..bc915a40f10 100644
--- a/packages/components/Menu/package.json
+++ b/packages/components/Menu/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -51,10 +51,10 @@
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
"@fluentui-react-native/button": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/Menu/src/Menu/useMenu.android.ts b/packages/components/Menu/src/Menu/useMenu.android.ts
index 0694496c086..76994a8d33c 100644
--- a/packages/components/Menu/src/Menu/useMenu.android.ts
+++ b/packages/components/Menu/src/Menu/useMenu.android.ts
@@ -159,14 +159,14 @@ export const useMenu = (props: MenuProps): MenuState => {
// Adjust position of menu - TODO: fix this warning removal, potentially adds extra re-renders
- const transforms = [];
+ const transforms = useMemo(() => {
+ const nextTransforms = [];
- useMemo(() => {
/**
* If the Menu width and SCREEN_INDENT cross the screen width then the Menu will be adjusted to the oppostion left side of the screen
*/
if ((isRTL && left + anchorWidth - menuWidth > SCREEN_INDENT) || (!isRTL && left + menuWidth > windowWidth - SCREEN_INDENT)) {
- transforms.push({
+ nextTransforms.push({
translateX: Animated.multiply(menuSizeAnimation.x, -1),
});
} else if (left < SCREEN_INDENT) {
@@ -177,17 +177,19 @@ export const useMenu = (props: MenuProps): MenuState => {
// Flip by Y axis if menu hits bottom screen border
if (top + menuHeight + SCREEN_INDENT > windowHeight) {
if (menuHeight > maxMenuHeight) {
- transforms.push({
+ nextTransforms.push({
translateY: Animated.multiply(menuSizeAnimation.y, -1),
});
} else {
- transforms.push({
+ nextTransforms.push({
translateY: Animated.multiply(menuSizeAnimation.y, -1),
});
}
} else if (top < SCREEN_INDENT) {
setTop(SCREEN_INDENT);
}
+
+ return nextTransforms;
}, [
anchorWidth,
isRTL,
@@ -198,7 +200,6 @@ export const useMenu = (props: MenuProps): MenuState => {
menuSizeAnimation.y,
menuWidth,
top,
- transforms,
windowHeight,
windowWidth,
]);
@@ -300,7 +301,7 @@ const useMenuOpenState = (
parentSetOpen(e, isOpen, bubble);
}
},
- [state, onOpenChange, parentSetOpen, show, hide],
+ [hide, isControlled, onOpenChange, parentSetOpen, show, state],
);
return [state, shouldFocusOnContainer, setOpen];
};
diff --git a/packages/components/Menu/src/MenuItemRadio/useMenuItemRadio.ts b/packages/components/Menu/src/MenuItemRadio/useMenuItemRadio.ts
index dc8341b7369..6a3a3d8cdd5 100644
--- a/packages/components/Menu/src/MenuItemRadio/useMenuItemRadio.ts
+++ b/packages/components/Menu/src/MenuItemRadio/useMenuItemRadio.ts
@@ -11,7 +11,7 @@ export const useMenuItemRadio = (props: MenuItemRadioProps): MenuItemRadioInfo =
const { disabled = false, name, persistOnClick } = props;
const context = useMenuContext();
const listContext = useMenuListContext();
- const selectRadio = listContext.selectRadio;
+ const { addRadioItem, removeRadioItem, selectRadio } = listContext;
const setOpen = context.setOpen;
let shouldPersist = context.persistOnItemClick;
shouldPersist = persistOnClick ?? shouldPersist;
@@ -30,12 +30,12 @@ export const useMenuItemRadio = (props: MenuItemRadioProps): MenuItemRadioInfo =
// Explicitly only run on mount and unmount
React.useEffect(() => {
- listContext.addRadioItem(name);
+ addRadioItem(name);
return () => {
- listContext.removeRadioItem(name);
+ removeRadioItem(name);
};
- }, []);
+ }, [addRadioItem, name, removeRadioItem]);
return useMenuCheckboxInteraction(props, toggleChecked);
};
diff --git a/packages/components/Menu/src/MenuList/useMenuList.ts b/packages/components/Menu/src/MenuList/useMenuList.ts
index 9287bb45339..cc329da4e77 100644
--- a/packages/components/Menu/src/MenuList/useMenuList.ts
+++ b/packages/components/Menu/src/MenuList/useMenuList.ts
@@ -210,5 +210,5 @@ export const useMenuItemTracking = (ref: React.RefObject, disabled: boolea
React.useEffect(() => {
trackMenuItem(item);
return () => untrackMenuItem(item);
- }, []);
+ }, [item, trackMenuItem, untrackMenuItem]);
};
diff --git a/packages/components/Menu/src/MenuPopover/useMenuPopover.ts b/packages/components/Menu/src/MenuPopover/useMenuPopover.ts
index 3b53d04a6b6..c147d378353 100644
--- a/packages/components/Menu/src/MenuPopover/useMenuPopover.ts
+++ b/packages/components/Menu/src/MenuPopover/useMenuPopover.ts
@@ -24,17 +24,17 @@ export const useMenuPopover = (props: MenuPopoverProps): MenuPopoverState => {
triggerHoverOutTimer,
} = context;
- const { onKeyDown: onKeyDownProp, onKeyUp: onKeyUpProp } = props;
+ const { directionalHint: directionalHintProp, doNotTakePointerCapture: doNotTakePointerCaptureProp, onDismiss: onDismissProp, onKeyDown: onKeyDownProp, onKeyUp: onKeyUpProp } = props;
const onDismiss = React.useCallback(() => {
- props.onDismiss?.();
- (setOpen(undefined, false /* isOpen */), [setOpen]);
- }, [props.onDismiss, setOpen]);
+ onDismissProp?.();
+ setOpen(undefined, false /* isOpen */);
+ }, [onDismissProp, setOpen]);
const dismissBehaviors = isControlled ? controlledDismissBehaviors : undefined;
- const directionalHint = props.directionalHint ?? getDirectionalHint(isSubmenu, I18nManager.isRTL);
+ const directionalHint = directionalHintProp ?? getDirectionalHint(isSubmenu, I18nManager.isRTL);
const setInitialFocus = true;
- const doNotTakePointerCapture = props.doNotTakePointerCapture ?? openOnHover;
+ const doNotTakePointerCapture = doNotTakePointerCaptureProp ?? openOnHover;
const accessibilityRole = 'menu';
const onMouseEnter = React.useCallback(() => {
diff --git a/packages/components/Menu/src/MenuTrigger/useMergeRefs.ts b/packages/components/Menu/src/MenuTrigger/useMergeRefs.ts
index e83e3be2873..f3db121f266 100644
--- a/packages/components/Menu/src/MenuTrigger/useMergeRefs.ts
+++ b/packages/components/Menu/src/MenuTrigger/useMergeRefs.ts
@@ -34,7 +34,7 @@ export function useMergedRefs(...refs: (React.Ref | undefined)[]): RefObje
}
}
},
- [...refs],
+ [refs],
) as unknown as RefObjectFunction;
return mergedCallback;
diff --git a/packages/components/MenuButton/eslint.config.js b/packages/components/MenuButton/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/MenuButton/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/MenuButton/package.json b/packages/components/MenuButton/package.json
index ceb1fd20fc5..95283c8aa8d 100644
--- a/packages/components/MenuButton/package.json
+++ b/packages/components/MenuButton/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -45,10 +45,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/components/MenuButton/src/MenuButton.macos.tsx b/packages/components/MenuButton/src/MenuButton.macos.tsx
index 88fb896cd86..c1ccab8be66 100644
--- a/packages/components/MenuButton/src/MenuButton.macos.tsx
+++ b/packages/components/MenuButton/src/MenuButton.macos.tsx
@@ -77,7 +77,7 @@ export const MenuButton = compose({
// Transform the menuItem props to match the native props of NSMenuItem
function transformMenuItems(menuItems: MenuButtonItemProps[]): NativeMenuItem[] {
const nativeMenuItems: NativeMenuItem[] = [];
- menuItems.forEach((item) => {
+ for (const item of menuItems) {
const imageSource = extractResolvedImageSourceFromIcon(item.icon);
// Recursively parse submenus
@@ -93,7 +93,7 @@ export const MenuButton = compose({
submenu: submenu,
};
nativeMenuItems.push(transformedItem);
- });
+ }
return nativeMenuItems;
}
diff --git a/packages/components/MenuButton/src/MenuButton.tsx b/packages/components/MenuButton/src/MenuButton.tsx
index 0bff35c29c8..cbd44823dfd 100644
--- a/packages/components/MenuButton/src/MenuButton.tsx
+++ b/packages/components/MenuButton/src/MenuButton.tsx
@@ -119,7 +119,7 @@ export const MenuButton = compose({
{menuItems.map((menuItem) => {
return menuItem.hasSubmenu && menuItem.submenuItems ? (
-
+
) : (
diff --git a/packages/components/Notification/eslint.config.js b/packages/components/Notification/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Notification/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Notification/package.json b/packages/components/Notification/package.json
index b7583f33d75..240cc44c82d 100644
--- a/packages/components/Notification/package.json
+++ b/packages/components/Notification/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -50,10 +50,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/Persona/eslint.config.js b/packages/components/Persona/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Persona/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Persona/package.json b/packages/components/Persona/package.json
index 23de0977fbe..bfcdc34d2cb 100644
--- a/packages/components/Persona/package.json
+++ b/packages/components/Persona/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -45,9 +45,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/components/PersonaCoin/eslint.config.js b/packages/components/PersonaCoin/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/PersonaCoin/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/PersonaCoin/package.json b/packages/components/PersonaCoin/package.json
index 01275d71d2b..4deac0c42bb 100644
--- a/packages/components/PersonaCoin/package.json
+++ b/packages/components/PersonaCoin/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -45,9 +45,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/components/Pressable/eslint.config.js b/packages/components/Pressable/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Pressable/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Pressable/package.json b/packages/components/Pressable/package.json
index 52a87a455a9..4c7d2d23e3d 100644
--- a/packages/components/Pressable/package.json
+++ b/packages/components/Pressable/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -41,8 +41,8 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/components/RadioGroup/eslint.config.js b/packages/components/RadioGroup/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/RadioGroup/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/RadioGroup/package.json b/packages/components/RadioGroup/package.json
index dd9cea1473c..21cf8dec9db 100644
--- a/packages/components/RadioGroup/package.json
+++ b/packages/components/RadioGroup/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -50,10 +50,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/RadioGroup/src/Radio/useRadio.ts b/packages/components/RadioGroup/src/Radio/useRadio.ts
index 005b8b94212..7fb59f3ef9e 100644
--- a/packages/components/RadioGroup/src/Radio/useRadio.ts
+++ b/packages/components/RadioGroup/src/Radio/useRadio.ts
@@ -14,13 +14,14 @@ export const useRadio = (props: RadioProps): RadioInfo => {
// Grabs the context information from RadioGroup (currently selected button and client's onChange callback)
const radioGroupContext = useRadioGroupContext();
+ const { disabled: groupDisabled, layout, onChange, updateSelectedButtonRef, value: selectedValue, values } = radioGroupContext;
const {
label,
subtext,
value,
disabled,
- labelPosition = radioGroupContext.layout === 'horizontal-stacked' ? 'below' : 'after',
+ labelPosition = layout === 'horizontal-stacked' ? 'below' : 'after',
accessibilityActions,
accessibilityLabel,
accessibilityHint,
@@ -32,26 +33,26 @@ export const useRadio = (props: RadioProps): RadioInfo => {
...rest
} = props;
- const isDisabled = radioGroupContext.disabled || disabled;
+ const isDisabled = groupDisabled || disabled;
const buttonRef = useViewCommandFocus(componentRef);
/* We don't want to call the user's onChange multiple times on the same selection. */
const changeSelection = React.useCallback(() => {
- if (value !== radioGroupContext.value) {
- radioGroupContext.onChange && radioGroupContext.onChange(value);
- radioGroupContext.updateSelectedButtonRef && componentRef && radioGroupContext.updateSelectedButtonRef(componentRef);
+ if (value !== selectedValue) {
+ onChange && onChange(value);
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
}
- }, [radioGroupContext, value, componentRef]);
+ }, [componentRef, onChange, selectedValue, updateSelectedButtonRef, value]);
/* We use the componentRef of the currently selected button to maintain the default tabbable
element in a RadioGroup. Since the componentRef isn't generated until after initial render,
we must update it once here. */
React.useEffect(() => {
- if (value === radioGroupContext.value && !isDisabled) {
- radioGroupContext.updateSelectedButtonRef && componentRef && radioGroupContext.updateSelectedButtonRef(componentRef);
+ if (value === selectedValue && !isDisabled) {
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
}
- }, []);
+ }, [componentRef, isDisabled, selectedValue, updateSelectedButtonRef, value]);
// Ensure focus is placed on button after click
const changeSelectionWithFocus = useOnPressWithFocus(componentRef, changeSelection);
@@ -82,7 +83,7 @@ export const useRadio = (props: RadioProps): RadioInfo => {
const state = {
...pressable.state,
- selected: radioGroupContext.value === props.value && !isDisabled,
+ selected: selectedValue === props.value && !isDisabled,
disabled: isDisabled || false,
labelPositionBelow: labelPosition === 'below',
};
@@ -101,8 +102,8 @@ export const useRadio = (props: RadioProps): RadioInfo => {
accessibilityHint: accessibilityHint ?? subtext,
accessibilityState: getAccessibilityState(state.disabled, state.selected, accessibilityState),
accessibilityActions: accessibilityActionsProp,
- accessibilityPosInSet: accessibilityPosInSet ?? radioGroupContext.values.findIndex((x) => x == value) + 1,
- accessibilitySetSize: accessibilitySetSize ?? radioGroupContext.values.length,
+ accessibilityPosInSet: accessibilityPosInSet ?? values.findIndex((x) => x == value) + 1,
+ accessibilitySetSize: accessibilitySetSize ?? values.length,
focusable: !state.disabled,
disabled: isDisabled,
enableFocusRing: enableFocusRing ?? true,
diff --git a/packages/components/RadioGroup/src/Radio/useRadio.win32.ts b/packages/components/RadioGroup/src/Radio/useRadio.win32.ts
index 35441aff921..594c6d93895 100644
--- a/packages/components/RadioGroup/src/Radio/useRadio.win32.ts
+++ b/packages/components/RadioGroup/src/Radio/useRadio.win32.ts
@@ -23,6 +23,21 @@ export const useRadio = (props: RadioProps): RadioInfo => {
// Grabs the context information from RadioGroup (currently selected button and client's onChange callback)
const radioGroupContext = useRadioGroupContext();
+ const {
+ addRadioEnabledValue,
+ addRadioValue,
+ disabled: groupDisabled,
+ enabledValues,
+ invoked,
+ layout,
+ onChange,
+ removeRadioEnabledValue,
+ removeRadioValue,
+ updateInvoked,
+ updateSelectedButtonRef,
+ value: selectedValue,
+ values,
+ } = radioGroupContext;
const {
label,
@@ -39,82 +54,82 @@ export const useRadio = (props: RadioProps): RadioInfo => {
...rest
} = props;
- const labelPosition = radioGroupContext.layout === 'horizontal-stacked' ? 'below' : 'after';
+ const labelPosition = layout === 'horizontal-stacked' ? 'below' : 'after';
- const isDisabled = radioGroupContext.disabled || disabled;
+ const isDisabled = groupDisabled || disabled;
const buttonRef = useViewCommandFocus(componentRef);
/* We don't want to call the user's onChange multiple times on the same selection. */
const changeSelection = React.useCallback(() => {
- if (value !== radioGroupContext.value) {
- radioGroupContext.onChange && radioGroupContext.onChange(value);
- radioGroupContext.updateSelectedButtonRef && componentRef && radioGroupContext.updateSelectedButtonRef(componentRef);
+ if (value !== selectedValue) {
+ onChange && onChange(value);
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
}
- }, [radioGroupContext, value, componentRef]);
+ }, [componentRef, onChange, selectedValue, updateSelectedButtonRef, value]);
/* We use the componentRef of the currently selected button to maintain the default tabbable
element in a RadioGroup. Since the componentRef isn't generated until after initial render,
we must update it once here. */
React.useEffect(() => {
- if (value === radioGroupContext.value && !isDisabled) {
- radioGroupContext.updateSelectedButtonRef && componentRef && radioGroupContext.updateSelectedButtonRef(componentRef);
+ if (value === selectedValue && !isDisabled) {
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
}
- }, []);
+ }, [componentRef, isDisabled, selectedValue, updateSelectedButtonRef, value]);
// Explicitly only run on mount and unmount
React.useEffect(() => {
- radioGroupContext.addRadioValue(value);
+ addRadioValue(value);
return () => {
- radioGroupContext.removeRadioValue(value);
+ removeRadioValue(value);
};
- }, []);
+ }, [addRadioValue, removeRadioValue, value]);
React.useEffect(() => {
if (isDisabled) {
- radioGroupContext.removeRadioEnabledValue(value);
+ removeRadioEnabledValue(value);
} else {
- radioGroupContext.addRadioEnabledValue(value);
+ addRadioEnabledValue(value);
}
- }, [isDisabled]);
+ }, [addRadioEnabledValue, isDisabled, removeRadioEnabledValue, value]);
const isRTL = I18nManager.isRTL;
const onInvoke = React.useCallback(
(e: KeyPressEvent) => {
if (e.nativeEvent.key in DirectionalArrowKeys) {
- const length = radioGroupContext.enabledValues.length;
+ const length = enabledValues.length;
const previous =
e.nativeEvent.key === DirectionalArrowKeys.ArrowUp ||
(isRTL ? e.nativeEvent.key === DirectionalArrowKeys.ArrowRight : e.nativeEvent.key === DirectionalArrowKeys.ArrowLeft);
const next =
e.nativeEvent.key === DirectionalArrowKeys.ArrowDown ||
(isRTL ? e.nativeEvent.key === DirectionalArrowKeys.ArrowLeft : e.nativeEvent.key === DirectionalArrowKeys.ArrowRight);
- const currRadioIndex = radioGroupContext.enabledValues.indexOf(radioGroupContext.value);
+ const currRadioIndex = enabledValues.indexOf(selectedValue);
let newCurrRadioIndex;
if (next) {
newCurrRadioIndex = (currRadioIndex + 1) % length;
- radioGroupContext.onChange && radioGroupContext.onChange(radioGroupContext.enabledValues[newCurrRadioIndex]);
- radioGroupContext.updateInvoked && radioGroupContext.updateInvoked(true);
+ onChange && onChange(enabledValues[newCurrRadioIndex]);
+ updateInvoked && updateInvoked(true);
} else if (previous) {
newCurrRadioIndex = (currRadioIndex - 1 + length) % length;
- radioGroupContext.onChange && radioGroupContext.onChange(radioGroupContext.enabledValues[newCurrRadioIndex]);
- radioGroupContext.updateInvoked && radioGroupContext.updateInvoked(true);
+ onChange && onChange(enabledValues[newCurrRadioIndex]);
+ updateInvoked && updateInvoked(true);
}
}
},
- [radioGroupContext],
+ [enabledValues, isRTL, onChange, selectedValue, updateInvoked],
);
// Sets the updated selected button ref and focus if this Radio is selected via arrow key.
React.useEffect(() => {
- if (radioGroupContext.invoked && value === radioGroupContext.value && !isDisabled) {
- radioGroupContext.updateSelectedButtonRef && componentRef && radioGroupContext.updateSelectedButtonRef(componentRef);
+ if (invoked && value === selectedValue && !isDisabled) {
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
componentRef?.current?.focus();
- radioGroupContext.updateInvoked && radioGroupContext.updateInvoked(false);
+ updateInvoked && updateInvoked(false);
}
- }, [radioGroupContext.invoked]);
+ }, [componentRef, invoked, isDisabled, selectedValue, updateInvoked, updateSelectedButtonRef, value]);
const keys = ['ArrowDown', 'ArrowRight', 'ArrowUp', 'ArrowLeft'];
@@ -150,7 +165,7 @@ export const useRadio = (props: RadioProps): RadioInfo => {
const state = {
...pressable.state,
- selected: radioGroupContext.value === props.value && !isDisabled,
+ selected: selectedValue === props.value && !isDisabled,
disabled: isDisabled || false,
};
@@ -168,8 +183,8 @@ export const useRadio = (props: RadioProps): RadioInfo => {
accessibilityHint: accessibilityHint ?? subtext,
accessibilityState: getAccessibilityState(state.disabled, state.selected, accessibilityState),
accessibilityActions: accessibilityActionsProp,
- accessibilityPosInSet: accessibilityPosInSet ?? radioGroupContext.values.findIndex((x) => x == value) + 1,
- accessibilitySetSize: accessibilitySetSize ?? radioGroupContext.values.length,
+ accessibilityPosInSet: accessibilityPosInSet ?? values.findIndex((x) => x == value) + 1,
+ accessibilitySetSize: accessibilitySetSize ?? values.length,
focusable: !state.disabled,
disabled: isDisabled,
onAccessibilityAction: onAccessibilityAction,
diff --git a/packages/components/RadioGroup/src/legacy/RadioButton.macos.tsx b/packages/components/RadioGroup/src/legacy/RadioButton.macos.tsx
index fbf09b05567..aa253fc4c48 100644
--- a/packages/components/RadioGroup/src/legacy/RadioButton.macos.tsx
+++ b/packages/components/RadioGroup/src/legacy/RadioButton.macos.tsx
@@ -22,27 +22,28 @@ export const RadioButton = compose({
const defaultComponentRef = React.useRef(null);
const { content, buttonKey, disabled, componentRef = defaultComponentRef } = userProps;
const info = React.useContext(RadioGroupContext);
+ const { onChange, selectedKey, updateSelectedButtonRef } = info;
// Reroute the native component's onPress event to RadioGroup's onChange
- const onPressRerouted = () => {
+ const onPressRerouted = React.useCallback(() => {
// Prevent calls to RadioGroup's onChange on the currently selected button
- if (buttonKey != info.selectedKey) {
- info.onChange && info.onChange(buttonKey);
- info.updateSelectedButtonRef && componentRef && info.updateSelectedButtonRef(componentRef);
+ if (buttonKey != selectedKey) {
+ onChange && onChange(buttonKey);
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
}
- };
+ }, [buttonKey, componentRef, onChange, selectedKey, updateSelectedButtonRef]);
/* We use the componentRef of the currently selected button to maintain the default tabbable
element in a RadioGroup. Since the componentRef isn't generated until after initial render,
we must update it once here. */
React.useEffect(() => {
- if (buttonKey === info.selectedKey) {
- info.updateSelectedButtonRef && componentRef && info.updateSelectedButtonRef(componentRef);
+ if (buttonKey === selectedKey) {
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
}
- }, []);
+ }, [buttonKey, componentRef, selectedKey, updateSelectedButtonRef]);
const styleProps = useStyling(userProps);
- const isSelected = info.selectedKey === buttonKey;
+ const isSelected = selectedKey === buttonKey;
const slotProps = mergeSettings(styleProps, {
root: {
ref: componentRef,
diff --git a/packages/components/RadioGroup/src/legacy/RadioButton.tsx b/packages/components/RadioGroup/src/legacy/RadioButton.tsx
index ad771c53e2d..17731d96372 100644
--- a/packages/components/RadioGroup/src/legacy/RadioButton.tsx
+++ b/packages/components/RadioGroup/src/legacy/RadioButton.tsx
@@ -38,25 +38,26 @@ export const RadioButton = compose({
// Grabs the context information from RadioGroup (currently selected button and client's onChange callback)
const info = React.useContext(RadioGroupContext);
+ const { selectedKey, onChange, updateSelectedButtonRef, buttonKeys } = info;
const buttonRef = useViewCommandFocus(componentRef);
/* We don't want to call the user's onChange multiple times on the same selection. */
- const changeSelection = () => {
- if (buttonKey != info.selectedKey) {
- info.onChange && info.onChange(buttonKey);
- info.updateSelectedButtonRef && componentRef && info.updateSelectedButtonRef(componentRef);
+ const changeSelection = React.useCallback(() => {
+ if (buttonKey != selectedKey) {
+ onChange && onChange(buttonKey);
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
}
- };
+ }, [buttonKey, componentRef, onChange, selectedKey, updateSelectedButtonRef]);
/* We use the componentRef of the currently selected button to maintain the default tabbable
element in a RadioGroup. Since the componentRef isn't generated until after initial render,
we must update it once here. */
React.useEffect(() => {
- if (buttonKey == info.selectedKey) {
- info.updateSelectedButtonRef && componentRef && info.updateSelectedButtonRef(componentRef);
+ if (buttonKey == selectedKey) {
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
}
- }, []);
+ }, [buttonKey, componentRef, selectedKey, updateSelectedButtonRef]);
// Ensure focus is placed on button after click
const changeSelectionWithFocus = useOnPressWithFocus(componentRef, changeSelection);
@@ -77,12 +78,12 @@ export const RadioButton = compose({
break;
}
},
- [info, buttonKey],
+ [changeSelection],
);
const state = {
...pressable.state,
- selected: info.selectedKey === userProps.buttonKey,
+ selected: selectedKey === userProps.buttonKey,
disabled: disabled || false,
};
@@ -98,8 +99,8 @@ export const RadioButton = compose({
accessibilityLabel: accessibilityLabel ?? ariaLabel ?? content,
accessibilityState: { disabled: state.disabled, selected: state.selected },
accessibilityActions: [{ name: 'Select', label: radioButtonSelectActionLabel }],
- accessibilityPosInSet: accessibilityPosInSet ?? ariaPosInSet ?? info.buttonKeys.findIndex((x) => x == buttonKey) + 1,
- accessibilitySetSize: accessibilitySetSize ?? ariaSetSize ?? info.buttonKeys.length,
+ accessibilityPosInSet: accessibilityPosInSet ?? ariaPosInSet ?? buttonKeys.findIndex((x) => x == buttonKey) + 1,
+ accessibilitySetSize: accessibilitySetSize ?? ariaSetSize ?? buttonKeys.length,
focusable: !state.disabled,
onAccessibilityAction: onAccessibilityAction,
},
diff --git a/packages/components/RadioGroup/src/legacy/RadioButton.win32.tsx b/packages/components/RadioGroup/src/legacy/RadioButton.win32.tsx
index 368f1150dac..bc2cc62c82c 100644
--- a/packages/components/RadioGroup/src/legacy/RadioButton.win32.tsx
+++ b/packages/components/RadioGroup/src/legacy/RadioButton.win32.tsx
@@ -46,50 +46,63 @@ export const RadioButton = compose({
// Grabs the context information from RadioGroup (currently selected button and client's onChange callback)
const info = React.useContext(RadioGroupContext);
+ const {
+ addRadioButtonEnabledKey,
+ addRadioButtonKey,
+ buttonKeys,
+ enabledButtonKeys,
+ invoked,
+ onChange,
+ removeRadioButtonEnabledKey,
+ removeRadioButtonKey,
+ selectedKey,
+ updateInvoked,
+ updateSelectedButtonRef,
+ } = info;
const buttonRef = useViewCommandFocus(componentRef);
/* We don't want to call the user's onChange multiple times on the same selection. */
- const changeSelection = () => {
- if (buttonKey != info.selectedKey) {
- info.onChange && info.onChange(buttonKey);
- info.updateSelectedButtonRef && componentRef && info.updateSelectedButtonRef(componentRef);
+ const changeSelection = React.useCallback(() => {
+ if (buttonKey != selectedKey) {
+ onChange && onChange(buttonKey);
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
}
- };
+ }, [buttonKey, componentRef, onChange, selectedKey, updateSelectedButtonRef]);
/* We use the componentRef of the currently selected button to maintain the default tabbable
element in a RadioGroup. Since the componentRef isn't generated until after initial render,
we must update it once here. */
React.useEffect(() => {
- if (buttonKey == info.selectedKey) {
- info.updateSelectedButtonRef && componentRef && info.updateSelectedButtonRef(componentRef);
+ if (buttonKey == selectedKey) {
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
}
- }, []);
+ }, [buttonKey, componentRef, selectedKey, updateSelectedButtonRef]);
// Explicitly only run on mount and unmount
React.useEffect(() => {
- info.addRadioButtonKey(buttonKey);
+ addRadioButtonKey(buttonKey);
if (!disabled) {
- info.addRadioButtonEnabledKey(buttonKey);
+ addRadioButtonEnabledKey(buttonKey);
}
return () => {
- info.removeRadioButtonKey(buttonKey);
- info.removeRadioButtonEnabledKey(buttonKey);
+ removeRadioButtonKey(buttonKey);
+ removeRadioButtonEnabledKey(buttonKey);
};
- }, []);
+ }, [addRadioButtonEnabledKey, addRadioButtonKey, buttonKey, disabled, removeRadioButtonEnabledKey, removeRadioButtonKey]);
const isRTL = I18nManager.isRTL;
const onInvoke = React.useCallback(
(e: KeyPressEvent) => {
if (e.nativeEvent.key in DirectionalArrowKeys) {
- const length = info.enabledButtonKeys.length;
+ const length = enabledButtonKeys.length;
const next =
e.nativeEvent.key === DirectionalArrowKeys.ArrowDown ||
(isRTL ? e.nativeEvent.key === DirectionalArrowKeys.ArrowLeft : e.nativeEvent.key === DirectionalArrowKeys.ArrowRight);
- const currRadioButtonIndex = info.enabledButtonKeys.indexOf(info.selectedKey);
+ const currRadioButtonIndex = enabledButtonKeys.indexOf(selectedKey);
let newCurrRadioButtonIndex;
if (next) {
newCurrRadioButtonIndex = (currRadioButtonIndex + 1) % length;
@@ -97,21 +110,21 @@ export const RadioButton = compose({
// previous
newCurrRadioButtonIndex = (currRadioButtonIndex - 1 + length) % length;
}
- info.onChange && info.onChange(info.enabledButtonKeys[newCurrRadioButtonIndex]);
- info.updateInvoked && info.updateInvoked(true);
+ onChange && onChange(enabledButtonKeys[newCurrRadioButtonIndex]);
+ updateInvoked && updateInvoked(true);
}
},
- [info],
+ [enabledButtonKeys, isRTL, onChange, selectedKey, updateInvoked],
);
// Sets the updated selected button ref and focus if this Radio is selected via arrow key.
React.useEffect(() => {
- if (info.invoked && buttonKey === info.selectedKey && !disabled) {
- info.updateSelectedButtonRef && componentRef && info.updateSelectedButtonRef(componentRef);
+ if (invoked && buttonKey === selectedKey && !disabled) {
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
componentRef?.current?.focus();
- info.updateInvoked && info.updateInvoked(false);
+ updateInvoked && updateInvoked(false);
}
- }, [info.invoked]);
+ }, [buttonKey, componentRef, disabled, invoked, selectedKey, updateInvoked, updateSelectedButtonRef]);
const keys = ['ArrowDown', 'ArrowRight', 'ArrowUp', 'ArrowLeft'];
@@ -119,13 +132,13 @@ export const RadioButton = compose({
const onKeyDownProps = useKeyDownProps(onInvoke, ...keys);
// Ensure focus is placed on button after click
- const changeSelectionWithFocus = () => {
- if (buttonKey != info.selectedKey) {
- info.onChange && info.onChange(buttonKey);
- info.updateSelectedButtonRef && componentRef && info.updateSelectedButtonRef(componentRef);
- info.updateInvoked && info.updateInvoked(true);
+ const changeSelectionWithFocus = React.useCallback(() => {
+ if (buttonKey != selectedKey) {
+ onChange && onChange(buttonKey);
+ updateSelectedButtonRef && componentRef && updateSelectedButtonRef(componentRef);
+ updateInvoked && updateInvoked(true);
}
- };
+ }, [buttonKey, componentRef, onChange, selectedKey, updateInvoked, updateSelectedButtonRef]);
/* RadioButton changes selection when focus is moved between each RadioButton and on a click */
const pressable = useAsPressable({
@@ -143,12 +156,12 @@ export const RadioButton = compose({
break;
}
},
- [info, buttonKey],
+ [changeSelection],
);
const state = {
...pressable.state,
- selected: info.selectedKey === userProps.buttonKey && !disabled,
+ selected: selectedKey === userProps.buttonKey && !disabled,
disabled: disabled || false,
};
@@ -164,8 +177,8 @@ export const RadioButton = compose({
accessibilityLabel: accessibilityLabel ?? ariaLabel ?? content,
accessibilityState: { disabled: state.disabled, selected: state.selected },
accessibilityActions: [{ name: 'Select', label: radioButtonSelectActionLabel }],
- accessibilityPosInSet: accessibilityPosInSet ?? ariaPosInSet ?? info.buttonKeys.findIndex((x) => x == buttonKey) + 1,
- accessibilitySetSize: accessibilitySetSize ?? ariaSetSize ?? info.buttonKeys.length,
+ accessibilityPosInSet: accessibilityPosInSet ?? ariaPosInSet ?? buttonKeys.findIndex((x) => x == buttonKey) + 1,
+ accessibilitySetSize: accessibilitySetSize ?? ariaSetSize ?? buttonKeys.length,
focusable: !state.disabled,
onAccessibilityAction: onAccessibilityAction,
...onKeyDownProps,
diff --git a/packages/components/RadioGroup/src/legacy/RadioGroup.tsx b/packages/components/RadioGroup/src/legacy/RadioGroup.tsx
index 64e0da5017e..5e234d19cdc 100644
--- a/packages/components/RadioGroup/src/legacy/RadioGroup.tsx
+++ b/packages/components/RadioGroup/src/legacy/RadioGroup.tsx
@@ -64,16 +64,14 @@ export const RadioGroup = compose({
const onAddRadioButtonKey = React.useCallback(
(buttonKey: string) => {
- buttonKeys.push(buttonKey);
- setButtonKeys(buttonKeys);
+ setButtonKeys((prevButtonKeys) => [...prevButtonKeys, buttonKey]);
},
[setButtonKeys],
);
const onRemoveRadioButtonKey = React.useCallback(
(buttonKey: string) => {
- buttonKeys.filter((item) => item !== buttonKey);
- setButtonKeys(buttonKeys);
+ setButtonKeys((prevButtonKeys) => prevButtonKeys.filter((item) => item !== buttonKey));
},
[setButtonKeys],
);
@@ -82,16 +80,14 @@ export const RadioGroup = compose({
const onAddRadioButtonEnabledKey = React.useCallback(
(buttonKey: string) => {
- enabledButtonKeys.push(buttonKey);
- setEnabledButtonKeys(enabledButtonKeys);
+ setEnabledButtonKeys((prevEnabledButtonKeys) => [...prevEnabledButtonKeys, buttonKey]);
},
[setEnabledButtonKeys],
);
const onRemoveRadioButtonEnabledKey = React.useCallback(
(buttonKey: string) => {
- enabledButtonKeys.filter((item) => item !== buttonKey);
- setEnabledButtonKeys(enabledButtonKeys);
+ setEnabledButtonKeys((prevEnabledButtonKeys) => prevEnabledButtonKeys.filter((item) => item !== buttonKey));
},
[setEnabledButtonKeys],
);
diff --git a/packages/components/Separator/eslint.config.js b/packages/components/Separator/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Separator/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Separator/package.json b/packages/components/Separator/package.json
index e08b5aa51e2..71b2e7e647d 100644
--- a/packages/components/Separator/package.json
+++ b/packages/components/Separator/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -40,10 +40,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/components/Stack/eslint.config.js b/packages/components/Stack/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Stack/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Stack/package.json b/packages/components/Stack/package.json
index fd1835500ab..11258349658 100644
--- a/packages/components/Stack/package.json
+++ b/packages/components/Stack/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -44,10 +44,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/text": "workspace:*",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/components/Stack/src/Stack.tsx b/packages/components/Stack/src/Stack.tsx
index 3cdafd8d537..3deba9fdde3 100644
--- a/packages/components/Stack/src/Stack.tsx
+++ b/packages/components/Stack/src/Stack.tsx
@@ -41,7 +41,7 @@ const render = (Slots: ISlots, renderData: IStackRenderData, ..
if (gap && gap > 0 && children && globalThis.__jsiExecutorDescription !== 'ChakraRuntime') {
const extraStyle: ViewStyle = horizontal ? { marginLeft: gap } : { marginTop: gap };
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore - TODO, fix typing error
+ // @ts-expect-error - TODO, fix typing error
children = React.Children.map(children, (child: React.ReactChild, index: number) => {
if (React.isValidElement(child) && index > 0) {
const childProps = child.props as ObjectBase;
diff --git a/packages/components/Switch/eslint.config.js b/packages/components/Switch/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Switch/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Switch/package.json b/packages/components/Switch/package.json
index 786f52fd5e2..95fbdb054a7 100644
--- a/packages/components/Switch/package.json
+++ b/packages/components/Switch/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -44,10 +44,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/Switch/src/useSwitch.ts b/packages/components/Switch/src/useSwitch.ts
index a06eac16bfd..48d79131029 100644
--- a/packages/components/Switch/src/useSwitch.ts
+++ b/packages/components/Switch/src/useSwitch.ts
@@ -56,7 +56,7 @@ export const useSwitch = (props: SwitchProps, animationConfig?: AnimationConfig)
setIsInit(false);
}
- }, [checked, checkedState]);
+ }, [animation, checkedState, isInit, thumbTranslateValue, trackBackgroundAnimation]);
const switchAnimationStyles = React.useMemo(() => {
// transform over toggled on position to toggled off position and vice versa
@@ -89,7 +89,7 @@ export const useSwitch = (props: SwitchProps, animationConfig?: AnimationConfig)
}),
},
};
- }, [checkedState]);
+ }, [animation, animationConfig.toggleOffBgColor, animationConfig.toggleOnBgColor, checkedState, trackBackgroundAnimation]);
const focusRef = disabled ? null : componentRef;
diff --git a/packages/components/TabList/eslint.config.js b/packages/components/TabList/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/TabList/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/TabList/package.json b/packages/components/TabList/package.json
index 93afcf022eb..3ade2667fbf 100644
--- a/packages/components/TabList/package.json
+++ b/packages/components/TabList/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -46,10 +46,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/components/TabList/src/Tab/useTab.ts b/packages/components/TabList/src/Tab/useTab.ts
index b1aa19309e9..cfbee29f46f 100644
--- a/packages/components/TabList/src/Tab/useTab.ts
+++ b/packages/components/TabList/src/Tab/useTab.ts
@@ -68,7 +68,7 @@ export const useTab = (props: TabProps): TabInfo => {
componentRef && setFocusedTabRef(componentRef);
}
return () => removeTabKey(tabKey);
- }, []);
+ }, [addTabKey, componentRef, removeTabKey, selectedKey, setFocusedTabRef, tabKey]);
// Used when creating accessibility properties in mergeSettings below.
const onAccessibilityActionProp = React.useCallback(
diff --git a/packages/components/TabList/src/Tab/useTab.win32.ts b/packages/components/TabList/src/Tab/useTab.win32.ts
index 08d22b0d7ed..5e295349352 100644
--- a/packages/components/TabList/src/Tab/useTab.win32.ts
+++ b/packages/components/TabList/src/Tab/useTab.win32.ts
@@ -87,17 +87,15 @@ export const useTab = (props: TabProps): TabInfo => {
componentRef && setFocusedTabRef(componentRef);
}
return () => removeTabKey(tabKey);
- }, []);
+ }, [addTabKey, componentRef, removeTabKey, selectedKey, setFocusedTabRef, tabKey]);
React.useEffect(() => {
updateTabRef(tabKey, componentRef);
- // Disable exhaustive-deps warning because the hook shouldn't run whenever the excluded dependency, updateTabRef, changes.
- }, [tabKey, componentRef]);
+ }, [componentRef, tabKey, updateTabRef]);
React.useEffect(() => {
updateDisabledTabs(tabKey, disabled);
- // Disable exhaustive-deps warning because the hook shouldn't run whenever the excluded dependency, updateDisabledTabs, change.
- }, [tabKey, disabled]);
+ }, [disabled, tabKey, updateDisabledTabs]);
/**
* Continuing from `handlePressAndDeferFocus`, once we have updated the selection state, we can safely set focus to the correct tab so
@@ -109,8 +107,7 @@ export const useTab = (props: TabProps): TabInfo => {
componentRef?.current?.focus();
setInvoked(false);
}
- // Disable exhaustive-deps warning because hook should only run whenever 'invoked' and its setter are updated.
- }, [invoked, setInvoked]);
+ }, [componentRef, invoked, isDisabled, selectedKey, setFocusedTabRef, setInvoked, tabKey]);
// Used when creating accessibility properties in mergeSettings below.
const onAccessibilityActionProp = React.useCallback(
diff --git a/packages/components/TabList/src/Tab/useTabAnimation.ts b/packages/components/TabList/src/Tab/useTabAnimation.ts
index 3d03eb8782d..e421974f886 100644
--- a/packages/components/TabList/src/Tab/useTabAnimation.ts
+++ b/packages/components/TabList/src/Tab/useTabAnimation.ts
@@ -35,8 +35,7 @@ export function useTabAnimation(
if (tabKey === selectedKey && updateAnimatedIndicatorStyles) {
updateAnimatedIndicatorStyles({ backgroundColor: tokens.indicatorColor, borderRadius: tokens.indicatorRadius });
}
- // Disabling warning because effect does not need to fire on `updateAnimatedIndicatorStyles` being changed
- }, [tabKey, selectedKey, tokens.indicatorColor, tokens.indicatorRadius]);
+ }, [tabKey, selectedKey, tokens.indicatorColor, tokens.indicatorRadius, updateAnimatedIndicatorStyles]);
/**
* This checks to see if we have relevant info to calculate the layout position and dimensions of the indicator. If this check fails, we don't
diff --git a/packages/components/TabList/src/TabList/useTabList.ts b/packages/components/TabList/src/TabList/useTabList.ts
index 52a54a14d70..f3332250383 100644
--- a/packages/components/TabList/src/TabList/useTabList.ts
+++ b/packages/components/TabList/src/TabList/useTabList.ts
@@ -145,9 +145,10 @@ export const useTabList = (props: TabListProps): TabListInfo => {
if (isSelectedTabDisabled) {
// switch focus to the next available tab key
let tabIndex = tabKeys.indexOf(selectedTabKey);
- for (let i = 0; i < tabKeys.length; i++) {
- tabIndex = (tabIndex + 1) % tabKeys.length;
- if (!disabledStateMap[tabKeys[tabIndex]]) {
+ const orderedTabKeys = [...tabKeys.slice(tabIndex + 1), ...tabKeys.slice(0, tabIndex + 1)];
+ for (const candidateTabKey of orderedTabKeys) {
+ tabIndex = tabKeys.indexOf(candidateTabKey);
+ if (!disabledStateMap[candidateTabKey]) {
break;
}
}
@@ -159,7 +160,7 @@ export const useTabList = (props: TabListProps): TabListInfo => {
setFocusedTabRef(ref);
}
}
- }, [isSelectedTabDisabled]);
+ }, [disabledStateMap, isSelectedTabDisabled, selectedTabKey, tabKeys, tabRefMap]);
// win32 only prop used to implemement CTRL + TAB shortcut native to windows tab components
const onRootKeyDown = React.useCallback(
diff --git a/packages/components/TabList/src/TabListAnimatedIndicator/useAnimatedIndicatorStyles.ts b/packages/components/TabList/src/TabListAnimatedIndicator/useAnimatedIndicatorStyles.ts
index 53ec9fb61eb..285661b9f06 100644
--- a/packages/components/TabList/src/TabListAnimatedIndicator/useAnimatedIndicatorStyles.ts
+++ b/packages/components/TabList/src/TabListAnimatedIndicator/useAnimatedIndicatorStyles.ts
@@ -16,7 +16,7 @@ export function useAnimatedIndicatorStyles(props: AnimatedIndicatorProps): Anima
const indicatorScale = React.useRef(new Animated.Value(1)).current;
// Save the initial selected layout, this shouldn't update after the first render.
- const startingKey = React.useMemo(() => selectedKey, []);
+ const startingKey = React.useRef(selectedKey).current;
React.useEffect(() => {
const startingIndicatorLayout = tabLayout[startingKey];
@@ -51,11 +51,7 @@ export function useAnimatedIndicatorStyles(props: AnimatedIndicatorProps): Anima
}),
]).start();
}
- // This hook should only run when (1) the selected key / vertical prop changes and (2) whenever the tabLayout map changes because that implies an
- // extent change among the tabs: specifically whenever the selected tab is bolded and previously selected tab is unbolded. Without checking for #2,
- // the animation for scaling and translating the indicator uses outdated layout info, resulting in a unaligned, small indicator. All other dependencies
- // are irrelevant.
- }, [selectedKey, tabLayout, vertical]);
+ }, [indicatorScale, indicatorTranslate, selectedKey, startingKey, tabLayout, vertical]);
// Calculate styles using both layout information and user defined styles
const styles = React.useMemo(() => {
diff --git a/packages/components/Text/eslint.config.js b/packages/components/Text/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/components/Text/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/components/Text/package.json b/packages/components/Text/package.json
index e917ddf7d54..3fc4780e96a 100644
--- a/packages/components/Text/package.json
+++ b/packages/components/Text/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -43,10 +43,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/configs/eslint-config-rules/eslint.config.js b/packages/configs/eslint-config-rules/eslint.config.js
deleted file mode 100644
index 1d55aeb842d..00000000000
--- a/packages/configs/eslint-config-rules/eslint.config.js
+++ /dev/null
@@ -1,90 +0,0 @@
-const rnx = require('@rnx-kit/eslint-plugin');
-const sdl = require('@microsoft/eslint-plugin-sdl');
-
-module.exports = [
- ...sdl.configs.common,
- ...rnx.configs.strict,
- // Base configuration for all files
- {
- languageOptions: {
- parserOptions: {
- projectService: true,
- tsconfigRootDir: process.cwd(),
- },
- },
- rules: {
- indent: 'off',
- 'no-unused-vars': 'off',
- quotes: [
- 'error',
- 'single',
- {
- avoidEscape: true,
- allowTemplateLiterals: true,
- },
- ],
- '@rnx-kit/no-const-enum': 'error',
- '@rnx-kit/no-export-all': ['error', { expand: 'external-only' }],
- '@typescript-eslint/consistent-type-assertions': 'off',
- '@typescript-eslint/explicit-function-return-type': 'off',
- '@typescript-eslint/interface-name-prefix': 'off',
- '@typescript-eslint/no-array-constructor': 'off',
- '@typescript-eslint/no-dynamic-delete': 'off',
- '@typescript-eslint/no-empty-interface': 'off',
- '@typescript-eslint/no-explicit-any': 'off',
- '@typescript-eslint/no-inferrable-types': 'off',
- '@typescript-eslint/no-non-null-assertion': 'off',
- '@typescript-eslint/consistent-type-exports': 'error',
- 'no-prototype-builtins': 'off',
- 'no-undef': 'off',
- 'react/display-name': 'off',
- 'react/react-in-jsx-scope': 'off', // unnecessary with new JSX transform
- 'react-hooks/exhaustive-deps': 'off', // This should be fixed in the future but is a big change
- 'no-restricted-exports': [
- 'error',
- {
- restrictDefaultExports: {
- direct: false,
- named: true,
- defaultFrom: true,
- namedFrom: true,
- namespaceFrom: true,
- },
- },
- ],
- },
- },
- // Override configuration for index files
- {
- files: ['**/src/index.{js,ts,tsx}'],
- rules: {
- '@rnx-kit/no-export-all': ['error', { expand: 'all' }],
- },
- },
- {
- files: ['**/*.test.{js,ts,tsx}', '**/*.spec.{js,ts,tsx}'],
- languageOptions: {
- globals: {
- // These are provided by the jest environment
- // https://jestjs.io/docs/using-matchers
- expect: 'readonly',
- test: 'readonly',
- describe: 'readonly',
- beforeAll: 'readonly',
- afterAll: 'readonly',
- beforeEach: 'readonly',
- afterEach: 'readonly',
- jest: 'readonly',
- },
- },
- rules: {
- '@typescript-eslint/no-explicit-any': 'off',
- '@typescript-eslint/no-empty-function': 'off',
- '@typescript-eslint/no-non-null-assertion': 'off',
- },
- },
- // Common ignore patterns
- {
- ignores: ['node_modules/**', '*.config.js', 'dist/**/*', 'coverage/**/*', 'lib/**/*', 'out/**/*'],
- },
-];
diff --git a/packages/configs/jest-config/eslint.config.js b/packages/configs/jest-config/eslint.config.js
deleted file mode 100644
index a4f7e7df548..00000000000
--- a/packages/configs/jest-config/eslint.config.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import baseConfig from '@fluentui-react-native/eslint-config-rules';
-export default baseConfig;
diff --git a/packages/configs/jest-config/package.json b/packages/configs/jest-config/package.json
index 3a4ac51e206..bd25e0c0b04 100644
--- a/packages/configs/jest-config/package.json
+++ b/packages/configs/jest-config/package.json
@@ -24,7 +24,7 @@
"build": "tsgo",
"build-core": "tsgo",
"depcheck": "fluentui-scripts depcheck",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package"
},
"dependencies": {
@@ -33,8 +33,8 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native/babel-preset": "^0.81.0",
"@types/node": "catalog:",
diff --git a/packages/configs/eslint-config-rules/.npmignore b/packages/configs/lint-config-rules/.npmignore
similarity index 100%
rename from packages/configs/eslint-config-rules/.npmignore
rename to packages/configs/lint-config-rules/.npmignore
diff --git a/packages/configs/eslint-config-rules/CHANGELOG.json b/packages/configs/lint-config-rules/CHANGELOG.json
similarity index 100%
rename from packages/configs/eslint-config-rules/CHANGELOG.json
rename to packages/configs/lint-config-rules/CHANGELOG.json
diff --git a/packages/configs/eslint-config-rules/CHANGELOG.md b/packages/configs/lint-config-rules/CHANGELOG.md
similarity index 100%
rename from packages/configs/eslint-config-rules/CHANGELOG.md
rename to packages/configs/lint-config-rules/CHANGELOG.md
diff --git a/packages/configs/lint-config-rules/oxlint.config.ts b/packages/configs/lint-config-rules/oxlint.config.ts
new file mode 100644
index 00000000000..7dfc98bb7bf
--- /dev/null
+++ b/packages/configs/lint-config-rules/oxlint.config.ts
@@ -0,0 +1 @@
+export { default } from './private.js';
diff --git a/packages/configs/eslint-config-rules/package.json b/packages/configs/lint-config-rules/package.json
similarity index 53%
rename from packages/configs/eslint-config-rules/package.json
rename to packages/configs/lint-config-rules/package.json
index 5c71424f3c7..62dd61e058b 100644
--- a/packages/configs/eslint-config-rules/package.json
+++ b/packages/configs/lint-config-rules/package.json
@@ -1,17 +1,23 @@
{
- "name": "@fluentui-react-native/eslint-config-rules",
+ "name": "@fluentui-react-native/lint-config-rules",
"version": "0.1.2",
- "description": "ESLint ruleset for UI Fabric React Native",
+ "description": "Oxlint config for Fluent UI React Native",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/microsoft/fluentui-react-native",
- "directory": "packages/framework/eslint-config-rules"
+ "directory": "packages/configs/lint-config-rules"
},
- "main": "./eslint.config.js",
+ "type": "module",
+ "main": "./private.ts",
"exports": {
- ".": "./eslint.config.js",
- "./eslint.config.js": "./eslint.config.js"
+ ".": {
+ "default": "./private.ts"
+ },
+ "./private": {
+ "default": "./private.ts"
+ },
+ "./package.json": "./package.json"
},
"scripts": {
"build": "tsgo",
@@ -19,15 +25,14 @@
"lint-package": "fluentui-scripts lint-package"
},
"dependencies": {
- "@microsoft/eslint-plugin-sdl": "^1.1.0",
- "@rnx-kit/eslint-plugin": "catalog:"
+ "@rnx-kit/oxlint-config": "^1.0.3",
+ "oxlint": "^1.57.0"
},
"devDependencies": {
"@fluentui-react-native/kit-config": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
- "@types/eslint": "^9.6.1",
"@types/node": "catalog:",
- "eslint": "^9.39.2"
+ "typescript": "^5.8.0"
},
"furn": {
"packageType": "tooling"
diff --git a/packages/configs/lint-config-rules/private.ts b/packages/configs/lint-config-rules/private.ts
new file mode 100644
index 00000000000..14b212fa294
--- /dev/null
+++ b/packages/configs/lint-config-rules/private.ts
@@ -0,0 +1,45 @@
+import { defineConfig } from 'oxlint';
+import sdlRequired from '@rnx-kit/oxlint-config/sdl-required';
+import strict from '@rnx-kit/oxlint-config/strict';
+import stylistic from '@rnx-kit/oxlint-config/typescript-stylistic';
+
+export default defineConfig({
+ extends: [sdlRequired, strict, stylistic],
+ rules: {
+ '@rnx-kit/no-foreach-with-captured-variables': 'error',
+ 'import/no-default-export': 'off',
+ 'no-prototype-builtins': 'off',
+ 'no-unneeded-ternary': 'off',
+ 'typescript/consistent-indexed-object-style': 'off',
+ 'typescript/consistent-type-definitions': 'off',
+ 'typescript/no-explicit-any': 'off',
+ 'typescript/no-inferrable-types': 'off',
+ },
+ overrides: [
+ {
+ files: ['**/*.config.[jt]s'],
+ rules: {
+ 'import/no-default-export': 'off',
+ },
+ },
+ {
+ files: ['**/types.ts'],
+ rules: {
+ '@rnx-kit/type-definitions-only': 'error',
+ },
+ },
+ {
+ files: ['**/src/index.{js,ts,tsx}'],
+ rules: {
+ '@rnx-kit/no-export-all': ['error', { expand: 'all' }],
+ },
+ },
+ {
+ files: ['**/*.test.{js,ts,tsx}', '**/*.spec.{js,ts,tsx}'],
+ rules: {
+ 'no-empty-function': 'off',
+ },
+ },
+ ],
+ ignorePatterns: ['node_modules/**', '*.config.js', 'dist/**/*', 'coverage/**/*', 'lib/**/*', 'out/**/*'],
+});
diff --git a/packages/configs/eslint-config-rules/tsconfig.json b/packages/configs/lint-config-rules/tsconfig.json
similarity index 73%
rename from packages/configs/eslint-config-rules/tsconfig.json
rename to packages/configs/lint-config-rules/tsconfig.json
index b9730600120..be8c5b192b7 100644
--- a/packages/configs/eslint-config-rules/tsconfig.json
+++ b/packages/configs/lint-config-rules/tsconfig.json
@@ -5,6 +5,6 @@
"checkJs": true,
"noEmit": true
},
- "include": ["eslint.config.js"],
+ "include": ["private.ts", "oxlint.config.ts", "types.d.ts"],
"exclude": []
}
diff --git a/packages/configs/lint-config-rules/types.d.ts b/packages/configs/lint-config-rules/types.d.ts
new file mode 100644
index 00000000000..6854c9178d4
--- /dev/null
+++ b/packages/configs/lint-config-rules/types.d.ts
@@ -0,0 +1,14 @@
+declare module '@rnx-kit/oxlint-config/sdl-required' {
+ const config: unknown;
+ export default config;
+}
+
+declare module '@rnx-kit/oxlint-config/strict' {
+ const config: unknown;
+ export default config;
+}
+
+declare module '@rnx-kit/oxlint-config/typescript-stylistic' {
+ const config: unknown;
+ export default config;
+}
\ No newline at end of file
diff --git a/packages/deprecated/foundation-composable/eslint.config.js b/packages/deprecated/foundation-composable/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/deprecated/foundation-composable/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/deprecated/foundation-composable/package.json b/packages/deprecated/foundation-composable/package.json
index 975bc46dda0..8124303eb79 100644
--- a/packages/deprecated/foundation-composable/package.json
+++ b/packages/deprecated/foundation-composable/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -40,8 +40,8 @@
"@uifabricshared/foundation-settings": "workspace:*"
},
"devDependencies": {
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@types/react": "~19.1.4",
"react": "19.1.4",
diff --git a/packages/deprecated/foundation-compose/eslint.config.js b/packages/deprecated/foundation-compose/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/deprecated/foundation-compose/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/deprecated/foundation-compose/package.json b/packages/deprecated/foundation-compose/package.json
index efde898d38f..f7febfb15ac 100644
--- a/packages/deprecated/foundation-compose/package.json
+++ b/packages/deprecated/foundation-compose/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -46,8 +46,8 @@
"@uifabricshared/theming-ramp": "workspace:*"
},
"devDependencies": {
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.81.0",
"@types/react": "~19.1.4",
diff --git a/packages/deprecated/foundation-settings/eslint.config.js b/packages/deprecated/foundation-settings/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/deprecated/foundation-settings/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/deprecated/foundation-settings/package.json b/packages/deprecated/foundation-settings/package.json
index 00fae293ff5..5078641cfdf 100644
--- a/packages/deprecated/foundation-settings/package.json
+++ b/packages/deprecated/foundation-settings/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -40,8 +40,8 @@
},
"devDependencies": {
"@babel/core": "catalog:",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/react-configs": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@types/jest": "^29.0.0",
diff --git a/packages/deprecated/foundation-tokens/eslint.config.js b/packages/deprecated/foundation-tokens/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/deprecated/foundation-tokens/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/deprecated/foundation-tokens/package.json b/packages/deprecated/foundation-tokens/package.json
index 5a5e69ff4e3..cd771555d57 100644
--- a/packages/deprecated/foundation-tokens/package.json
+++ b/packages/deprecated/foundation-tokens/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -43,8 +43,8 @@
},
"devDependencies": {
"@babel/core": "catalog:",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/react-configs": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.81.0",
diff --git a/packages/deprecated/foundation-tokens/src/Token.function.ts b/packages/deprecated/foundation-tokens/src/Token.function.ts
index 4b98f90adc4..f5c641815b6 100644
--- a/packages/deprecated/foundation-tokens/src/Token.function.ts
+++ b/packages/deprecated/foundation-tokens/src/Token.function.ts
@@ -120,7 +120,7 @@ export function buildComponentTokens {
+ for (const slot of Object.getOwnPropertyNames(factories)) {
type IPropsForSlot = TSlotProps[keyof TSlotProps];
const factoriesBase = factories[slot];
const mappings: ITokensForSlot = { toStyle: [], toTokens: [], functions: [] };
@@ -165,6 +165,6 @@ export function buildComponentTokens(props, tokenProps, theme, slotName, getValue, keys, mappings);
};
- });
+ }
return { tokenKeys, handlers };
}
diff --git a/packages/deprecated/foundation-tokens/src/Token.test.ts b/packages/deprecated/foundation-tokens/src/Token.test.ts
index a2ec9fe670c..01b65112c32 100644
--- a/packages/deprecated/foundation-tokens/src/Token.test.ts
+++ b/packages/deprecated/foundation-tokens/src/Token.test.ts
@@ -98,9 +98,9 @@ describe('Token settings unit tests', () => {
const resolved1 = MockButton({ content: 'button1' }, b1, theme, cache, false);
const resolved2 = MockButton({ content: 'button2' }, b1, theme, cache, false);
expect(resolved1).toEqual(resolved2);
- Object.getOwnPropertyNames(resolved1).forEach((key) => {
+ for (const key of Object.getOwnPropertyNames(resolved1)) {
expect(resolved1[key]).toBe(resolved2[key]);
- });
+ }
});
test('setting props that match defaults keep same object', () => {
@@ -108,9 +108,9 @@ describe('Token settings unit tests', () => {
const resolved1 = MockButton({ content: 'button1' }, b1, theme, cache, false);
const resolved2 = MockButton({ content: 'button2', color: 'buttonText' }, b1, theme, cache, false);
expect(resolved1).toEqual(resolved2);
- Object.getOwnPropertyNames(resolved1).forEach((key) => {
+ for (const key of Object.getOwnPropertyNames(resolved1)) {
expect(resolved1[key]).toBe(resolved2[key]);
- });
+ }
});
test('prop token overrides produce partial new object', () => {
@@ -127,9 +127,9 @@ describe('Token settings unit tests', () => {
const resolved1 = MockButton({ content: 'button1', borderRadius: 3, color: 'purple' }, b1, theme, cache, false);
const resolved2 = MockButton({ content: 'button2', color: 'purple', borderRadius: 3 }, b1, theme, cache, false);
expect(resolved1).toEqual(resolved2);
- Object.getOwnPropertyNames(resolved1).forEach((key) => {
+ for (const key of Object.getOwnPropertyNames(resolved1)) {
expect(resolved1[key]).toBe(resolved2[key]);
- });
+ }
});
test('prop token overrides, different keys same value produce different objects', () => {
diff --git a/packages/deprecated/foundation-tokens/src/Token.ts b/packages/deprecated/foundation-tokens/src/Token.ts
index d6fc269a57c..5b5456ccd19 100644
--- a/packages/deprecated/foundation-tokens/src/Token.ts
+++ b/packages/deprecated/foundation-tokens/src/Token.ts
@@ -51,10 +51,10 @@ export function processTokens {
+ for (const slotName of Object.getOwnPropertyNames(handlers)) {
const handler = handlers[slotName];
resolvedSlotProps[slotName] = handler(slotProps[slotName] || {}, tokenPropInfo as any, theme, slotName, cache);
- });
+ }
// return the cache entry
return resolvedSlotProps as unknown as ISlotProps;
diff --git a/packages/deprecated/theme-registry/eslint.config.js b/packages/deprecated/theme-registry/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/deprecated/theme-registry/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/deprecated/theme-registry/package.json b/packages/deprecated/theme-registry/package.json
index 7e61d00c901..aa0bcbf9f6d 100644
--- a/packages/deprecated/theme-registry/package.json
+++ b/packages/deprecated/theme-registry/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -37,9 +37,9 @@
},
"devDependencies": {
"@babel/core": "catalog:",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/react-configs": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native/babel-preset": "^0.74.0",
diff --git a/packages/deprecated/theme-registry/src/Registry.test.ts b/packages/deprecated/theme-registry/src/Registry.test.ts
index adb19476ec4..4e68d25f73d 100644
--- a/packages/deprecated/theme-registry/src/Registry.test.ts
+++ b/packages/deprecated/theme-registry/src/Registry.test.ts
@@ -111,7 +111,7 @@ function processor(parent: IFakeTheme): Partial {
root: {
textColor: 'light' + (parent.settings.base.root as IFakeStyle).textColor,
fontFamily: (parent.settings.base.root as IFakeStyle).fontFamily + ' Light',
- fontSize: (parent.settings.base.root as IFakeStyle).fontSize - 2,
+ fontSize: ((parent.settings.base.root as IFakeStyle).fontSize as number) - 2,
},
},
},
diff --git a/packages/deprecated/themed-settings/eslint.config.js b/packages/deprecated/themed-settings/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/deprecated/themed-settings/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/deprecated/themed-settings/package.json b/packages/deprecated/themed-settings/package.json
index 687c4ed0af3..31bf92b8548 100644
--- a/packages/deprecated/themed-settings/package.json
+++ b/packages/deprecated/themed-settings/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -41,8 +41,8 @@
},
"devDependencies": {
"@babel/core": "catalog:",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/react-configs": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native/babel-preset": "^0.81.0",
diff --git a/packages/deprecated/theming-ramp/eslint.config.js b/packages/deprecated/theming-ramp/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/deprecated/theming-ramp/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/deprecated/theming-ramp/package.json b/packages/deprecated/theming-ramp/package.json
index 59b32b57056..2d7e0142103 100644
--- a/packages/deprecated/theming-ramp/package.json
+++ b/packages/deprecated/theming-ramp/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -42,8 +42,8 @@
},
"devDependencies": {
"@babel/core": "catalog:",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/react-configs": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
diff --git a/packages/deprecated/theming-react-native/eslint.config.js b/packages/deprecated/theming-react-native/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/deprecated/theming-react-native/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/deprecated/theming-react-native/package.json b/packages/deprecated/theming-react-native/package.json
index ed61ecda77b..4d8c277ae6b 100644
--- a/packages/deprecated/theming-react-native/package.json
+++ b/packages/deprecated/theming-react-native/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -44,9 +44,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/deprecated/theming-react-native/src/platform/index.ts b/packages/deprecated/theming-react-native/src/platform/index.ts
index 80db5bc41fb..9e8d9454a58 100644
--- a/packages/deprecated/theming-react-native/src/platform/index.ts
+++ b/packages/deprecated/theming-react-native/src/platform/index.ts
@@ -1 +1 @@
-export * from './PlatformDefaults';
+export { createPlatformThemeRegistry } from './PlatformDefaults';
diff --git a/packages/experimental/ActivityIndicator/eslint.config.js b/packages/experimental/ActivityIndicator/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/ActivityIndicator/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/ActivityIndicator/package.json b/packages/experimental/ActivityIndicator/package.json
index 483feb8ca97..b6826305105 100644
--- a/packages/experimental/ActivityIndicator/package.json
+++ b/packages/experimental/ActivityIndicator/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -38,9 +38,9 @@
},
"devDependencies": {
"@babel/core": "catalog:",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/experimental/ActivityIndicator/src/ActivityIndicator.mobile.tsx b/packages/experimental/ActivityIndicator/src/ActivityIndicator.mobile.tsx
index b070182f208..ed43745ce45 100644
--- a/packages/experimental/ActivityIndicator/src/ActivityIndicator.mobile.tsx
+++ b/packages/experimental/ActivityIndicator/src/ActivityIndicator.mobile.tsx
@@ -61,7 +61,7 @@ export const ActivityIndicator = compose({
}
});
}
- }, [rotationAngle, animating]);
+ }, [rotationAngle]);
const stopRotation = () => {
if (rotationAnimation.current) {
@@ -86,7 +86,7 @@ export const ActivityIndicator = compose({
} else {
stopRotation();
}
- }, [animating, hidesWhenStopped, rotationAngle]);
+ }, [animating, rotationAngle, startRotation]);
const interpolateSpin = rotationAngle.interpolate({
inputRange: [0, 359],
diff --git a/packages/experimental/AppearanceAdditions/eslint.config.js b/packages/experimental/AppearanceAdditions/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/AppearanceAdditions/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/AppearanceAdditions/package.json b/packages/experimental/AppearanceAdditions/package.json
index 5aa44148050..e2b36c44079 100644
--- a/packages/experimental/AppearanceAdditions/package.json
+++ b/packages/experimental/AppearanceAdditions/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -40,9 +40,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/experimental/AppearanceAdditions/src/NativeAppearanceAdditions.ts b/packages/experimental/AppearanceAdditions/src/NativeAppearanceAdditions.ts
index f3ca3c1fb60..e768587659d 100644
--- a/packages/experimental/AppearanceAdditions/src/NativeAppearanceAdditions.ts
+++ b/packages/experimental/AppearanceAdditions/src/NativeAppearanceAdditions.ts
@@ -1,9 +1,9 @@
import type { AccessibilityContrastOption, SizeClass, UserInterfaceLevel } from './NativeAppearanceAdditions.types';
export const NativeAppearanceAdditions = {
- addListener: (_: string) => {},
+ addListener: (_: string) => undefined,
- removeListeners: (_: number) => {},
+ removeListeners: (_: number) => undefined,
initializeTraitCollection: (_: number) => {
console.warn('NativeAppearanceAdditions is only available on iOS');
},
diff --git a/packages/experimental/Avatar/eslint.config.js b/packages/experimental/Avatar/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/Avatar/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/Avatar/package.json b/packages/experimental/Avatar/package.json
index 40d25a4429b..68cfe14150d 100644
--- a/packages/experimental/Avatar/package.json
+++ b/packages/experimental/Avatar/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -39,9 +39,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/experimental/Checkbox/eslint.config.js b/packages/experimental/Checkbox/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/Checkbox/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/Checkbox/package.json b/packages/experimental/Checkbox/package.json
index fe49707af8d..f82b902bc03 100644
--- a/packages/experimental/Checkbox/package.json
+++ b/packages/experimental/Checkbox/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -39,9 +39,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/experimental/Drawer/eslint.config.js b/packages/experimental/Drawer/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/Drawer/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/Drawer/package.json b/packages/experimental/Drawer/package.json
index 2bec16bd57f..4bfe8c690f3 100644
--- a/packages/experimental/Drawer/package.json
+++ b/packages/experimental/Drawer/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -41,10 +41,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/experimental/Drawer/src/useDrawer.ts b/packages/experimental/Drawer/src/useDrawer.ts
index 0375dda7756..65c80315ab7 100644
--- a/packages/experimental/Drawer/src/useDrawer.ts
+++ b/packages/experimental/Drawer/src/useDrawer.ts
@@ -8,7 +8,18 @@ import type { DrawerProps, DrawerInfo } from './Drawer.types';
const { height, width } = Dimensions.get('window');
export const useDrawer = (props: DrawerProps): DrawerInfo => {
- const { onBlur, onFocus, accessibilityLabel, open, drawerPosition = 'left', showHandle = true, children, ...rest } = props;
+ const {
+ onBlur,
+ onClose: onCloseProp,
+ onFocus,
+ onScrimClick: onScrimClickProp,
+ accessibilityLabel,
+ open,
+ drawerPosition = 'left',
+ showHandle = true,
+ children,
+ ...rest
+ } = props;
const animatedValue = useRef(new Animated.Value(0)).current;
const [internalOpen, setInternalOpen] = useState(open);
const [isFirstOpen, setIsFirstOpen] = useState(true);
@@ -36,20 +47,20 @@ export const useDrawer = (props: DrawerProps): DrawerInfo => {
});
}
}
- }, [animatedValue, open]);
+ }, [animatedValue, isFirstOpen, open]);
const onClose = useCallback(
(e: InteractionEvent) => {
- props?.onClose && props.onClose(e);
+ onCloseProp && onCloseProp(e);
},
- [props?.onClose],
+ [onCloseProp],
);
const onScrimClick = useCallback(
(e: InteractionEvent) => {
- props?.onScrimClick && props.onScrimClick(e);
+ onScrimClickProp && onScrimClickProp(e);
},
- [props?.onScrimClick],
+ [onScrimClickProp],
);
const animatedTranslateX = animatedValue.interpolate({
diff --git a/packages/experimental/Dropdown/eslint.config.js b/packages/experimental/Dropdown/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/Dropdown/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/Dropdown/package.json b/packages/experimental/Dropdown/package.json
index 95320686509..4c124633538 100644
--- a/packages/experimental/Dropdown/package.json
+++ b/packages/experimental/Dropdown/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -44,9 +44,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/experimental/Expander/eslint.config.js b/packages/experimental/Expander/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/Expander/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/Expander/package.json b/packages/experimental/Expander/package.json
index 4cc9ac3203d..e6b1b1e2ea5 100644
--- a/packages/experimental/Expander/package.json
+++ b/packages/experimental/Expander/package.json
@@ -27,7 +27,7 @@
"build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler",
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-api": "fluentui-scripts update-api-extractor",
@@ -41,9 +41,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/experimental/MenuButton/eslint.config.js b/packages/experimental/MenuButton/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/MenuButton/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/MenuButton/package.json b/packages/experimental/MenuButton/package.json
index b0833efe400..2c5159a0bf3 100644
--- a/packages/experimental/MenuButton/package.json
+++ b/packages/experimental/MenuButton/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -41,10 +41,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/experimental/MenuButton/src/renderContextualMenu.tsx b/packages/experimental/MenuButton/src/renderContextualMenu.tsx
index 7374cb01551..9cd80881cec 100644
--- a/packages/experimental/MenuButton/src/renderContextualMenu.tsx
+++ b/packages/experimental/MenuButton/src/renderContextualMenu.tsx
@@ -9,7 +9,7 @@ export const renderContextualMenu = (contextualMenu: ContextualMenuProps, menuIt
return (
{menuItems?.map((menuItem) => {
- return menuItem.hasSubmenu ? : ;
+ return menuItem.hasSubmenu ? : ;
})}
);
diff --git a/packages/experimental/NativeDatePicker/eslint.config.js b/packages/experimental/NativeDatePicker/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/NativeDatePicker/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/NativeDatePicker/package.json b/packages/experimental/NativeDatePicker/package.json
index 91411626ba3..08c21e056b5 100644
--- a/packages/experimental/NativeDatePicker/package.json
+++ b/packages/experimental/NativeDatePicker/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -36,8 +36,8 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/experimental/NativeFontMetrics/eslint.config.js b/packages/experimental/NativeFontMetrics/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/NativeFontMetrics/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/NativeFontMetrics/package.json b/packages/experimental/NativeFontMetrics/package.json
index ba7a851f1d6..08b0c2b0428 100644
--- a/packages/experimental/NativeFontMetrics/package.json
+++ b/packages/experimental/NativeFontMetrics/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -39,8 +39,8 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/experimental/NativeFontMetrics/src/NativeFontMetrics.ts b/packages/experimental/NativeFontMetrics/src/NativeFontMetrics.ts
index d953c65de63..49b2821facb 100644
--- a/packages/experimental/NativeFontMetrics/src/NativeFontMetrics.ts
+++ b/packages/experimental/NativeFontMetrics/src/NativeFontMetrics.ts
@@ -1,9 +1,9 @@
import type { TextStyle } from './NativeFontMetrics.types';
const NativeFontMetrics = {
- addListener: (_: string) => {},
+ addListener: (_: string) => undefined,
- removeListeners: (_: number) => {},
+ removeListeners: (_: number) => undefined,
currentScaleFactors: () => {
console.warn('NativeFontMetrics is only available on iOS');
return {};
diff --git a/packages/experimental/Overflow/eslint.config.js b/packages/experimental/Overflow/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/Overflow/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/Overflow/package.json b/packages/experimental/Overflow/package.json
index e0e6c7ee82b..e520912260e 100644
--- a/packages/experimental/Overflow/package.json
+++ b/packages/experimental/Overflow/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -40,9 +40,9 @@
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
"@fluentui-react-native/button": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/menu": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
diff --git a/packages/experimental/Overflow/src/Overflow/useOverflow.ts b/packages/experimental/Overflow/src/Overflow/useOverflow.ts
index a8ca900307b..77e2cea0e56 100644
--- a/packages/experimental/Overflow/src/Overflow/useOverflow.ts
+++ b/packages/experimental/Overflow/src/Overflow/useOverflow.ts
@@ -70,8 +70,7 @@ export function useOverflow(props: OverflowProps): OverflowInfo {
delete overflowItemUpdateCallbacks[id];
overflowManager.removeItem(id);
},
- // overflowManager is not needed as a dependency, due to being attached to a ref
- [overflowItemUpdateCallbacks],
+ [overflowItemUpdateCallbacks, overflowManager],
);
const userSetLayoutState = React.useCallback((data: SetLayoutStateParam) => {
@@ -161,7 +160,7 @@ export function useOverflow(props: OverflowProps): OverflowInfo {
overflowManager.update(containerSize);
}
// We only want to run this layout effect whenever the container's size updates.
- }, [containerSize]);
+ }, [containerSize, layoutState.container, onOverflowUpdate, onUpdateItemDimension, onUpdateItemVisibility, overflowManager, padding]);
// On initial mount, wait for layout to run for all items / components before showing.
// For future items that may be added / removed, this will remain true to reduce flicker.
diff --git a/packages/experimental/Overflow/src/OverflowItem/useOverflowItem.ts b/packages/experimental/Overflow/src/OverflowItem/useOverflowItem.ts
index d57610b720d..2d50fbe83f1 100644
--- a/packages/experimental/Overflow/src/OverflowItem/useOverflowItem.ts
+++ b/packages/experimental/Overflow/src/OverflowItem/useOverflowItem.ts
@@ -11,7 +11,7 @@ import { useOverflowContext } from '../OverflowContext';
* Hook for getting the item's onLayout callback and whether the item should be showing.
*/
export function useOverflowItem(props: OverflowItemProps): OverflowItemInfo {
- const { overflowID, priority, onOverflowItemChange: onOveflowItemChange } = props;
+ const { overflowID, priority, onLayout: onLayoutProp, onOverflowItemChange: onOveflowItemChange } = props;
const {
containerSize,
dontHideBeforeReady,
@@ -41,14 +41,14 @@ export function useOverflowItem(props: OverflowItemProps): OverflowItemInfo {
updateItem({ id: overflowID, size: size, priority: priority });
}
// The item's size updates whenever the onLayout callback runs. This is purely for updating the item info when its priority changes.
- }, [priority]);
+ }, [overflowID, priority, size, updateItem]);
React.useEffect(() => {
register(overflowID, handleOverflowItemChange);
return () => disconnect(overflowID);
// Runs when mounting / unmounting / whenever an onOverflowItemChange callback is added. Register / disconnect shouldn't be called at any
// other point.
- }, [onOveflowItemChange]);
+ }, [disconnect, handleOverflowItemChange, onOveflowItemChange, overflowID, register]);
React.useLayoutEffect(() => {
// When rendered in a ScrollView on win32, the layout event initially returns a width = 0 before getting the correct layout values.
@@ -61,15 +61,15 @@ export function useOverflowItem(props: OverflowItemProps): OverflowItemInfo {
}
}
// This effect should only run when the size of the item or container changes.
- }, [size, containerSize]);
+ }, [containerSize, initialOverflowLayoutDone, overflowID, priority, setLayoutState, size, updateItem]);
const onLayout = React.useCallback(
(e: LayoutChangeEvent) => {
const itemSize = { width: e.nativeEvent.layout.width, height: e.nativeEvent.layout.height };
setSize(itemSize);
- props.onLayout && props.onLayout(e);
+ onLayoutProp && onLayoutProp(e);
},
- [props],
+ [onLayoutProp],
); // Get item dimensions
const layoutDone = initialOverflowLayoutDone && !!size;
diff --git a/packages/experimental/Popover/eslint.config.js b/packages/experimental/Popover/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/Popover/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/Popover/package.json b/packages/experimental/Popover/package.json
index 8eac64fe6c3..1776fac9d0c 100644
--- a/packages/experimental/Popover/package.json
+++ b/packages/experimental/Popover/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -39,9 +39,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/experimental/Shadow/eslint.config.js b/packages/experimental/Shadow/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/Shadow/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/Shadow/package.json b/packages/experimental/Shadow/package.json
index 9a2823f8adf..348420082c8 100644
--- a/packages/experimental/Shadow/package.json
+++ b/packages/experimental/Shadow/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -41,9 +41,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/experimental/Shimmer/eslint.config.js b/packages/experimental/Shimmer/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/Shimmer/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/Shimmer/package.json b/packages/experimental/Shimmer/package.json
index a92e77471d1..5a53dd5206b 100644
--- a/packages/experimental/Shimmer/package.json
+++ b/packages/experimental/Shimmer/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -42,10 +42,10 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/experimental/Shimmer/src/Shimmer.test.tsx b/packages/experimental/Shimmer/src/Shimmer.test.tsx
index 5ec3a87f5bf..ac5764574b7 100644
--- a/packages/experimental/Shimmer/src/Shimmer.test.tsx
+++ b/packages/experimental/Shimmer/src/Shimmer.test.tsx
@@ -5,7 +5,7 @@ import * as renderer from 'react-test-renderer';
import { Shimmer } from './Shimmer';
import type { ShimmerCircleElement, ShimmerRectElement } from './Shimmer.types';
-function shimmerRects(): Array {
+function shimmerRects(): (ShimmerRectElement | ShimmerCircleElement)[] {
return [
{
type: 'rect',
diff --git a/packages/experimental/Shimmer/src/Shimmer.tsx b/packages/experimental/Shimmer/src/Shimmer.tsx
index 1c5e9af0d65..98a9951ceb5 100644
--- a/packages/experimental/Shimmer/src/Shimmer.tsx
+++ b/packages/experimental/Shimmer/src/Shimmer.tsx
@@ -40,14 +40,12 @@ export const Shimmer = compose({
}),
[
props.angle,
- props.backgroundColor,
props.delay,
props.duration,
props.shimmerColor,
- props.shimmerColorOpacity,
props.shimmerWaveColor,
- props.shimmerWaveColorOpacity,
props.style,
+ tokens,
],
);
@@ -69,11 +67,11 @@ export const Shimmer = compose({
useNativeDriver: true,
}),
).start();
- }, [memoizedShimmerData.delay, memoizedShimmerData.duration]);
+ }, [endValue, memoizedShimmerData.delay, memoizedShimmerData.duration, x1]);
useEffect(() => {
shimmerAnimation();
- });
+ }, [shimmerAnimation]);
return (rest: ShimmerProps) => {
const { elements, ...mergedProps } = mergeProps(props, rest);
diff --git a/packages/experimental/Shimmer/src/Shimmer.types.shared.ts b/packages/experimental/Shimmer/src/Shimmer.types.shared.ts
index ec0af9e1c3a..b74ff614830 100644
--- a/packages/experimental/Shimmer/src/Shimmer.types.shared.ts
+++ b/packages/experimental/Shimmer/src/Shimmer.types.shared.ts
@@ -161,7 +161,7 @@ export interface ShimmerProps extends ViewProps, ShimmerTokens {
/**
* Shimmer shapes that define the masking effect of the Shimmer control.
*/
- elements: Array;
+ elements: ShimmerElementTypes[];
}
export interface ShimmerType {
diff --git a/packages/experimental/Spinner/eslint.config.js b/packages/experimental/Spinner/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/Spinner/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/Spinner/package.json b/packages/experimental/Spinner/package.json
index 2ed2b59cc01..db9540551c7 100644
--- a/packages/experimental/Spinner/package.json
+++ b/packages/experimental/Spinner/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -41,9 +41,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/framework-base": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/experimental/Spinner/src/Spinner.android.tsx b/packages/experimental/Spinner/src/Spinner.android.tsx
index 603f47a3ac6..dceefab49cf 100644
--- a/packages/experimental/Spinner/src/Spinner.android.tsx
+++ b/packages/experimental/Spinner/src/Spinner.android.tsx
@@ -1,5 +1,5 @@
/** @jsxImportSource @fluentui-react-native/framework-base */
-import { useEffect, useCallback } from 'react';
+import { useCallback, useEffect, useRef } from 'react';
import type { ColorValue } from 'react-native';
import { Animated, Easing, View } from 'react-native';
@@ -39,7 +39,7 @@ export const Spinner = compose({
const status = props.status !== undefined ? props.status : 'active';
const hidesWhenStopped = props.hidesWhenStopped != undefined ? props.hidesWhenStopped : true;
const hideOpacity = status === 'inactive' && hidesWhenStopped == true ? 0 : 1;
- const rotationAngle = new Animated.Value(0);
+ const rotationAngle = useRef(new Animated.Value(0)).current;
const startRotation = useCallback(() => {
Animated.loop(
@@ -50,28 +50,19 @@ export const Spinner = compose({
useNativeDriver: true,
}),
).start();
- }, [rotationAngle, status]);
+ }, [rotationAngle]);
- const stopRotation = () => {
+ const stopRotation = useCallback(() => {
rotationAngle.stopAnimation();
- };
+ }, [rotationAngle]);
useEffect(() => {
- Animated.loop(
- Animated.timing(rotationAngle, {
- toValue: 360,
- duration: 750,
- easing: Easing.linear,
- useNativeDriver: true,
- }),
- ).start();
-
if (status === 'active') {
startRotation();
} else {
stopRotation();
}
- }, [status, hidesWhenStopped, rotationAngle]);
+ }, [startRotation, status, stopRotation]);
const interpolateSpin = rotationAngle.interpolate({
inputRange: [0, 359],
diff --git a/packages/experimental/Tooltip/eslint.config.js b/packages/experimental/Tooltip/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/Tooltip/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/Tooltip/package.json b/packages/experimental/Tooltip/package.json
index f9b60f6a389..642ce0c2436 100644
--- a/packages/experimental/Tooltip/package.json
+++ b/packages/experimental/Tooltip/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -40,9 +40,9 @@
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
"@fluentui-react-native/button": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/experimental/VibrancyView/eslint.config.js b/packages/experimental/VibrancyView/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/experimental/VibrancyView/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/experimental/VibrancyView/package.json b/packages/experimental/VibrancyView/package.json
index f8c69996cb8..f893f1a3790 100644
--- a/packages/experimental/VibrancyView/package.json
+++ b/packages/experimental/VibrancyView/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -39,8 +39,8 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.81.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/framework-base/eslint.config.js b/packages/framework-base/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/framework-base/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/framework-base/package.json b/packages/framework-base/package.json
index 664595cfa42..aae0b50ee68 100644
--- a/packages/framework-base/package.json
+++ b/packages/framework-base/package.json
@@ -34,7 +34,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -43,8 +43,8 @@
},
"devDependencies": {
"@babel/core": "catalog:",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/react-configs": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@types/jest": "^29.0.0",
diff --git a/packages/framework/composition/eslint.config.js b/packages/framework/composition/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/framework/composition/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/framework/composition/package.json b/packages/framework/composition/package.json
index fca31e12f37..68f7beec7b6 100644
--- a/packages/framework/composition/package.json
+++ b/packages/framework/composition/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -43,9 +43,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native/babel-preset": "^0.81.0",
"@types/react": "~19.1.4",
diff --git a/packages/framework/framework/eslint.config.js b/packages/framework/framework/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/framework/framework/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/framework/framework/package.json b/packages/framework/framework/package.json
index e44ceda1b64..26eba9074c0 100644
--- a/packages/framework/framework/package.json
+++ b/packages/framework/framework/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start-test": "fluentui-scripts jest-watch",
"start:tester": "rnx-cli start",
@@ -48,9 +48,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/framework/theme/eslint.config.js b/packages/framework/theme/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/framework/theme/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/framework/theme/package.json b/packages/framework/theme/package.json
index 70c1198fe50..e8bf0f2f21e 100644
--- a/packages/framework/theme/package.json
+++ b/packages/framework/theme/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -42,9 +42,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/framework/themed-stylesheet/eslint.config.js b/packages/framework/themed-stylesheet/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/framework/themed-stylesheet/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/framework/themed-stylesheet/package.json b/packages/framework/themed-stylesheet/package.json
index ce520a6ce35..c86b0a186e8 100644
--- a/packages/framework/themed-stylesheet/package.json
+++ b/packages/framework/themed-stylesheet/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -41,9 +41,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/framework/use-slot/eslint.config.js b/packages/framework/use-slot/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/framework/use-slot/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/framework/use-slot/package.json b/packages/framework/use-slot/package.json
index 64cbae3f298..62255086088 100644
--- a/packages/framework/use-slot/package.json
+++ b/packages/framework/use-slot/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -41,9 +41,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/framework/use-slot/src/useSlot.ts b/packages/framework/use-slot/src/useSlot.ts
index 6052882938e..3192aea955c 100644
--- a/packages/framework/use-slot/src/useSlot.ts
+++ b/packages/framework/use-slot/src/useSlot.ts
@@ -57,6 +57,6 @@ export function useSlot(
// now render the component with the final props
return renderForJsxRuntime(innerComponent, innerProps);
}),
- [component, filter, slotData],
+ [filter, slotData],
);
}
diff --git a/packages/framework/use-slots/eslint.config.js b/packages/framework/use-slots/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/framework/use-slots/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/framework/use-slots/package.json b/packages/framework/use-slots/package.json
index 53bc5a2aaba..7d0740d6f96 100644
--- a/packages/framework/use-slots/package.json
+++ b/packages/framework/use-slots/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -42,9 +42,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/framework/use-styling/eslint.config.js b/packages/framework/use-styling/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/framework/use-styling/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/framework/use-styling/package.json b/packages/framework/use-styling/package.json
index 5ee144eb775..938cb31b56c 100644
--- a/packages/framework/use-styling/package.json
+++ b/packages/framework/use-styling/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -42,9 +42,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/framework/use-styling/src/buildUseStyling.test.ts b/packages/framework/use-styling/src/buildUseStyling.test.ts
index b520f6376fd..bf5552196a2 100644
--- a/packages/framework/use-styling/src/buildUseStyling.test.ts
+++ b/packages/framework/use-styling/src/buildUseStyling.test.ts
@@ -129,8 +129,8 @@ describe('useStyling test suite', () => {
const useStyling = buildUseStyling(baseOptions, themeHelper);
const slotProps = useStyling({});
const slotProps2 = useStyling({ p1: 2, p2: 'bar' });
- Object.keys(slotProps).forEach((key) => {
+ for (const key of Object.keys(slotProps)) {
expect(slotProps[key]).toBe(slotProps2[key]);
- });
+ }
});
});
diff --git a/packages/framework/use-styling/src/buildUseStyling.ts b/packages/framework/use-styling/src/buildUseStyling.ts
index 83f652a58a5..d10dab20c5f 100644
--- a/packages/framework/use-styling/src/buildUseStyling.ts
+++ b/packages/framework/use-styling/src/buildUseStyling.ts
@@ -67,10 +67,10 @@ function resolveToSlotProps(
cache: GetTypedMemoValue,
): TSlotProps {
const slotProps = {};
- Object.keys(styles).forEach((key) => {
+ for (const key of Object.keys(styles)) {
const style = styles[key];
slotProps[key] = typeof style === 'function' ? style(tokens, theme, cache(null, [key])[1]) : style;
- });
+ }
return slotProps as TSlotProps;
}
diff --git a/packages/framework/use-tokens/eslint.config.js b/packages/framework/use-tokens/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/framework/use-tokens/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/framework/use-tokens/package.json b/packages/framework/use-tokens/package.json
index f8d1a1623d5..d83774d783c 100644
--- a/packages/framework/use-tokens/package.json
+++ b/packages/framework/use-tokens/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -41,9 +41,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/libraries/core/eslint.config.js b/packages/libraries/core/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/libraries/core/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/libraries/core/package.json b/packages/libraries/core/package.json
index 5358e019d7e..7e1bab88630 100644
--- a/packages/libraries/core/package.json
+++ b/packages/libraries/core/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start-test": "fluentui-scripts jest-watch",
"start:tester": "rnx-cli start",
@@ -55,8 +55,8 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/theming/android-theme/eslint.config.js b/packages/theming/android-theme/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/theming/android-theme/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/theming/android-theme/package.json b/packages/theming/android-theme/package.json
index 9c641f7453c..cb09593ccf7 100644
--- a/packages/theming/android-theme/package.json
+++ b/packages/theming/android-theme/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -45,9 +45,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/theming/apple-theme/eslint.config.js b/packages/theming/apple-theme/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/theming/apple-theme/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/theming/apple-theme/package.json b/packages/theming/apple-theme/package.json
index bcd83b1d12a..ddb47343035 100644
--- a/packages/theming/apple-theme/package.json
+++ b/packages/theming/apple-theme/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -50,9 +50,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/theming/apple-theme/src/appleColors.macos.ts b/packages/theming/apple-theme/src/appleColors.macos.ts
index 1f4ab021d88..cc1a476b14d 100644
--- a/packages/theming/apple-theme/src/appleColors.macos.ts
+++ b/packages/theming/apple-theme/src/appleColors.macos.ts
@@ -1,6 +1,4 @@
import type { ThemeColorDefinition, AppearanceOptions } from '@fluentui-react-native/theme-types';
-// eslint-disable-next-line @typescript-eslint/ban-ts-comment
-// @ts-ignore
import { PlatformColor, DynamicColorMacOS, ColorWithSystemEffectMacOS } from 'react-native-macos';
import type { AppleSemanticPalette, FluentUIApplePalette } from './appleColors.types.macos';
diff --git a/packages/theming/apple-theme/src/createAppleTheme.macos.ts b/packages/theming/apple-theme/src/createAppleTheme.macos.ts
index 44a30f8ec55..a224380c956 100644
--- a/packages/theming/apple-theme/src/createAppleTheme.macos.ts
+++ b/packages/theming/apple-theme/src/createAppleTheme.macos.ts
@@ -19,8 +19,6 @@ export function createAppleTheme(): ThemeReference {
// Fetch initial system settings for high contrast mode
highContrastHandler();
// Invalidate theme and set prop when high contrast setting changes
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore
AccessibilityInfo.addEventListener('highContrastChanged', () => {
highContrastHandler();
});
@@ -32,8 +30,6 @@ export function createAppleTheme(): ThemeReference {
}
function highContrastHandler() {
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore
AccessibilityInfo.isHighContrastEnabled().then((isEnabled) => {
setIsHighContrast(isEnabled);
appleThemeReference.invalidate();
diff --git a/packages/theming/default-theme/eslint.config.js b/packages/theming/default-theme/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/theming/default-theme/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/theming/default-theme/package.json b/packages/theming/default-theme/package.json
index a494e4118fc..8637f42ba72 100644
--- a/packages/theming/default-theme/package.json
+++ b/packages/theming/default-theme/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -46,9 +46,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/theming/default-theme/src/stockWebPalette.ts b/packages/theming/default-theme/src/stockWebPalette.ts
index 552c6d79d19..04a01ccd070 100644
--- a/packages/theming/default-theme/src/stockWebPalette.ts
+++ b/packages/theming/default-theme/src/stockWebPalette.ts
@@ -26,28 +26,28 @@ export function getStockWebPalette(): ThemeColorDefinition {
red: globalTokens.color.red.primary,
redDark: globalTokens.color.burgundy.primary,
- // @ts-ignore
+ // @ts-expect-error
accent: globalTokens.color.brand80,
blackTranslucent40: 'rgba(0,0,0,.4)',
// Colors to be deprecated
- // @ts-ignore
+ // @ts-expect-error
themeDarker: globalTokens.color.brand40,
- // @ts-ignore
+ // @ts-expect-error
themeDark: globalTokens.color.brand60,
- // @ts-ignore
+ // @ts-expect-error
themeDarkAlt: globalTokens.color.brand70,
- // @ts-ignore
+ // @ts-expect-error
themePrimary: globalTokens.color.brand80,
- // @ts-ignore
+ // @ts-expect-error
themeSecondary: globalTokens.color.brand90,
- // @ts-ignore
+ // @ts-expect-error
themeTertiary: globalTokens.color.brand120,
- // @ts-ignore
+ // @ts-expect-error
themeLight: globalTokens.color.brand140,
- // @ts-ignore
+ // @ts-expect-error
themeLighter: globalTokens.color.brand150,
- // @ts-ignore
+ // @ts-expect-error
themeLighterAlt: globalTokens.color.brand160,
}),
...createColorAliasTokens('light'),
@@ -74,29 +74,29 @@ export function getStockWebDarkPalette(): ThemeColorDefinition {
neutralLighterAlt: '#201f1e',
white: '#1b1a19',
red: globalTokens.color.red.primary,
- // @ts-ignore
+ // @ts-expect-error
accent: globalTokens.color.brand40,
redDark: '#f1707b',
blackTranslucent40: 'rgba(0,0,0,.4)',
// Colors to be deprecated
- // @ts-ignore
+ // @ts-expect-error
themeDarker: globalTokens.color.brand110,
- // @ts-ignore
+ // @ts-expect-error
themeDark: globalTokens.color.brand100,
- // @ts-ignore
+ // @ts-expect-error
themeDarkAlt: globalTokens.color.brand100,
- // @ts-ignore
+ // @ts-expect-error
themePrimary: globalTokens.color.brand90,
- // @ts-ignore
+ // @ts-expect-error
themeSecondary: globalTokens.color.brand90,
- // @ts-ignore
+ // @ts-expect-error
themeTertiary: globalTokens.color.brand60,
- // @ts-ignore
+ // @ts-expect-error
themeLight: globalTokens.color.brand50,
- // @ts-ignore
+ // @ts-expect-error
themeLighter: globalTokens.color.brand40,
- // @ts-ignore
+ // @ts-expect-error
themeLighterAlt: globalTokens.color.brand30,
},
true,
diff --git a/packages/theming/theme-tokens/eslint.config.js b/packages/theming/theme-tokens/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/theming/theme-tokens/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/theming/theme-tokens/package.json b/packages/theming/theme-tokens/package.json
index 5b487d8eed3..c6920a367b2 100644
--- a/packages/theming/theme-tokens/package.json
+++ b/packages/theming/theme-tokens/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -46,8 +46,8 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/theming/theme-types/eslint.config.js b/packages/theming/theme-types/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/theming/theme-types/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/theming/theme-types/package.json b/packages/theming/theme-types/package.json
index 3754e944713..e4ded4fc5b7 100644
--- a/packages/theming/theme-types/package.json
+++ b/packages/theming/theme-types/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -38,8 +38,8 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/theming/theming-utils/eslint.config.js b/packages/theming/theming-utils/eslint.config.js
deleted file mode 100644
index 04916a6adb2..00000000000
--- a/packages/theming/theming-utils/eslint.config.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = [
- ...baseConfig,
- {
- rules: {
- '@typescript-eslint/no-var-requires': 0,
- },
- },
-];
diff --git a/packages/theming/theming-utils/oxlint.config.ts b/packages/theming/theming-utils/oxlint.config.ts
new file mode 100644
index 00000000000..d1e027f0edf
--- /dev/null
+++ b/packages/theming/theming-utils/oxlint.config.ts
@@ -0,0 +1,9 @@
+import baseConfig from '@fluentui-react-native/lint-config-rules';
+import { defineConfig } from 'oxlint';
+
+export default defineConfig({
+ extends: [baseConfig],
+ rules: {
+ 'typescript/no-var-requires': 'off',
+ },
+});
diff --git a/packages/theming/theming-utils/package.json b/packages/theming/theming-utils/package.json
index f3e79ab99ce..ca3afa9ee5c 100644
--- a/packages/theming/theming-utils/package.json
+++ b/packages/theming/theming-utils/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -41,9 +41,9 @@
"@fluentui-react-native/babel-config": "workspace:*",
"@fluentui-react-native/design-tokens-win32": "^0.53.0",
"@fluentui-react-native/design-tokens-windows": "^0.53.0",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/theming/win32-theme/eslint.config.js b/packages/theming/win32-theme/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/theming/win32-theme/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/theming/win32-theme/package.json b/packages/theming/win32-theme/package.json
index 0b758ddeb4a..b6b807a321c 100644
--- a/packages/theming/win32-theme/package.json
+++ b/packages/theming/win32-theme/package.json
@@ -28,7 +28,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"start": "fluentui-scripts dev",
"start-test": "fluentui-scripts jest-watch",
@@ -47,9 +47,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^20.0.0",
diff --git a/packages/utils/adapters/eslint.config.js b/packages/utils/adapters/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/utils/adapters/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/utils/adapters/package.json b/packages/utils/adapters/package.json
index 055492ec06a..32a3a605779 100644
--- a/packages/utils/adapters/package.json
+++ b/packages/utils/adapters/package.json
@@ -27,15 +27,15 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
},
"devDependencies": {
"@babel/core": "catalog:",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/react-configs": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.81.0",
diff --git a/packages/utils/interactive-hooks/eslint.config.js b/packages/utils/interactive-hooks/eslint.config.js
deleted file mode 100644
index 04916a6adb2..00000000000
--- a/packages/utils/interactive-hooks/eslint.config.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = [
- ...baseConfig,
- {
- rules: {
- '@typescript-eslint/no-var-requires': 0,
- },
- },
-];
diff --git a/packages/utils/interactive-hooks/oxlint.config.ts b/packages/utils/interactive-hooks/oxlint.config.ts
new file mode 100644
index 00000000000..d1e027f0edf
--- /dev/null
+++ b/packages/utils/interactive-hooks/oxlint.config.ts
@@ -0,0 +1,9 @@
+import baseConfig from '@fluentui-react-native/lint-config-rules';
+import { defineConfig } from 'oxlint';
+
+export default defineConfig({
+ extends: [baseConfig],
+ rules: {
+ 'typescript/no-var-requires': 'off',
+ },
+});
diff --git a/packages/utils/interactive-hooks/package.json b/packages/utils/interactive-hooks/package.json
index 1ba8bd5d65c..0f4f3cb6291 100644
--- a/packages/utils/interactive-hooks/package.json
+++ b/packages/utils/interactive-hooks/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -39,9 +39,9 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/test-tools": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
diff --git a/packages/utils/interactive-hooks/src/useAsPressable.ts b/packages/utils/interactive-hooks/src/useAsPressable.ts
index f69abece65a..db84d13a61d 100644
--- a/packages/utils/interactive-hooks/src/useAsPressable.ts
+++ b/packages/utils/interactive-hooks/src/useAsPressable.ts
@@ -19,25 +19,26 @@ type ObjectBase = {};
*/
function useHoverHelper(props: PressableHoverProps): [PressableHoverProps, IHoverState] {
const [hoverState, setHoverState] = React.useState({ hovered: false });
+ const { onHoverIn: onHoverInProp, onHoverOut: onHoverOutProp } = props;
const onHoverIn = React.useCallback(
(e) => {
setHoverState({ hovered: true });
- if (props.onHoverIn) {
- props.onHoverIn(e);
+ if (onHoverInProp) {
+ onHoverInProp(e);
}
},
- [setHoverState, props.onHoverIn],
+ [onHoverInProp, setHoverState],
);
const onHoverOut = React.useCallback(
(e) => {
setHoverState({ hovered: false });
- if (props.onHoverOut) {
- props.onHoverOut(e);
+ if (onHoverOutProp) {
+ onHoverOutProp(e);
}
},
- [setHoverState, props.onHoverOut],
+ [onHoverOutProp, setHoverState],
);
return [{ onHoverIn, onHoverOut }, hoverState];
}
@@ -47,24 +48,25 @@ function useHoverHelper(props: PressableHoverProps): [PressableHoverProps, IHove
*/
function useFocusHelper(props: PressableFocusProps): [PressableFocusProps, IFocusState] {
const [focusState, setFocusState] = React.useState({ focused: false });
+ const { onBlur: onBlurProp, onFocus: onFocusProp } = props;
const onFocus = React.useCallback(
(e) => {
setFocusState({ focused: true });
- if (props.onFocus) {
- props.onFocus(e);
+ if (onFocusProp) {
+ onFocusProp(e);
}
},
- [setFocusState, props.onFocus],
+ [onFocusProp, setFocusState],
);
const onBlur = React.useCallback(
(e) => {
setFocusState({ focused: false });
- if (props.onBlur) {
- props.onBlur(e);
+ if (onBlurProp) {
+ onBlurProp(e);
}
},
- [setFocusState, props.onBlur],
+ [onBlurProp, setFocusState],
);
return [{ onFocus, onBlur }, focusState];
}
@@ -74,25 +76,26 @@ function useFocusHelper(props: PressableFocusProps): [PressableFocusProps, IFocu
*/
function usePressHelper(props: PressablePressProps): [PressablePressProps, IPressState] {
const [pressState, setPressState] = React.useState({ pressed: false });
+ const { onPressIn: onPressInProp, onPressOut: onPressOutProp } = props;
const onPressIn = React.useCallback(
(e) => {
setPressState({ pressed: true });
- if (props.onPressIn) {
- props.onPressIn(e);
+ if (onPressInProp) {
+ onPressInProp(e);
}
},
- [setPressState, props.onPressIn],
+ [onPressInProp, setPressState],
);
const onPressOut = React.useCallback(
(e) => {
setPressState({ pressed: false });
- if (props.onPressOut) {
- props.onPressOut(e);
+ if (onPressOutProp) {
+ onPressOutProp(e);
}
},
- [setPressState, props.onPressOut],
+ [onPressOutProp, setPressState],
);
return [{ onPressIn, onPressOut }, pressState];
diff --git a/packages/utils/interactive-hooks/src/useAsToggle.ts b/packages/utils/interactive-hooks/src/useAsToggle.ts
index bc990e28a21..7a93a3fb035 100644
--- a/packages/utils/interactive-hooks/src/useAsToggle.ts
+++ b/packages/utils/interactive-hooks/src/useAsToggle.ts
@@ -20,7 +20,7 @@ export function useAsToggle(defaultChecked?: boolean, checked?: boolean, userCal
const onChange = React.useCallback(() => {
userCallback && userCallback(!isChecked);
setChecked(!isChecked);
- }, [isChecked, setChecked]);
+ }, [isChecked, setChecked, userCallback]);
return [checked ?? isChecked, onChange];
}
diff --git a/packages/utils/styling/eslint.config.js b/packages/utils/styling/eslint.config.js
deleted file mode 100644
index 04916a6adb2..00000000000
--- a/packages/utils/styling/eslint.config.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = [
- ...baseConfig,
- {
- rules: {
- '@typescript-eslint/no-var-requires': 0,
- },
- },
-];
diff --git a/packages/utils/styling/oxlint.config.ts b/packages/utils/styling/oxlint.config.ts
new file mode 100644
index 00000000000..d1e027f0edf
--- /dev/null
+++ b/packages/utils/styling/oxlint.config.ts
@@ -0,0 +1,9 @@
+import baseConfig from '@fluentui-react-native/lint-config-rules';
+import { defineConfig } from 'oxlint';
+
+export default defineConfig({
+ extends: [baseConfig],
+ rules: {
+ 'typescript/no-var-requires': 'off',
+ },
+});
diff --git a/packages/utils/styling/package.json b/packages/utils/styling/package.json
index 8b695262a2a..b72366e6b00 100644
--- a/packages/utils/styling/package.json
+++ b/packages/utils/styling/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -35,8 +35,8 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/packages/utils/test-tools/eslint.config.js b/packages/utils/test-tools/eslint.config.js
deleted file mode 100644
index 04916a6adb2..00000000000
--- a/packages/utils/test-tools/eslint.config.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = [
- ...baseConfig,
- {
- rules: {
- '@typescript-eslint/no-var-requires': 0,
- },
- },
-];
diff --git a/packages/utils/test-tools/oxlint.config.ts b/packages/utils/test-tools/oxlint.config.ts
new file mode 100644
index 00000000000..d1e027f0edf
--- /dev/null
+++ b/packages/utils/test-tools/oxlint.config.ts
@@ -0,0 +1,9 @@
+import baseConfig from '@fluentui-react-native/lint-config-rules';
+import { defineConfig } from 'oxlint';
+
+export default defineConfig({
+ extends: [baseConfig],
+ rules: {
+ 'typescript/no-var-requires': 'off',
+ },
+});
diff --git a/packages/utils/test-tools/package.json b/packages/utils/test-tools/package.json
index 79d6bc139c6..3a1e83e3b63 100644
--- a/packages/utils/test-tools/package.json
+++ b/packages/utils/test-tools/package.json
@@ -28,16 +28,16 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"update-snapshots": "fluentui-scripts jest -u"
},
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/jest-config": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@fluentui-react-native/theme-types": "workspace:*",
"@react-native/babel-preset": "^0.81.0",
diff --git a/packages/utils/tokens/eslint.config.js b/packages/utils/tokens/eslint.config.js
deleted file mode 100644
index c98098e0680..00000000000
--- a/packages/utils/tokens/eslint.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const baseConfig = require('@fluentui-react-native/eslint-config-rules');
-
-module.exports = baseConfig;
diff --git a/packages/utils/tokens/package.json b/packages/utils/tokens/package.json
index a9fa73368ba..7e3bc1a0fec 100644
--- a/packages/utils/tokens/package.json
+++ b/packages/utils/tokens/package.json
@@ -27,7 +27,7 @@
"clean": "fluentui-scripts clean",
"depcheck": "fluentui-scripts depcheck",
"format": "fluentui-scripts format",
- "lint": "fluentui-scripts eslint",
+ "lint": "fluentui-scripts lint",
"lint-package": "fluentui-scripts lint-package",
"test": "fluentui-scripts jest",
"update-snapshots": "fluentui-scripts jest -u"
@@ -39,8 +39,8 @@
"devDependencies": {
"@babel/core": "catalog:",
"@fluentui-react-native/babel-config": "workspace:*",
- "@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
+ "@fluentui-react-native/lint-config-rules": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
diff --git a/scripts/dynamic.extensions.mjs b/scripts/dynamic.extensions.mjs
index 939c0f47447..7223e09006b 100644
--- a/scripts/dynamic.extensions.mjs
+++ b/scripts/dynamic.extensions.mjs
@@ -66,7 +66,7 @@ export default function ({ cwd, manifest }) {
...conditionallyAdd(['typescript', '@types/node', '@types/jest', '@typescript/native-preview'], manifest, () =>
fs.existsSync(path.join(cwd, 'tsconfig.json')),
),
- ...conditionallyAdd(['eslint'], manifest, enableLinting),
+ ...conditionallyAdd(['oxlint', 'oxlint-tsgolint'], manifest, enableLinting),
...conditionallyAdd(['oxfmt'], manifest, () => addOxfmt(manifest)),
...conditionallyAdd(['jest', '@types/jest'], manifest, () => addJest(cwd, manifest)),
},
diff --git a/scripts/eslint.config.js b/scripts/eslint.config.js
deleted file mode 100644
index d9e3f1445b2..00000000000
--- a/scripts/eslint.config.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import js from '@eslint/js';
-// @ts-expect-error - no types available
-import rnx from '@rnx-kit/eslint-plugin';
-
-// We keep a separate ESLint config to avoid circular dependency
-export default [
- ...rnx.configs.strict,
- ...rnx.configs.stylistic,
- js.configs.recommended,
- {
- languageOptions: {
- ecmaVersion: 'latest',
- sourceType: 'module',
- globals: {
- __dirname: 'readonly',
- console: 'readonly',
- module: 'readonly',
- process: 'readonly',
- require: 'readonly',
- },
- },
- rules: {
- 'no-restricted-exports': [
- 'error',
- {
- restrictDefaultExports: {
- direct: false,
- named: true,
- defaultFrom: true,
- namedFrom: true,
- namespaceFrom: true,
- },
- },
- ],
- '@typescript-eslint/consistent-type-definitions': ['error', 'type'],
- },
- },
-];
diff --git a/scripts/oxlint.config.ts b/scripts/oxlint.config.ts
new file mode 100644
index 00000000000..028370112ac
--- /dev/null
+++ b/scripts/oxlint.config.ts
@@ -0,0 +1,22 @@
+import config from '../packages/configs/lint-config-rules/private.ts';
+import { defineConfig } from 'oxlint';
+
+export default defineConfig({
+ extends: [config],
+ rules: {
+ '@rnx-kit/no-foreach-with-captured-variables': 'off',
+ 'import/no-default-export': 'off',
+ 'no-restricted-exports': [
+ 'error',
+ {
+ restrictDefaultExports: {
+ direct: false,
+ named: true,
+ defaultFrom: true,
+ namedFrom: true,
+ namespaceFrom: true,
+ },
+ },
+ ],
+ },
+});
diff --git a/scripts/package.json b/scripts/package.json
index f24ac900e83..fe1b200a6b0 100644
--- a/scripts/package.json
+++ b/scripts/package.json
@@ -23,12 +23,11 @@
"lint-package": "node ./src/cli.mjs lint-package"
},
"devDependencies": {
- "@eslint/js": "^9.0.0",
"@fluentui-react-native/kit-config": "workspace:*",
"@rnx-kit/align-deps": "catalog:",
"@rnx-kit/config": "catalog:",
- "@rnx-kit/eslint-plugin": "catalog:",
"@rnx-kit/jest-preset": "catalog:",
+ "@rnx-kit/oxlint-config": "^1.0.3",
"@rnx-kit/reporter": "catalog:",
"@rnx-kit/tools-packages": "catalog:",
"@rnx-kit/tools-typescript": "catalog:",
@@ -40,12 +39,13 @@
"chalk": "^4.0.0",
"clipanion": "^4.0.0-rc.4",
"depcheck": "^1.0.0",
- "eslint": "^9.0.0",
"find-up": "^5.0.0",
"jest": "^29.2.1",
"knip": "catalog:",
"lage": "catalog:",
"micromatch": "^4.0.8",
+ "oxlint": "^1.57.0",
+ "oxlint-tsgolint": "^0.17.4",
"react": "18.2.0",
"react-native": "^0.74.0",
"typescript": "^5.8.0",
diff --git a/scripts/src/cli.mjs b/scripts/src/cli.mjs
index 79203e1b3f6..8220c1e8462 100755
--- a/scripts/src/cli.mjs
+++ b/scripts/src/cli.mjs
@@ -5,7 +5,7 @@ import { Builtins, Cli } from 'clipanion';
import { BuildCommand } from './tasks/build.ts';
import { CleanCommand } from './tasks/clean.js';
import { FormatCommand } from './tasks/format.js';
-import { LintCommand } from './tasks/eslint.js';
+import { LintCommand } from './tasks/lint.js';
import { LintPackageCommand } from './tasks/lintPackage.ts';
import { JestCommand } from './tasks/jest.js';
import { CheckPublishingCommand } from './tasks/checkPublishingTask.js';
diff --git a/scripts/src/preinstall/tool-versions.js b/scripts/src/preinstall/tool-versions.js
index b67261a22e1..d062f5c176e 100644
--- a/scripts/src/preinstall/tool-versions.js
+++ b/scripts/src/preinstall/tool-versions.js
@@ -25,6 +25,7 @@ const devToolVersions = {
'@react-native-community/cli-platform-android': '^13.6.4',
'@react-native-community/cli-platform-ios': '^13.6.4',
'@rnx-kit/eslint-plugin': '^0.8.6',
+ '@rnx-kit/oxlint-config': '^1.0.3',
'@rnx-kit/jest-preset': '^0.2.1',
'@rnx-kit/tools-packages': '^0.1.1',
'@rnx-kit/tools-typescript': '^0.1.1',
@@ -47,6 +48,8 @@ const devToolVersions = {
jsdom: '^25.0.0',
'metro-config': '^0.80.3',
'metro-react-native-babel-transformer': '^0.76.5',
+ oxlint: '^1.57.0',
+ 'oxlint-tsgolint': '^0.17.4',
'react-test-renderer': '18.2.0',
rimraf: '^5.0.1',
// Fill versions from scripts first
diff --git a/scripts/src/tasks/depcheck.ts b/scripts/src/tasks/depcheck.ts
index c6564ab2c0b..67ddbc5f313 100644
--- a/scripts/src/tasks/depcheck.ts
+++ b/scripts/src/tasks/depcheck.ts
@@ -271,5 +271,6 @@ function isTestFile(fileName: string): boolean {
'**/babel.config.*',
'**/jest.config.*',
'**/eslint.config.*',
+ '**/oxlint.config.*',
]);
}
diff --git a/scripts/src/tasks/eslint.js b/scripts/src/tasks/eslint.js
deleted file mode 100644
index 67093973031..00000000000
--- a/scripts/src/tasks/eslint.js
+++ /dev/null
@@ -1,27 +0,0 @@
-// @ts-check
-
-import { Command, Option } from 'clipanion';
-import { runScript } from '../utils/runScript.js';
-import { isFixMode } from '../utils/env.ts';
-
-export class LintCommand extends Command {
- /** @override */
- static paths = [['lint'], ['eslint']];
-
- /** @override */
- static usage = Command.Usage({
- description: 'Lints the current package',
- details: 'This command lints the current package using ESLint.',
- examples: [['Lint the current package', '$0 lint']],
- });
-
- args = Option.Proxy();
-
- async execute() {
- const args = [...this.args];
- if (isFixMode()) {
- args.push('--fix');
- }
- return await runScript('eslint', 'src/', ...args);
- }
-}
diff --git a/scripts/src/tasks/lint.js b/scripts/src/tasks/lint.js
new file mode 100644
index 00000000000..8d675e30254
--- /dev/null
+++ b/scripts/src/tasks/lint.js
@@ -0,0 +1,52 @@
+// @ts-check
+
+import fs from 'node:fs';
+import path from 'node:path';
+import { fileURLToPath } from 'node:url';
+import { Command, Option } from 'clipanion';
+import { isFixMode } from '../utils/env.ts';
+
+export class LintCommand extends Command {
+ /** @override */
+ static paths = [['lint']];
+
+ /** @override */
+ static usage = Command.Usage({
+ description: 'Lints the current package',
+ details: 'This command lints the current package using oxlint.',
+ examples: [['Lint the current package', '$0 lint']],
+ });
+
+ args = Option.Proxy();
+
+ async execute() {
+ const oxlint = new URL('./cli.js', import.meta.resolve('oxlint'));
+ const args = [process.argv0, fileURLToPath(oxlint), '-c', this.configPath, '--ignore-pattern=__fixtures__', ...this.args];
+
+ if (isFixMode()) {
+ args.push('--fix');
+ }
+
+ if (process.platform === 'win32') {
+ args.push('--threads=1');
+ }
+
+ process.argv = args;
+ await import(oxlint.href);
+
+ if (process.exitCode == null) {
+ return 0;
+ }
+
+ return typeof process.exitCode === 'number' ? process.exitCode : -1;
+ }
+
+ get configPath() {
+ const localConfig = path.join(process.cwd(), 'oxlint.config.ts');
+ if (fs.existsSync(localConfig)) {
+ return localConfig;
+ }
+
+ return fileURLToPath(new URL('../../../packages/configs/lint-config-rules/private.ts', import.meta.url));
+ }
+}
diff --git a/yarn.lock b/yarn.lock
index 2189f577531..96889026154 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2567,7 +2567,7 @@ __metadata:
languageName: node
linkType: hard
-"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1":
+"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.9.1":
version: 4.9.1
resolution: "@eslint-community/eslint-utils@npm:4.9.1"
dependencies:
@@ -2578,90 +2578,20 @@ __metadata:
languageName: node
linkType: hard
-"@eslint-community/regexpp@npm:^4.11.0, @eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2":
+"@eslint-community/regexpp@npm:^4.11.0, @eslint-community/regexpp@npm:^4.12.2":
version: 4.12.2
resolution: "@eslint-community/regexpp@npm:4.12.2"
checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d
languageName: node
linkType: hard
-"@eslint/config-array@npm:^0.21.1":
- version: 0.21.1
- resolution: "@eslint/config-array@npm:0.21.1"
- dependencies:
- "@eslint/object-schema": "npm:^2.1.7"
- debug: "npm:^4.3.1"
- minimatch: "npm:^3.1.2"
- checksum: 10c0/2f657d4edd6ddcb920579b72e7a5b127865d4c3fb4dda24f11d5c4f445a93ca481aebdbd6bf3291c536f5d034458dbcbb298ee3b698bc6c9dd02900fe87eec3c
- languageName: node
- linkType: hard
-
-"@eslint/config-helpers@npm:^0.4.2":
- version: 0.4.2
- resolution: "@eslint/config-helpers@npm:0.4.2"
- dependencies:
- "@eslint/core": "npm:^0.17.0"
- checksum: 10c0/92efd7a527b2d17eb1a148409d71d80f9ac160b565ac73ee092252e8bf08ecd08670699f46b306b94f13d22e88ac88a612120e7847570dd7cdc72f234d50dcb4
- languageName: node
- linkType: hard
-
-"@eslint/core@npm:^0.17.0":
- version: 0.17.0
- resolution: "@eslint/core@npm:0.17.0"
- dependencies:
- "@types/json-schema": "npm:^7.0.15"
- checksum: 10c0/9a580f2246633bc752298e7440dd942ec421860d1946d0801f0423830e67887e4aeba10ab9a23d281727a978eb93d053d1922a587d502942a713607f40ed704e
- languageName: node
- linkType: hard
-
-"@eslint/eslintrc@npm:^3.3.1":
- version: 3.3.1
- resolution: "@eslint/eslintrc@npm:3.3.1"
- dependencies:
- ajv: "npm:^6.12.4"
- debug: "npm:^4.3.2"
- espree: "npm:^10.0.1"
- globals: "npm:^14.0.0"
- ignore: "npm:^5.2.0"
- import-fresh: "npm:^3.2.1"
- js-yaml: "npm:^4.1.0"
- minimatch: "npm:^3.1.2"
- strip-json-comments: "npm:^3.1.1"
- checksum: 10c0/b0e63f3bc5cce4555f791a4e487bf999173fcf27c65e1ab6e7d63634d8a43b33c3693e79f192cbff486d7df1be8ebb2bd2edc6e70ddd486cbfa84a359a3e3b41
- languageName: node
- linkType: hard
-
-"@eslint/js@npm:9.39.2, @eslint/js@npm:^9.0.0":
- version: 9.39.2
- resolution: "@eslint/js@npm:9.39.2"
- checksum: 10c0/00f51c52b04ac79faebfaa65a9652b2093b9c924e945479f1f3945473f78aee83cbc76c8d70bbffbf06f7024626575b16d97b66eab16182e1d0d39daff2f26f5
- languageName: node
- linkType: hard
-
-"@eslint/object-schema@npm:^2.1.7":
- version: 2.1.7
- resolution: "@eslint/object-schema@npm:2.1.7"
- checksum: 10c0/936b6e499853d1335803f556d526c86f5fe2259ed241bc665000e1d6353828edd913feed43120d150adb75570cae162cf000b5b0dfc9596726761c36b82f4e87
- languageName: node
- linkType: hard
-
-"@eslint/plugin-kit@npm:^0.4.1":
- version: 0.4.1
- resolution: "@eslint/plugin-kit@npm:0.4.1"
- dependencies:
- "@eslint/core": "npm:^0.17.0"
- levn: "npm:^0.4.1"
- checksum: 10c0/51600f78b798f172a9915dffb295e2ffb44840d583427bc732baf12ecb963eb841b253300e657da91d890f4b323d10a1bd12934bf293e3018d8bb66fdce5217b
- languageName: node
- linkType: hard
-
"@fluentui-react-native/adapters@workspace:*, @fluentui-react-native/adapters@workspace:packages/utils/adapters":
version: 0.0.0-use.local
resolution: "@fluentui-react-native/adapters@workspace:packages/utils/adapters"
dependencies:
"@babel/core": "catalog:"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/react-configs": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.81.0"
@@ -2699,10 +2629,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme": "workspace:*"
"@fluentui-react-native/theme-tokens": "workspace:*"
@@ -2746,11 +2676,11 @@ __metadata:
"@fluentui-react-native/default-theme": "workspace:*"
"@fluentui-react-native/design-tokens-ios": "npm:^0.53.0"
"@fluentui-react-native/design-tokens-macos": "npm:^0.53.0"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/experimental-appearance-additions": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme": "workspace:*"
"@fluentui-react-native/theme-tokens": "workspace:*"
@@ -2794,12 +2724,12 @@ __metadata:
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/badge": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/icon": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme-tokens": "workspace:*"
"@fluentui-react-native/theming-utils": "workspace:*"
@@ -2868,13 +2798,13 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/experimental-shadow": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/icon": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
@@ -2924,7 +2854,6 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/experimental-activity-indicator": "workspace:*"
"@fluentui-react-native/experimental-shadow": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
@@ -2933,6 +2862,7 @@ __metadata:
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/pressable": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/styling-utils": "workspace:*"
@@ -2987,9 +2917,9 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/tokens": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.74.0"
@@ -3034,12 +2964,12 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/pressable": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/styling-utils": "workspace:*"
@@ -3093,13 +3023,13 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/icon": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
@@ -3146,8 +3076,8 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@babel/preset-env": "catalog:"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/react-configs": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
@@ -3166,10 +3096,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/use-slots": "workspace:*"
"@fluentui-react-native/use-styling": "workspace:*"
@@ -3196,13 +3126,13 @@ __metadata:
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/callout": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/focus-zone": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/icon": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/pressable": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
@@ -3253,10 +3183,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme": "workspace:*"
"@fluentui-react-native/theme-tokens": "workspace:*"
@@ -3564,12 +3494,12 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/icon": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
@@ -3615,12 +3545,12 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme-tokens": "workspace:*"
"@fluentui-react-native/use-styling": "workspace:*"
@@ -3664,11 +3594,11 @@ __metadata:
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/button": "workspace:*"
"@fluentui-react-native/callout": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
@@ -3710,9 +3640,9 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@babel/runtime": "catalog:"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/focus-zone": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.81.0"
"@office-iss/rex-win32": "npm:0.73.11-devmain.16.0.17615.15030"
@@ -3764,29 +3694,15 @@ __metadata:
languageName: unknown
linkType: soft
-"@fluentui-react-native/eslint-config-rules@workspace:*, @fluentui-react-native/eslint-config-rules@workspace:packages/configs/eslint-config-rules":
- version: 0.0.0-use.local
- resolution: "@fluentui-react-native/eslint-config-rules@workspace:packages/configs/eslint-config-rules"
- dependencies:
- "@fluentui-react-native/kit-config": "workspace:*"
- "@fluentui-react-native/scripts": "workspace:*"
- "@microsoft/eslint-plugin-sdl": "npm:^1.1.0"
- "@rnx-kit/eslint-plugin": "catalog:"
- "@types/eslint": "npm:^9.6.1"
- "@types/node": "catalog:"
- eslint: "npm:^9.39.2"
- languageName: unknown
- linkType: soft
-
"@fluentui-react-native/experimental-activity-indicator@workspace:*, @fluentui-react-native/experimental-activity-indicator@workspace:packages/experimental/ActivityIndicator":
version: 0.0.0-use.local
resolution: "@fluentui-react-native/experimental-activity-indicator@workspace:packages/experimental/ActivityIndicator"
dependencies:
"@babel/core": "catalog:"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -3826,9 +3742,9 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -3866,10 +3782,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -3908,10 +3824,10 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/checkbox": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.74.0"
"@react-native-community/cli": "npm:^20.0.0"
@@ -3951,10 +3867,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -3992,11 +3908,11 @@ __metadata:
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/button": "workspace:*"
"@fluentui-react-native/contextual-menu": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/tokens": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.74.0"
@@ -4039,8 +3955,8 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -4065,8 +3981,8 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -4093,11 +4009,11 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/pressable": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
@@ -4139,11 +4055,11 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theming-utils": "workspace:*"
"@fluentui-react-native/tokens": "workspace:*"
@@ -4189,10 +4105,10 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.74.0"
"@react-native-community/cli": "npm:^20.0.0"
@@ -4235,10 +4151,10 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.74.0"
"@react-native-community/cli": "npm:^20.0.0"
@@ -4280,8 +4196,8 @@ __metadata:
resolution: "@fluentui-react-native/framework-base@workspace:packages/framework-base"
dependencies:
"@babel/core": "catalog:"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/react-configs": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@types/jest": "npm:^29.0.0"
@@ -4306,10 +4222,10 @@ __metadata:
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/composition": "workspace:*"
"@fluentui-react-native/default-theme": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme-types": "workspace:*"
"@fluentui-react-native/tokens": "workspace:*"
@@ -4356,11 +4272,11 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
@@ -4404,13 +4320,13 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/icon": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/styling-utils": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
@@ -4458,10 +4374,10 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.74.0"
@@ -4504,8 +4420,8 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native/babel-preset": "npm:^0.81.0"
"@rnx-kit/jest-preset": "catalog:"
@@ -4535,12 +4451,12 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
@@ -4580,6 +4496,19 @@ __metadata:
languageName: unknown
linkType: soft
+"@fluentui-react-native/lint-config-rules@workspace:*, @fluentui-react-native/lint-config-rules@workspace:packages/configs/lint-config-rules":
+ version: 0.0.0-use.local
+ resolution: "@fluentui-react-native/lint-config-rules@workspace:packages/configs/lint-config-rules"
+ dependencies:
+ "@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/scripts": "workspace:*"
+ "@rnx-kit/oxlint-config": "npm:^1.0.3"
+ "@types/node": "catalog:"
+ oxlint: "npm:^1.57.0"
+ typescript: "npm:^5.8.0"
+ languageName: unknown
+ linkType: soft
+
"@fluentui-react-native/menu-button@workspace:*, @fluentui-react-native/menu-button@workspace:packages/components/MenuButton":
version: 0.0.0-use.local
resolution: "@fluentui-react-native/menu-button@workspace:packages/components/MenuButton"
@@ -4588,11 +4517,11 @@ __metadata:
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/button": "workspace:*"
"@fluentui-react-native/contextual-menu": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/icon": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/tokens": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.74.0"
@@ -4641,7 +4570,6 @@ __metadata:
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/button": "workspace:*"
"@fluentui-react-native/callout": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/focus-zone": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
@@ -4649,6 +4577,7 @@ __metadata:
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
@@ -4699,7 +4628,6 @@ __metadata:
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/button": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/experimental-appearance-additions": "workspace:*"
"@fluentui-react-native/experimental-shadow": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
@@ -4708,6 +4636,7 @@ __metadata:
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/pressable": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
@@ -4757,11 +4686,11 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/button": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/menu": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
@@ -4802,10 +4731,10 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme-tokens": "workspace:*"
"@fluentui-react-native/tokens": "workspace:*"
@@ -4849,10 +4778,10 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/persona-coin": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/tokens": "workspace:*"
@@ -4895,10 +4824,10 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -4935,9 +4864,9 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -4976,13 +4905,13 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/focus-zone": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/pressable": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
@@ -5061,11 +4990,11 @@ __metadata:
"@rnx-kit/lint-lockfile": "catalog:"
babel-jest: "npm:^29.7.0"
cross-env: "catalog:"
- eslint: "npm:^9.39.2"
- eslint-plugin-import: "npm:^2.32.0"
lage: "catalog:"
markdown-link-check: "npm:^3.8.7"
oxfmt: "npm:^0.35.0"
+ oxlint: "npm:^1.57.0"
+ oxlint-tsgolint: "npm:^0.17.4"
typescript: "npm:^5.8.0"
zx: "npm:^8.2.4"
languageName: unknown
@@ -5075,12 +5004,11 @@ __metadata:
version: 0.0.0-use.local
resolution: "@fluentui-react-native/scripts@workspace:scripts"
dependencies:
- "@eslint/js": "npm:^9.0.0"
"@fluentui-react-native/kit-config": "workspace:*"
"@rnx-kit/align-deps": "catalog:"
"@rnx-kit/config": "catalog:"
- "@rnx-kit/eslint-plugin": "catalog:"
"@rnx-kit/jest-preset": "catalog:"
+ "@rnx-kit/oxlint-config": "npm:^1.0.3"
"@rnx-kit/reporter": "catalog:"
"@rnx-kit/tools-packages": "catalog:"
"@rnx-kit/tools-typescript": "catalog:"
@@ -5092,12 +5020,13 @@ __metadata:
chalk: "npm:^4.0.0"
clipanion: "npm:^4.0.0-rc.4"
depcheck: "npm:^1.0.0"
- eslint: "npm:^9.0.0"
find-up: "npm:^5.0.0"
jest: "npm:^29.2.1"
knip: "catalog:"
lage: "catalog:"
micromatch: "npm:^4.0.8"
+ oxlint: "npm:^1.57.0"
+ oxlint-tsgolint: "npm:^0.17.4"
react: "npm:18.2.0"
react-native: "npm:^0.74.0"
typescript: "npm:^5.8.0"
@@ -5114,11 +5043,11 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme-tokens": "workspace:*"
"@fluentui-react-native/use-styling": "workspace:*"
@@ -5160,10 +5089,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
"@fluentui-react-native/theme-tokens": "workspace:*"
@@ -5206,11 +5135,11 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
"@fluentui-react-native/tokens": "workspace:*"
@@ -5255,8 +5184,8 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -5281,12 +5210,12 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
@@ -5332,7 +5261,6 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/focus-zone": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
@@ -5340,6 +5268,7 @@ __metadata:
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@fluentui-react-native/text": "workspace:*"
@@ -5386,9 +5315,9 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme-types": "workspace:*"
"@react-native/babel-preset": "npm:^0.81.0"
@@ -5428,7 +5357,6 @@ __metadata:
"@fluentui-react-native/drawer": "workspace:*"
"@fluentui-react-native/dropdown": "workspace:*"
"@fluentui-react-native/e2e-testing": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/experimental-activity-indicator": "workspace:*"
"@fluentui-react-native/experimental-appearance-additions": "workspace:*"
"@fluentui-react-native/experimental-avatar": "workspace:*"
@@ -5446,6 +5374,7 @@ __metadata:
"@fluentui-react-native/input": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/menu": "workspace:*"
"@fluentui-react-native/menu-button": "workspace:*"
"@fluentui-react-native/notification": "workspace:*"
@@ -5571,8 +5500,8 @@ __metadata:
"@babel/core": "catalog:"
"@babel/runtime": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/tester-core": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.81.0"
@@ -5614,8 +5543,8 @@ __metadata:
"@babel/core": "catalog:"
"@babel/runtime": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/tester-core": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.74.0"
@@ -5653,7 +5582,6 @@ __metadata:
"@babel/runtime": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/callout": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/experimental-appearance-additions": "workspace:*"
"@fluentui-react-native/experimental-avatar": "workspace:*"
"@fluentui-react-native/experimental-checkbox": "workspace:*"
@@ -5663,6 +5591,7 @@ __metadata:
"@fluentui-react-native/experimental-shimmer": "workspace:*"
"@fluentui-react-native/focus-zone": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/menu-button": "workspace:*"
"@fluentui-react-native/radio-group": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
@@ -5715,12 +5644,12 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@fluentui-react-native/theme-tokens": "workspace:*"
@@ -5767,8 +5696,8 @@ __metadata:
"@fluentui-react-native/design-tokens-ios": "npm:^0.53.0"
"@fluentui-react-native/design-tokens-win32": "npm:^0.53.0"
"@fluentui-react-native/design-tokens-windows": "npm:^0.53.0"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme-types": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
@@ -5795,8 +5724,8 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -5821,10 +5750,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@fluentui-react-native/theme-types": "workspace:*"
@@ -5852,10 +5781,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -5883,9 +5812,9 @@ __metadata:
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/design-tokens-win32": "npm:^0.53.0"
"@fluentui-react-native/design-tokens-windows": "npm:^0.53.0"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme-types": "workspace:*"
"@fluentui-react-native/tokens": "workspace:*"
@@ -5925,8 +5854,8 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme-types": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
@@ -5965,10 +5894,10 @@ __metadata:
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/button": "workspace:*"
"@fluentui-react-native/callout": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.74.0"
@@ -6007,10 +5936,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -6038,10 +5967,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/use-slot": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
@@ -6069,10 +5998,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/use-tokens": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
@@ -6101,10 +6030,10 @@ __metadata:
dependencies:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
"@react-native-community/cli-platform-android": "npm:^20.0.0"
@@ -6133,8 +6062,8 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/adapters": "workspace:*"
"@fluentui-react-native/babel-config": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.81.0"
"@react-native-community/cli": "npm:^20.0.0"
@@ -6173,10 +6102,10 @@ __metadata:
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/default-theme": "workspace:*"
"@fluentui-react-native/design-tokens-win32": "npm:^0.53.0"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/jest-config": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme": "workspace:*"
"@fluentui-react-native/theme-tokens": "workspace:*"
@@ -6235,12 +6164,12 @@ __metadata:
"@fluentui-react-native/callout": "workspace:*"
"@fluentui-react-native/checkbox": "workspace:*"
"@fluentui-react-native/contextual-menu": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/focus-trap-zone": "workspace:*"
"@fluentui-react-native/focus-zone": "workspace:*"
"@fluentui-react-native/interactive-hooks": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
"@fluentui-react-native/link": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/menu-button": "workspace:*"
"@fluentui-react-native/persona": "workspace:*"
"@fluentui-react-native/persona-coin": "workspace:*"
@@ -6346,44 +6275,6 @@ __metadata:
languageName: node
linkType: hard
-"@humanfs/core@npm:^0.19.1":
- version: 0.19.1
- resolution: "@humanfs/core@npm:0.19.1"
- checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67
- languageName: node
- linkType: hard
-
-"@humanfs/node@npm:^0.16.6":
- version: 0.16.6
- resolution: "@humanfs/node@npm:0.16.6"
- dependencies:
- "@humanfs/core": "npm:^0.19.1"
- "@humanwhocodes/retry": "npm:^0.3.0"
- checksum: 10c0/8356359c9f60108ec204cbd249ecd0356667359b2524886b357617c4a7c3b6aace0fd5a369f63747b926a762a88f8a25bc066fa1778508d110195ce7686243e1
- languageName: node
- linkType: hard
-
-"@humanwhocodes/module-importer@npm:^1.0.1":
- version: 1.0.1
- resolution: "@humanwhocodes/module-importer@npm:1.0.1"
- checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529
- languageName: node
- linkType: hard
-
-"@humanwhocodes/retry@npm:^0.3.0":
- version: 0.3.1
- resolution: "@humanwhocodes/retry@npm:0.3.1"
- checksum: 10c0/f0da1282dfb45e8120480b9e2e275e2ac9bbe1cf016d046fdad8e27cc1285c45bb9e711681237944445157b430093412b4446c1ab3fc4bb037861b5904101d3b
- languageName: node
- linkType: hard
-
-"@humanwhocodes/retry@npm:^0.4.2":
- version: 0.4.3
- resolution: "@humanwhocodes/retry@npm:0.4.3"
- checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42
- languageName: node
- linkType: hard
-
"@img/colour@npm:^1.0.0":
version: 1.0.0
resolution: "@img/colour@npm:1.0.0"
@@ -7372,7 +7263,7 @@ __metadata:
languageName: node
linkType: hard
-"@microsoft/eslint-plugin-sdl@npm:^1.1.0":
+"@microsoft/eslint-plugin-sdl@npm:^1.0.0":
version: 1.1.0
resolution: "@microsoft/eslint-plugin-sdl@npm:1.1.0"
dependencies:
@@ -7972,6 +7863,181 @@ __metadata:
languageName: node
linkType: hard
+"@oxlint-tsgolint/darwin-arm64@npm:0.17.4":
+ version: 0.17.4
+ resolution: "@oxlint-tsgolint/darwin-arm64@npm:0.17.4"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@oxlint-tsgolint/darwin-x64@npm:0.17.4":
+ version: 0.17.4
+ resolution: "@oxlint-tsgolint/darwin-x64@npm:0.17.4"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@oxlint-tsgolint/linux-arm64@npm:0.17.4":
+ version: 0.17.4
+ resolution: "@oxlint-tsgolint/linux-arm64@npm:0.17.4"
+ conditions: os=linux & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@oxlint-tsgolint/linux-x64@npm:0.17.4":
+ version: 0.17.4
+ resolution: "@oxlint-tsgolint/linux-x64@npm:0.17.4"
+ conditions: os=linux & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@oxlint-tsgolint/win32-arm64@npm:0.17.4":
+ version: 0.17.4
+ resolution: "@oxlint-tsgolint/win32-arm64@npm:0.17.4"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@oxlint-tsgolint/win32-x64@npm:0.17.4":
+ version: 0.17.4
+ resolution: "@oxlint-tsgolint/win32-x64@npm:0.17.4"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-android-arm-eabi@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-android-arm-eabi@npm:1.57.0"
+ conditions: os=android & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-android-arm64@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-android-arm64@npm:1.57.0"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-darwin-arm64@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-darwin-arm64@npm:1.57.0"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-darwin-x64@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-darwin-x64@npm:1.57.0"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-freebsd-x64@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-freebsd-x64@npm:1.57.0"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-linux-arm-gnueabihf@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-linux-arm-gnueabihf@npm:1.57.0"
+ conditions: os=linux & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-linux-arm-musleabihf@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-linux-arm-musleabihf@npm:1.57.0"
+ conditions: os=linux & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-linux-arm64-gnu@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-linux-arm64-gnu@npm:1.57.0"
+ conditions: os=linux & cpu=arm64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-linux-arm64-musl@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-linux-arm64-musl@npm:1.57.0"
+ conditions: os=linux & cpu=arm64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-linux-ppc64-gnu@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-linux-ppc64-gnu@npm:1.57.0"
+ conditions: os=linux & cpu=ppc64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-linux-riscv64-gnu@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-linux-riscv64-gnu@npm:1.57.0"
+ conditions: os=linux & cpu=riscv64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-linux-riscv64-musl@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-linux-riscv64-musl@npm:1.57.0"
+ conditions: os=linux & cpu=riscv64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-linux-s390x-gnu@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-linux-s390x-gnu@npm:1.57.0"
+ conditions: os=linux & cpu=s390x & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-linux-x64-gnu@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-linux-x64-gnu@npm:1.57.0"
+ conditions: os=linux & cpu=x64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-linux-x64-musl@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-linux-x64-musl@npm:1.57.0"
+ conditions: os=linux & cpu=x64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-openharmony-arm64@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-openharmony-arm64@npm:1.57.0"
+ conditions: os=openharmony & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-win32-arm64-msvc@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-win32-arm64-msvc@npm:1.57.0"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-win32-ia32-msvc@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-win32-ia32-msvc@npm:1.57.0"
+ conditions: os=win32 & cpu=ia32
+ languageName: node
+ linkType: hard
+
+"@oxlint/binding-win32-x64-msvc@npm:1.57.0":
+ version: 1.57.0
+ resolution: "@oxlint/binding-win32-x64-msvc@npm:1.57.0"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
"@pkgjs/parseargs@npm:^0.11.0":
version: 0.11.0
resolution: "@pkgjs/parseargs@npm:0.11.0"
@@ -9643,6 +9709,23 @@ __metadata:
languageName: node
linkType: hard
+"@rnx-kit/oxlint-config@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "@rnx-kit/oxlint-config@npm:1.0.3"
+ dependencies:
+ "@microsoft/eslint-plugin-sdl": "npm:^1.0.0"
+ "@react-native/eslint-plugin": "npm:^0.84.0"
+ "@rnx-kit/eslint-plugin": "npm:^0.9.8"
+ peerDependencies:
+ eslint: ^9.0.0
+ oxlint: ^1.50.0
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+ checksum: 10c0/f1b0e813219d57321d67412dba9b800ab2496df1221852c1ce87a50e51f4c71c0f1bb5a9c6c668acd86f3af8e4e7c4fc81996a939ea2396301ba551d676c3e98
+ languageName: node
+ linkType: hard
+
"@rnx-kit/react-native-host@npm:^0.5.0, @rnx-kit/react-native-host@npm:^0.5.11":
version: 0.5.16
resolution: "@rnx-kit/react-native-host@npm:0.5.16"
@@ -9862,13 +9945,6 @@ __metadata:
languageName: node
linkType: hard
-"@rtsao/scc@npm:^1.1.0":
- version: 1.1.0
- resolution: "@rtsao/scc@npm:1.1.0"
- checksum: 10c0/b5bcfb0d87f7d1c1c7c0f7693f53b07866ed9fec4c34a97a8c948fb9a7c0082e416ce4d3b60beb4f5e167cbe04cdeefbf6771320f3ede059b9ce91188c409a5b
- languageName: node
- linkType: hard
-
"@sec-ant/readable-stream@npm:^0.4.1":
version: 0.4.1
resolution: "@sec-ant/readable-stream@npm:0.4.1"
@@ -10205,23 +10281,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/eslint@npm:^9.6.1":
- version: 9.6.1
- resolution: "@types/eslint@npm:9.6.1"
- dependencies:
- "@types/estree": "npm:*"
- "@types/json-schema": "npm:*"
- checksum: 10c0/69ba24fee600d1e4c5abe0df086c1a4d798abf13792d8cfab912d76817fe1a894359a1518557d21237fbaf6eda93c5ab9309143dee4c59ef54336d1b3570420e
- languageName: node
- linkType: hard
-
-"@types/estree@npm:*, @types/estree@npm:^1.0.6":
- version: 1.0.8
- resolution: "@types/estree@npm:1.0.8"
- checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5
- languageName: node
- linkType: hard
-
"@types/graceful-fs@npm:^4.1.3":
version: 4.1.6
resolution: "@types/graceful-fs@npm:4.1.6"
@@ -10297,20 +10356,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.15":
- version: 7.0.15
- resolution: "@types/json-schema@npm:7.0.15"
- checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db
- languageName: node
- linkType: hard
-
-"@types/json5@npm:^0.0.29":
- version: 0.0.29
- resolution: "@types/json5@npm:0.0.29"
- checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac
- languageName: node
- linkType: hard
-
"@types/micromatch@npm:^4.0.9":
version: 4.0.9
resolution: "@types/micromatch@npm:4.0.9"
@@ -10788,9 +10833,9 @@ __metadata:
version: 0.0.0-use.local
resolution: "@uifabricshared/foundation-composable@workspace:packages/deprecated/foundation-composable"
dependencies:
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@types/react": "npm:~19.1.4"
"@uifabricshared/foundation-settings": "workspace:*"
@@ -10811,9 +10856,9 @@ __metadata:
resolution: "@uifabricshared/foundation-compose@workspace:packages/deprecated/foundation-compose"
dependencies:
"@fluentui-react-native/default-theme": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/theme-types": "workspace:*"
"@office-iss/react-native-win32": "npm:^0.81.0"
@@ -10851,9 +10896,9 @@ __metadata:
resolution: "@uifabricshared/foundation-settings@workspace:packages/deprecated/foundation-settings"
dependencies:
"@babel/core": "catalog:"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/react-configs": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@types/jest": "npm:^29.0.0"
@@ -10874,9 +10919,9 @@ __metadata:
resolution: "@uifabricshared/foundation-tokens@workspace:packages/deprecated/foundation-tokens"
dependencies:
"@babel/core": "catalog:"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/react-configs": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/tokens": "workspace:*"
@@ -10918,9 +10963,9 @@ __metadata:
resolution: "@uifabricshared/theme-registry@workspace:packages/deprecated/theme-registry"
dependencies:
"@babel/core": "catalog:"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/react-configs": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native/babel-preset": "npm:^0.74.0"
@@ -10943,9 +10988,9 @@ __metadata:
resolution: "@uifabricshared/themed-settings@workspace:packages/deprecated/themed-settings"
dependencies:
"@babel/core": "catalog:"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/react-configs": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@react-native/babel-preset": "npm:^0.81.0"
@@ -10969,9 +11014,9 @@ __metadata:
resolution: "@uifabricshared/theming-ramp@workspace:packages/deprecated/theming-ramp"
dependencies:
"@babel/core": "catalog:"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/react-configs": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/test-tools": "workspace:*"
@@ -10998,9 +11043,9 @@ __metadata:
"@babel/core": "catalog:"
"@fluentui-react-native/babel-config": "workspace:*"
"@fluentui-react-native/default-theme": "workspace:*"
- "@fluentui-react-native/eslint-config-rules": "workspace:*"
"@fluentui-react-native/framework-base": "workspace:*"
"@fluentui-react-native/kit-config": "workspace:*"
+ "@fluentui-react-native/lint-config-rules": "workspace:*"
"@fluentui-react-native/scripts": "workspace:*"
"@fluentui-react-native/win32-theme": "workspace:*"
"@react-native-community/cli": "npm:^20.0.0"
@@ -11518,15 +11563,6 @@ __metadata:
languageName: node
linkType: hard
-"acorn-jsx@npm:^5.3.2":
- version: 5.3.2
- resolution: "acorn-jsx@npm:5.3.2"
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1
- languageName: node
- linkType: hard
-
"acorn-walk@npm:^8.1.1":
version: 8.3.2
resolution: "acorn-walk@npm:8.3.2"
@@ -11534,7 +11570,7 @@ __metadata:
languageName: node
linkType: hard
-"acorn@npm:^8.15.0, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.8.2":
+"acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.8.2":
version: 8.15.0
resolution: "acorn@npm:8.15.0"
bin:
@@ -11585,18 +11621,6 @@ __metadata:
languageName: node
linkType: hard
-"ajv@npm:^6.12.4":
- version: 6.14.0
- resolution: "ajv@npm:6.14.0"
- dependencies:
- fast-deep-equal: "npm:^3.1.1"
- fast-json-stable-stringify: "npm:^2.0.0"
- json-schema-traverse: "npm:^0.4.1"
- uri-js: "npm:^4.2.2"
- checksum: 10c0/a2bc39b0555dc9802c899f86990eb8eed6e366cddbf65be43d5aa7e4f3c4e1a199d5460fd7ca4fb3d864000dbbc049253b72faa83b3b30e641ca52cb29a68c22
- languageName: node
- linkType: hard
-
"anser@npm:^1.4.9":
version: 1.4.10
resolution: "anser@npm:1.4.10"
@@ -12199,7 +12223,7 @@ __metadata:
languageName: node
linkType: hard
-"array-includes@npm:^3.1.5, array-includes@npm:^3.1.8, array-includes@npm:^3.1.9":
+"array-includes@npm:^3.1.5, array-includes@npm:^3.1.8":
version: 3.1.9
resolution: "array-includes@npm:3.1.9"
dependencies:
@@ -12252,33 +12276,6 @@ __metadata:
languageName: node
linkType: hard
-"array.prototype.findlastindex@npm:^1.2.6":
- version: 1.2.6
- resolution: "array.prototype.findlastindex@npm:1.2.6"
- dependencies:
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.4"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.9"
- es-errors: "npm:^1.3.0"
- es-object-atoms: "npm:^1.1.1"
- es-shim-unscopables: "npm:^1.1.0"
- checksum: 10c0/82559310d2e57ec5f8fc53d7df420e3abf0ba497935de0a5570586035478ba7d07618cb18e2d4ada2da514c8fb98a034aaf5c06caa0a57e2f7f4c4adedef5956
- languageName: node
- linkType: hard
-
-"array.prototype.flat@npm:^1.3.3":
- version: 1.3.3
- resolution: "array.prototype.flat@npm:1.3.3"
- dependencies:
- call-bind: "npm:^1.0.8"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.5"
- es-shim-unscopables: "npm:^1.0.2"
- checksum: 10c0/d90e04dfbc43bb96b3d2248576753d1fb2298d2d972e29ca7ad5ec621f0d9e16ff8074dae647eac4f31f4fb7d3f561a7ac005fb01a71f51705a13b5af06a7d8a
- languageName: node
- linkType: hard
-
"array.prototype.flatmap@npm:^1.3.3":
version: 1.3.3
resolution: "array.prototype.flatmap@npm:1.3.3"
@@ -14002,7 +13999,7 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.0, debug@npm:^4.4.1, debug@npm:^4.4.3":
+"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.4, debug@npm:^4.4.0, debug@npm:^4.4.1, debug@npm:^4.4.3":
version: 4.4.3
resolution: "debug@npm:4.4.3"
dependencies:
@@ -14014,7 +14011,7 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:^3.1.0, debug@npm:^3.2.7":
+"debug@npm:^3.1.0":
version: 3.2.7
resolution: "debug@npm:3.2.7"
dependencies:
@@ -14063,13 +14060,6 @@ __metadata:
languageName: node
linkType: hard
-"deep-is@npm:^0.1.3":
- version: 0.1.4
- resolution: "deep-is@npm:0.1.4"
- checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c
- languageName: node
- linkType: hard
-
"deepmerge-ts@npm:^7.0.3":
version: 7.1.5
resolution: "deepmerge-ts@npm:7.1.5"
@@ -14738,7 +14728,7 @@ __metadata:
languageName: node
linkType: hard
-"es-shim-unscopables@npm:^1.0.2, es-shim-unscopables@npm:^1.1.0":
+"es-shim-unscopables@npm:^1.0.2":
version: 1.1.0
resolution: "es-shim-unscopables@npm:1.1.0"
dependencies:
@@ -15004,29 +14994,6 @@ __metadata:
languageName: node
linkType: hard
-"eslint-import-resolver-node@npm:^0.3.9":
- version: 0.3.9
- resolution: "eslint-import-resolver-node@npm:0.3.9"
- dependencies:
- debug: "npm:^3.2.7"
- is-core-module: "npm:^2.13.0"
- resolve: "npm:^1.22.4"
- checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61
- languageName: node
- linkType: hard
-
-"eslint-module-utils@npm:^2.12.1":
- version: 2.12.1
- resolution: "eslint-module-utils@npm:2.12.1"
- dependencies:
- debug: "npm:^3.2.7"
- peerDependenciesMeta:
- eslint:
- optional: true
- checksum: 10c0/6f4efbe7a91ae49bf67b4ab3644cb60bc5bd7db4cb5521de1b65be0847ffd3fb6bce0dd68f0995e1b312d137f768e2a1f842ee26fe73621afa05f850628fdc40
- languageName: node
- linkType: hard
-
"eslint-plugin-es-x@npm:^7.5.0":
version: 7.8.0
resolution: "eslint-plugin-es-x@npm:7.8.0"
@@ -15040,35 +15007,6 @@ __metadata:
languageName: node
linkType: hard
-"eslint-plugin-import@npm:^2.32.0":
- version: 2.32.0
- resolution: "eslint-plugin-import@npm:2.32.0"
- dependencies:
- "@rtsao/scc": "npm:^1.1.0"
- array-includes: "npm:^3.1.9"
- array.prototype.findlastindex: "npm:^1.2.6"
- array.prototype.flat: "npm:^1.3.3"
- array.prototype.flatmap: "npm:^1.3.3"
- debug: "npm:^3.2.7"
- doctrine: "npm:^2.1.0"
- eslint-import-resolver-node: "npm:^0.3.9"
- eslint-module-utils: "npm:^2.12.1"
- hasown: "npm:^2.0.2"
- is-core-module: "npm:^2.16.1"
- is-glob: "npm:^4.0.3"
- minimatch: "npm:^3.1.2"
- object.fromentries: "npm:^2.0.8"
- object.groupby: "npm:^1.0.3"
- object.values: "npm:^1.2.1"
- semver: "npm:^6.3.1"
- string.prototype.trimend: "npm:^1.0.9"
- tsconfig-paths: "npm:^3.15.0"
- peerDependencies:
- eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
- checksum: 10c0/bfb1b8fc8800398e62ddfefbf3638d185286edfed26dfe00875cc2846d954491b4f5112457831588b757fa789384e1ae585f812614c4797f0499fa234fd4a48b
- languageName: node
- linkType: hard
-
"eslint-plugin-n@npm:17.10.3":
version: 17.10.3
resolution: "eslint-plugin-n@npm:17.10.3"
@@ -15161,16 +15099,6 @@ __metadata:
languageName: node
linkType: hard
-"eslint-scope@npm:^8.4.0":
- version: 8.4.0
- resolution: "eslint-scope@npm:8.4.0"
- dependencies:
- esrecurse: "npm:^4.3.0"
- estraverse: "npm:^5.2.0"
- checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0
- languageName: node
- linkType: hard
-
"eslint-visitor-keys@npm:^3.4.3":
version: 3.4.3
resolution: "eslint-visitor-keys@npm:3.4.3"
@@ -15185,66 +15113,6 @@ __metadata:
languageName: node
linkType: hard
-"eslint@npm:^9.0.0, eslint@npm:^9.39.2":
- version: 9.39.2
- resolution: "eslint@npm:9.39.2"
- dependencies:
- "@eslint-community/eslint-utils": "npm:^4.8.0"
- "@eslint-community/regexpp": "npm:^4.12.1"
- "@eslint/config-array": "npm:^0.21.1"
- "@eslint/config-helpers": "npm:^0.4.2"
- "@eslint/core": "npm:^0.17.0"
- "@eslint/eslintrc": "npm:^3.3.1"
- "@eslint/js": "npm:9.39.2"
- "@eslint/plugin-kit": "npm:^0.4.1"
- "@humanfs/node": "npm:^0.16.6"
- "@humanwhocodes/module-importer": "npm:^1.0.1"
- "@humanwhocodes/retry": "npm:^0.4.2"
- "@types/estree": "npm:^1.0.6"
- ajv: "npm:^6.12.4"
- chalk: "npm:^4.0.0"
- cross-spawn: "npm:^7.0.6"
- debug: "npm:^4.3.2"
- escape-string-regexp: "npm:^4.0.0"
- eslint-scope: "npm:^8.4.0"
- eslint-visitor-keys: "npm:^4.2.1"
- espree: "npm:^10.4.0"
- esquery: "npm:^1.5.0"
- esutils: "npm:^2.0.2"
- fast-deep-equal: "npm:^3.1.3"
- file-entry-cache: "npm:^8.0.0"
- find-up: "npm:^5.0.0"
- glob-parent: "npm:^6.0.2"
- ignore: "npm:^5.2.0"
- imurmurhash: "npm:^0.1.4"
- is-glob: "npm:^4.0.0"
- json-stable-stringify-without-jsonify: "npm:^1.0.1"
- lodash.merge: "npm:^4.6.2"
- minimatch: "npm:^3.1.2"
- natural-compare: "npm:^1.4.0"
- optionator: "npm:^0.9.3"
- peerDependencies:
- jiti: "*"
- peerDependenciesMeta:
- jiti:
- optional: true
- bin:
- eslint: bin/eslint.js
- checksum: 10c0/bb88ca8fd16bb7e1ac3e13804c54d41c583214460c0faa7b3e7c574e69c5600c7122295500fb4b0c06067831111db740931e98da1340329527658e1cf80073d3
- languageName: node
- linkType: hard
-
-"espree@npm:^10.0.1, espree@npm:^10.4.0":
- version: 10.4.0
- resolution: "espree@npm:10.4.0"
- dependencies:
- acorn: "npm:^8.15.0"
- acorn-jsx: "npm:^5.3.2"
- eslint-visitor-keys: "npm:^4.2.1"
- checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b
- languageName: node
- linkType: hard
-
"esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0":
version: 4.0.1
resolution: "esprima@npm:4.0.1"
@@ -15255,25 +15123,7 @@ __metadata:
languageName: node
linkType: hard
-"esquery@npm:^1.5.0":
- version: 1.6.0
- resolution: "esquery@npm:1.6.0"
- dependencies:
- estraverse: "npm:^5.1.0"
- checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2
- languageName: node
- linkType: hard
-
-"esrecurse@npm:^4.3.0":
- version: 4.3.0
- resolution: "esrecurse@npm:4.3.0"
- dependencies:
- estraverse: "npm:^5.2.0"
- checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5
- languageName: node
- linkType: hard
-
-"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0":
+"estraverse@npm:^5.2.0, estraverse@npm:^5.3.0":
version: 5.3.0
resolution: "estraverse@npm:5.3.0"
checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107
@@ -15554,7 +15404,7 @@ __metadata:
languageName: node
linkType: hard
-"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
+"fast-deep-equal@npm:^3.1.3":
version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3"
checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0
@@ -15581,20 +15431,13 @@ __metadata:
languageName: node
linkType: hard
-"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0":
+"fast-json-stable-stringify@npm:^2.1.0":
version: 2.1.0
resolution: "fast-json-stable-stringify@npm:2.1.0"
checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b
languageName: node
linkType: hard
-"fast-levenshtein@npm:^2.0.6":
- version: 2.0.6
- resolution: "fast-levenshtein@npm:2.0.6"
- checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4
- languageName: node
- linkType: hard
-
"fast-uri@npm:^3.0.1":
version: 3.0.1
resolution: "fast-uri@npm:3.0.1"
@@ -15706,15 +15549,6 @@ __metadata:
languageName: node
linkType: hard
-"file-entry-cache@npm:^8.0.0":
- version: 8.0.0
- resolution: "file-entry-cache@npm:8.0.0"
- dependencies:
- flat-cache: "npm:^4.0.0"
- checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638
- languageName: node
- linkType: hard
-
"filelist@npm:^1.0.1":
version: 1.0.4
resolution: "filelist@npm:1.0.4"
@@ -15840,23 +15674,6 @@ __metadata:
languageName: node
linkType: hard
-"flat-cache@npm:^4.0.0":
- version: 4.0.1
- resolution: "flat-cache@npm:4.0.1"
- dependencies:
- flatted: "npm:^3.2.9"
- keyv: "npm:^4.5.4"
- checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc
- languageName: node
- linkType: hard
-
-"flatted@npm:^3.2.9":
- version: 3.4.2
- resolution: "flatted@npm:3.4.2"
- checksum: 10c0/a65b67aae7172d6cdf63691be7de6c5cd5adbdfdfe2e9da1a09b617c9512ed794037741ee53d93114276bff3f93cd3b0d97d54f9b316e1e4885dde6e9ffdf7ed
- languageName: node
- linkType: hard
-
"flow-bin@npm:^0.113.0":
version: 0.113.0
resolution: "flow-bin@npm:0.113.0"
@@ -16309,15 +16126,6 @@ __metadata:
languageName: node
linkType: hard
-"glob-parent@npm:^6.0.2":
- version: 6.0.2
- resolution: "glob-parent@npm:6.0.2"
- dependencies:
- is-glob: "npm:^4.0.3"
- checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8
- languageName: node
- linkType: hard
-
"glob@npm:13.0.0, glob@npm:^13.0.0":
version: 13.0.0
resolution: "glob@npm:13.0.0"
@@ -16383,13 +16191,6 @@ __metadata:
languageName: node
linkType: hard
-"globals@npm:^14.0.0":
- version: 14.0.0
- resolution: "globals@npm:14.0.0"
- checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d
- languageName: node
- linkType: hard
-
"globals@npm:^15.8.0":
version: 15.15.0
resolution: "globals@npm:15.15.0"
@@ -17129,7 +16930,7 @@ __metadata:
languageName: node
linkType: hard
-"is-core-module@npm:^2.12.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.0, is-core-module@npm:^2.16.1, is-core-module@npm:^2.8.1":
+"is-core-module@npm:^2.12.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.0, is-core-module@npm:^2.8.1":
version: 2.16.1
resolution: "is-core-module@npm:2.16.1"
dependencies:
@@ -17224,7 +17025,7 @@ __metadata:
languageName: node
linkType: hard
-"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3":
+"is-glob@npm:^4.0.1, is-glob@npm:^4.0.3":
version: 4.0.3
resolution: "is-glob@npm:4.0.3"
dependencies:
@@ -18332,13 +18133,6 @@ __metadata:
languageName: node
linkType: hard
-"json-buffer@npm:3.0.1":
- version: 3.0.1
- resolution: "json-buffer@npm:3.0.1"
- checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7
- languageName: node
- linkType: hard
-
"json-parse-better-errors@npm:^1.0.1":
version: 1.0.2
resolution: "json-parse-better-errors@npm:1.0.2"
@@ -18367,13 +18161,6 @@ __metadata:
languageName: node
linkType: hard
-"json-schema-traverse@npm:^0.4.1":
- version: 0.4.1
- resolution: "json-schema-traverse@npm:0.4.1"
- checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce
- languageName: node
- linkType: hard
-
"json-schema-traverse@npm:^1.0.0":
version: 1.0.0
resolution: "json-schema-traverse@npm:1.0.0"
@@ -18388,24 +18175,6 @@ __metadata:
languageName: node
linkType: hard
-"json-stable-stringify-without-jsonify@npm:^1.0.1":
- version: 1.0.1
- resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"
- checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5
- languageName: node
- linkType: hard
-
-"json5@npm:^1.0.2":
- version: 1.0.2
- resolution: "json5@npm:1.0.2"
- dependencies:
- minimist: "npm:^1.2.0"
- bin:
- json5: lib/cli.js
- checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f
- languageName: node
- linkType: hard
-
"json5@npm:^2.2.3":
version: 2.2.3
resolution: "json5@npm:2.2.3"
@@ -18462,15 +18231,6 @@ __metadata:
languageName: node
linkType: hard
-"keyv@npm:^4.5.4":
- version: 4.5.4
- resolution: "keyv@npm:4.5.4"
- dependencies:
- json-buffer: "npm:3.0.1"
- checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e
- languageName: node
- linkType: hard
-
"kind-of@npm:^6.0.2":
version: 6.0.3
resolution: "kind-of@npm:6.0.3"
@@ -18590,16 +18350,6 @@ __metadata:
languageName: node
linkType: hard
-"levn@npm:^0.4.1":
- version: 0.4.1
- resolution: "levn@npm:0.4.1"
- dependencies:
- prelude-ls: "npm:^1.2.1"
- type-check: "npm:~0.4.0"
- checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e
- languageName: node
- linkType: hard
-
"lie@npm:~3.3.0":
version: 3.3.0
resolution: "lie@npm:3.3.0"
@@ -20017,7 +19767,7 @@ __metadata:
languageName: node
linkType: hard
-"minimist@npm:^1.2.0, minimist@npm:^1.2.6, minimist@npm:^1.2.8":
+"minimist@npm:^1.2.6, minimist@npm:^1.2.8":
version: 1.2.8
resolution: "minimist@npm:1.2.8"
checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6
@@ -20667,17 +20417,6 @@ __metadata:
languageName: node
linkType: hard
-"object.groupby@npm:^1.0.3":
- version: 1.0.3
- resolution: "object.groupby@npm:1.0.3"
- dependencies:
- call-bind: "npm:^1.0.7"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.2"
- checksum: 10c0/60d0455c85c736fbfeda0217d1a77525956f76f7b2495edeca9e9bbf8168a45783199e77b894d30638837c654d0cc410e0e02cbfcf445bc8de71c3da1ede6a9c
- languageName: node
- linkType: hard
-
"object.values@npm:^1.2.1":
version: 1.2.1
resolution: "object.values@npm:1.2.1"
@@ -20777,20 +20516,6 @@ __metadata:
languageName: node
linkType: hard
-"optionator@npm:^0.9.3":
- version: 0.9.4
- resolution: "optionator@npm:0.9.4"
- dependencies:
- deep-is: "npm:^0.1.3"
- fast-levenshtein: "npm:^2.0.6"
- levn: "npm:^0.4.1"
- prelude-ls: "npm:^1.2.1"
- type-check: "npm:^0.4.0"
- word-wrap: "npm:^1.2.5"
- checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675
- languageName: node
- linkType: hard
-
"ora@npm:5.4.1, ora@npm:^5.4.1":
version: 5.4.1
resolution: "ora@npm:5.4.1"
@@ -20989,6 +20714,108 @@ __metadata:
languageName: node
linkType: hard
+"oxlint-tsgolint@npm:^0.17.4":
+ version: 0.17.4
+ resolution: "oxlint-tsgolint@npm:0.17.4"
+ dependencies:
+ "@oxlint-tsgolint/darwin-arm64": "npm:0.17.4"
+ "@oxlint-tsgolint/darwin-x64": "npm:0.17.4"
+ "@oxlint-tsgolint/linux-arm64": "npm:0.17.4"
+ "@oxlint-tsgolint/linux-x64": "npm:0.17.4"
+ "@oxlint-tsgolint/win32-arm64": "npm:0.17.4"
+ "@oxlint-tsgolint/win32-x64": "npm:0.17.4"
+ dependenciesMeta:
+ "@oxlint-tsgolint/darwin-arm64":
+ optional: true
+ "@oxlint-tsgolint/darwin-x64":
+ optional: true
+ "@oxlint-tsgolint/linux-arm64":
+ optional: true
+ "@oxlint-tsgolint/linux-x64":
+ optional: true
+ "@oxlint-tsgolint/win32-arm64":
+ optional: true
+ "@oxlint-tsgolint/win32-x64":
+ optional: true
+ bin:
+ tsgolint: bin/tsgolint.js
+ checksum: 10c0/afe329e7fca1fef373d424c6cc02e6b5e0ef4f9f2f118c974d41c59a323db50d300308a261b9d1775e4262477d2ecad95e07529636b0f728a4f9d1bf48a55f78
+ languageName: node
+ linkType: hard
+
+"oxlint@npm:^1.57.0":
+ version: 1.57.0
+ resolution: "oxlint@npm:1.57.0"
+ dependencies:
+ "@oxlint/binding-android-arm-eabi": "npm:1.57.0"
+ "@oxlint/binding-android-arm64": "npm:1.57.0"
+ "@oxlint/binding-darwin-arm64": "npm:1.57.0"
+ "@oxlint/binding-darwin-x64": "npm:1.57.0"
+ "@oxlint/binding-freebsd-x64": "npm:1.57.0"
+ "@oxlint/binding-linux-arm-gnueabihf": "npm:1.57.0"
+ "@oxlint/binding-linux-arm-musleabihf": "npm:1.57.0"
+ "@oxlint/binding-linux-arm64-gnu": "npm:1.57.0"
+ "@oxlint/binding-linux-arm64-musl": "npm:1.57.0"
+ "@oxlint/binding-linux-ppc64-gnu": "npm:1.57.0"
+ "@oxlint/binding-linux-riscv64-gnu": "npm:1.57.0"
+ "@oxlint/binding-linux-riscv64-musl": "npm:1.57.0"
+ "@oxlint/binding-linux-s390x-gnu": "npm:1.57.0"
+ "@oxlint/binding-linux-x64-gnu": "npm:1.57.0"
+ "@oxlint/binding-linux-x64-musl": "npm:1.57.0"
+ "@oxlint/binding-openharmony-arm64": "npm:1.57.0"
+ "@oxlint/binding-win32-arm64-msvc": "npm:1.57.0"
+ "@oxlint/binding-win32-ia32-msvc": "npm:1.57.0"
+ "@oxlint/binding-win32-x64-msvc": "npm:1.57.0"
+ peerDependencies:
+ oxlint-tsgolint: ">=0.15.0"
+ dependenciesMeta:
+ "@oxlint/binding-android-arm-eabi":
+ optional: true
+ "@oxlint/binding-android-arm64":
+ optional: true
+ "@oxlint/binding-darwin-arm64":
+ optional: true
+ "@oxlint/binding-darwin-x64":
+ optional: true
+ "@oxlint/binding-freebsd-x64":
+ optional: true
+ "@oxlint/binding-linux-arm-gnueabihf":
+ optional: true
+ "@oxlint/binding-linux-arm-musleabihf":
+ optional: true
+ "@oxlint/binding-linux-arm64-gnu":
+ optional: true
+ "@oxlint/binding-linux-arm64-musl":
+ optional: true
+ "@oxlint/binding-linux-ppc64-gnu":
+ optional: true
+ "@oxlint/binding-linux-riscv64-gnu":
+ optional: true
+ "@oxlint/binding-linux-riscv64-musl":
+ optional: true
+ "@oxlint/binding-linux-s390x-gnu":
+ optional: true
+ "@oxlint/binding-linux-x64-gnu":
+ optional: true
+ "@oxlint/binding-linux-x64-musl":
+ optional: true
+ "@oxlint/binding-openharmony-arm64":
+ optional: true
+ "@oxlint/binding-win32-arm64-msvc":
+ optional: true
+ "@oxlint/binding-win32-ia32-msvc":
+ optional: true
+ "@oxlint/binding-win32-x64-msvc":
+ optional: true
+ peerDependenciesMeta:
+ oxlint-tsgolint:
+ optional: true
+ bin:
+ oxlint: bin/oxlint
+ checksum: 10c0/e2ccd23280615068335c603c7fe9d2590812d7b2f16ee55a3fca1260d600795847e94926026a0d4ef46026c97c3868aee070ecca125eeaac68a8abbbe309d4a1
+ languageName: node
+ linkType: hard
+
"p-defer@npm:^1.0.0":
version: 1.0.0
resolution: "p-defer@npm:1.0.0"
@@ -21575,13 +21402,6 @@ __metadata:
languageName: node
linkType: hard
-"prelude-ls@npm:^1.2.1":
- version: 1.2.1
- resolution: "prelude-ls@npm:1.2.1"
- checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd
- languageName: node
- linkType: hard
-
"prettier@npm:^2.7.1":
version: 2.8.8
resolution: "prettier@npm:2.8.8"
@@ -21742,13 +21562,6 @@ __metadata:
languageName: node
linkType: hard
-"punycode@npm:^2.1.0":
- version: 2.3.1
- resolution: "punycode@npm:2.3.1"
- checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9
- languageName: node
- linkType: hard
-
"pure-rand@npm:^6.0.0":
version: 6.1.0
resolution: "pure-rand@npm:6.1.0"
@@ -22801,7 +22614,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@npm:^1.1.6, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.10, resolve@npm:^1.22.3, resolve@npm:^1.22.4":
+"resolve@npm:^1.1.6, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.10, resolve@npm:^1.22.3":
version: 1.22.10
resolution: "resolve@npm:1.22.10"
dependencies:
@@ -22827,7 +22640,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.10#optional!builtin, resolve@patch:resolve@npm%3A^1.22.3#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin":
+"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.10#optional!builtin, resolve@patch:resolve@npm%3A^1.22.3#optional!builtin":
version: 1.22.10
resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d"
dependencies:
@@ -24512,18 +24325,6 @@ __metadata:
languageName: node
linkType: hard
-"tsconfig-paths@npm:^3.15.0":
- version: 3.15.0
- resolution: "tsconfig-paths@npm:3.15.0"
- dependencies:
- "@types/json5": "npm:^0.0.29"
- json5: "npm:^1.0.2"
- minimist: "npm:^1.2.6"
- strip-bom: "npm:^3.0.0"
- checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5
- languageName: node
- linkType: hard
-
"tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2":
version: 2.7.0
resolution: "tslib@npm:2.7.0"
@@ -24554,15 +24355,6 @@ __metadata:
languageName: node
linkType: hard
-"type-check@npm:^0.4.0, type-check@npm:~0.4.0":
- version: 0.4.0
- resolution: "type-check@npm:0.4.0"
- dependencies:
- prelude-ls: "npm:^1.2.1"
- checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58
- languageName: node
- linkType: hard
-
"type-detect@npm:4.0.8":
version: 4.0.8
resolution: "type-detect@npm:4.0.8"
@@ -24898,15 +24690,6 @@ __metadata:
languageName: node
linkType: hard
-"uri-js@npm:^4.2.2":
- version: 4.4.1
- resolution: "uri-js@npm:4.4.1"
- dependencies:
- punycode: "npm:^2.1.0"
- checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c
- languageName: node
- linkType: hard
-
"urlpattern-polyfill@npm:^10.0.0":
version: 10.1.0
resolution: "urlpattern-polyfill@npm:10.1.0"
@@ -25359,13 +25142,6 @@ __metadata:
languageName: node
linkType: hard
-"word-wrap@npm:^1.2.5":
- version: 1.2.5
- resolution: "word-wrap@npm:1.2.5"
- checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20
- languageName: node
- linkType: hard
-
"wordwrapjs@npm:^3.0.0":
version: 3.0.0
resolution: "wordwrapjs@npm:3.0.0"