diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 59a5136a928ef..0000000000000
--- a/.eslintignore
+++ /dev/null
@@ -1,7 +0,0 @@
-**/*_pb.*
-.eslintrc.js
-
-# Ignore WASM generated files:
-web/packages/teleport/src/ironrdp/pkg
-
-web/packages/teleterm/build
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index f2fb2bf41c58a..0000000000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,2 +0,0 @@
-const eslint = require('./web/packages/build/.eslintrc');
-module.exports = eslint;
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 0000000000000..552640ca662ac
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,20 @@
+/**
+ * Teleport
+ * Copyright (C) 2024 Gravitational, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import eslint from './web/packages/build/eslint.config.mjs';
+export default eslint;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 94b69155e300a..6bc71184f97b7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -208,6 +208,9 @@ importers:
'@babel/preset-typescript':
specifier: ^7.26.0
version: 7.26.0(@babel/core@7.26.0)
+ '@eslint/js':
+ specifier: ^9.16.0
+ version: 9.16.0
'@swc/core':
specifier: ^1.9.3
version: 1.9.3
@@ -224,32 +227,29 @@ importers:
specifier: ^2.1.4
version: 2.1.4(@babel/core@7.26.0)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
eslint:
- specifier: ^8.56.0
- version: 8.57.0
- eslint-import-resolver-typescript:
- specifier: ^3.6.3
- version: 3.6.3(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.0)
- eslint-plugin-babel:
- specifier: ^5.3.1
- version: 5.3.1(eslint@8.57.0)
+ specifier: ^9.16.0
+ version: 9.16.0
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
+ version: 2.31.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)
eslint-plugin-jest:
specifier: ^28.9.0
- version: 28.9.0(@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0))(typescript@5.7.2)
+ version: 28.9.0(@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0))(typescript@5.7.2)
eslint-plugin-jest-dom:
specifier: ^5.5.0
- version: 5.5.0(@testing-library/dom@10.1.0)(eslint@8.57.0)
+ version: 5.5.0(@testing-library/dom@10.1.0)(eslint@9.16.0)
eslint-plugin-react:
specifier: ^7.37.2
- version: 7.37.2(eslint@8.57.0)
+ version: 7.37.2(eslint@9.16.0)
eslint-plugin-react-hooks:
specifier: ^5.0.0
- version: 5.0.0(eslint@8.57.0)
+ version: 5.0.0(eslint@9.16.0)
eslint-plugin-testing-library:
- specifier: ^6.3.0
- version: 6.3.0(eslint@8.57.0)(typescript@5.7.2)
+ specifier: ^7.1.1
+ version: 7.1.1(eslint@9.16.0)(typescript@5.7.2)
+ globals:
+ specifier: ^15.13.0
+ version: 15.13.0
jest-environment-jsdom:
specifier: ^29.7.0
version: 29.7.0
@@ -263,8 +263,8 @@ importers:
specifier: ^5.12.0
version: 5.12.0(rollup@4.23.0)
typescript-eslint:
- specifier: ^8.16.0
- version: 8.16.0(eslint@8.57.0)(typescript@5.7.2)
+ specifier: ^8.18.0
+ version: 8.18.0(eslint@9.16.0)(typescript@5.7.2)
vite-plugin-wasm:
specifier: ^3.3.0
version: 3.3.0(vite@5.4.8(@types/node@20.17.9)(terser@5.31.1))
@@ -1562,17 +1562,33 @@ packages:
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
- '@eslint-community/regexpp@4.10.1':
- resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==}
+ '@eslint-community/regexpp@4.12.1':
+ resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint/eslintrc@2.1.4':
- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@eslint/config-array@0.19.1':
+ resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@8.57.0':
- resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@eslint/core@0.9.1':
+ resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/eslintrc@3.2.0':
+ resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/js@9.16.0':
+ resolution: {integrity: sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/object-schema@2.1.5':
+ resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/plugin-kit@0.2.4':
+ resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@floating-ui/core@1.6.8':
resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==}
@@ -1601,18 +1617,25 @@ packages:
'@hapi/topo@5.1.0':
resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
- '@humanwhocodes/config-array@0.11.14':
- resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
- engines: {node: '>=10.10.0'}
- deprecated: Use @eslint/config-array instead
+ '@humanfs/core@0.19.1':
+ resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanfs/node@0.16.6':
+ resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
+ engines: {node: '>=18.18.0'}
'@humanwhocodes/module-importer@1.0.1':
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
- '@humanwhocodes/object-schema@2.0.2':
- resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==}
- deprecated: Use @eslint/object-schema instead
+ '@humanwhocodes/retry@0.3.1':
+ resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
+ engines: {node: '>=18.18'}
+
+ '@humanwhocodes/retry@0.4.1':
+ resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==}
+ engines: {node: '>=18.18'}
'@inquirer/confirm@5.0.2':
resolution: {integrity: sha512-KJLUHOaKnNCYzwVbryj3TNBxyZIrr56fR5N45v6K9IPrbT6B7DcudBMfylkV1A8PUdJE15mybkEQyp2/ZUpxUA==}
@@ -1820,10 +1843,6 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@nolyfill/is-core-module@1.0.39':
- resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
- engines: {node: '>=12.4.0'}
-
'@npmcli/fs@2.1.2':
resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
@@ -2503,8 +2522,8 @@ packages:
'@types/jsdom@21.1.7':
resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==}
- '@types/json-schema@7.0.13':
- resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==}
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
'@types/json5@0.0.29':
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
@@ -2555,9 +2574,6 @@ packages:
'@types/responselike@1.0.0':
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
- '@types/semver@7.5.8':
- resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
-
'@types/shimmer@1.2.0':
resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==}
@@ -2615,93 +2631,51 @@ packages:
'@types/yauzl@2.10.0':
resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
- '@typescript-eslint/eslint-plugin@8.16.0':
- resolution: {integrity: sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==}
+ '@typescript-eslint/eslint-plugin@8.18.0':
+ resolution: {integrity: sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
eslint: ^8.57.0 || ^9.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ typescript: '>=4.8.4 <5.8.0'
- '@typescript-eslint/parser@8.16.0':
- resolution: {integrity: sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==}
+ '@typescript-eslint/parser@8.18.0':
+ resolution: {integrity: sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/scope-manager@5.62.0':
- resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ typescript: '>=4.8.4 <5.8.0'
- '@typescript-eslint/scope-manager@8.16.0':
- resolution: {integrity: sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==}
+ '@typescript-eslint/scope-manager@8.18.0':
+ resolution: {integrity: sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/type-utils@8.16.0':
- resolution: {integrity: sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==}
+ '@typescript-eslint/type-utils@8.18.0':
+ resolution: {integrity: sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/types@5.62.0':
- resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ typescript: '>=4.8.4 <5.8.0'
- '@typescript-eslint/types@8.16.0':
- resolution: {integrity: sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==}
+ '@typescript-eslint/types@8.18.0':
+ resolution: {integrity: sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@5.62.0':
- resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/typescript-estree@8.16.0':
- resolution: {integrity: sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==}
+ '@typescript-eslint/typescript-estree@8.18.0':
+ resolution: {integrity: sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/utils@5.62.0':
- resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '>=4.8.4 <5.8.0'
- '@typescript-eslint/utils@8.16.0':
- resolution: {integrity: sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==}
+ '@typescript-eslint/utils@8.18.0':
+ resolution: {integrity: sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/visitor-keys@5.62.0':
- resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ typescript: '>=4.8.4 <5.8.0'
- '@typescript-eslint/visitor-keys@8.16.0':
- resolution: {integrity: sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==}
+ '@typescript-eslint/visitor-keys@8.18.0':
+ resolution: {integrity: sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@uiw/codemirror-extensions-basic-setup@4.23.6':
@@ -2733,9 +2707,6 @@ packages:
react: '>=16.8.0'
react-dom: '>=16.8.0'
- '@ungap/structured-clone@1.2.0':
- resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
-
'@vitejs/plugin-react-swc@3.7.2':
resolution: {integrity: sha512-y0byko2b2tSVVf5Gpng1eEhX1OvPC7x8yns1Fx8jDzlJp4LS6CMkCPfLw47cjyoMrshQDoQw4qcgjsU9VvlCew==}
peerDependencies:
@@ -2928,10 +2899,6 @@ packages:
resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
engines: {node: '>= 0.4'}
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
-
array.prototype.findlast@1.2.5:
resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
engines: {node: '>= 0.4'}
@@ -3574,10 +3541,6 @@ packages:
dir-compare@4.2.0:
resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==}
- dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
-
dmg-builder@25.1.8:
resolution: {integrity: sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ==}
@@ -3692,10 +3655,6 @@ packages:
end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
- enhanced-resolve@5.17.0:
- resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==}
- engines: {node: '>=10.13.0'}
-
entities@1.1.2:
resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==}
@@ -3789,19 +3748,6 @@ packages:
eslint-import-resolver-node@0.3.9:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
- eslint-import-resolver-typescript@3.6.3:
- resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- eslint-plugin-import: '*'
- eslint-plugin-import-x: '*'
- peerDependenciesMeta:
- eslint-plugin-import:
- optional: true
- eslint-plugin-import-x:
- optional: true
-
eslint-module-utils@2.12.0:
resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==}
engines: {node: '>=4'}
@@ -3823,12 +3769,6 @@ packages:
eslint-import-resolver-webpack:
optional: true
- eslint-plugin-babel@5.3.1:
- resolution: {integrity: sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g==}
- engines: {node: '>=4'}
- peerDependencies:
- eslint: '>=4.0.0'
-
eslint-plugin-import@2.31.0:
resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==}
engines: {node: '>=4'}
@@ -3874,23 +3814,15 @@ packages:
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
- eslint-plugin-testing-library@6.3.0:
- resolution: {integrity: sha512-GYcEErTt6EGwE0bPDY+4aehfEBpB2gDBFKohir8jlATSUvzStEyzCx8QWB/14xeKc/AwyXkzScSzMHnFojkWrA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'}
+ eslint-plugin-testing-library@7.1.1:
+ resolution: {integrity: sha512-nszC833aZPwB6tik1nMkbFqmtgIXTT0sfJEYs0zMBKMlkQ4to2079yUV96SvmLh00ovSBJI4pgcBC1TiIP8mXg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: ^9.14.0}
peerDependencies:
- eslint: ^7.5.0 || ^8.0.0
-
- eslint-rule-composer@0.3.0:
- resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==}
- engines: {node: '>=4.0.0'}
-
- eslint-scope@5.1.1:
- resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
- engines: {node: '>=8.0.0'}
+ eslint: ^8.57.0 || ^9.0.0
- eslint-scope@7.2.2:
- resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ eslint-scope@8.2.0:
+ resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
@@ -3900,15 +3832,19 @@ packages:
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint@8.57.0:
- resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
+ eslint@9.16.0:
+ resolution: {integrity: sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
+ peerDependencies:
+ jiti: '*'
+ peerDependenciesMeta:
+ jiti:
+ optional: true
- espree@9.6.1:
- resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ espree@10.3.0:
+ resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
@@ -3923,10 +3859,6 @@ packages:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
- estraverse@4.3.0:
- resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
- engines: {node: '>=4.0'}
-
estraverse@5.3.0:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
@@ -4001,9 +3933,9 @@ packages:
fecha@4.2.1:
resolution: {integrity: sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==}
- file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ file-entry-cache@8.0.0:
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
filelist@1.0.2:
resolution: {integrity: sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==}
@@ -4039,12 +3971,12 @@ packages:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
- flat-cache@3.0.4:
- resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ flat-cache@4.0.1:
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
- flatted@3.2.4:
- resolution: {integrity: sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==}
+ flatted@3.3.2:
+ resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
fn.name@1.1.0:
resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==}
@@ -4159,9 +4091,6 @@ packages:
resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
engines: {node: '>= 0.4'}
- get-tsconfig@4.8.0:
- resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==}
-
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -4199,18 +4128,18 @@ packages:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
- globals@13.19.0:
- resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==}
- engines: {node: '>=8'}
+ globals@14.0.0:
+ resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
+ engines: {node: '>=18'}
+
+ globals@15.13.0:
+ resolution: {integrity: sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==}
+ engines: {node: '>=18'}
globalthis@1.0.4:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
- globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
-
globrex@0.1.2:
resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
@@ -4428,9 +4357,6 @@ packages:
resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
engines: {node: '>= 0.4'}
- is-bun-module@1.1.0:
- resolution: {integrity: sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==}
-
is-callable@1.2.7:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
@@ -4504,10 +4430,6 @@ packages:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
- is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
@@ -4901,8 +4823,8 @@ packages:
resolution: {integrity: sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==}
engines: {node: '>=4.0'}
- keyv@4.5.0:
- resolution: {integrity: sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA==}
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
kleur@3.0.3:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
@@ -5715,9 +5637,6 @@ packages:
resolve-pathname@3.0.0:
resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==}
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
resolve.exports@2.0.2:
resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
engines: {node: '>=10'}
@@ -6088,10 +6007,6 @@ packages:
symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
- tapable@2.2.1:
- resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
- engines: {node: '>=6'}
-
tar-fs@3.0.6:
resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==}
@@ -6124,9 +6039,6 @@ packages:
text-hex@1.0.0:
resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
- text-table@0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
-
tiny-invariant@1.3.3:
resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
@@ -6207,21 +6119,12 @@ packages:
resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
engines: {node: '>=6'}
- tslib@1.14.1:
- resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
-
tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- tsutils@3.21.0:
- resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
- engines: {node: '>= 6'}
- peerDependencies:
- typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
-
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@@ -6234,10 +6137,6 @@ packages:
resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
engines: {node: '>=10'}
- type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
-
type-fest@0.21.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
@@ -6273,15 +6172,12 @@ packages:
typedarray-to-buffer@3.1.5:
resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
- typescript-eslint@8.16.0:
- resolution: {integrity: sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==}
+ typescript-eslint@8.18.0:
+ resolution: {integrity: sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ typescript: '>=4.8.4 <5.8.0'
typescript@5.7.2:
resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==}
@@ -7831,19 +7727,31 @@ snapshots:
'@esbuild/win32-x64@0.24.0':
optional: true
- '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.16.0)':
dependencies:
- eslint: 8.57.0
+ eslint: 9.16.0
eslint-visitor-keys: 3.4.3
- '@eslint-community/regexpp@4.10.1': {}
+ '@eslint-community/regexpp@4.12.1': {}
- '@eslint/eslintrc@2.1.4':
+ '@eslint/config-array@0.19.1':
+ dependencies:
+ '@eslint/object-schema': 2.1.5
+ debug: 4.3.7
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/core@0.9.1':
+ dependencies:
+ '@types/json-schema': 7.0.15
+
+ '@eslint/eslintrc@3.2.0':
dependencies:
ajv: 6.12.6
debug: 4.3.7
- espree: 9.6.1
- globals: 13.19.0
+ espree: 10.3.0
+ globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.0
js-yaml: 4.1.0
@@ -7852,7 +7760,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@8.57.0': {}
+ '@eslint/js@9.16.0': {}
+
+ '@eslint/object-schema@2.1.5': {}
+
+ '@eslint/plugin-kit@0.2.4':
+ dependencies:
+ levn: 0.4.1
'@floating-ui/core@1.6.8':
dependencies:
@@ -7885,17 +7799,18 @@ snapshots:
dependencies:
'@hapi/hoek': 9.3.0
- '@humanwhocodes/config-array@0.11.14':
+ '@humanfs/core@0.19.1': {}
+
+ '@humanfs/node@0.16.6':
dependencies:
- '@humanwhocodes/object-schema': 2.0.2
- debug: 4.3.7
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
+ '@humanfs/core': 0.19.1
+ '@humanwhocodes/retry': 0.3.1
'@humanwhocodes/module-importer@1.0.1': {}
- '@humanwhocodes/object-schema@2.0.2': {}
+ '@humanwhocodes/retry@0.3.1': {}
+
+ '@humanwhocodes/retry@0.4.1': {}
'@inquirer/confirm@5.0.2(@types/node@20.17.9)':
dependencies:
@@ -8289,8 +8204,6 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.13.0
- '@nolyfill/is-core-module@1.0.39': {}
-
'@npmcli/fs@2.1.2':
dependencies:
'@gar/promisify': 1.1.3
@@ -9012,13 +8925,13 @@ snapshots:
'@types/tough-cookie': 4.0.5
parse5: 7.1.2
- '@types/json-schema@7.0.13': {}
+ '@types/json-schema@7.0.15': {}
'@types/json5@0.0.29': {}
'@types/keyv@4.2.0':
dependencies:
- keyv: 4.5.0
+ keyv: 4.5.4
'@types/ms@0.7.34': {}
@@ -9074,8 +8987,6 @@ snapshots:
dependencies:
'@types/node': 20.17.9
- '@types/semver@7.5.8': {}
-
'@types/shimmer@1.2.0': {}
'@types/stack-utils@2.0.3': {}
@@ -9131,127 +9042,81 @@ snapshots:
'@types/node': 20.17.9
optional: true
- '@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2)':
+ '@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2)':
dependencies:
- '@eslint-community/regexpp': 4.10.1
- '@typescript-eslint/parser': 8.16.0(eslint@8.57.0)(typescript@5.7.2)
- '@typescript-eslint/scope-manager': 8.16.0
- '@typescript-eslint/type-utils': 8.16.0(eslint@8.57.0)(typescript@5.7.2)
- '@typescript-eslint/utils': 8.16.0(eslint@8.57.0)(typescript@5.7.2)
- '@typescript-eslint/visitor-keys': 8.16.0
- eslint: 8.57.0
+ '@eslint-community/regexpp': 4.12.1
+ '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.7.2)
+ '@typescript-eslint/scope-manager': 8.18.0
+ '@typescript-eslint/type-utils': 8.18.0(eslint@9.16.0)(typescript@5.7.2)
+ '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.7.2)
+ '@typescript-eslint/visitor-keys': 8.18.0
+ eslint: 9.16.0
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
ts-api-utils: 1.3.0(typescript@5.7.2)
- optionalDependencies:
typescript: 5.7.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2)':
+ '@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2)':
dependencies:
- '@typescript-eslint/scope-manager': 8.16.0
- '@typescript-eslint/types': 8.16.0
- '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.7.2)
- '@typescript-eslint/visitor-keys': 8.16.0
+ '@typescript-eslint/scope-manager': 8.18.0
+ '@typescript-eslint/types': 8.18.0
+ '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2)
+ '@typescript-eslint/visitor-keys': 8.18.0
debug: 4.3.7
- eslint: 8.57.0
- optionalDependencies:
+ eslint: 9.16.0
typescript: 5.7.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@5.62.0':
- dependencies:
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/visitor-keys': 5.62.0
-
- '@typescript-eslint/scope-manager@8.16.0':
+ '@typescript-eslint/scope-manager@8.18.0':
dependencies:
- '@typescript-eslint/types': 8.16.0
- '@typescript-eslint/visitor-keys': 8.16.0
+ '@typescript-eslint/types': 8.18.0
+ '@typescript-eslint/visitor-keys': 8.18.0
- '@typescript-eslint/type-utils@8.16.0(eslint@8.57.0)(typescript@5.7.2)':
+ '@typescript-eslint/type-utils@8.18.0(eslint@9.16.0)(typescript@5.7.2)':
dependencies:
- '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.7.2)
- '@typescript-eslint/utils': 8.16.0(eslint@8.57.0)(typescript@5.7.2)
+ '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2)
+ '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.7.2)
debug: 4.3.7
- eslint: 8.57.0
+ eslint: 9.16.0
ts-api-utils: 1.3.0(typescript@5.7.2)
- optionalDependencies:
typescript: 5.7.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@5.62.0': {}
-
- '@typescript-eslint/types@8.16.0': {}
-
- '@typescript-eslint/typescript-estree@5.62.0(typescript@5.7.2)':
- dependencies:
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/visitor-keys': 5.62.0
- debug: 4.3.7
- globby: 11.1.0
- is-glob: 4.0.3
- semver: 7.6.3
- tsutils: 3.21.0(typescript@5.7.2)
- optionalDependencies:
- typescript: 5.7.2
- transitivePeerDependencies:
- - supports-color
+ '@typescript-eslint/types@8.18.0': {}
- '@typescript-eslint/typescript-estree@8.16.0(typescript@5.7.2)':
+ '@typescript-eslint/typescript-estree@8.18.0(typescript@5.7.2)':
dependencies:
- '@typescript-eslint/types': 8.16.0
- '@typescript-eslint/visitor-keys': 8.16.0
+ '@typescript-eslint/types': 8.18.0
+ '@typescript-eslint/visitor-keys': 8.18.0
debug: 4.3.7
fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.6.3
ts-api-utils: 1.3.0(typescript@5.7.2)
- optionalDependencies:
typescript: 5.7.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.7.2)':
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@types/json-schema': 7.0.13
- '@types/semver': 7.5.8
- '@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.7.2)
- eslint: 8.57.0
- eslint-scope: 5.1.1
- semver: 7.6.3
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- '@typescript-eslint/utils@8.16.0(eslint@8.57.0)(typescript@5.7.2)':
+ '@typescript-eslint/utils@8.18.0(eslint@9.16.0)(typescript@5.7.2)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@typescript-eslint/scope-manager': 8.16.0
- '@typescript-eslint/types': 8.16.0
- '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.7.2)
- eslint: 8.57.0
- optionalDependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.16.0)
+ '@typescript-eslint/scope-manager': 8.18.0
+ '@typescript-eslint/types': 8.18.0
+ '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2)
+ eslint: 9.16.0
typescript: 5.7.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@5.62.0':
+ '@typescript-eslint/visitor-keys@8.18.0':
dependencies:
- '@typescript-eslint/types': 5.62.0
- eslint-visitor-keys: 3.4.3
-
- '@typescript-eslint/visitor-keys@8.16.0':
- dependencies:
- '@typescript-eslint/types': 8.16.0
+ '@typescript-eslint/types': 8.18.0
eslint-visitor-keys: 4.2.0
'@uiw/codemirror-extensions-basic-setup@4.23.6(@codemirror/autocomplete@6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3))(@codemirror/commands@6.7.1)(@codemirror/language@6.10.6)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)':
@@ -9287,8 +9152,6 @@ snapshots:
- '@codemirror/lint'
- '@codemirror/search'
- '@ungap/structured-clone@1.2.0': {}
-
'@vitejs/plugin-react-swc@3.7.2(vite@5.4.8(@types/node@20.17.9)(terser@5.31.1))':
dependencies:
'@swc/core': 1.9.3
@@ -9525,8 +9388,6 @@ snapshots:
get-intrinsic: 1.2.4
is-string: 1.0.7
- array-union@2.1.0: {}
-
array.prototype.findlast@1.2.5:
dependencies:
call-bind: 1.0.7
@@ -9861,7 +9722,7 @@ snapshots:
clone-response: 1.0.2
get-stream: 5.2.0
http-cache-semantics: 4.1.1
- keyv: 4.5.0
+ keyv: 4.5.4
lowercase-keys: 2.0.0
normalize-url: 6.1.0
responselike: 2.0.1
@@ -10285,10 +10146,6 @@ snapshots:
minimatch: 3.1.2
p-limit: 3.1.0
- dir-glob@3.0.1:
- dependencies:
- path-type: 4.0.0
-
dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8):
dependencies:
app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8))
@@ -10454,11 +10311,6 @@ snapshots:
dependencies:
once: 1.4.0
- enhanced-resolve@5.17.0:
- dependencies:
- graceful-fs: 4.2.11
- tapable: 2.2.1
-
entities@1.1.2: {}
entities@2.2.0: {}
@@ -10652,42 +10504,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.0):
- dependencies:
- '@nolyfill/is-core-module': 1.0.39
- debug: 4.3.7
- enhanced-resolve: 5.17.0
- eslint: 8.57.0
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
- fast-glob: 3.3.2
- get-tsconfig: 4.8.0
- is-bun-module: 1.1.0
- is-glob: 4.0.3
- optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
- transitivePeerDependencies:
- - '@typescript-eslint/parser'
- - eslint-import-resolver-node
- - eslint-import-resolver-webpack
- - supports-color
-
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.16.0):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.16.0(eslint@8.57.0)(typescript@5.7.2)
- eslint: 8.57.0
+ '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.7.2)
+ eslint: 9.16.0
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.0)
transitivePeerDependencies:
- supports-color
- eslint-plugin-babel@5.3.1(eslint@8.57.0):
- dependencies:
- eslint: 8.57.0
- eslint-rule-composer: 0.3.0
-
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -10696,9 +10523,9 @@ snapshots:
array.prototype.flatmap: 1.3.2
debug: 3.2.7
doctrine: 2.1.0
- eslint: 8.57.0
+ eslint: 9.16.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.16.0)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -10710,36 +10537,36 @@ snapshots:
string.prototype.trimend: 1.0.8
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.16.0(eslint@8.57.0)(typescript@5.7.2)
+ '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.7.2)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-jest-dom@5.5.0(@testing-library/dom@10.1.0)(eslint@8.57.0):
+ eslint-plugin-jest-dom@5.5.0(@testing-library/dom@10.1.0)(eslint@9.16.0):
dependencies:
'@babel/runtime': 7.26.0
- eslint: 8.57.0
+ eslint: 9.16.0
requireindex: 1.2.0
optionalDependencies:
'@testing-library/dom': 10.1.0
- eslint-plugin-jest@28.9.0(@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0))(typescript@5.7.2):
+ eslint-plugin-jest@28.9.0(@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0))(typescript@5.7.2):
dependencies:
- '@typescript-eslint/utils': 8.16.0(eslint@8.57.0)(typescript@5.7.2)
- eslint: 8.57.0
+ '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.7.2)
+ eslint: 9.16.0
optionalDependencies:
- '@typescript-eslint/eslint-plugin': 8.16.0(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2)
+ '@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2)
jest: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)
transitivePeerDependencies:
- supports-color
- typescript
- eslint-plugin-react-hooks@5.0.0(eslint@8.57.0):
+ eslint-plugin-react-hooks@5.0.0(eslint@9.16.0):
dependencies:
- eslint: 8.57.0
+ eslint: 9.16.0
- eslint-plugin-react@7.37.2(eslint@8.57.0):
+ eslint-plugin-react@7.37.2(eslint@9.16.0):
dependencies:
array-includes: 3.1.8
array.prototype.findlast: 1.2.5
@@ -10747,7 +10574,7 @@ snapshots:
array.prototype.tosorted: 1.1.4
doctrine: 2.1.0
es-iterator-helpers: 1.2.0
- eslint: 8.57.0
+ eslint: 9.16.0
estraverse: 5.3.0
hasown: 2.0.2
jsx-ast-utils: 3.2.1
@@ -10761,22 +10588,16 @@ snapshots:
string.prototype.matchall: 4.0.11
string.prototype.repeat: 1.0.0
- eslint-plugin-testing-library@6.3.0(eslint@8.57.0)(typescript@5.7.2):
+ eslint-plugin-testing-library@7.1.1(eslint@9.16.0)(typescript@5.7.2):
dependencies:
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.7.2)
- eslint: 8.57.0
+ '@typescript-eslint/scope-manager': 8.18.0
+ '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.7.2)
+ eslint: 9.16.0
transitivePeerDependencies:
- supports-color
- typescript
- eslint-rule-composer@0.3.0: {}
-
- eslint-scope@5.1.1:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 4.3.0
-
- eslint-scope@7.2.2:
+ eslint-scope@8.2.0:
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
@@ -10785,54 +10606,50 @@ snapshots:
eslint-visitor-keys@4.2.0: {}
- eslint@8.57.0:
+ eslint@9.16.0:
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@eslint-community/regexpp': 4.10.1
- '@eslint/eslintrc': 2.1.4
- '@eslint/js': 8.57.0
- '@humanwhocodes/config-array': 0.11.14
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.16.0)
+ '@eslint-community/regexpp': 4.12.1
+ '@eslint/config-array': 0.19.1
+ '@eslint/core': 0.9.1
+ '@eslint/eslintrc': 3.2.0
+ '@eslint/js': 9.16.0
+ '@eslint/plugin-kit': 0.2.4
+ '@humanfs/node': 0.16.6
'@humanwhocodes/module-importer': 1.0.1
- '@nodelib/fs.walk': 1.2.8
- '@ungap/structured-clone': 1.2.0
+ '@humanwhocodes/retry': 0.4.1
+ '@types/estree': 1.0.6
+ '@types/json-schema': 7.0.15
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.3.7
- doctrine: 3.0.0
escape-string-regexp: 4.0.0
- eslint-scope: 7.2.2
- eslint-visitor-keys: 3.4.3
- espree: 9.6.1
+ eslint-scope: 8.2.0
+ eslint-visitor-keys: 4.2.0
+ espree: 10.3.0
esquery: 1.5.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
+ file-entry-cache: 8.0.0
find-up: 5.0.0
glob-parent: 6.0.2
- globals: 13.19.0
- graphemer: 1.4.0
ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
- is-path-inside: 3.0.3
- js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.3
- strip-ansi: 6.0.1
- text-table: 0.2.0
transitivePeerDependencies:
- supports-color
- espree@9.6.1:
+ espree@10.3.0:
dependencies:
acorn: 8.14.0
acorn-jsx: 5.3.2(acorn@8.14.0)
- eslint-visitor-keys: 3.4.3
+ eslint-visitor-keys: 4.2.0
esprima@4.0.1: {}
@@ -10844,8 +10661,6 @@ snapshots:
dependencies:
estraverse: 5.3.0
- estraverse@4.3.0: {}
-
estraverse@5.3.0: {}
estree-walker@2.0.2: {}
@@ -10927,9 +10742,9 @@ snapshots:
fecha@4.2.1: {}
- file-entry-cache@6.0.1:
+ file-entry-cache@8.0.0:
dependencies:
- flat-cache: 3.0.4
+ flat-cache: 4.0.1
filelist@1.0.2:
dependencies:
@@ -10974,12 +10789,12 @@ snapshots:
locate-path: 6.0.0
path-exists: 4.0.0
- flat-cache@3.0.4:
+ flat-cache@4.0.1:
dependencies:
- flatted: 3.2.4
- rimraf: 3.0.2
+ flatted: 3.3.2
+ keyv: 4.5.4
- flatted@3.2.4: {}
+ flatted@3.3.2: {}
fn.name@1.1.0: {}
@@ -11096,10 +10911,6 @@ snapshots:
es-errors: 1.3.0
get-intrinsic: 1.2.4
- get-tsconfig@4.8.0:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -11158,24 +10969,15 @@ snapshots:
globals@11.12.0: {}
- globals@13.19.0:
- dependencies:
- type-fest: 0.20.2
+ globals@14.0.0: {}
+
+ globals@15.13.0: {}
globalthis@1.0.4:
dependencies:
define-properties: 1.2.1
gopd: 1.1.0
- globby@11.1.0:
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.2
- ignore: 5.3.2
- merge2: 1.4.1
- slash: 3.0.0
-
globrex@0.1.2: {}
gopd@1.1.0:
@@ -11409,10 +11211,6 @@ snapshots:
call-bind: 1.0.7
has-tostringtag: 1.0.2
- is-bun-module@1.1.0:
- dependencies:
- semver: 7.6.3
-
is-callable@1.2.7: {}
is-ci@3.0.1:
@@ -11467,8 +11265,6 @@ snapshots:
is-number@7.0.0: {}
- is-path-inside@3.0.3: {}
-
is-potential-custom-element-name@1.0.1: {}
is-regex@1.1.4:
@@ -12136,7 +11932,7 @@ snapshots:
array-includes: 3.1.8
object.assign: 4.1.5
- keyv@4.5.0:
+ keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
@@ -13030,8 +12826,6 @@ snapshots:
resolve-pathname@3.0.0: {}
- resolve-pkg-maps@1.0.0: {}
-
resolve.exports@2.0.2: {}
resolve@1.22.8:
@@ -13465,8 +13259,6 @@ snapshots:
symbol-tree@3.2.4: {}
- tapable@2.2.1: {}
-
tar-fs@3.0.6:
dependencies:
pump: 3.0.0
@@ -13523,8 +13315,6 @@ snapshots:
text-hex@1.0.0: {}
- text-table@0.2.0: {}
-
tiny-invariant@1.3.3: {}
tiny-warning@1.0.3: {}
@@ -13599,17 +13389,10 @@ snapshots:
minimist: 1.2.8
strip-bom: 3.0.0
- tslib@1.14.1: {}
-
tslib@2.6.2: {}
tslib@2.8.1: {}
- tsutils@3.21.0(typescript@5.7.2):
- dependencies:
- tslib: 1.14.1
- typescript: 5.7.2
-
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
@@ -13619,8 +13402,6 @@ snapshots:
type-fest@0.13.1:
optional: true
- type-fest@0.20.2: {}
-
type-fest@0.21.3: {}
type-fest@0.8.1: {}
@@ -13665,13 +13446,12 @@ snapshots:
dependencies:
is-typedarray: 1.0.0
- typescript-eslint@8.16.0(eslint@8.57.0)(typescript@5.7.2):
+ typescript-eslint@8.18.0(eslint@9.16.0)(typescript@5.7.2):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.16.0(@typescript-eslint/parser@8.16.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2)
- '@typescript-eslint/parser': 8.16.0(eslint@8.57.0)(typescript@5.7.2)
- '@typescript-eslint/utils': 8.16.0(eslint@8.57.0)(typescript@5.7.2)
- eslint: 8.57.0
- optionalDependencies:
+ '@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2)
+ '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.7.2)
+ '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.7.2)
+ eslint: 9.16.0
typescript: 5.7.2
transitivePeerDependencies:
- supports-color
diff --git a/web/.storybook/preview.tsx b/web/.storybook/preview.tsx
index 0103207d3a13b..c5b93cb569151 100644
--- a/web/.storybook/preview.tsx
+++ b/web/.storybook/preview.tsx
@@ -17,6 +17,11 @@
*/
import React, { ComponentType, PropsWithChildren } from 'react';
+
+import { Preview } from '@storybook/react';
+
+import { initialize, mswLoader } from 'msw-storybook-addon';
+
import { bblpTheme, darkTheme, lightTheme } from '../packages/design/src/theme';
import { ConfiguredThemeProvider } from '../packages/design/src/ThemeProvider';
import Box from '../packages/design/src/Box';
@@ -27,9 +32,7 @@ import {
} from '../packages/teleterm/src/ui/ThemeProvider/theme';
import history from '../packages/teleport/src/services/history/history';
import { UserContextProvider } from '../packages/teleport/src/User';
-import { Preview } from '@storybook/react';
import { Theme } from '../packages/design/src/theme/themes/types';
-import { initialize, mswLoader } from 'msw-storybook-addon';
initialize();
diff --git a/web/packages/build/.eslintrc.js b/web/packages/build/.eslintrc.js
deleted file mode 100644
index f9c90fabe90f4..0000000000000
--- a/web/packages/build/.eslintrc.js
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Teleport
- * Copyright (C) 2023 Gravitational, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-module.exports = {
- parser: '@typescript-eslint/parser',
- parserOptions: {
- ecmaVersion: 6,
- ecmaFeatures: {
- jsx: true,
- experimentalObjectRestSpread: true,
- },
- },
- env: {
- es6: true,
- browser: true,
- node: true,
- },
- globals: {
- expect: true,
- jest: true,
- },
- ignorePatterns: ['**/dist/**'],
- extends: [
- 'eslint:recommended',
- 'plugin:@typescript-eslint/recommended',
- 'plugin:import/errors',
- 'plugin:import/warnings',
- 'plugin:import/typescript',
- ],
- plugins: ['react', 'babel', 'import', 'react-hooks'],
- overrides: [
- {
- files: ['**/*.test.{ts,tsx,js,jsx}'],
- plugins: ['jest'],
- extends: [
- 'plugin:jest/recommended',
- 'plugin:testing-library/react',
- 'plugin:jest-dom/recommended',
- ],
- rules: {
- 'jest/prefer-called-with': 0,
- 'jest/prefer-expect-assertions': 0,
- 'jest/consistent-test-it': 0,
- 'jest/no-try-expect': 0,
- 'jest/no-hooks': 0,
- 'jest/no-disabled-tests': 0,
- 'jest/prefer-strict-equal': 0,
- 'jest/prefer-inline-snapshots': 0,
- 'jest/require-top-level-describe': 0,
- 'jest/no-large-snapshots': ['warn', { maxSize: 200 }],
- },
- },
- // Allow require imports in .js files, as migrating our project to ESM modules requires a lot of
- // changes.
- {
- files: ['**/*.js'],
- rules: {
- '@typescript-eslint/no-require-imports': 'warn',
- },
- },
- ],
- rules: {
- 'import/order': [
- 'error',
- {
- groups: [
- 'builtin',
- 'external',
- 'internal',
- 'parent',
- 'sibling',
- 'index',
- 'object',
- 'type',
- ],
- 'newlines-between': 'always-and-inside-groups',
- },
- ],
- // typescript-eslint recommends to turn import/no-unresolved off.
- // https://typescript-eslint.io/troubleshooting/typed-linting/performance/#eslint-plugin-import
- 'import/no-unresolved': 0,
- 'no-unused-vars': 'off', // disabled to allow the typescript one to take over and avoid errors in reporting
- '@typescript-eslint/no-unused-vars': ['error'],
- 'no-unused-expressions': 'off',
- '@typescript-eslint/no-unused-expressions': [
- 'error',
- { allowShortCircuit: true, allowTernary: true, enforceForJSX: true },
- ],
- '@typescript-eslint/no-empty-object-type': [
- 'error',
- // with-single-extends is needed to allow for interface extends like we have in jest.d.ts.
- { allowInterfaces: 'with-single-extends' },
- ],
-
- // Severity should be one of the following:
- // "off" or 0 - turn the rule off
- // "warn" or 1 - turn the rule on as a warning (doesn’t affect exit code)
- // "error" or 2 - turn the rule on as an error (exit code is 1 when triggered)
-
- // Enable these rules after fixing all existing issues
- '@typescript-eslint/no-use-before-define': 0,
- '@typescript-eslint/indent': 0,
- '@typescript/no-use-before-define': 0,
- '@typescript-eslint/no-var-requires': 0,
- '@typescript-eslint/camelcase': 0,
- '@typescript-eslint/class-name-casing': 0,
- '@typescript-eslint/no-explicit-any': 0,
- '@typescript-eslint/explicit-function-return-type': 0,
- '@typescript-eslint/explicit-member-accessibility': 0,
- '@typescript-eslint/prefer-interface': 0,
- '@typescript-eslint/no-empty-function': 0,
- '@typescript-eslint/no-this-alias': 0,
-
- //
- 'comma-dangle': 0,
- 'no-mixed-spaces-and-tabs': 0,
- 'no-alert': 0,
- 'import/no-named-as-default': 0,
- 'import/default': 2,
- 'no-underscore-dangle': 0,
- 'no-case-declarations': 0,
- 'prefer-const': 0,
- 'no-var': 0,
- 'prefer-rest-params': 0,
- 'prefer-spread': 0,
-
- strict: 0,
- 'no-console': 1,
- 'no-trailing-spaces': 2,
- 'react/display-name': 0,
- 'react/jsx-no-undef': 2,
- 'react/jsx-pascal-case': 2,
- 'react/no-danger': 2,
- 'react/jsx-no-duplicate-props': 2,
- 'react/jsx-sort-prop-types': 0,
- 'react/jsx-sort-props': 0,
- 'react/jsx-uses-vars': 1,
- 'react/no-did-mount-set-state': 1,
- 'react/no-did-update-set-state': 1,
- 'react/no-unknown-property': 1,
- 'react/prop-types': 0,
- 'react/self-closing-comp': 0,
- 'react/sort-comp': 0,
- 'react/jsx-wrap-multilines': 1,
- // allowExpressions allow single expressions in a fragment eg: <>{children}>
- // https://github.com/jsx-eslint/eslint-plugin-react/blob/f83b38869c7fc2c6a84ef8c2639ac190b8fef74f/docs/rules/jsx-no-useless-fragment.md#allowexpressions
- 'react/jsx-no-useless-fragment': [2, { allowExpressions: true }],
-
- 'react-hooks/rules-of-hooks': 1,
- 'react-hooks/exhaustive-deps': 1,
-
- // Turned off because we use automatic runtime.
- 'react/jsx-uses-react': 0,
- 'react/react-in-jsx-scope': 0,
- },
- settings: {
- react: {
- // React version. "detect" automatically picks the version you have installed.
- version: 'detect',
- },
- 'import/resolver': {
- typescript: {},
- },
- },
-};
diff --git a/web/packages/build/eslint.config.mjs b/web/packages/build/eslint.config.mjs
new file mode 100644
index 0000000000000..370480901c6c2
--- /dev/null
+++ b/web/packages/build/eslint.config.mjs
@@ -0,0 +1,173 @@
+/**
+ * Teleport
+ * Copyright (C) 2024 Gravitational, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import eslint from '@eslint/js';
+import tseslint from 'typescript-eslint';
+import reactPlugin from 'eslint-plugin-react';
+import reactHooksPlugin from 'eslint-plugin-react-hooks';
+import importPlugin from 'eslint-plugin-import';
+import jestPlugin from 'eslint-plugin-jest';
+import testingLibraryPlugin from 'eslint-plugin-testing-library';
+import jestDomPlugin from 'eslint-plugin-jest-dom';
+import globals from 'globals';
+
+export default tseslint.config(
+ {
+ ignores: [
+ '**/dist/**',
+ '**/*_pb.*',
+ '.eslintrc.js',
+ '**/tshd/**/*_pb.js',
+ // WASM generated files
+ 'web/packages/teleport/src/ironrdp/pkg',
+ 'web/packages/teleterm/build',
+ ],
+ },
+ eslint.configs.recommended,
+ ...tseslint.configs.recommended,
+ reactPlugin.configs.flat.recommended,
+ importPlugin.flatConfigs.errors,
+ importPlugin.flatConfigs.warnings,
+ importPlugin.flatConfigs.typescript,
+ {
+ settings: {
+ react: {
+ version: 'detect',
+ },
+ },
+ languageOptions: {
+ ecmaVersion: 6,
+ sourceType: 'module',
+ globals: {
+ ...globals.browser,
+ ...globals.node,
+ expect: 'readonly',
+ jest: 'readonly',
+ },
+ parser: tseslint.parser,
+ },
+ plugins: {
+ // There is no flat config available.
+ 'react-hooks': reactHooksPlugin,
+ },
+ rules: {
+ ...reactHooksPlugin.configs.recommended.rules,
+ 'import/order': [
+ 'error',
+ {
+ groups: [
+ 'builtin',
+ 'external',
+ 'internal',
+ 'parent',
+ 'sibling',
+ 'index',
+ 'object',
+ 'type',
+ ],
+ 'newlines-between': 'always-and-inside-groups',
+ },
+ ],
+ // typescript-eslint recommends to turn import/no-unresolved off.
+ // https://typescript-eslint.io/troubleshooting/typed-linting/performance/#eslint-plugin-import
+ 'import/no-unresolved': 'off',
+ '@typescript-eslint/no-unused-expressions': [
+ 'error',
+ { allowShortCircuit: true, allowTernary: true, enforceForJSX: true },
+ ],
+ '@typescript-eslint/no-empty-object-type': [
+ 'error',
+ // with-single-extends is needed to allow for interface extends like we have in jest.d.ts.
+ { allowInterfaces: 'with-single-extends' },
+ ],
+
+ // Enable these recommended typescript-eslint rules after fixing existing issues.
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/no-this-alias': 'off',
+ //
+
+ 'no-case-declarations': 'off',
+ 'prefer-const': 'off',
+ 'no-var': 'off',
+ 'prefer-rest-params': 'off',
+
+ 'no-console': 'warn',
+ 'no-trailing-spaces': 'error',
+ 'react/jsx-no-undef': 'error',
+ 'react/jsx-pascal-case': 'error',
+ 'react/no-danger': 'error',
+ 'react/jsx-no-duplicate-props': 'error',
+ 'react/jsx-sort-prop-types': 'off',
+ 'react/jsx-sort-props': 'off',
+ 'react/jsx-uses-vars': 'warn',
+ 'react/no-did-mount-set-state': 'warn',
+ 'react/no-did-update-set-state': 'warn',
+ 'react/no-unknown-property': 'warn',
+ 'react/prop-types': 'off',
+ 'react/jsx-wrap-multilines': 'warn',
+ // allowExpressions allow single expressions in a fragment eg: <>{children}>
+ // https://github.com/jsx-eslint/eslint-plugin-react/blob/f83b38869c7fc2c6a84ef8c2639ac190b8fef74f/docs/rules/jsx-no-useless-fragment.md#allowexpressions
+ 'react/jsx-no-useless-fragment': ['error', { allowExpressions: true }],
+ 'react/display-name': 'off',
+ 'react/no-children-prop': 'warn',
+ 'react/no-unescaped-entities': 'warn',
+ 'react/jsx-key': 'warn',
+ 'react/jsx-no-target-blank': 'warn',
+ // Turned off because we use automatic runtime.
+ 'react/jsx-uses-react': 'off',
+ 'react/react-in-jsx-scope': 'off',
+
+ 'react-hooks/rules-of-hooks': 'warn',
+ 'react-hooks/exhaustive-deps': 'warn',
+ },
+ },
+ {
+ files: ['**/*.test.{ts,tsx,js,jsx}'],
+ languageOptions: {
+ globals: globals.jest,
+ },
+ plugins: {
+ jest: jestPlugin,
+ 'testing-library': testingLibraryPlugin,
+ 'jest-dom': jestDomPlugin,
+ },
+ rules: {
+ ...jestPlugin.configs['flat/recommended'].rules,
+ ...testingLibraryPlugin.configs['flat/react'].rules,
+ ...jestDomPlugin.configs['flat/recommended'].rules,
+ 'jest/prefer-called-with': 'off',
+ 'jest/prefer-expect-assertions': 'off',
+ 'jest/consistent-test-it': 'off',
+ 'jest/no-try-expect': 'off',
+ 'jest/no-hooks': 'off',
+ 'jest/no-disabled-tests': 'off',
+ 'jest/prefer-strict-equal': 'off',
+ 'jest/prefer-inline-snapshots': 'off',
+ 'jest/require-top-level-describe': 'off',
+ 'jest/no-large-snapshots': ['warn', { maxSize: 200 }],
+ },
+ },
+ {
+ // Allow require imports in .js files, as migrating our project to ESM modules requires a lot of
+ // changes.
+ files: ['**/*.js'],
+ rules: {
+ '@typescript-eslint/no-require-imports': 'warn',
+ },
+ }
+);
diff --git a/web/packages/build/package.json b/web/packages/build/package.json
index 72ba908e15b14..65599166c1fed 100644
--- a/web/packages/build/package.json
+++ b/web/packages/build/package.json
@@ -14,25 +14,25 @@
"@babel/preset-env": "^7.26.0",
"@babel/preset-react": "^7.25.9",
"@babel/preset-typescript": "^7.26.0",
+ "@eslint/js": "^9.16.0",
"@swc/core": "^1.9.3",
"@swc/plugin-styled-components": "^5.0.0",
"@types/jsdom": "^21.1.7",
"@vitejs/plugin-react-swc": "^3.7.2",
"babel-plugin-styled-components": "^2.1.4",
- "eslint": "^8.56.0",
- "eslint-import-resolver-typescript": "^3.6.3",
- "eslint-plugin-babel": "^5.3.1",
+ "eslint": "^9.16.0",
"eslint-plugin-import": "2.31.0",
"eslint-plugin-jest": "^28.9.0",
"eslint-plugin-jest-dom": "^5.5.0",
"eslint-plugin-react": "^7.37.2",
"eslint-plugin-react-hooks": "^5.0.0",
- "eslint-plugin-testing-library": "^6.3.0",
+ "eslint-plugin-testing-library": "^7.1.1",
+ "globals": "^15.13.0",
"jest-environment-jsdom": "^29.7.0",
"jest-fail-on-console": "^3.3.1",
"jsdom": "^25.0.1",
"rollup-plugin-visualizer": "^5.12.0",
- "typescript-eslint": "^8.16.0",
+ "typescript-eslint": "^8.18.0",
"vite-plugin-wasm": "^3.3.0",
"vite-tsconfig-paths": "^5.1.3"
}
diff --git a/web/packages/teleterm/.eslintrc.js b/web/packages/teleterm/.eslintrc.js
deleted file mode 100644
index c5ef6620c620c..0000000000000
--- a/web/packages/teleterm/.eslintrc.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const eslintConfig = require('@gravitational/build/.eslintrc');
-
-eslintConfig.ignorePatterns = ['**/tshd/**/*_pb.js'];
-eslintConfig.rules['no-console'] = 'off';
-
-module.exports = eslintConfig;
diff --git a/web/packages/teleterm/eslint.config.mjs b/web/packages/teleterm/eslint.config.mjs
new file mode 100644
index 0000000000000..82cc5f0297838
--- /dev/null
+++ b/web/packages/teleterm/eslint.config.mjs
@@ -0,0 +1,28 @@
+/**
+ * Teleport
+ * Copyright (C) 2024 Gravitational, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import base from '@gravitational/build/eslint.config.mjs';
+
+export default [
+ ...base,
+ {
+ rules: {
+ 'no-console': 'off',
+ },
+ },
+];