From 4805c3406dc25ad495be93d0083e9230d08abadb Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Fri, 18 Oct 2024 14:50:47 +0200 Subject: [PATCH] Use TS and JSX shared configs from eslint-config-hypothesis --- dev-server/serve-dev.js | 2 +- eslint.config.js | 47 +----- package.json | 4 +- scripts/generate-change-list.js | 2 +- src/annotator/anchoring/test/xpath-test.js | 2 +- src/annotator/config/test/app-test.js | 4 +- .../integrations/test/html-metadata-test.js | 2 +- src/annotator/integrations/test/html-test.js | 2 +- .../test/image-text-layer-test.js | 2 +- .../integrations/test/vitalsource-test.js | 2 +- src/annotator/test/annotation-counts-test.js | 3 +- src/annotator/test/guest-test.js | 2 +- src/annotator/test/highlighter-test.js | 2 +- src/annotator/test/sidebar-test.js | 4 +- src/annotator/util/test/normalize-test.js | 2 +- .../util/test/preact-container-test.js | 2 +- src/boot/test/boot-test.js | 2 +- src/shared/messaging/test/port-finder-test.js | 4 +- .../hooks/test/use-filter-options-test.js | 4 +- .../components/test/MarkdownEditor-test.js | 2 +- src/sidebar/components/test/MenuItem-test.js | 2 +- .../test/MenuKeyboardNavigation-test.js | 2 +- src/sidebar/components/test/TagEditor-test.js | 4 +- src/sidebar/helpers/test/query-parser-test.js | 2 +- .../services/test/load-annotations-test.js | 2 +- .../store/modules/test/filters-test.js | 2 +- src/sidebar/store/modules/test/groups-test.js | 2 +- .../modules/test/real-time-updates-test.js | 2 +- .../store/modules/test/selection-test.js | 2 +- src/sidebar/store/test/util-test.js | 3 +- src/sidebar/test/cross-origin-rpc-test.js | 2 +- yarn.lock | 138 ++++++++++-------- 32 files changed, 118 insertions(+), 141 deletions(-) diff --git a/dev-server/serve-dev.js b/dev-server/serve-dev.js index 4d4630d69d4..4e1b858ed0d 100644 --- a/dev-server/serve-dev.js +++ b/dev-server/serve-dev.js @@ -130,7 +130,7 @@ export function serveDev(port, config) { if (fs.existsSync(path)) { const content = fs.readFileSync(path, 'utf8'); const headers = readCustomHeaderTags(content); - for (let [key, value] of headers) { + for (const [key, value] of headers) { res.set(key, value); } res.render(req.params.document, templateContext(config)); diff --git a/eslint.config.js b/eslint.config.js index e960242eca6..2030200b1d4 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,9 +1,9 @@ -import hypothesis from 'eslint-config-hypothesis'; -import jsxA11y from 'eslint-plugin-jsx-a11y'; +import hypothesisBase from 'eslint-config-hypothesis/base'; +import hypothesisJSX from 'eslint-config-hypothesis/jsx'; +import hypothesisTS from 'eslint-config-hypothesis/ts'; import globals from 'globals'; -import tseslint from 'typescript-eslint'; -export default tseslint.config( +export default [ { ignores: [ '.tox/**/*', @@ -16,41 +16,10 @@ export default tseslint.config( 'dev-server/static/**/*.js', ], }, - ...hypothesis, - ...tseslint.configs.recommended, - jsxA11y.flatConfigs.recommended, - { - rules: { - 'prefer-arrow-callback': [ - 'error', - { - allowNamedFunctions: true, - }, - ], - - 'object-shorthand': ['error', 'properties'], - 'react/prop-types': 'off', - '@typescript-eslint/no-unused-vars': 'error', - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': [ - 'error', - { - functions: false, - typedefs: false, - ignoreTypeReferences: false, - }, - ], - - '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/no-this-alias': 'off', - '@typescript-eslint/consistent-type-assertions': 'error', - '@typescript-eslint/consistent-type-imports': 'error', - }, - }, + ...hypothesisBase, + ...hypothesisJSX, + ...hypothesisTS, // Annotator module { @@ -85,4 +54,4 @@ export default tseslint.config( }, }, }, -); +]; diff --git a/package.json b/package.json index bce268458c2..e9923856e72 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "escape-html": "^1.0.3", "escape-string-regexp": "^4.0.0", "eslint": "^9.12.0", - "eslint-config-hypothesis": "^3.0.0", + "eslint-config-hypothesis": "^3.1.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-mocha": "^10.5.0", "eslint-plugin-react": "^7.37.1", @@ -100,7 +100,7 @@ "tailwindcss": "^3.0.2", "tiny-emitter": "^2.0.2", "typescript": "^5.0.2", - "typescript-eslint": "^8.9.0", + "typescript-eslint": "^8.10.0", "wrap-text": "^1.0.7" }, "browserslist": "chrome 92, firefox 90, safari 14.1", diff --git a/scripts/generate-change-list.js b/scripts/generate-change-list.js index 77aad6a0e80..5f363f6f6a4 100755 --- a/scripts/generate-change-list.js +++ b/scripts/generate-change-list.js @@ -43,7 +43,7 @@ function getHighestVersionTag() { */ async function* itemsInGitHubAPIResponse(octokit, options) { for await (const page of octokit.paginate.iterator(options)) { - for (let item of page.data) { + for (const item of page.data) { yield item; } } diff --git a/src/annotator/anchoring/test/xpath-test.js b/src/annotator/anchoring/test/xpath-test.js index 3c7c13bb9b6..ad7de4d69a9 100644 --- a/src/annotator/anchoring/test/xpath-test.js +++ b/src/annotator/anchoring/test/xpath-test.js @@ -70,7 +70,7 @@ describe('annotator/anchoring/xpath', () => { }, ].forEach(test => { it('produces the correct xpath for the provided node', () => { - let node = document.getElementById(test.id); + const node = document.getElementById(test.id); assert.equal(xpathFromNode(node, document.body), test.xpaths[0]); }); diff --git a/src/annotator/config/test/app-test.js b/src/annotator/config/test/app-test.js index c822c1fc6a7..2df2f89601e 100644 --- a/src/annotator/config/test/app-test.js +++ b/src/annotator/config/test/app-test.js @@ -77,7 +77,7 @@ describe('createAppConfig', () => { 'onHelpRequest', ]; const service = {}; - for (let callback of callbacks) { + for (const callback of callbacks) { service[callback] = sinon.stub(); } @@ -87,7 +87,7 @@ describe('createAppConfig', () => { const sidebarConfig = createAppConfig(appURL, config); const sidebarServiceConfig = sidebarConfig.services[0]; - for (let callback of callbacks) { + for (const callback of callbacks) { assert.equal(sidebarServiceConfig[callback + 'Provided'], true); } }); diff --git a/src/annotator/integrations/test/html-metadata-test.js b/src/annotator/integrations/test/html-metadata-test.js index cb911ff2d23..3c9e8c600ab 100644 --- a/src/annotator/integrations/test/html-metadata-test.js +++ b/src/annotator/integrations/test/html-metadata-test.js @@ -82,7 +82,7 @@ describe('HTMLMetadata', () => { }, ]; - for (let source of sources) { + for (const source of sources) { const metadata = testDocument.getDocumentMetadata(); assert.equal(metadata.title, source.value); diff --git a/src/annotator/integrations/test/html-test.js b/src/annotator/integrations/test/html-test.js index a623de0ae3e..df66000dbb0 100644 --- a/src/annotator/integrations/test/html-test.js +++ b/src/annotator/integrations/test/html-test.js @@ -182,7 +182,7 @@ describe('HTMLIntegration', () => { const listeners = features.on.args; integration.destroy(); - for (let [event, callback] of listeners) { + for (const [event, callback] of listeners) { assert.calledWith(features.off, event, callback); } }); diff --git a/src/annotator/integrations/test/image-text-layer-test.js b/src/annotator/integrations/test/image-text-layer-test.js index 6becb69b299..be3520198d5 100644 --- a/src/annotator/integrations/test/image-text-layer-test.js +++ b/src/annotator/integrations/test/image-text-layer-test.js @@ -299,7 +299,7 @@ describe('ImageTextLayer', () => { const tolerance = 0.01; assert.equal(originalBoxes.length, newBoxes.length); - for (let [i, originalBox] of originalBoxes.entries()) { + for (const [i, originalBox] of originalBoxes.entries()) { const newBox = newBoxes[i]; const leftGap = originalBox.left - imageBox.left; diff --git a/src/annotator/integrations/test/vitalsource-test.js b/src/annotator/integrations/test/vitalsource-test.js index 56c9fdb9e4a..6183a949826 100644 --- a/src/annotator/integrations/test/vitalsource-test.js +++ b/src/annotator/integrations/test/vitalsource-test.js @@ -379,7 +379,7 @@ describe('annotator/integrations/vitalsource', () => { const events = ['mouseup', 'mousedown', 'mouseout']; - for (let eventName of events) { + for (const eventName of events) { const listener = sinon.stub(); document.addEventListener(eventName, listener); diff --git a/src/annotator/test/annotation-counts-test.js b/src/annotator/test/annotation-counts-test.js index 1e7e20d41f0..da1d566f954 100644 --- a/src/annotator/test/annotation-counts-test.js +++ b/src/annotator/test/annotation-counts-test.js @@ -34,7 +34,6 @@ describe('annotationCounts', () => { describe('listen for "publicAnnotationCountChanged" event', () => { const emitEvent = function () { - let crossFrameArgs; let evt; let fn; @@ -42,7 +41,7 @@ describe('annotationCounts', () => { const args = 2 <= arguments.length ? Array.prototype.slice.call(arguments, 1) : []; - crossFrameArgs = fakeCrossFrame.on.args; + const crossFrameArgs = fakeCrossFrame.on.args; for (let i = 0, len = crossFrameArgs.length; i < len; i++) { evt = crossFrameArgs[i][0]; fn = crossFrameArgs[i][1]; diff --git a/src/annotator/test/guest-test.js b/src/annotator/test/guest-test.js index 1323f72b408..de514e78609 100644 --- a/src/annotator/test/guest-test.js +++ b/src/annotator/test/guest-test.js @@ -79,7 +79,7 @@ describe('Guest', () => { }; const emitSidebarEvent = (event, ...args) => { - for (let [evt, fn] of sidebarRPC().on.args) { + for (const [evt, fn] of sidebarRPC().on.args) { if (event === evt) { fn(...args); } diff --git a/src/annotator/test/highlighter-test.js b/src/annotator/test/highlighter-test.js index 1ed28266062..1998b5a705a 100644 --- a/src/annotator/test/highlighter-test.js +++ b/src/annotator/test/highlighter-test.js @@ -408,7 +408,7 @@ describe('annotator/highlighter', () => { * Returns all the highlight elements. */ function createHighlights(root, cssClass = '') { - let highlights = []; + const highlights = []; for (let i = 0; i < 3; i++) { const span = document.createElement('span'); diff --git a/src/annotator/test/sidebar-test.js b/src/annotator/test/sidebar-test.js index fb985d5a5e1..57fcdeda701 100644 --- a/src/annotator/test/sidebar-test.js +++ b/src/annotator/test/sidebar-test.js @@ -52,7 +52,7 @@ describe('Sidebar', () => { const emitNthGuestEvent = (index = 1, event, ...args) => { const result = []; - for (let [evt, fn] of guestRPC(index).on.args) { + for (const [evt, fn] of guestRPC(index).on.args) { if (event === evt) { result.push(fn(...args)); } @@ -66,7 +66,7 @@ describe('Sidebar', () => { const emitSidebarEvent = (event, ...args) => { const result = []; - for (let [evt, fn] of sidebarRPC().on.args) { + for (const [evt, fn] of sidebarRPC().on.args) { if (event === evt) { result.push(fn(...args)); } diff --git a/src/annotator/util/test/normalize-test.js b/src/annotator/util/test/normalize-test.js index 4c0843b8b9a..e84b87832be 100644 --- a/src/annotator/util/test/normalize-test.js +++ b/src/annotator/util/test/normalize-test.js @@ -117,7 +117,7 @@ describe('annotator/util/normalize', () => { const end = start + 'bar'.length; const outStrs = ['', 'foo b', 'fooba']; - for (let outStr of outStrs) { + for (const outStr of outStrs) { const [outStart, outEnd] = translateOffsets( inStr, outStr, diff --git a/src/annotator/util/test/preact-container-test.js b/src/annotator/util/test/preact-container-test.js index 2e6edf2ccad..b44deed1fc2 100644 --- a/src/annotator/util/test/preact-container-test.js +++ b/src/annotator/util/test/preact-container-test.js @@ -44,7 +44,7 @@ describe('PreactContainer', () => { }); it('should unmount and remove element when `destroy` is called', () => { - let label = 'foo'; + const label = 'foo'; const container = new PreactContainer('widget', () => ( )); diff --git a/src/boot/test/boot-test.js b/src/boot/test/boot-test.js index 3aeac328d7f..383c6affdb2 100644 --- a/src/boot/test/boot-test.js +++ b/src/boot/test/boot-test.js @@ -40,7 +40,7 @@ describe('bootstrap', () => { return manifest; }, {}); - let extraSettings = {}; + const extraSettings = {}; let bootApp; if (app === 'annotator') { bootApp = bootHypothesisClient; diff --git a/src/shared/messaging/test/port-finder-test.js b/src/shared/messaging/test/port-finder-test.js index 5a42f8b7fe1..a022aec0384 100644 --- a/src/shared/messaging/test/port-finder-test.js +++ b/src/shared/messaging/test/port-finder-test.js @@ -11,8 +11,6 @@ import { const requestId = 'abcdef'; describe('PortFinder', () => { - let fakeGenerateHexString; - const frame1 = 'guest'; const type = 'offer'; let portFinder; @@ -36,7 +34,7 @@ describe('PortFinder', () => { } // Generate predictable IDs for port requests - fakeGenerateHexString = sinon.stub().returns(requestId); + const fakeGenerateHexString = sinon.stub().returns(requestId); beforeEach(() => { portFinders = []; diff --git a/src/sidebar/components/hooks/test/use-filter-options-test.js b/src/sidebar/components/hooks/test/use-filter-options-test.js index e77a4dcc82f..ac61e9f3b3a 100644 --- a/src/sidebar/components/hooks/test/use-filter-options-test.js +++ b/src/sidebar/components/hooks/test/use-filter-options-test.js @@ -9,10 +9,10 @@ describe('sidebar/components/hooks/use-user-filter-options', () => { let lastUserOptions; // Mock `annotationDisplayName` as if it's returning display names - let fakeAnnotationUserDisplay = annotation => + const fakeAnnotationUserDisplay = annotation => annotation.user_info.display_name; // Mock `annotationDisplayName` as if it's returning usernames - let fakeAnnotationUserUsername = annotation => annotation.user; + const fakeAnnotationUserUsername = annotation => annotation.user; // Mount a dummy component to be able to use the hook function DummyComponent() { diff --git a/src/sidebar/components/test/MarkdownEditor-test.js b/src/sidebar/components/test/MarkdownEditor-test.js index c31348bc53e..d7940f5d6ec 100644 --- a/src/sidebar/components/test/MarkdownEditor-test.js +++ b/src/sidebar/components/test/MarkdownEditor-test.js @@ -319,7 +319,7 @@ describe('MarkdownEditor', () => { .simulate('keydown', { key }); function testArrowKeySequence(buttons) { - for (let button of buttons) { + for (const button of buttons) { pressKey('ArrowRight'); const label = document.activeElement.getAttribute('title') || diff --git a/src/sidebar/components/test/MenuItem-test.js b/src/sidebar/components/test/MenuItem-test.js index e7c8d11443c..f63197a158f 100644 --- a/src/sidebar/components/test/MenuItem-test.js +++ b/src/sidebar/components/test/MenuItem-test.js @@ -11,7 +11,7 @@ import MenuItem, { $imports } from '../MenuItem'; describe('MenuItem', () => { let containers = []; const createMenuItem = props => { - let newContainer = document.createElement('div'); + const newContainer = document.createElement('div'); containers.push(newContainer); document.body.appendChild(newContainer); return mount(, { diff --git a/src/sidebar/components/test/MenuKeyboardNavigation-test.js b/src/sidebar/components/test/MenuKeyboardNavigation-test.js index 640d055b53d..205254e154d 100644 --- a/src/sidebar/components/test/MenuKeyboardNavigation-test.js +++ b/src/sidebar/components/test/MenuKeyboardNavigation-test.js @@ -12,7 +12,7 @@ describe('MenuKeyboardNavigation', () => { let containers = []; const createMenuItem = props => { - let newContainer = document.createElement('div'); + const newContainer = document.createElement('div'); containers.push(newContainer); document.body.appendChild(newContainer); return mount( diff --git a/src/sidebar/components/test/TagEditor-test.js b/src/sidebar/components/test/TagEditor-test.js index 9d089a3a7dc..82c60fcfa9f 100644 --- a/src/sidebar/components/test/TagEditor-test.js +++ b/src/sidebar/components/test/TagEditor-test.js @@ -11,7 +11,7 @@ import { $imports } from '../TagEditor'; describe('TagEditor', () => { let containers = []; - let fakeTags = ['tag1', 'tag2']; + const fakeTags = ['tag1', 'tag2']; let fakeTagsService; let fakeServiceUrl; let fakeOnAddTag; @@ -21,7 +21,7 @@ describe('TagEditor', () => { function createComponent(props) { // Use an array of containers so we can test more // than one component at a time. - let newContainer = document.createElement('div'); + const newContainer = document.createElement('div'); containers.push(newContainer); document.body.appendChild(newContainer); return mount( diff --git a/src/sidebar/helpers/test/query-parser-test.js b/src/sidebar/helpers/test/query-parser-test.js index 2ec99856864..41f3d681c38 100644 --- a/src/sidebar/helpers/test/query-parser-test.js +++ b/src/sidebar/helpers/test/query-parser-test.js @@ -17,7 +17,7 @@ describe('sidebar/helpers/query-parser', () => { assert.isFalse(isEmptyFilter(parseHypothesisSearchQuery('some query'))); // Now check various queries which should produce empty filters - for (let emptyQuery of ['', '""', "''", ' ']) { + for (const emptyQuery of ['', '""', "''", ' ']) { const result = parseHypothesisSearchQuery(emptyQuery); assert.isTrue( isEmptyFilter(result), diff --git a/src/sidebar/services/test/load-annotations-test.js b/src/sidebar/services/test/load-annotations-test.js index a0c361885dc..a91b69f8b92 100644 --- a/src/sidebar/services/test/load-annotations-test.js +++ b/src/sidebar/services/test/load-annotations-test.js @@ -383,7 +383,7 @@ describe('LoadAnnotationsService', () => { }); describe('#loadThread', () => { - let threadAnnotations = [ + const threadAnnotations = [ { id: 'parent_annotation_1' }, { id: 'parent_annotation_2', references: ['parent_annotation_1'] }, { diff --git a/src/sidebar/store/modules/test/filters-test.js b/src/sidebar/store/modules/test/filters-test.js index 6807afc1e52..fa80781cf73 100644 --- a/src/sidebar/store/modules/test/filters-test.js +++ b/src/sidebar/store/modules/test/filters-test.js @@ -4,7 +4,7 @@ import { selectionModule } from '../selection'; describe('sidebar/store/modules/filters', () => { let store; - let fakeSettings = [{}, {}]; + const fakeSettings = [{}, {}]; const getFiltersState = () => { return store.getState().filters; diff --git a/src/sidebar/store/modules/test/groups-test.js b/src/sidebar/store/modules/test/groups-test.js index c2aa9340771..62775c023f0 100644 --- a/src/sidebar/store/modules/test/groups-test.js +++ b/src/sidebar/store/modules/test/groups-test.js @@ -58,7 +58,7 @@ describe('sidebar/store/modules/groups', () => { }; let allGroups = []; - for (let groups of Object.values(allLists)) { + for (const groups of Object.values(allLists)) { allGroups = allGroups.concat(groups); } diff --git a/src/sidebar/store/modules/test/real-time-updates-test.js b/src/sidebar/store/modules/test/real-time-updates-test.js index 8baa89428bf..c1c0da2ba0c 100644 --- a/src/sidebar/store/modules/test/real-time-updates-test.js +++ b/src/sidebar/store/modules/test/real-time-updates-test.js @@ -11,7 +11,7 @@ describe('sidebar/store/modules/real-time-updates', () => { let fakeAnnotationExists; let fakeFocusedGroupId; let fakeRoute; - let fakeSettings = {}; + const fakeSettings = {}; let store; beforeEach(() => { diff --git a/src/sidebar/store/modules/test/selection-test.js b/src/sidebar/store/modules/test/selection-test.js index 604e563dbb0..960ab336a57 100644 --- a/src/sidebar/store/modules/test/selection-test.js +++ b/src/sidebar/store/modules/test/selection-test.js @@ -7,7 +7,7 @@ import { selectionModule } from '../selection'; describe('sidebar/store/modules/selection', () => { let store; - let fakeSettings = [{}, {}]; + const fakeSettings = [{}, {}]; const getSelectionState = () => { return store.getState().selection; diff --git a/src/sidebar/store/test/util-test.js b/src/sidebar/store/test/util-test.js index 5f7a1177f85..fd3205e1f29 100644 --- a/src/sidebar/store/test/util-test.js +++ b/src/sidebar/store/test/util-test.js @@ -42,11 +42,10 @@ describe('sidebar/store/util', () => { }); it('should wait for awaitStateChange to return a non-null value', () => { - let valPromise; const expected = 5; store.setState({ val: 2 }); - valPromise = awaitStateChange(store, getValWhenGreaterThanTwo); + const valPromise = awaitStateChange(store, getValWhenGreaterThanTwo); store.setState({ val: 5 }); return valPromise.then(actual => { diff --git a/src/sidebar/test/cross-origin-rpc-test.js b/src/sidebar/test/cross-origin-rpc-test.js index d8b24388328..4ec6cbf40d5 100644 --- a/src/sidebar/test/cross-origin-rpc-test.js +++ b/src/sidebar/test/cross-origin-rpc-test.js @@ -250,7 +250,7 @@ describe('sidebar/cross-origin-rpc', () => { it("responds with an error if there's no method", () => { startServer(fakeStore, settings, fakeWindow); - let jsonRpcRequest = { jsonrpc: '2.0', id: 42 }; // No "method" member. + const jsonRpcRequest = { jsonrpc: '2.0', id: 42 }; // No "method" member. fakeWindow.emitter.emit('message', { origin: 'https://allowed1.com', diff --git a/yarn.lock b/yarn.lock index e5c3f2dfd8f..014e7d3bdfb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4552,15 +4552,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.9.0": - version: 8.9.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.9.0" +"@typescript-eslint/eslint-plugin@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.10.0" dependencies: "@eslint-community/regexpp": ^4.10.0 - "@typescript-eslint/scope-manager": 8.9.0 - "@typescript-eslint/type-utils": 8.9.0 - "@typescript-eslint/utils": 8.9.0 - "@typescript-eslint/visitor-keys": 8.9.0 + "@typescript-eslint/scope-manager": 8.10.0 + "@typescript-eslint/type-utils": 8.10.0 + "@typescript-eslint/utils": 8.10.0 + "@typescript-eslint/visitor-keys": 8.10.0 graphemer: ^1.4.0 ignore: ^5.3.1 natural-compare: ^1.4.0 @@ -4571,66 +4571,66 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: d72bda52eb26d184286e67ceaebff17d177bf021cfcf1c31d316385f4965c60620fd3ec7178c30092faa3f30d81c4cf54ef2563c4bb0fd361e9967d2e6e64d22 + checksum: 2bb311eb9a882d530fc94f790f3e1f4745cd4e3523fd8d62ee0ed14d65c4230dc0c797c490c3421c1456fd71349e9bfa146c0b78f63860b75aae6e2a32a6c27c languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.9.0": - version: 8.9.0 - resolution: "@typescript-eslint/parser@npm:8.9.0" +"@typescript-eslint/parser@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/parser@npm:8.10.0" dependencies: - "@typescript-eslint/scope-manager": 8.9.0 - "@typescript-eslint/types": 8.9.0 - "@typescript-eslint/typescript-estree": 8.9.0 - "@typescript-eslint/visitor-keys": 8.9.0 + "@typescript-eslint/scope-manager": 8.10.0 + "@typescript-eslint/types": 8.10.0 + "@typescript-eslint/typescript-estree": 8.10.0 + "@typescript-eslint/visitor-keys": 8.10.0 debug: ^4.3.4 peerDependencies: eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: b7d899cca2834ab030c672693e9bdbc442b8026710af0e06cb89c162d81c43a5c777f90568cd9ea3ac5b689bbf161c8f7fcecd58989e0238bb45aec10567c26a + checksum: 2e38f34d9d044e251450116cc081a8f84ba13183e9c3e1dda919ddc00eebe634a37d4dfd785998f259b64cdd770e863ecc6c5cf7c8f422baf3d2bc2a0f9241cf languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.9.0": - version: 8.9.0 - resolution: "@typescript-eslint/scope-manager@npm:8.9.0" +"@typescript-eslint/scope-manager@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/scope-manager@npm:8.10.0" dependencies: - "@typescript-eslint/types": 8.9.0 - "@typescript-eslint/visitor-keys": 8.9.0 - checksum: 56b71993f3b8da3fe6947710d1ead8afb128d194994e0d82052799c2b05a017735649d4dcf897d2ea63b28c8633336342d3efd269c2910d6d06e2784f248a22c + "@typescript-eslint/types": 8.10.0 + "@typescript-eslint/visitor-keys": 8.10.0 + checksum: 3df8df342e227b80514dcc9151774dea9a71bc649204f702d5b4a1b76a54b4814c5d5a970a6a9213462dd4df0d42342796fab35549e8663d4c0e5d84bd902bba languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.9.0": - version: 8.9.0 - resolution: "@typescript-eslint/type-utils@npm:8.9.0" +"@typescript-eslint/type-utils@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/type-utils@npm:8.10.0" dependencies: - "@typescript-eslint/typescript-estree": 8.9.0 - "@typescript-eslint/utils": 8.9.0 + "@typescript-eslint/typescript-estree": 8.10.0 + "@typescript-eslint/utils": 8.10.0 debug: ^4.3.4 ts-api-utils: ^1.3.0 peerDependenciesMeta: typescript: optional: true - checksum: e4422ad2da0e73c1d503fd5cc72f873b20329c4fa55e4a88f201b7d02a6946b08a62d3a2ce53f6020d52db76c321b927b8e06a68e44b2a4f50b26967c75a27ff + checksum: 8b0cec8cff1926a08c2bd675b24b2ccff36e59a8d9169eed38343f70c4e3bba18796fc39f30a9307ded3f345881aded80dbd6dc1d78b9ae76cff04fbe8708788 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.9.0": - version: 8.9.0 - resolution: "@typescript-eslint/types@npm:8.9.0" - checksum: bb79e8774b2c521d738d76efe6c61f5aa7f700765cf025410a5c37ca0449ed436c500a5c8cd3a4343edd5257301d4b0cfcd56275cc9bca992585e9dac76612bf +"@typescript-eslint/types@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/types@npm:8.10.0" + checksum: 3839fd43b0f21b432a9f6090a39d5b2254ee48c1eecf14f8f66bea0cbaba9f2f33a7fc78aea37dfe8841442332d0a8f99cc65cd2d01ca43db99550d30d6f7fe8 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.9.0": - version: 8.9.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.9.0" +"@typescript-eslint/typescript-estree@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.10.0" dependencies: - "@typescript-eslint/types": 8.9.0 - "@typescript-eslint/visitor-keys": 8.9.0 + "@typescript-eslint/types": 8.10.0 + "@typescript-eslint/visitor-keys": 8.10.0 debug: ^4.3.4 fast-glob: ^3.3.2 is-glob: ^4.0.3 @@ -4640,31 +4640,31 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 307b317c2ac45b83cbf2e5f45b6fd3615279c7ad8b105fa09004d6e415187d9ad1647ec205fcee017fdf2985192c469f9bad738f70cc754da4ba807d8d0d90ae + checksum: 3fc774f51d0a891a5e09bc77f5544b6aa268abec9c01cd9ec831f92dde9c9d61a5c818ca2800c124fb5d61d40ce7ac34740b347c21ba3493e756c052084afd65 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.9.0": - version: 8.9.0 - resolution: "@typescript-eslint/utils@npm:8.9.0" +"@typescript-eslint/utils@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/utils@npm:8.10.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 - "@typescript-eslint/scope-manager": 8.9.0 - "@typescript-eslint/types": 8.9.0 - "@typescript-eslint/typescript-estree": 8.9.0 + "@typescript-eslint/scope-manager": 8.10.0 + "@typescript-eslint/types": 8.10.0 + "@typescript-eslint/typescript-estree": 8.10.0 peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: 23bb2a054fcad2e5a3bb2ab9173614b2257f42a5a704434de3d81e478ca5444f1989e317a8044d6e39ef000a938316c7bc175286d595e17933e35e573a430f4c + checksum: db67603baacba9cccbbc625801a44e5320bc558be846646ff9962818c64a9ab07edcfdcad98b15a3f8954d3e398e3a41f085c1ec458f7169a1ce7b3674032d59 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.9.0": - version: 8.9.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.9.0" +"@typescript-eslint/visitor-keys@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.10.0" dependencies: - "@typescript-eslint/types": 8.9.0 + "@typescript-eslint/types": 8.10.0 eslint-visitor-keys: ^3.4.3 - checksum: 9afb7eabfc6d279e714b80e283e062f0c2a90e2adbde1c2d2fbc6cecd6444c6e76867599f6a781b847981d02f7956748bd3ecb7abc4770ab7e77c6709693b530 + checksum: 0b3060a036dd3b6acacc32b1d81b3ada1ac5523cc2d16a369ecffd3ab5b389cd98802b248bf65ee8a266a166125a9e38acd7e917d4dd26044bdf2c805537b7e3 languageName: node linkType: hard @@ -7116,14 +7116,26 @@ __metadata: languageName: node linkType: hard -"eslint-config-hypothesis@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-config-hypothesis@npm:3.0.0" +"eslint-config-hypothesis@npm:^3.1.0": + version: 3.1.0 + resolution: "eslint-config-hypothesis@npm:3.1.0" peerDependencies: + eslint-plugin-jsx-a11y: ">=6.10.0" eslint-plugin-mocha: ">=10.4.0" eslint-plugin-react: ">=7.34.0" eslint-plugin-react-hooks: ">=5.0.0" - checksum: 1194156f2d043ed866afe9ccd88d7364cdf8635cb9d762d24beffb03ee02a25d44081b58d95c5b1a658e686053948d8b2493e65f4de540e14d72ae83c35c31fe + globals: ">=15.11.0" + typescript-eslint: ">=8.10.0" + peerDependenciesMeta: + eslint-plugin-jsx-a11y: + optional: true + eslint-plugin-react: + optional: true + eslint-plugin-react-hooks: + optional: true + typescript-eslint: + optional: true + checksum: 12e17da643a306fec1c8121bf5f172f2132f816d85b2b6f626dc16d353f5cbac8bee0cce080a9df829c5eab3e4bcc007bb611ec6f5d9deebd627e530802c05f6 languageName: node linkType: hard @@ -8746,7 +8758,7 @@ __metadata: escape-html: ^1.0.3 escape-string-regexp: ^4.0.0 eslint: ^9.12.0 - eslint-config-hypothesis: ^3.0.0 + eslint-config-hypothesis: ^3.1.0 eslint-plugin-jsx-a11y: ^6.10.0 eslint-plugin-mocha: ^10.5.0 eslint-plugin-react: ^7.37.1 @@ -8789,7 +8801,7 @@ __metadata: tailwindcss: ^3.0.2 tiny-emitter: ^2.0.2 typescript: ^5.0.2 - typescript-eslint: ^8.9.0 + typescript-eslint: ^8.10.0 wrap-text: ^1.0.7 languageName: unknown linkType: soft @@ -13881,17 +13893,17 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:^8.9.0": - version: 8.9.0 - resolution: "typescript-eslint@npm:8.9.0" +"typescript-eslint@npm:^8.10.0": + version: 8.10.0 + resolution: "typescript-eslint@npm:8.10.0" dependencies: - "@typescript-eslint/eslint-plugin": 8.9.0 - "@typescript-eslint/parser": 8.9.0 - "@typescript-eslint/utils": 8.9.0 + "@typescript-eslint/eslint-plugin": 8.10.0 + "@typescript-eslint/parser": 8.10.0 + "@typescript-eslint/utils": 8.10.0 peerDependenciesMeta: typescript: optional: true - checksum: 6c54e7360e51fdbf1bc0d00f592949bb72e9c85d1b93145e9e7ad4e8259bf11784ebe035210c8f0a29e4f137ad268e22714d09bf82db1917258626d526a117a9 + checksum: cf0ead50af444a887097f2ed6cf854c318082e5cebde92c218b7616086b844af0a8e80e8b9e946de7f582ed8ed96934c91d27a816130611217c1e9d34d59f20d languageName: node linkType: hard