From 095f3b81f01c7c8cb22db8564d703ca0b64de879 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 14:15:14 +0200 Subject: [PATCH 01/35] Lint to prevent floating promises --- .eslintrc.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.eslintrc.json b/.eslintrc.json index a49dab1723..84e81e9f02 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -37,6 +37,7 @@ } } ], + "@typescript-eslint/no-floating-promises": "error", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/no-non-null-assertion": "off", From b3fc5dc10a4f375ee7018b431544642b6c1fb102 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 14:19:33 +0200 Subject: [PATCH 02/35] enable project --- .eslintrc.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index 84e81e9f02..20ca3d90c3 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -9,7 +9,8 @@ ], "parserOptions": { "ecmaVersion": 6, - "sourceType": "module" + "sourceType": "module", + "project": true }, "plugins": [ "@typescript-eslint", From 29c818078709d537e5972471c29bc6c14605e4a6 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 14:27:08 +0200 Subject: [PATCH 03/35] added void --- .eslintrc.json | 3 ++- packages/cursorless-engine/src/cursorlessEngine.ts | 2 +- .../src/languages/LanguageDefinitions.ts | 6 +++--- .../src/ide/vscode/VscodeFlashHandler.ts | 2 +- .../src/keyboard/KeyboardCommandsModal.ts | 14 ++++++++------ .../src/keyboard/KeyboardCommandsModalLayer.ts | 12 ++++++++---- .../src/scripts/initLaunchSandbox.ts | 2 +- .../src/scripts/preprocessSvgHats.ts | 2 +- packages/test-harness/src/scripts/runTestsCI.ts | 2 +- .../test-harness/src/scripts/runUnitTestsOnly.ts | 2 +- 10 files changed, 27 insertions(+), 20 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 20ca3d90c3..ea8b018edb 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -102,6 +102,7 @@ "**/vendor/**/*.ts", "**/vendor/**/*.js", "**/out/**", - "**/generated/**" + "**/generated/**", + "**/typings/**" ] } diff --git a/packages/cursorless-engine/src/cursorlessEngine.ts b/packages/cursorless-engine/src/cursorlessEngine.ts index 34738b3c5c..f578a0ca20 100644 --- a/packages/cursorless-engine/src/cursorlessEngine.ts +++ b/packages/cursorless-engine/src/cursorlessEngine.ts @@ -55,7 +55,7 @@ export async function createCursorlessEngine( hats, commandServerApi, ); - hatTokenMap.allocateHats(); + void hatTokenMap.allocateHats(); const storedTargets = new StoredTargetMap(); diff --git a/packages/cursorless-engine/src/languages/LanguageDefinitions.ts b/packages/cursorless-engine/src/languages/LanguageDefinitions.ts index 4a205950b9..8faf004804 100644 --- a/packages/cursorless-engine/src/languages/LanguageDefinitions.ts +++ b/packages/cursorless-engine/src/languages/LanguageDefinitions.ts @@ -50,7 +50,7 @@ export class LanguageDefinitions { private treeSitter: TreeSitter, ) { ide().onDidOpenTextDocument((document) => { - this.loadLanguage(document.languageId); + void this.loadLanguage(document.languageId); }); ide().onDidChangeVisibleTextEditors((editors) => { editors.forEach(({ document }) => this.loadLanguage(document.languageId)); @@ -66,7 +66,7 @@ export class LanguageDefinitions { if (ide().runMode === "development") { this.disposables.push( fileSystem.watchDir(this.queryDir, () => { - this.reloadLanguageDefinitions(); + void this.reloadLanguageDefinitions(); }), ); } @@ -86,7 +86,7 @@ export class LanguageDefinitions { languageIds.map((languageId) => this.loadLanguage(languageId)), ); } catch (err) { - showError( + void showError( ide().messages, "Failed to load language definitions", toString(err), diff --git a/packages/cursorless-vscode/src/ide/vscode/VscodeFlashHandler.ts b/packages/cursorless-vscode/src/ide/vscode/VscodeFlashHandler.ts index 2a579a5b13..700003abf2 100644 --- a/packages/cursorless-vscode/src/ide/vscode/VscodeFlashHandler.ts +++ b/packages/cursorless-vscode/src/ide/vscode/VscodeFlashHandler.ts @@ -43,7 +43,7 @@ export default class VscodeFlashHandler { const ranges = (editorRangeMap.get(editor.id) ?? []).map( ({ range }) => range, ); - this.highlights.setHighlightRanges(style, editor, ranges); + void this.highlights.setHighlightRanges(style, editor, ranges); }); } } diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModal.ts b/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModal.ts index 5eda2dc700..a227a6b171 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModal.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModal.ts @@ -63,8 +63,8 @@ export default class KeyboardCommandsModal { ) ) { if (this.isModeOn()) { - this.modeOff(); - this.modeOn(); + void this.modeOff(); + void this.modeOn(); } this.layerCache.clear(); this.processKeyMap(); @@ -184,10 +184,12 @@ export default class KeyboardCommandsModal { const [{ type, arg }] = this.parser.results; // Run the command - this.keyboardCommandHandler[type as keyof KeyboardCommandHandler](arg); + void this.keyboardCommandHandler[type as keyof KeyboardCommandHandler]( + arg, + ); } catch (err) { if (!(err instanceof KeySequenceCancelledError)) { - vscode.window.showErrorMessage((err as Error).message); + void vscode.window.showErrorMessage((err as Error).message); throw err; } } finally { @@ -210,9 +212,9 @@ export default class KeyboardCommandsModal { modeToggle = () => { if (this.isModeOn()) { - this.modeOff(); + void this.modeOff(); } else { - this.modeOn(); + void this.modeOn(); } }; diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModalLayer.ts b/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModalLayer.ts index c6fbb87e98..d68e41eabd 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModalLayer.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModalLayer.ts @@ -24,7 +24,9 @@ export class KeyboardCommandsModalLayer { ) { this.handleInput = this.handleInput.bind(this); if (entries.length === 0) { - vscode.window.showErrorMessage("No keybindings found for current layer"); + void vscode.window.showErrorMessage( + "No keybindings found for current layer", + ); } const { trie, conflicts } = buildSuffixTrie(entries); @@ -32,7 +34,9 @@ export class KeyboardCommandsModalLayer { const conflictStr = conflict .map(({ key, value: { type } }) => `\`${type}.${key}\``) .join(" and "); - vscode.window.showErrorMessage(`Conflicting keybindings: ${conflictStr}`); + void vscode.window.showErrorMessage( + `Conflicting keybindings: ${conflictStr}`, + ); } this.trie = trie; @@ -50,7 +54,7 @@ export class KeyboardCommandsModalLayer { // If we haven't consumed any input yet, then it means the first // character was a false start so we should cancel the whole thing. const errorMessage = `Invalid key '${text}'`; - vscode.window.showErrorMessage(errorMessage); + void vscode.window.showErrorMessage(errorMessage); throw Error(errorMessage); } } @@ -74,7 +78,7 @@ export class KeyboardCommandsModalLayer { const possibleNextValues = this.trie.search(possibleNextSequence); if (possibleNextValues.length === 0) { const errorMessage = `Invalid key '${nextKey}'`; - vscode.window.showErrorMessage(errorMessage); + void vscode.window.showErrorMessage(errorMessage); continue; } diff --git a/packages/cursorless-vscode/src/scripts/initLaunchSandbox.ts b/packages/cursorless-vscode/src/scripts/initLaunchSandbox.ts index db5f7591d3..c6fd5066da 100644 --- a/packages/cursorless-vscode/src/scripts/initLaunchSandbox.ts +++ b/packages/cursorless-vscode/src/scripts/initLaunchSandbox.ts @@ -44,4 +44,4 @@ async function main() { } } -main(); +void main(); diff --git a/packages/cursorless-vscode/src/scripts/preprocessSvgHats.ts b/packages/cursorless-vscode/src/scripts/preprocessSvgHats.ts index 4b45862332..565534888c 100644 --- a/packages/cursorless-vscode/src/scripts/preprocessSvgHats.ts +++ b/packages/cursorless-vscode/src/scripts/preprocessSvgHats.ts @@ -41,4 +41,4 @@ async function main() { } } -main(); +void main(); diff --git a/packages/test-harness/src/scripts/runTestsCI.ts b/packages/test-harness/src/scripts/runTestsCI.ts index 53430abd13..d35cf46564 100644 --- a/packages/test-harness/src/scripts/runTestsCI.ts +++ b/packages/test-harness/src/scripts/runTestsCI.ts @@ -6,7 +6,7 @@ import { getCursorlessRepoRoot } from "@cursorless/common"; import * as path from "pathe"; import { launchVscodeAndRunTests } from "../launchVscodeAndRunTests"; -(async () => { +void (async () => { // Note that we run all extension tests, including unit tests, in VSCode, even though // unit tests could be run separately. const extensionTestsPath = path.resolve( diff --git a/packages/test-harness/src/scripts/runUnitTestsOnly.ts b/packages/test-harness/src/scripts/runUnitTestsOnly.ts index c903a2b0d0..0df79f4109 100644 --- a/packages/test-harness/src/scripts/runUnitTestsOnly.ts +++ b/packages/test-harness/src/scripts/runUnitTestsOnly.ts @@ -3,4 +3,4 @@ */ import { TestType, runAllTests } from "../runAllTests"; -runAllTests(TestType.unit); +void runAllTests(TestType.unit); From 9f06d3fa9dcabeb00c1d375f04af37763556c6f9 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 14:30:31 +0200 Subject: [PATCH 04/35] Exclude playground --- .eslintrc.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index ea8b018edb..4c1604d055 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -99,10 +99,11 @@ } }, "ignorePatterns": [ + "/typings/**", + "/data/playground/**", "**/vendor/**/*.ts", "**/vendor/**/*.js", "**/out/**", - "**/generated/**", - "**/typings/**" + "**/generated/**" ] } From 42165d01bc7c32d94ce5a601770e2b311461ba1f Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 14:30:59 +0200 Subject: [PATCH 05/35] Added void --- packages/cursorless-vscode/src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cursorless-vscode/src/extension.ts b/packages/cursorless-vscode/src/extension.ts index 21290562fd..388c59c375 100644 --- a/packages/cursorless-vscode/src/extension.ts +++ b/packages/cursorless-vscode/src/extension.ts @@ -163,7 +163,7 @@ export async function activate( storedTargets, ); - new ReleaseNotes(vscodeApi, context, normalizedIde.messages).maybeShow(); + void new ReleaseNotes(vscodeApi, context, normalizedIde.messages).maybeShow(); return { testHelpers: isTesting() From 4e5c7f7d4500a79af8bf3f2d818f86b0826c051a Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 14:33:32 +0200 Subject: [PATCH 06/35] More void --- .eslintrc.json | 2 +- packages/cursorless-vscode/src/logQuickActions.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 4c1604d055..c7857f0de3 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,6 +4,7 @@ "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", "plugin:import/typescript", "prettier" ], @@ -38,7 +39,6 @@ } } ], - "@typescript-eslint/no-floating-promises": "error", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/no-non-null-assertion": "off", diff --git a/packages/cursorless-vscode/src/logQuickActions.ts b/packages/cursorless-vscode/src/logQuickActions.ts index cbd4f2afd3..3cb4842d08 100644 --- a/packages/cursorless-vscode/src/logQuickActions.ts +++ b/packages/cursorless-vscode/src/logQuickActions.ts @@ -12,7 +12,7 @@ export async function logQuickActions(kind?: string) { const editor = window.activeTextEditor; if (editor == null) { - window.showErrorMessage("No active editor"); + void window.showErrorMessage("No active editor"); return; } @@ -33,7 +33,7 @@ export async function logQuickActions(kind?: string) { console.log(`${JSON.stringify(availableCodeAction, null, 2)}`); }); - window.showInformationMessage( + void window.showInformationMessage( "Run command 'Developer: Toggle Developer Tools' to see available code actions", ); From d3371037ef7ec66ae16a624432a8ce1bdf708369 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Fri, 12 Jul 2024 12:35:27 +0000 Subject: [PATCH 07/35] [pre-commit.ci lite] apply automatic fixes --- packages/common/src/types/command/command.types.ts | 2 +- packages/common/src/util/splitKey.ts | 2 +- packages/common/src/util/uniqWithHash.ts | 4 ++-- packages/cursorless-engine/src/actions/InsertCopy.ts | 2 +- packages/cursorless-engine/src/actions/Replace.ts | 4 ++-- .../commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts | 6 ++---- .../src/customCommandGrammar/parseCommand.ts | 2 +- .../languages/TreeSitterQuery/validateQueryCaptures.ts | 2 +- .../cursorless-engine/src/languages/getNodeMatcher.ts | 4 ++-- .../scopeHandlers/WordScopeHandler/WordScopeHandler.ts | 2 +- .../findDelimiterPairContainingSelection.ts | 4 ++-- packages/cursorless-engine/src/snippets/snippet.ts | 2 +- .../cursorless-engine/src/testCaseRecorder/TestCase.ts | 4 ++-- .../src/testCaseRecorder/TestCaseRecorder.ts | 4 ++-- packages/cursorless-engine/src/util/targetUtils.ts | 2 +- .../src/suite/instanceAcrossSplit.vscode.test.ts | 8 ++++---- .../src/suite/serializeTargetRange.ts | 2 +- .../cursorless-vscode/src/ide/vscode/VscodeOpenLink.ts | 4 ++-- .../src/ide/vscode/hats/VscodeHatRenderer.ts | 2 +- .../cursorless-vscode/src/keyboard/KeyboardActionType.ts | 2 +- packages/cursorless-vscode/src/usingSetting.ts | 2 +- 21 files changed, 32 insertions(+), 34 deletions(-) diff --git a/packages/common/src/types/command/command.types.ts b/packages/common/src/types/command/command.types.ts index dbdd091adf..baf934734f 100644 --- a/packages/common/src/types/command/command.types.ts +++ b/packages/common/src/types/command/command.types.ts @@ -10,7 +10,7 @@ import type { CommandV5 } from "./legacy/CommandV5.types"; export type CommandComplete = Required> & Pick; -export const LATEST_VERSION = 7 as const; +export const LATEST_VERSION = 7; export type CommandLatest = Command & { version: typeof LATEST_VERSION; diff --git a/packages/common/src/util/splitKey.ts b/packages/common/src/util/splitKey.ts index 1898e8c4d0..bc5a829cb8 100644 --- a/packages/common/src/util/splitKey.ts +++ b/packages/common/src/util/splitKey.ts @@ -4,7 +4,7 @@ export function splitKey(key: string) { const [hatStyle, character] = key.split("."); return { - hatStyle: hatStyle as HatStyleName, + hatStyle: hatStyle, // If the character is `.` then it will appear as a zero length string // due to the way the split on `.` works character: character.length === 0 ? "." : character, diff --git a/packages/common/src/util/uniqWithHash.ts b/packages/common/src/util/uniqWithHash.ts index a974c269ee..5e01782395 100644 --- a/packages/common/src/util/uniqWithHash.ts +++ b/packages/common/src/util/uniqWithHash.ts @@ -51,7 +51,7 @@ export function uniqWithHash( // For hash collisions, uniq the items, // letting uniqWith provide correct semantics. needsUniq.forEach((key) => { - hashToItems.set(key, uniqWith(hashToItems.get(key)!, isEqual)); + hashToItems.set(key, uniqWith(hashToItems.get(key), isEqual)); }); // To preserve order, step through the original items @@ -67,7 +67,7 @@ export function uniqWithHash( // Removed by uniqWith. return []; } - const first = items[0]!; + const first = items[0]; if (!isEqual(first, item)) { // Removed by uniqWith. // Note that it is sufficient to check the first item, diff --git a/packages/cursorless-engine/src/actions/InsertCopy.ts b/packages/cursorless-engine/src/actions/InsertCopy.ts index 25528b1e62..60398f76a5 100644 --- a/packages/cursorless-engine/src/actions/InsertCopy.ts +++ b/packages/cursorless-engine/src/actions/InsertCopy.ts @@ -82,7 +82,7 @@ class InsertCopy implements SimpleAction { ); const insertionRanges = zip(edits, updatedEditSelections).map( - ([edit, selection]) => edit!.updateRange(selection!), + ([edit, selection]) => edit!.updateRange(selection), ); await editableEditor.setSelections(updatedCursorSelections); diff --git a/packages/cursorless-engine/src/actions/Replace.ts b/packages/cursorless-engine/src/actions/Replace.ts index 8ea474b385..cc5d5d36ad 100644 --- a/packages/cursorless-engine/src/actions/Replace.ts +++ b/packages/cursorless-engine/src/actions/Replace.ts @@ -81,14 +81,14 @@ export default class Replace { ); for (const [edit, selection] of zip(edits, updatedContentSelections)) { - sourceTargets.push(edit!.target.withContentRange(selection!)); + sourceTargets.push(edit!.target.withContentRange(selection)); } for (const [edit, selection] of zip(edits, updatedEditSelections)) { thatSelections.push({ editor, selection: edit!.edit - .updateRange(selection!) + .updateRange(selection) .toSelection(selection!.isReversed), }); } diff --git a/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts b/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts index 0bfbfddfc6..3b3fcbc50f 100644 --- a/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts +++ b/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts @@ -5,8 +5,6 @@ import { CommandV6, DestinationDescriptor, EnforceUndefined, - ExecuteCommandOptions, - GetTextActionOptions, HighlightActionDescriptor, HighlightId, ImplicitDestinationDescriptor, @@ -102,7 +100,7 @@ function upgradeAction( return { name, commandId: action.args![0] as string, - options: action.args?.[1] as ExecuteCommandOptions | undefined, + options: action.args?.[1], target: upgradeTarget(targets[0]), }; case "replace": @@ -129,7 +127,7 @@ function upgradeAction( case "getText": return { name, - options: action.args?.[0] as GetTextActionOptions | undefined, + options: action.args?.[0], target: upgradeTarget(targets[0]), }; case "parsed": diff --git a/packages/cursorless-engine/src/customCommandGrammar/parseCommand.ts b/packages/cursorless-engine/src/customCommandGrammar/parseCommand.ts index f4c1220210..0bad1ce15a 100644 --- a/packages/cursorless-engine/src/customCommandGrammar/parseCommand.ts +++ b/packages/cursorless-engine/src/customCommandGrammar/parseCommand.ts @@ -49,5 +49,5 @@ export function parseAction(input: string): WithPlaceholders { ); } - return parser.results[0] as WithPlaceholders; + return parser.results[0]; } diff --git a/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts b/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts index 4c415bc91c..5cb76819ed 100644 --- a/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts +++ b/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts @@ -80,7 +80,7 @@ export function validateQueryCaptures(file: string, rawQuery: string): void { } if (!allowedCaptures.has(captureName)) { - const lineNumber = match.input!.slice(0, match.index!).split("\n").length; + const lineNumber = match.input.slice(0, match.index).split("\n").length; errors.push(`${file}(${lineNumber}) invalid capture '@${captureName}'.`); } } diff --git a/packages/cursorless-engine/src/languages/getNodeMatcher.ts b/packages/cursorless-engine/src/languages/getNodeMatcher.ts index bc4edc1768..b60167f296 100644 --- a/packages/cursorless-engine/src/languages/getNodeMatcher.ts +++ b/packages/cursorless-engine/src/languages/getNodeMatcher.ts @@ -74,7 +74,7 @@ function matcherIncludeSiblings(matcher: NodeMatcher): NodeMatcher { selectionWithEditorFromRange(selection, match.selection.selection), matcher, ), - ) as NodeMatcherValue[]; + ); if (matches.length > 0) { return matches; } @@ -89,7 +89,7 @@ function iterateNearestIterableAncestor( ) { let parent: SyntaxNode | null = node.parent; while (parent != null) { - const matches = parent!.namedChildren + const matches = parent.namedChildren .flatMap((sibling) => nodeMatcher(selection, sibling)) .filter((match) => match != null) as NodeMatcherValue[]; if (matches.length > 0) { diff --git a/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/WordScopeHandler/WordScopeHandler.ts b/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/WordScopeHandler/WordScopeHandler.ts index 9e4c25b946..6ce934f263 100644 --- a/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/WordScopeHandler/WordScopeHandler.ts +++ b/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/WordScopeHandler/WordScopeHandler.ts @@ -87,7 +87,7 @@ function constructTarget( leadingDelimiterRange != null || trailingDelimiterRange != null; const insertionDelimiter = isInDelimitedList ? editor.document.getText( - (leadingDelimiterRange ?? trailingDelimiterRange)!, + (leadingDelimiterRange ?? trailingDelimiterRange, ) : ""; diff --git a/packages/cursorless-engine/src/processTargets/modifiers/surroundingPair/findDelimiterPairContainingSelection.ts b/packages/cursorless-engine/src/processTargets/modifiers/surroundingPair/findDelimiterPairContainingSelection.ts index b3a1e0220d..98f629724c 100644 --- a/packages/cursorless-engine/src/processTargets/modifiers/surroundingPair/findDelimiterPairContainingSelection.ts +++ b/packages/cursorless-engine/src/processTargets/modifiers/surroundingPair/findDelimiterPairContainingSelection.ts @@ -74,7 +74,7 @@ export function findDelimiterPairContainingSelection( if (rightNext.done) { return null; } - const rightDelimiterOccurrence = rightNext.value!; + const rightDelimiterOccurrence = rightNext.value; // Then scan left until we find an unmatched delimiter matching the // delimiter we found in our rightward pass. @@ -85,7 +85,7 @@ export function findDelimiterPairContainingSelection( if (leftNext.done) { return null; } - const leftDelimiterOccurrence = leftNext.value!; + const leftDelimiterOccurrence = leftNext.value; // If left delimiter is left of our selection, we return it. Otherwise // loop back and continue scanning outwards. diff --git a/packages/cursorless-engine/src/snippets/snippet.ts b/packages/cursorless-engine/src/snippets/snippet.ts index e492eed3fc..ec962bab7e 100644 --- a/packages/cursorless-engine/src/snippets/snippet.ts +++ b/packages/cursorless-engine/src/snippets/snippet.ts @@ -191,7 +191,7 @@ function findMatchingSnippetDefinitionForSingleTarget( return ( matchingTarget != null && - !(excludeDescendantScopeTypes ?? []).includes(matchingScopeType!) + !(excludeDescendantScopeTypes ?? []).includes(matchingScopeType) ); } diff --git a/packages/cursorless-engine/src/testCaseRecorder/TestCase.ts b/packages/cursorless-engine/src/testCaseRecorder/TestCase.ts index 05e0e00c59..e821e20149 100644 --- a/packages/cursorless-engine/src/testCaseRecorder/TestCase.ts +++ b/packages/cursorless-engine/src/testCaseRecorder/TestCase.ts @@ -165,7 +165,7 @@ export class TestCase { this.storedTargets, excludeFields, this.extraSnapshotFields, - ide().activeTextEditor!, + ide().activeTextEditor, ide(), this.getMarks(), { startTimestamp: this.startTimestamp }, @@ -186,7 +186,7 @@ export class TestCase { this.storedTargets, excludeFields, this.extraSnapshotFields, - ide().activeTextEditor!, + ide().activeTextEditor, ide(), this.isHatTokenMapTest ? this.getMarks() : undefined, { startTimestamp: this.startTimestamp }, diff --git a/packages/cursorless-engine/src/testCaseRecorder/TestCaseRecorder.ts b/packages/cursorless-engine/src/testCaseRecorder/TestCaseRecorder.ts index 596a75e2e6..e7a3ebae3d 100644 --- a/packages/cursorless-engine/src/testCaseRecorder/TestCaseRecorder.ts +++ b/packages/cursorless-engine/src/testCaseRecorder/TestCaseRecorder.ts @@ -138,7 +138,7 @@ export class TestCaseRecorder { undefined, ["clipboard"], this.active ? this.extraSnapshotFields : undefined, - ide().activeTextEditor!, + ide().activeTextEditor, ide(), marks, this.active ? { startTimestamp: this.startTimestamp } : undefined, @@ -277,7 +277,7 @@ export class TestCaseRecorder { // Otherwise, we are starting a new test case this.originalIde = ide(); this.spyIde = new SpyIDE(this.originalIde); - injectIde(this.spyIde!); + injectIde(this.spyIde); const spokenForm = this.spokenFormGenerator.processCommand(command); diff --git a/packages/cursorless-engine/src/util/targetUtils.ts b/packages/cursorless-engine/src/util/targetUtils.ts index 72e7459104..d38c51fd97 100644 --- a/packages/cursorless-engine/src/util/targetUtils.ts +++ b/packages/cursorless-engine/src/util/targetUtils.ts @@ -106,7 +106,7 @@ export function createThatMark( : new Selection(range!.start, range!.end), })) : targets.map((target) => ({ - editor: target!.editor, + editor: target.editor, selection: target.contentSelection, })); return thatMark; diff --git a/packages/cursorless-vscode-e2e/src/suite/instanceAcrossSplit.vscode.test.ts b/packages/cursorless-vscode-e2e/src/suite/instanceAcrossSplit.vscode.test.ts index 54b0be801d..b3e26910d9 100644 --- a/packages/cursorless-vscode-e2e/src/suite/instanceAcrossSplit.vscode.test.ts +++ b/packages/cursorless-vscode-e2e/src/suite/instanceAcrossSplit.vscode.test.ts @@ -29,7 +29,7 @@ suite("Instance across split", async function () { "Every instance", asyncSafety(() => runTest( - getSpy()!, + getSpy(), { type: "everyScope", scopeType: { type: "instance" }, @@ -43,7 +43,7 @@ suite("Instance across split", async function () { "Next instance", asyncSafety(() => runTest( - getSpy()!, + getSpy(), { type: "relativeScope", scopeType: { type: "instance" }, @@ -60,7 +60,7 @@ suite("Instance across split", async function () { "Two instances", asyncSafety(() => runTest( - getSpy()!, + getSpy(), { type: "relativeScope", scopeType: { type: "instance" }, @@ -77,7 +77,7 @@ suite("Instance across split", async function () { "Second instance", asyncSafety(() => runTest( - getSpy()!, + getSpy(), { type: "ordinalScope", scopeType: { type: "instance" }, diff --git a/packages/cursorless-vscode-e2e/src/suite/serializeTargetRange.ts b/packages/cursorless-vscode-e2e/src/suite/serializeTargetRange.ts index 20b05af54b..b5903e2e1c 100644 --- a/packages/cursorless-vscode-e2e/src/suite/serializeTargetRange.ts +++ b/packages/cursorless-vscode-e2e/src/suite/serializeTargetRange.ts @@ -48,7 +48,7 @@ export function serializeTargetRange( // Output the range with each line prefixed by `n| `, eg: // `3| const foo = // "bar"` for (let lineNumber = start.line; lineNumber <= end.line; ++lineNumber) { - const codeLine = codeLines[lineNumber]!; + const codeLine = codeLines[lineNumber]; lines.push( codeLine.length > 0 ? `${lineNumber}| ${codeLine}` : `${lineNumber}|`, diff --git a/packages/cursorless-vscode/src/ide/vscode/VscodeOpenLink.ts b/packages/cursorless-vscode/src/ide/vscode/VscodeOpenLink.ts index 5e7328c49a..d05c1eb9bd 100644 --- a/packages/cursorless-vscode/src/ide/vscode/VscodeOpenLink.ts +++ b/packages/cursorless-vscode/src/ide/vscode/VscodeOpenLink.ts @@ -52,10 +52,10 @@ async function runCommandAtRange( async function getLinksForEditor( editor: vscode.TextEditor, ): Promise { - return (await vscode.commands.executeCommand( + return await vscode.commands.executeCommand( "vscode.executeLinkProvider", editor.document.uri, - ))!; + ); } function openLink(link: vscode.DocumentLink, openAside: boolean) { diff --git a/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts b/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts index 0b3b84b990..c1abf4c1ee 100644 --- a/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts +++ b/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts @@ -361,7 +361,7 @@ export default class VscodeHatRenderer { return svg; } const pathData = pathMatch[1]; - const pathEnd = pathMatch.index! + pathMatch[0].length; + const pathEnd = pathMatch.index + pathMatch[0].length; // Construct the stroke path and clipPath elements const clipPathElem = ``; diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardActionType.ts b/packages/cursorless-vscode/src/keyboard/KeyboardActionType.ts index 6cd7bbaf40..7911df82ad 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardActionType.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardActionType.ts @@ -42,7 +42,7 @@ const keyboardActionNames: KeyboardActionType[] = [ ( actionName, ): actionName is Exclude => - !excludedKeyboardActionNames.includes(actionName as any), + !excludedKeyboardActionNames.includes(actionName), ), ...extraKeyboardActionNames, ]; diff --git a/packages/cursorless-vscode/src/usingSetting.ts b/packages/cursorless-vscode/src/usingSetting.ts index 64045bfee3..b7f2e5dab4 100644 --- a/packages/cursorless-vscode/src/usingSetting.ts +++ b/packages/cursorless-vscode/src/usingSetting.ts @@ -17,7 +17,7 @@ export function usingSetting( factory: (value: T) => Disposable, ): Disposable { const runFactoryWithLatestConfig = () => - factory(vscodeApi.workspace.getConfiguration(section).get(setting)!); + factory(vscodeApi.workspace.getConfiguration(section).get(setting)); let disposable = runFactoryWithLatestConfig(); const configurationDisposable = vscodeApi.workspace.onDidChangeConfiguration( From 5f8d6fc1c58279fd426e2ae44ddbfaa30ffafe12 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 14:36:11 +0200 Subject: [PATCH 08/35] revert --- .eslintrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index c7857f0de3..4c1604d055 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,7 +4,6 @@ "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", "plugin:import/typescript", "prettier" ], @@ -39,6 +38,7 @@ } } ], + "@typescript-eslint/no-floating-promises": "error", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/no-non-null-assertion": "off", From bfaee040f35ed8a9d25f2b2281f5ae8c0441b23b Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 15:27:21 +0200 Subject: [PATCH 09/35] fixed --- .eslintrc.json | 3 ++- packages/common/src/testUtil/runRecordedTest.ts | 2 +- .../src/scripts/transformRecordedTests/index.ts | 2 +- .../src/suite/keyboard/basic.vscode.test.ts | 2 +- .../src/ide/vscode/hats/FontMeasurementsImpl.ts | 4 ++-- packages/test-harness/src/scripts/runTalonTests.ts | 2 +- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 4c1604d055..0730722af8 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -104,6 +104,7 @@ "**/vendor/**/*.ts", "**/vendor/**/*.js", "**/out/**", - "**/generated/**" + "**/generated/**", + "/packages/*/jest.config.ts" ] } diff --git a/packages/common/src/testUtil/runRecordedTest.ts b/packages/common/src/testUtil/runRecordedTest.ts index 363deca727..00989e061b 100644 --- a/packages/common/src/testUtil/runRecordedTest.ts +++ b/packages/common/src/testUtil/runRecordedTest.ts @@ -151,7 +151,7 @@ export async function runRecordedTest({ } if (fixture.initialState.clipboard) { - spyIde.clipboard.writeText(fixture.initialState.clipboard); + await spyIde.clipboard.writeText(fixture.initialState.clipboard); } commandServerApi.setFocusedElementType(fixture.focusedElementType); diff --git a/packages/cursorless-engine/src/scripts/transformRecordedTests/index.ts b/packages/cursorless-engine/src/scripts/transformRecordedTests/index.ts index da99f0f6ad..82804f65b6 100644 --- a/packages/cursorless-engine/src/scripts/transformRecordedTests/index.ts +++ b/packages/cursorless-engine/src/scripts/transformRecordedTests/index.ts @@ -95,4 +95,4 @@ function parseCommandLineArguments(args: string[]) { return { transformationName, minimumVersion, paths }; } -main(process.argv.slice(2)); +void main(process.argv.slice(2)); diff --git a/packages/cursorless-vscode-e2e/src/suite/keyboard/basic.vscode.test.ts b/packages/cursorless-vscode-e2e/src/suite/keyboard/basic.vscode.test.ts index c72fdae13b..a1091dae6e 100644 --- a/packages/cursorless-vscode-e2e/src/suite/keyboard/basic.vscode.test.ts +++ b/packages/cursorless-vscode-e2e/src/suite/keyboard/basic.vscode.test.ts @@ -309,7 +309,7 @@ async function enterAndLeaveIsNoOp() { async function typeText(text: string) { for (const char of text) { - vscode.commands.executeCommand("type", { text: char }); + void vscode.commands.executeCommand("type", { text: char }); // Note we just hack by using sleep because awaiting is too complicated to // get right. await sleepWithBackoff(100); diff --git a/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts b/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts index 33b51f67a2..9ca510853d 100644 --- a/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts +++ b/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts @@ -21,7 +21,7 @@ export class FontMeasurementsImpl implements FontMeasurements { constructor(private extensionContext: vscode.ExtensionContext) {} clearCache() { - this.extensionContext.globalState.update("fontRatios", undefined); + void this.extensionContext.globalState.update("fontRatios", undefined); } async calculate() { @@ -35,7 +35,7 @@ export class FontMeasurementsImpl implements FontMeasurements { if (fontRatiosCache == null || fontRatiosCache.fontFamily !== fontFamily) { const fontRatios = await getFontRatios(this.extensionContext); - this.extensionContext.globalState.update("fontRatios", { + void this.extensionContext.globalState.update("fontRatios", { ...fontRatios, fontFamily, }); diff --git a/packages/test-harness/src/scripts/runTalonTests.ts b/packages/test-harness/src/scripts/runTalonTests.ts index 14419ebdd0..7b90ff06bd 100644 --- a/packages/test-harness/src/scripts/runTalonTests.ts +++ b/packages/test-harness/src/scripts/runTalonTests.ts @@ -3,4 +3,4 @@ */ import { TestType, runAllTests } from "../runAllTests"; -runAllTests(TestType.talon); +void runAllTests(TestType.talon); From 1b6ccb86c34225185914722ef493fdd7feb9183a Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 15:37:20 +0200 Subject: [PATCH 10/35] work work --- .../cursorless-vscode/src/ScopeTreeProvider.ts | 2 +- packages/cursorless-vscode/src/VscodeSnippets.ts | 6 +++--- .../cursorless-vscode/src/ide/vscode/VscodeIDE.ts | 4 ++-- .../src/ide/vscode/hats/VscodeHats.ts | 4 ++-- .../src/keyboard/KeyboardCommandHandler.ts | 10 +++++----- .../src/keyboard/KeyboardHandler.ts | 14 +++++++++++--- .../src/scripts/populateDist/index.ts | 2 +- 7 files changed, 25 insertions(+), 17 deletions(-) diff --git a/packages/cursorless-vscode/src/ScopeTreeProvider.ts b/packages/cursorless-vscode/src/ScopeTreeProvider.ts index 7ccf41309f..df57e0f19a 100644 --- a/packages/cursorless-vscode/src/ScopeTreeProvider.ts +++ b/packages/cursorless-vscode/src/ScopeTreeProvider.ts @@ -109,7 +109,7 @@ export class ScopeTreeProvider implements TreeDataProvider { getChildren(element?: MyTreeItem): MyTreeItem[] { if (element == null) { - this.possiblyShowUpdateTalonMessage(); + void this.possiblyShowUpdateTalonMessage(); return getSupportCategories(); } diff --git a/packages/cursorless-vscode/src/VscodeSnippets.ts b/packages/cursorless-vscode/src/VscodeSnippets.ts index fad08e21f1..d5e4afce99 100644 --- a/packages/cursorless-vscode/src/VscodeSnippets.ts +++ b/packages/cursorless-vscode/src/VscodeSnippets.ts @@ -71,7 +71,7 @@ export class VscodeSnippets implements Snippets { this.ide.disposeOnExit( this.ide.configuration.onDidChangeConfiguration(() => { if (this.updateUserSnippetsPath()) { - this.updateUserSnippets(); + void this.updateUserSnippets(); } }), { @@ -134,7 +134,7 @@ export class VscodeSnippets implements Snippets { this.userSnippetsDir }": ${(err as Error).message}`; - showError(this.ide.messages, "snippetsDirError", errorMessage); + void showError(this.ide.messages, "snippetsDirError", errorMessage); this.directoryErrorMessage = { directory: this.userSnippetsDir!, @@ -175,7 +175,7 @@ export class VscodeSnippets implements Snippets { return JSON.parse(content); } catch (err) { - showError( + void showError( this.ide.messages, "snippetsFileError", `Error with cursorless snippets file "${path}": ${ diff --git a/packages/cursorless-vscode/src/ide/vscode/VscodeIDE.ts b/packages/cursorless-vscode/src/ide/vscode/VscodeIDE.ts index aa0b6a59fc..60a12d7933 100644 --- a/packages/cursorless-vscode/src/ide/vscode/VscodeIDE.ts +++ b/packages/cursorless-vscode/src/ide/vscode/VscodeIDE.ts @@ -212,9 +212,9 @@ export class VscodeIDE implements IDE { handleCommandError(err: Error) { if (err instanceof OutdatedExtensionError) { - this.showUpdateExtensionErrorMessage(err); + void this.showUpdateExtensionErrorMessage(err); } else { - vscode.window.showErrorMessage(err.message); + void vscode.window.showErrorMessage(err.message); } } diff --git a/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHats.ts b/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHats.ts index 4c85076e87..4cf9dd310a 100644 --- a/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHats.ts +++ b/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHats.ts @@ -67,7 +67,7 @@ export class VscodeHats implements Hats { return this.hatRenderer.forceRecomputeDecorationStyles(); } - private handleHatDecorationMapUpdated() { + private async handleHatDecorationMapUpdated() { if ( this.hatRanges.some( ({ styleName }) => !(styleName in this.enabledHatStyles), @@ -81,7 +81,7 @@ export class VscodeHats implements Hats { return; } - this.applyHatDecorations(); + await this.applyHatDecorations(); } async setHatRanges(hatRanges: HatRange[]): Promise { diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts b/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts index ad5c82c796..4db0c6dde5 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts @@ -35,7 +35,7 @@ export class KeyboardCommandHandler { constructor(private targeted: KeyboardCommandsTargeted) {} targetDecoratedMark({ decoratedMark, mode }: DecoratedMarkArg) { - this.targeted.targetDecoratedMark({ ...decoratedMark, mode }); + void this.targeted.targetDecoratedMark({ ...decoratedMark, mode }); } async vscodeCommand({ @@ -75,12 +75,12 @@ export class KeyboardCommandHandler { }: { actionDescriptor: SimpleKeyboardActionDescriptor; }) { - this.targeted.performSimpleActionOnTarget(actionDescriptor); + void this.targeted.performSimpleActionOnTarget(actionDescriptor); } performWrapActionOnTarget({ actionDescriptor, delimiter }: WrapActionArg) { const [left, right] = surroundingPairsDelimiters[delimiter]!; - this.targeted.performActionOnTarget( + void this.targeted.performActionOnTarget( (target) => ({ name: "wrapWithPairedDelimiter", target, @@ -98,11 +98,11 @@ export class KeyboardCommandHandler { modifier: Modifier; mode?: TargetingMode; }) { - this.targeted.targetModifier(modifier, mode); + void this.targeted.targetModifier(modifier, mode); } targetMark({ mark, mode }: { mark: PartialMark; mode?: TargetingMode }) { - this.targeted.targetMark(mark, mode); + void this.targeted.targetMark(mark, mode); } } diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts b/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts index c5ab0e5e0c..311ddabebb 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts @@ -261,7 +261,11 @@ export default class KeyboardHandler { this.disposables.push(this.typeCommandDisposable); if (whenClauseContext != null) { - vscode.commands.executeCommand("setContext", whenClauseContext, true); + void vscode.commands.executeCommand( + "setContext", + whenClauseContext, + true, + ); } this.activeListener = listenerEntry; @@ -279,7 +283,11 @@ export default class KeyboardHandler { const { whenClauseContext } = this.activeListener.listener.displayOptions; if (whenClauseContext != null) { - vscode.commands.executeCommand("setContext", whenClauseContext, false); + void vscode.commands.executeCommand( + "setContext", + whenClauseContext, + false, + ); } this.activeListener = undefined; @@ -320,7 +328,7 @@ export default class KeyboardHandler { } private ensureGlobalWhenClauseContext() { - vscode.commands.executeCommand( + void vscode.commands.executeCommand( "setContext", GLOBAL_WHEN_CLAUSE_CONTEXT, this.activeListener != null, diff --git a/packages/cursorless-vscode/src/scripts/populateDist/index.ts b/packages/cursorless-vscode/src/scripts/populateDist/index.ts index de5818edae..c6286f0716 100644 --- a/packages/cursorless-vscode/src/scripts/populateDist/index.ts +++ b/packages/cursorless-vscode/src/scripts/populateDist/index.ts @@ -1,3 +1,3 @@ import { run } from "./populateDist"; -run(); +void run(); From 5ef0a2bde4a1d58d9834f45fbbacecc7fbc66d21 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 16:06:28 +0200 Subject: [PATCH 11/35] stuff --- .eslintrc.json | 6 ++- .../cursorless-engine/src/actions/Find.ts | 2 +- .../GenerateSnippet/GenerateSnippet.ts | 2 +- .../src/actions/ShowParseTree.ts | 2 +- .../cursorless-engine/src/actions/Sort.ts | 2 +- .../src/languages/LanguageDefinition.ts | 4 +- .../TreeSitterQuery/TreeSitterQuery.ts | 2 +- .../TreeSitterQuery/checkCaptureStartEnd.ts | 6 +-- .../TreeSitterQuery/validateQueryCaptures.ts | 2 +- .../BaseTreeSitterScopeHandler.ts | 2 +- .../WordScopeHandler/WordScopeHandler.ts | 4 +- .../src/scopeProviders/ScopeRangeWatcher.ts | 2 +- .../src/spokenForms/CustomSpokenForms.ts | 2 +- .../src/testCaseRecorder/TestCaseRecorder.ts | 48 +++++++++++-------- .../VscodeScopeVisualizer.ts | 2 +- .../src/ide/vscode/hats/VscodeHatRenderer.ts | 6 +-- .../src/keyboard/KeyboardConfig.ts | 2 +- 17 files changed, 52 insertions(+), 44 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 0730722af8..35023d5424 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,6 +4,7 @@ "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", + // "plugin:@typescript-eslint/recommended-requiring-type-checking", "plugin:import/typescript", "prettier" ], @@ -93,7 +94,6 @@ "import/resolver": { "typescript": { "alwaysTryTypes": true, // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` - "project": ["tsconfig.json", "packages/*/tsconfig.json"] } } @@ -105,6 +105,8 @@ "**/vendor/**/*.js", "**/out/**", "**/generated/**", - "/packages/*/jest.config.ts" + "/packages/*/jest.config.ts", + "/packages/cursorless-org-docs/docusaurus.config.mts", + "/packages/cursorless-org/mdx-components.tsx" ] } diff --git a/packages/cursorless-engine/src/actions/Find.ts b/packages/cursorless-engine/src/actions/Find.ts index e82c31ccf1..ed12488c2a 100644 --- a/packages/cursorless-engine/src/actions/Find.ts +++ b/packages/cursorless-engine/src/actions/Find.ts @@ -20,7 +20,7 @@ abstract class Find implements SimpleAction { let query: string; if (text.length > 200) { query = text.substring(0, 200); - showWarning( + void showWarning( ide().messages, "truncatedSearchText", "Search text is longer than 200 characters; truncating", diff --git a/packages/cursorless-engine/src/actions/GenerateSnippet/GenerateSnippet.ts b/packages/cursorless-engine/src/actions/GenerateSnippet/GenerateSnippet.ts index 9b372a5640..0afe33262a 100644 --- a/packages/cursorless-engine/src/actions/GenerateSnippet/GenerateSnippet.ts +++ b/packages/cursorless-engine/src/actions/GenerateSnippet/GenerateSnippet.ts @@ -61,7 +61,7 @@ export default class GenerateSnippet { // immediately starts saying the name of the snippet (eg command chain // "snippet make funk camel my function"), we're more likely to // win the race and have the input box ready for them - flashTargets(ide(), targets, FlashStyle.referenced); + void flashTargets(ide(), targets, FlashStyle.referenced); if (snippetName == null) { snippetName = await ide().showInputBox({ diff --git a/packages/cursorless-engine/src/actions/ShowParseTree.ts b/packages/cursorless-engine/src/actions/ShowParseTree.ts index 7ef056878a..6a82cd493c 100644 --- a/packages/cursorless-engine/src/actions/ShowParseTree.ts +++ b/packages/cursorless-engine/src/actions/ShowParseTree.ts @@ -23,7 +23,7 @@ export default class ShowParseTree { results.push(parseTree(editor.document, tree, contentRange)); } - ide().openUntitledTextDocument({ + await ide().openUntitledTextDocument({ language: "markdown", content: results.join("\n\n"), }); diff --git a/packages/cursorless-engine/src/actions/Sort.ts b/packages/cursorless-engine/src/actions/Sort.ts index 8fc5f87613..635127da17 100644 --- a/packages/cursorless-engine/src/actions/Sort.ts +++ b/packages/cursorless-engine/src/actions/Sort.ts @@ -14,7 +14,7 @@ abstract class SortBase implements SimpleAction { async run(targets: Target[]): Promise { if (targets.length < 2) { - showWarning( + void showWarning( ide().messages, "tooFewTargets", 'This action works on multiple targets, e.g. "sort every line block" instead of "sort block".', diff --git a/packages/cursorless-engine/src/languages/LanguageDefinition.ts b/packages/cursorless-engine/src/languages/LanguageDefinition.ts index 83252927d4..c85aa16f83 100644 --- a/packages/cursorless-engine/src/languages/LanguageDefinition.ts +++ b/packages/cursorless-engine/src/languages/LanguageDefinition.ts @@ -121,7 +121,7 @@ async function readQueryFileAndImports( return undefined; } - showError( + void showError( ide().messages, "LanguageDefinition.readQueryFileAndImports.queryNotFound", `Could not find imported query file ${queryPath}`, @@ -176,7 +176,7 @@ function validateImportSyntax( const canonicalSyntax = `;; import ${relativeImportPath}`; if (actual !== canonicalSyntax) { - showError( + void showError( ide().messages, "LanguageDefinition.readQueryFileAndImports.malformedImport", `Malformed import statement in ${file}: "${actual}". Import statements must be of the form "${canonicalSyntax}"`, diff --git a/packages/cursorless-engine/src/languages/TreeSitterQuery/TreeSitterQuery.ts b/packages/cursorless-engine/src/languages/TreeSitterQuery/TreeSitterQuery.ts index b5706e47bc..b18dd9c3b4 100644 --- a/packages/cursorless-engine/src/languages/TreeSitterQuery/TreeSitterQuery.ts +++ b/packages/cursorless-engine/src/languages/TreeSitterQuery/TreeSitterQuery.ts @@ -44,7 +44,7 @@ export class TreeSitterQuery { )}\``, ].join(", "); - showError( + void showError( ide().messages, "TreeSitterQuery.parsePredicates", `Error parsing predicate for ${context}: ${error.error}`, diff --git a/packages/cursorless-engine/src/languages/TreeSitterQuery/checkCaptureStartEnd.ts b/packages/cursorless-engine/src/languages/TreeSitterQuery/checkCaptureStartEnd.ts index aa80c6bb66..78fa5c0377 100644 --- a/packages/cursorless-engine/src/languages/TreeSitterQuery/checkCaptureStartEnd.ts +++ b/packages/cursorless-engine/src/languages/TreeSitterQuery/checkCaptureStartEnd.ts @@ -39,7 +39,7 @@ export function checkCaptureStartEnd( .at(0); if (lastStart != null && firstEnd != null) { if (lastStart.isAfter(firstEnd)) { - showError( + void showError( messages, "TreeSitterQuery.checkCaptures.badOrder", `Start capture must be before end capture: ${captures}`, @@ -57,7 +57,7 @@ export function checkCaptureStartEnd( if (regularCount > 0 && (startCount > 0 || endCount > 0)) { // Found a mix of regular captures and start/end captures, which is not // allowed - showError( + void showError( messages, "TreeSitterQuery.checkCaptures.mixRegularStartEnd", `Please do not mix regular captures and start/end captures: ${captures.map( @@ -69,7 +69,7 @@ export function checkCaptureStartEnd( if (regularCount > 1) { // Found duplicate captures - showError( + void showError( messages, "TreeSitterQuery.checkCaptures.duplicate", `A capture with the same name may only appear once in a single pattern: ${captures.map( diff --git a/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts b/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts index 5cb76819ed..19ccefe4f2 100644 --- a/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts +++ b/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts @@ -91,7 +91,7 @@ export function validateQueryCaptures(file: string, rawQuery: string): void { const message = errors.join("\n"); - showError( + void showError( ide().messages, "validateQueryCaptures.invalidCaptureName", message, diff --git a/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/TreeSitterScopeHandler/BaseTreeSitterScopeHandler.ts b/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/TreeSitterScopeHandler/BaseTreeSitterScopeHandler.ts index 515d125ca1..cb29bd9eb5 100644 --- a/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/TreeSitterScopeHandler/BaseTreeSitterScopeHandler.ts +++ b/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/TreeSitterScopeHandler/BaseTreeSitterScopeHandler.ts @@ -61,7 +61,7 @@ export abstract class BaseTreeSitterScopeHandler extends BaseScopeHandler { const message = "Please use #allow-multiple! predicate in your query to allow multiple matches for this scope type"; - showError( + void showError( ide().messages, "BaseTreeSitterScopeHandler.allow-multiple", message, diff --git a/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/WordScopeHandler/WordScopeHandler.ts b/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/WordScopeHandler/WordScopeHandler.ts index 6ce934f263..037cc0aea2 100644 --- a/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/WordScopeHandler/WordScopeHandler.ts +++ b/packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/WordScopeHandler/WordScopeHandler.ts @@ -86,9 +86,7 @@ function constructTarget( const isInDelimitedList = leadingDelimiterRange != null || trailingDelimiterRange != null; const insertionDelimiter = isInDelimitedList - ? editor.document.getText( - (leadingDelimiterRange ?? trailingDelimiterRange, - ) + ? editor.document.getText(leadingDelimiterRange ?? trailingDelimiterRange) : ""; return new SubTokenWordTarget({ diff --git a/packages/cursorless-engine/src/scopeProviders/ScopeRangeWatcher.ts b/packages/cursorless-engine/src/scopeProviders/ScopeRangeWatcher.ts index afa887c0d8..5bfbb92856 100644 --- a/packages/cursorless-engine/src/scopeProviders/ScopeRangeWatcher.ts +++ b/packages/cursorless-engine/src/scopeProviders/ScopeRangeWatcher.ts @@ -70,7 +70,7 @@ export class ScopeRangeWatcher { config, ); } catch (err) { - showError( + void showError( ide().messages, "ScopeRangeWatcher.provide", (err as Error).message, diff --git a/packages/cursorless-engine/src/spokenForms/CustomSpokenForms.ts b/packages/cursorless-engine/src/spokenForms/CustomSpokenForms.ts index e94385249a..8738cde0d4 100644 --- a/packages/cursorless-engine/src/spokenForms/CustomSpokenForms.ts +++ b/packages/cursorless-engine/src/spokenForms/CustomSpokenForms.ts @@ -85,7 +85,7 @@ export class CustomSpokenForms { } else { console.error("Error loading custom spoken forms", err); const msg = (err as Error).message.replace(/\.$/, ""); - showError( + void showError( ide().messages, "CustomSpokenForms.updateSpokenFormMaps", `Error loading custom spoken forms: ${msg}. Falling back to default spoken forms.`, diff --git a/packages/cursorless-engine/src/testCaseRecorder/TestCaseRecorder.ts b/packages/cursorless-engine/src/testCaseRecorder/TestCaseRecorder.ts index 5e357bf1e1..ffe7edbff0 100644 --- a/packages/cursorless-engine/src/testCaseRecorder/TestCaseRecorder.ts +++ b/packages/cursorless-engine/src/testCaseRecorder/TestCaseRecorder.ts @@ -85,7 +85,11 @@ export class TestCaseRecorder { async toggle(options?: RecordTestCaseCommandOptions) { if (this.active) { - showInfo(ide().messages, "recordStop", "Stopped recording test cases"); + void showInfo( + ide().messages, + "recordStop", + "Stopped recording test cases", + ); this.stop(); } else { return await this.start(options); @@ -138,7 +142,7 @@ export class TestCaseRecorder { undefined, ["clipboard"], this.active ? this.extraSnapshotFields : undefined, - ide().activeTextEditor, + ide().activeTextEditor!, ide(), marks, this.active ? { startTimestamp: this.startTimestamp } : undefined, @@ -218,7 +222,7 @@ export class TestCaseRecorder { this.isErrorTest = isErrorTest; this.paused = false; - showInfo( + void showInfo( ide().messages, "recordStart", `Recording test cases for following commands in:\n${this.targetDirectory}`, @@ -358,22 +362,26 @@ export class TestCaseRecorder { message += ` Spoken form error: ${this.testCase!.spokenFormError}`; } - showInfo(ide().messages, "testCaseSaved", message, "View", "Delete").then( - async (action) => { - if (action === "View") { - await ide().openTextDocument(outPath); - } - if (action === "Delete") { - await fs.unlink(outPath, (err) => { - if (err) { - console.log(`failed to delete ${outPath}: ${err}`); - } else { - console.log(`deleted ${outPath}`); - } - }); - } - }, - ); + void showInfo( + ide().messages, + "testCaseSaved", + message, + "View", + "Delete", + ).then(async (action) => { + if (action === "View") { + await ide().openTextDocument(outPath); + } + if (action === "Delete") { + fs.unlink(outPath, (err) => { + if (err) { + console.log(`failed to delete ${outPath}: ${err}`); + } else { + console.log(`deleted ${outPath}`); + } + }); + } + }); } this.testCase = null; @@ -396,7 +404,7 @@ export class TestCaseRecorder { } catch (err) { const errorMessage = '"Cursorless record" must be run from within cursorless directory'; - showError(ide().messages, "promptSubdirectoryError", errorMessage); + void showError(ide().messages, "promptSubdirectoryError", errorMessage); throw new Error(errorMessage); } diff --git a/packages/cursorless-vscode/src/ide/vscode/VSCodeScopeVisualizer/VscodeScopeVisualizer.ts b/packages/cursorless-vscode/src/ide/vscode/VSCodeScopeVisualizer/VscodeScopeVisualizer.ts index a5e9c69e58..84346dce7d 100644 --- a/packages/cursorless-vscode/src/ide/vscode/VSCodeScopeVisualizer/VscodeScopeVisualizer.ts +++ b/packages/cursorless-vscode/src/ide/vscode/VSCodeScopeVisualizer/VscodeScopeVisualizer.ts @@ -66,7 +66,7 @@ export abstract class VscodeScopeVisualizer { return; case ScopeSupport.supportedLegacy: case ScopeSupport.unsupported: - showError( + void showError( this.ide.messages, "ScopeVisualizer.scopeTypeNotSupported", `Scope type not supported for ${editor.document.languageId}, or only defined using legacy API which doesn't support visualization. See https://www.cursorless.org/docs/contributing/adding-a-new-language/ for more about how to upgrade your language.`, diff --git a/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts b/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts index c1abf4c1ee..e0b7ec5d82 100644 --- a/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts +++ b/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts @@ -203,7 +203,7 @@ export default class VscodeHatRenderer { .getConfiguration("cursorless") .get("individualHatAdjustments")!; - performPr1868ShapeUpdateInit( + await performPr1868ShapeUpdateInit( this.extensionContext, this.vscodeApi, this.messages, @@ -310,7 +310,7 @@ export default class VscodeHatRenderer { svg.match(/fill="(?!none)[^"]+"/) == null && svg.match(/fill:(?!none)[^;]+;/) == null ) { - vscode.window.showErrorMessage( + void vscode.window.showErrorMessage( `Raw svg '${shape}' is missing 'fill' property`, ); isOk = false; @@ -319,7 +319,7 @@ export default class VscodeHatRenderer { const viewBoxMatch = svg.match(/viewBox="([^"]+)"/); if (viewBoxMatch == null) { - vscode.window.showErrorMessage( + void vscode.window.showErrorMessage( `Raw svg '${shape}' is missing 'viewBox' property`, ); isOk = false; diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardConfig.ts b/packages/cursorless-vscode/src/keyboard/KeyboardConfig.ts index fb56553604..d915c7d20e 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardConfig.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardConfig.ts @@ -64,7 +64,7 @@ export class KeyboardConfig { if (legacySectionName != null) { section = getSection(legacySectionName); if (section != null && Object.keys(section).length > 0) { - this.vscodeApi.window.showWarningMessage( + void this.vscodeApi.window.showWarningMessage( `The config section "cursorless.experimental.keyboard.modal.keybindings.${legacySectionName}" is deprecated. Please rename it to "cursorless.experimental.keyboard.modal.keybindings.${sectionName}".`, ); } From 66427ed829f1dea6c10ac7c019a2d84413a64c4c Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 16:07:40 +0200 Subject: [PATCH 12/35] docs --- .eslintrc.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.eslintrc.json b/.eslintrc.json index 35023d5424..2bfa8d25d5 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,6 +4,7 @@ "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", + // We want to enable this in the long run. For now there are a lot of errors that needs to be handled. // "plugin:@typescript-eslint/recommended-requiring-type-checking", "plugin:import/typescript", "prettier" From 6424ec28968a6cc9ac44630a97bd197d18a931f9 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 12 Jul 2024 16:23:49 +0200 Subject: [PATCH 13/35] fix --- packages/cursorless-engine/src/actions/InsertCopy.ts | 2 +- packages/cursorless-engine/src/actions/Replace.ts | 4 ++-- .../commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts | 6 ++++-- packages/cursorless-engine/src/snippets/snippet.ts | 4 ++++ packages/cursorless-engine/src/testCaseRecorder/TestCase.ts | 4 ++-- packages/cursorless-vscode-e2e/src/endToEndTestSetup.ts | 3 +++ .../cursorless-vscode/src/keyboard/KeyboardActionType.ts | 2 +- packages/cursorless-vscode/src/usingSetting.ts | 2 +- 8 files changed, 18 insertions(+), 9 deletions(-) diff --git a/packages/cursorless-engine/src/actions/InsertCopy.ts b/packages/cursorless-engine/src/actions/InsertCopy.ts index 60398f76a5..25528b1e62 100644 --- a/packages/cursorless-engine/src/actions/InsertCopy.ts +++ b/packages/cursorless-engine/src/actions/InsertCopy.ts @@ -82,7 +82,7 @@ class InsertCopy implements SimpleAction { ); const insertionRanges = zip(edits, updatedEditSelections).map( - ([edit, selection]) => edit!.updateRange(selection), + ([edit, selection]) => edit!.updateRange(selection!), ); await editableEditor.setSelections(updatedCursorSelections); diff --git a/packages/cursorless-engine/src/actions/Replace.ts b/packages/cursorless-engine/src/actions/Replace.ts index cc5d5d36ad..8ea474b385 100644 --- a/packages/cursorless-engine/src/actions/Replace.ts +++ b/packages/cursorless-engine/src/actions/Replace.ts @@ -81,14 +81,14 @@ export default class Replace { ); for (const [edit, selection] of zip(edits, updatedContentSelections)) { - sourceTargets.push(edit!.target.withContentRange(selection)); + sourceTargets.push(edit!.target.withContentRange(selection!)); } for (const [edit, selection] of zip(edits, updatedEditSelections)) { thatSelections.push({ editor, selection: edit!.edit - .updateRange(selection) + .updateRange(selection!) .toSelection(selection!.isReversed), }); } diff --git a/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts b/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts index 3b3fcbc50f..ad83e00d1f 100644 --- a/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts +++ b/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts @@ -26,6 +26,8 @@ import { PrimitiveDestinationDescriptor, ReplaceWith, WrapWithSnippetArg, + type ExecuteCommandOptions, + type GetTextActionOptions, } from "@cursorless/common"; import canonicalizeActionName from "./canonicalizeActionName"; @@ -100,7 +102,7 @@ function upgradeAction( return { name, commandId: action.args![0] as string, - options: action.args?.[1], + options: action.args?.[1] as ExecuteCommandOptions, target: upgradeTarget(targets[0]), }; case "replace": @@ -127,7 +129,7 @@ function upgradeAction( case "getText": return { name, - options: action.args?.[0], + options: action.args?.[0] as GetTextActionOptions, target: upgradeTarget(targets[0]), }; case "parsed": diff --git a/packages/cursorless-engine/src/snippets/snippet.ts b/packages/cursorless-engine/src/snippets/snippet.ts index ec962bab7e..02faada101 100644 --- a/packages/cursorless-engine/src/snippets/snippet.ts +++ b/packages/cursorless-engine/src/snippets/snippet.ts @@ -189,6 +189,10 @@ function findMatchingSnippetDefinitionForSingleTarget( } } + if (matchingScopeType == null) { + return false; + } + return ( matchingTarget != null && !(excludeDescendantScopeTypes ?? []).includes(matchingScopeType) diff --git a/packages/cursorless-engine/src/testCaseRecorder/TestCase.ts b/packages/cursorless-engine/src/testCaseRecorder/TestCase.ts index e821e20149..05e0e00c59 100644 --- a/packages/cursorless-engine/src/testCaseRecorder/TestCase.ts +++ b/packages/cursorless-engine/src/testCaseRecorder/TestCase.ts @@ -165,7 +165,7 @@ export class TestCase { this.storedTargets, excludeFields, this.extraSnapshotFields, - ide().activeTextEditor, + ide().activeTextEditor!, ide(), this.getMarks(), { startTimestamp: this.startTimestamp }, @@ -186,7 +186,7 @@ export class TestCase { this.storedTargets, excludeFields, this.extraSnapshotFields, - ide().activeTextEditor, + ide().activeTextEditor!, ide(), this.isHatTokenMapTest ? this.getMarks() : undefined, { startTimestamp: this.startTimestamp }, diff --git a/packages/cursorless-vscode-e2e/src/endToEndTestSetup.ts b/packages/cursorless-vscode-e2e/src/endToEndTestSetup.ts index 4cfc633ecd..38f6f15d21 100644 --- a/packages/cursorless-vscode-e2e/src/endToEndTestSetup.ts +++ b/packages/cursorless-vscode-e2e/src/endToEndTestSetup.ts @@ -42,6 +42,9 @@ export function endToEndTestSetup(suite: Mocha.Suite) { return { getSpy() { + if (spy == null) { + throw Error("spy is undefined"); + } return spy; }, }; diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardActionType.ts b/packages/cursorless-vscode/src/keyboard/KeyboardActionType.ts index 7911df82ad..6cd7bbaf40 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardActionType.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardActionType.ts @@ -42,7 +42,7 @@ const keyboardActionNames: KeyboardActionType[] = [ ( actionName, ): actionName is Exclude => - !excludedKeyboardActionNames.includes(actionName), + !excludedKeyboardActionNames.includes(actionName as any), ), ...extraKeyboardActionNames, ]; diff --git a/packages/cursorless-vscode/src/usingSetting.ts b/packages/cursorless-vscode/src/usingSetting.ts index b7f2e5dab4..64045bfee3 100644 --- a/packages/cursorless-vscode/src/usingSetting.ts +++ b/packages/cursorless-vscode/src/usingSetting.ts @@ -17,7 +17,7 @@ export function usingSetting( factory: (value: T) => Disposable, ): Disposable { const runFactoryWithLatestConfig = () => - factory(vscodeApi.workspace.getConfiguration(section).get(setting)); + factory(vscodeApi.workspace.getConfiguration(section).get(setting)!); let disposable = runFactoryWithLatestConfig(); const configurationDisposable = vscodeApi.workspace.onDidChangeConfiguration( From 0429723dc8e5005a2c47a0f8206468cfd057a27f Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Sun, 28 Jul 2024 20:47:56 +0200 Subject: [PATCH 14/35] Add const --- packages/common/src/types/command/command.types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/common/src/types/command/command.types.ts b/packages/common/src/types/command/command.types.ts index baf934734f..dbdd091adf 100644 --- a/packages/common/src/types/command/command.types.ts +++ b/packages/common/src/types/command/command.types.ts @@ -10,7 +10,7 @@ import type { CommandV5 } from "./legacy/CommandV5.types"; export type CommandComplete = Required> & Pick; -export const LATEST_VERSION = 7; +export const LATEST_VERSION = 7 as const; export type CommandLatest = Command & { version: typeof LATEST_VERSION; From 8d10575f39a7c77ce2c0250c77e1bfca65534f95 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Mon, 29 Jul 2024 01:16:46 +0200 Subject: [PATCH 15/35] More fixes --- .../src/languages/LanguageDefinitions.ts | 4 ++-- packages/cursorless-neovim/src/registerCommands.ts | 4 ++-- packages/cursorless-tutorial/src/TutorialImpl.ts | 14 +++++++------- packages/cursorless-vscode/src/VscodeTutorial.ts | 14 +++++++------- packages/neovim-common/src/ide/neovim/NeovimIDE.ts | 2 +- .../test-harness/src/scripts/runNeovimTestsCI.ts | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/cursorless-engine/src/languages/LanguageDefinitions.ts b/packages/cursorless-engine/src/languages/LanguageDefinitions.ts index ce113a2ee8..1c789d72cc 100644 --- a/packages/cursorless-engine/src/languages/LanguageDefinitions.ts +++ b/packages/cursorless-engine/src/languages/LanguageDefinitions.ts @@ -73,8 +73,8 @@ export class LanguageDefinitionsImpl private treeSitter: TreeSitter, private treeSitterQueryProvider: RawTreeSitterQueryProvider, ) { - void ide.onDidOpenTextDocument((document) => { - this.loadLanguage(document.languageId); + ide.onDidOpenTextDocument((document) => { + void this.loadLanguage(document.languageId); }); ide.onDidChangeVisibleTextEditors((editors) => { editors.forEach(({ document }) => this.loadLanguage(document.languageId)); diff --git a/packages/cursorless-neovim/src/registerCommands.ts b/packages/cursorless-neovim/src/registerCommands.ts index 2dd389d1c9..3df1aa077e 100644 --- a/packages/cursorless-neovim/src/registerCommands.ts +++ b/packages/cursorless-neovim/src/registerCommands.ts @@ -28,7 +28,7 @@ export async function registerCommands( const originalMode = await client.mode; if (originalMode.mode === "t") { // Switch to "nt" so we can easily call lua functions without any problems - modeSwitchNormalTerminal(client); + void modeSwitchNormalTerminal(client); } try { @@ -49,7 +49,7 @@ export async function registerCommands( ) { // if user runs a terminal, and a "bring" command was requested, switch back to "t" mode // so the fallback can do its magic - modeSwitchTerminal(client); + void modeSwitchTerminal(client); } } diff --git a/packages/cursorless-tutorial/src/TutorialImpl.ts b/packages/cursorless-tutorial/src/TutorialImpl.ts index 339f14b2a6..b8ac4a3853 100644 --- a/packages/cursorless-tutorial/src/TutorialImpl.ts +++ b/packages/cursorless-tutorial/src/TutorialImpl.ts @@ -73,7 +73,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { this.reparseCurrentTutorial = this.reparseCurrentTutorial.bind(this); const debouncer = new Debouncer(() => this.checkPreconditions(), 100); - this.loadTutorials().then(() => { + void this.loadTutorials().then(() => { if (this.state_.type === "loading") { this.setState(this.getPickingTutorialState()); } @@ -107,7 +107,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { currentStep.trigger?.type === "visualize" && isEqual(currentStep.trigger.scopeType, scopeType) ) { - this.next(); + void this.next(); } } } @@ -216,7 +216,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { if (this.state_.type === "doingTutorial") { const currentStep = this.currentTutorial!.steps[this.state_.stepNumber]; if (currentStep.trigger?.type === "help") { - this.next(); + void this.next(); } } } @@ -285,7 +285,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { this.state_ = state; if (state.type === "doingTutorial") { - this.ide.globalState.set( + void this.ide.globalState.set( "tutorialProgress", produce(this.ide.globalState.get("tutorialProgress"), (draft) => { draft[state.id] = { @@ -313,7 +313,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { ); if (this.editor !== editor && this.editor != null) { - this.ide.setHighlightRanges(HIGHLIGHT_COLOR, this.editor, []); + void this.ide.setHighlightRanges(HIGHLIGHT_COLOR, this.editor, []); } this.editor = editor; @@ -327,13 +327,13 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { this.state_.type === "doingTutorial" && this.state_.preConditionsMet ) { - this.ide.setHighlightRanges( + void this.ide.setHighlightRanges( HIGHLIGHT_COLOR, this.editor, this.highlightRanges, ); } else { - this.ide.setHighlightRanges(HIGHLIGHT_COLOR, this.editor, []); + void this.ide.setHighlightRanges(HIGHLIGHT_COLOR, this.editor, []); } } } diff --git a/packages/cursorless-vscode/src/VscodeTutorial.ts b/packages/cursorless-vscode/src/VscodeTutorial.ts index 5faeb4981c..ff6e8e8712 100644 --- a/packages/cursorless-vscode/src/VscodeTutorial.ts +++ b/packages/cursorless-vscode/src/VscodeTutorial.ts @@ -96,19 +96,19 @@ export class VscodeTutorial implements WebviewViewProvider { webview.onDidReceiveMessage((data) => { switch (data.type) { case "getInitialState": - webview.postMessage(this.tutorial.state); + void webview.postMessage(this.tutorial.state); break; case "start": - this.start(data.tutorialId); + void this.start(data.tutorialId); break; case "list": - this.list(); + void this.list(); break; case "previous": - this.previous(); + void this.previous(); break; case "next": - this.next(); + void this.next(); break; } }); @@ -158,14 +158,14 @@ export class VscodeTutorial implements WebviewViewProvider { } private onState(state: TutorialState) { - this.view?.webview.postMessage(state); + void this.view?.webview.postMessage(state); } private revealTutorial() { if (this.view != null) { this.view.show(true); } else { - this.vscodeApi.commands.executeCommand("cursorless.tutorial.focus"); + void this.vscodeApi.commands.executeCommand("cursorless.tutorial.focus"); } } diff --git a/packages/neovim-common/src/ide/neovim/NeovimIDE.ts b/packages/neovim-common/src/ide/neovim/NeovimIDE.ts index ae41b6047a..6eadddac21 100644 --- a/packages/neovim-common/src/ide/neovim/NeovimIDE.ts +++ b/packages/neovim-common/src/ide/neovim/NeovimIDE.ts @@ -317,7 +317,7 @@ export class NeovimIDE implements IDE { // if (err instanceof OutdatedExtensionError) { // this.showUpdateExtensionErrorMessage(err); // } else { - showErrorMessage(this.client, err.message); + void showErrorMessage(this.client, err.message); // } } diff --git a/packages/test-harness/src/scripts/runNeovimTestsCI.ts b/packages/test-harness/src/scripts/runNeovimTestsCI.ts index 3d2bbb5359..03533a929d 100644 --- a/packages/test-harness/src/scripts/runNeovimTestsCI.ts +++ b/packages/test-harness/src/scripts/runNeovimTestsCI.ts @@ -4,7 +4,7 @@ import { launchNeovimAndRunTests } from "../launchNeovimAndRunTests"; -(async () => { +void (async () => { // Note that we run all extension tests, including unit tests, in neovim, even though // unit tests could be run separately. await launchNeovimAndRunTests(); From f47b3f2c2d2ea16fb9b346e4bf834f5844933092 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Mon, 29 Jul 2024 03:59:12 +0200 Subject: [PATCH 16/35] fixed failing test --- packages/common/src/types/command/command.types.ts | 2 +- packages/cursorless-engine/src/actions/ShowParseTree.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/common/src/types/command/command.types.ts b/packages/common/src/types/command/command.types.ts index dbdd091adf..baf934734f 100644 --- a/packages/common/src/types/command/command.types.ts +++ b/packages/common/src/types/command/command.types.ts @@ -10,7 +10,7 @@ import type { CommandV5 } from "./legacy/CommandV5.types"; export type CommandComplete = Required> & Pick; -export const LATEST_VERSION = 7 as const; +export const LATEST_VERSION = 7; export type CommandLatest = Command & { version: typeof LATEST_VERSION; diff --git a/packages/cursorless-engine/src/actions/ShowParseTree.ts b/packages/cursorless-engine/src/actions/ShowParseTree.ts index 0de97d8ebb..a6655ab07d 100644 --- a/packages/cursorless-engine/src/actions/ShowParseTree.ts +++ b/packages/cursorless-engine/src/actions/ShowParseTree.ts @@ -22,7 +22,7 @@ export default class ShowParseTree { results.push(parseTree(editor.document, tree, contentRange)); } - await ide().openUntitledTextDocument({ + void ide().openUntitledTextDocument({ language: "markdown", content: results.join("\n\n"), }); From 38e9e95db2475b6c1bf1e0ca1f48ae492f273d7f Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Tue, 30 Jul 2024 10:00:11 +0200 Subject: [PATCH 17/35] Fix type --- packages/cursorless-everywhere-talon-e2e/src/types/std.d.ts | 3 +++ packages/cursorless-everywhere-talon-e2e/tsconfig.json | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 packages/cursorless-everywhere-talon-e2e/src/types/std.d.ts diff --git a/packages/cursorless-everywhere-talon-e2e/src/types/std.d.ts b/packages/cursorless-everywhere-talon-e2e/src/types/std.d.ts new file mode 100644 index 0000000000..e63dce1ff1 --- /dev/null +++ b/packages/cursorless-everywhere-talon-e2e/src/types/std.d.ts @@ -0,0 +1,3 @@ +declare module "std" { + function exit(code: number): void; +} diff --git a/packages/cursorless-everywhere-talon-e2e/tsconfig.json b/packages/cursorless-everywhere-talon-e2e/tsconfig.json index f24151b89c..919f526c7d 100644 --- a/packages/cursorless-everywhere-talon-e2e/tsconfig.json +++ b/packages/cursorless-everywhere-talon-e2e/tsconfig.json @@ -4,7 +4,6 @@ "target": "ES2022" }, "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"], - "exclude": ["src/quickjsTest.ts"], "references": [ { "path": "../common" From af970128247b72899e8bf184bc2d646bbfd3d28e Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:19:04 +0100 Subject: [PATCH 18/35] cleanup --- packages/common/src/util/splitKey.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/common/src/util/splitKey.ts b/packages/common/src/util/splitKey.ts index bc5a829cb8..cac35ef01e 100644 --- a/packages/common/src/util/splitKey.ts +++ b/packages/common/src/util/splitKey.ts @@ -1,10 +1,17 @@ import type { HatStyleName } from "../ide/types/hatStyles.types"; -export function splitKey(key: string) { +interface SplitKey { + hatStyle: string; + // If the character is `.` then it will appear as a zero length string + // due to the way the split on `.` works + character: HatStyleName; +} + +export function splitKey(key: string): SplitKey { const [hatStyle, character] = key.split("."); return { - hatStyle: hatStyle, + hatStyle, // If the character is `.` then it will appear as a zero length string // due to the way the split on `.` works character: character.length === 0 ? "." : character, From 691035ff4d97cd5e88c979e8fd1f3bb8d9695db4 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:19:28 +0100 Subject: [PATCH 19/35] attempt to get rid of typescript version warning by bumping deps --- package.json | 2 +- packages/cursorless-org/package.json | 2 +- pnpm-lock.yaml | 769 ++++++++++++++------------- 3 files changed, 410 insertions(+), 363 deletions(-) diff --git a/package.json b/package.json index 6df0c2c1f0..08fda65a7f 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@pnpm/meta-updater": "1.0.0", "@types/node": "18.18.2", "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.4.0", + "@typescript-eslint/parser": "^7.18.0", "esbuild": "^0.20.2", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", diff --git a/packages/cursorless-org/package.json b/packages/cursorless-org/package.json index 3471a27b65..d8552b5bdb 100644 --- a/packages/cursorless-org/package.json +++ b/packages/cursorless-org/package.json @@ -31,7 +31,7 @@ "@types/react-dom": "18.2.22", "autoprefixer": "10.4.19", "eslint": "^8.57.0", - "eslint-config-next": "14.1.4", + "eslint-config-next": "14.2.5", "http-server": "14.1.1", "postcss": "8.4.38", "tailwindcss": "3.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 871f3c6267..d6e1adabf2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,10 +27,10 @@ importers: version: 18.18.2 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) + version: 7.4.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': - specifier: ^7.4.0 - version: 7.4.0(eslint@8.57.0)(typescript@5.5.3) + specifier: ^7.18.0 + version: 7.18.0(eslint@8.57.0)(typescript@5.5.3) esbuild: specifier: ^0.20.2 version: 0.20.2 @@ -42,10 +42,10 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-import-resolver-typescript: specifier: 3.6.1 - version: 3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + version: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-plugin-import: specifier: 2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-mocha: specifier: 10.4.1 version: 10.4.1(eslint@8.57.0) @@ -54,7 +54,7 @@ importers: version: 51.0.1(eslint@8.57.0) eslint-plugin-unused-imports: specifier: ^3.1.0 - version: 3.1.0(@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0) + version: 3.1.0(@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0) prettier: specifier: 3.2.5 version: 3.2.5 @@ -498,8 +498,8 @@ importers: specifier: ^8.57.0 version: 8.57.0 eslint-config-next: - specifier: 14.1.4 - version: 14.1.4(eslint@8.57.0)(typescript@5.5.3) + specifier: 14.2.5 + version: 14.2.5(eslint@8.57.0)(typescript@5.5.3) http-server: specifier: 14.1.1 version: 14.1.1 @@ -523,19 +523,19 @@ importers: version: 3.6.0(@algolia/client-search@4.22.1)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0) '@docusaurus/core': specifier: 3.1.1 - version: 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + version: 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/preset-classic': specifier: 3.1.1 - version: 3.1.1(@algolia/client-search@4.22.1)(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0)(typescript@5.5.3) + version: 3.1.1(@algolia/client-search@4.22.1)(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0)(typescript@5.5.3) '@docusaurus/theme-classic': specifier: 3.1.1 - version: 3.1.1(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + version: 3.1.1(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/theme-common': specifier: 3.1.1 - version: 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + version: 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/theme-search-algolia': specifier: 3.1.1 - version: 3.1.1(patch_hash=lazxwgumd4o5a3ibe55vftei5e)(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0)(typescript@5.5.3) + version: 3.1.1(patch_hash=lazxwgumd4o5a3ibe55vftei5e)(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0)(typescript@5.5.3) '@mdx-js/react': specifier: 3.0.1 version: 3.0.1(@types/react@18.3.3)(react@18.2.0) @@ -630,7 +630,7 @@ importers: version: 2.20.1(patch_hash=mg2fc7wgvzub3myuz6m74hllma) semver: specifier: ^7.6.0 - version: 7.6.0 + version: 7.6.3 tinycolor2: specifier: 1.6.0 version: 1.6.0 @@ -2025,8 +2025,8 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.17.0': - resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} + '@eslint/config-array@0.17.1': + resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@2.1.4': @@ -2041,8 +2041,8 @@ packages: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.7.0': - resolution: {integrity: sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==} + '@eslint/js@9.8.0': + resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -2226,8 +2226,8 @@ packages: '@next/env@14.1.4': resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} - '@next/eslint-plugin-next@14.1.4': - resolution: {integrity: sha512-n4zYNLSyCo0Ln5b7qxqQeQ34OZKXwgbdcx6kmkQbywr+0k6M3Vinft0T72R6CDAcDrne2IAgSud4uWCzFgc5HA==} + '@next/eslint-plugin-next@14.2.5': + resolution: {integrity: sha512-LY3btOpPh+OTIpviNojDpUdIbHW9j0JBYBjsIp8IxtDFfYFyORvw3yNq6N231FVqQA7n7lwaf7xHbVJlA1ED7g==} '@next/mdx@14.1.4': resolution: {integrity: sha512-FyuDXPTEmuIqtj/AxaKLvwiEZb6hDviq6Ywn8ZlsZOlvYSWpcZGuQrYrDulrdIm/I48hHXANor7EiJzTbVig8Q==} @@ -2701,8 +2701,8 @@ packages: '@polka/url@1.0.0-next.25': resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - '@rushstack/eslint-patch@1.8.0': - resolution: {integrity: sha512-0HejFckBN2W+ucM6cUOlwsByTKt9/+0tWhqUffNIcHqCXkthY/mZ7AuYPK/2IIaGWhdl0h+tICDO0ssLMd6XMQ==} + '@rushstack/eslint-patch@1.10.4': + resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -3267,19 +3267,19 @@ packages: typescript: optional: true - '@typescript-eslint/parser@6.21.0': - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@7.4.0': - resolution: {integrity: sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/parser@7.2.0': + resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^8.56.0 typescript: '*' @@ -3287,8 +3287,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@6.21.0': - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/scope-manager@7.2.0': + resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} engines: {node: ^16.0.0 || >=18.0.0} '@typescript-eslint/scope-manager@7.4.0': @@ -3305,16 +3309,29 @@ packages: typescript: optional: true - '@typescript-eslint/types@6.21.0': - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/types@7.2.0': + resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} engines: {node: ^16.0.0 || >=18.0.0} '@typescript-eslint/types@7.4.0': resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@6.21.0': - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.2.0': + resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -3337,8 +3354,12 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@6.21.0': - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/visitor-keys@7.2.0': + resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} engines: {node: ^16.0.0 || >=18.0.0} '@typescript-eslint/visitor-keys@7.4.0': @@ -3645,9 +3666,6 @@ packages: aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} @@ -3683,11 +3701,9 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} - array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - - array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} arraybuffer.prototype.slice@1.0.3: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} @@ -3742,12 +3758,12 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + axe-core@4.10.0: + resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} engines: {node: '>=4'} - axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + axobject-query@3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} @@ -4555,8 +4571,8 @@ packages: supports-color: optional: true - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -4848,8 +4864,8 @@ packages: encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - enhanced-resolve@5.17.0: - resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} enquirer@2.4.1: @@ -4884,8 +4900,8 @@ packages: error@10.4.0: resolution: {integrity: sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw==} - es-abstract@1.23.2: - resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} es-define-property@1.0.0: @@ -4899,8 +4915,8 @@ packages: es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es-iterator-helpers@1.0.18: - resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} engines: {node: '>= 0.4'} es-module-lexer@1.5.4: @@ -4958,8 +4974,8 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-config-next@14.1.4: - resolution: {integrity: sha512-cihIahbhYAWwXJwZkAaRPpUi5t9aOi/HdfWXOjZeUOqNWXHD8X22kd1KG58Dc3MVaRx3HoR/oMGk2ltcrqDn8g==} + eslint-config-next@14.2.5: + resolution: {integrity: sha512-zogs9zlOiZ7ka+wgUnmcM0KBEDjo4Jis7kxN1jvC0N4wynQ2MIx/KBkg4mVF63J5EK4W0QMCn7xO3vNisjaAoA==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 typescript: '>=3.3.1' @@ -5014,8 +5030,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsx-a11y@6.8.0: - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + eslint-plugin-jsx-a11y@6.9.0: + resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -5026,17 +5042,17 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-plugin-react-hooks@4.6.0: - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - eslint-plugin-react@7.34.1: - resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} + eslint-plugin-react@7.35.0: + resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==} engines: {node: '>=4'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 eslint-plugin-unicorn@51.0.1: resolution: {integrity: sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==} @@ -5093,8 +5109,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true - eslint@9.7.0: - resolution: {integrity: sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==} + eslint@9.8.0: + resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -5553,8 +5569,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globby@11.1.0: @@ -5991,8 +6007,9 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + engines: {node: '>= 0.4'} is-data-view@1.0.1: resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} @@ -6539,8 +6556,8 @@ packages: kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} language-tags@1.0.9: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} @@ -7036,6 +7053,10 @@ packages: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -7365,8 +7386,9 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} object-is@1.1.6: resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} @@ -7392,10 +7414,6 @@ packages: resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} - object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} - object.values@1.2.0: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} @@ -8669,8 +8687,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true @@ -8956,10 +8974,16 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + string.prototype.matchall@4.0.11: resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} engines: {node: '>= 0.4'} + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} @@ -9743,8 +9767,8 @@ packages: which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + which-builtin-type@1.1.4: + resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} engines: {node: '>= 0.4'} which-collection@1.0.2: @@ -10071,7 +10095,7 @@ snapshots: '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 convert-source-map: 2.0.0 - debug: 4.3.5 + debug: 4.3.6 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -10126,7 +10150,7 @@ snapshots: '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 - debug: 4.3.5 + debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -10831,7 +10855,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.24.1 '@babel/types': 7.24.0 - debug: 4.3.5 + debug: 4.3.6 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -10877,7 +10901,7 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/core@3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': + '@docusaurus/core@3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': dependencies: '@babel/core': 7.24.3 '@babel/generator': 7.24.1 @@ -10929,7 +10953,7 @@ snapshots: postcss-loader: 7.3.4(postcss@8.4.38)(typescript@5.5.3)(webpack@5.91.0(esbuild@0.20.2)) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(eslint@9.7.0)(typescript@5.5.3)(webpack@5.91.0(esbuild@0.20.2)) + react-dev-utils: 12.0.1(eslint@9.8.0)(typescript@5.5.3)(webpack@5.91.0(esbuild@0.20.2)) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-loadable: '@docusaurus/react-loadable@5.5.2(react@18.2.0)' @@ -10938,7 +10962,7 @@ snapshots: react-router-config: 5.1.1(react-router@5.3.4(react@18.2.0))(react@18.2.0) react-router-dom: 5.3.4(react@18.2.0) rtl-detect: 1.1.2 - semver: 7.6.0 + semver: 7.6.3 serve-handler: 6.1.5 shelljs: 0.8.5 terser-webpack-plugin: 5.3.10(esbuild@0.20.2)(webpack@5.91.0(esbuild@0.20.2)) @@ -11038,9 +11062,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': + '@docusaurus/plugin-content-blog@3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/logger': 3.1.1 '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/types': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -11077,9 +11101,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': + '@docusaurus/plugin-content-docs@3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/logger': 3.1.1 '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/module-type-aliases': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -11114,9 +11138,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': + '@docusaurus/plugin-content-pages@3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/types': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2) @@ -11144,9 +11168,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': + '@docusaurus/plugin-debug@3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/types': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2) fs-extra: 11.2.0 @@ -11172,9 +11196,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': + '@docusaurus/plugin-google-analytics@3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/types': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2) react: 18.2.0 @@ -11198,9 +11222,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': + '@docusaurus/plugin-google-gtag@3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/types': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2) '@types/gtag.js': 0.0.12 @@ -11225,9 +11249,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': + '@docusaurus/plugin-google-tag-manager@3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/types': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2) react: 18.2.0 @@ -11251,9 +11275,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-sitemap@3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': + '@docusaurus/plugin-sitemap@3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/logger': 3.1.1 '@docusaurus/types': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2) @@ -11282,20 +11306,20 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.1.1(@algolia/client-search@4.22.1)(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0)(typescript@5.5.3)': - dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-content-blog': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-content-docs': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-content-pages': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-debug': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-google-analytics': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-google-gtag': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-google-tag-manager': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-sitemap': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/theme-classic': 3.1.1(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/theme-search-algolia': 3.1.1(patch_hash=lazxwgumd4o5a3ibe55vftei5e)(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0)(typescript@5.5.3) + '@docusaurus/preset-classic@3.1.1(@algolia/client-search@4.22.1)(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0)(typescript@5.5.3)': + dependencies: + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-content-blog': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-content-docs': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-content-pages': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-debug': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-google-analytics': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-google-gtag': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-google-tag-manager': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-sitemap': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/theme-classic': 3.1.1(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/theme-search-algolia': 3.1.1(patch_hash=lazxwgumd4o5a3ibe55vftei5e)(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0)(typescript@5.5.3) '@docusaurus/types': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -11326,15 +11350,15 @@ snapshots: prop-types: 15.8.1 react: 18.2.0 - '@docusaurus/theme-classic@3.1.1(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': + '@docusaurus/theme-classic@3.1.1(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/module-type-aliases': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-content-docs': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-content-pages': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-content-blog': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-content-docs': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-content-pages': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/theme-translations': 3.1.1 '@docusaurus/types': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2) @@ -11374,13 +11398,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-common@3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': + '@docusaurus/theme-common@3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3)': dependencies: '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@docusaurus/module-type-aliases': 3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-content-docs': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/plugin-content-pages': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-content-blog': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-content-docs': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-content-pages': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2) '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) '@types/history': 4.7.11 @@ -11412,13 +11436,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-search-algolia@3.1.1(patch_hash=lazxwgumd4o5a3ibe55vftei5e)(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0)(typescript@5.5.3)': + '@docusaurus/theme-search-algolia@3.1.1(patch_hash=lazxwgumd4o5a3ibe55vftei5e)(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.3.3)(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0)(typescript@5.5.3)': dependencies: '@docsearch/react': 3.6.0(@algolia/client-search@4.22.1)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.15.0) - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/logger': 3.1.1 - '@docusaurus/plugin-content-docs': 3.1.1(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) - '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.7.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/plugin-content-docs': 3.1.1(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2)(eslint@9.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.3) '@docusaurus/theme-translations': 3.1.1 '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(esbuild@0.20.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(esbuild@0.20.2) @@ -11615,18 +11639,18 @@ snapshots: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.4.0(eslint@9.7.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)': dependencies: - eslint: 9.7.0 + eslint: 9.8.0 eslint-visitor-keys: 3.4.3 optional: true '@eslint-community/regexpp@4.11.0': {} - '@eslint/config-array@0.17.0': + '@eslint/config-array@0.17.1': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.5 + debug: 4.3.6 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -11635,7 +11659,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.6 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -11649,7 +11673,7 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.6 espree: 10.1.0 globals: 14.0.0 ignore: 5.3.1 @@ -11663,7 +11687,7 @@ snapshots: '@eslint/js@8.57.0': {} - '@eslint/js@9.7.0': + '@eslint/js@9.8.0': optional: true '@eslint/object-schema@2.1.4': @@ -11698,7 +11722,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.5 + debug: 4.3.6 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -11974,7 +11998,7 @@ snapshots: '@next/env@14.1.4': {} - '@next/eslint-plugin-next@14.1.4': + '@next/eslint-plugin-next@14.2.5': dependencies: glob: 10.3.10 @@ -12054,7 +12078,7 @@ snapshots: read-package-json-fast: 2.0.3 readdir-scoped-modules: 1.1.0 rimraf: 3.0.2 - semver: 7.6.0 + semver: 7.6.3 ssri: 8.0.1 treeverse: 1.0.4 walk-up-path: 1.0.0 @@ -12065,16 +12089,16 @@ snapshots: '@npmcli/fs@1.1.1': dependencies: '@gar/promisify': 1.1.3 - semver: 7.6.0 + semver: 7.6.3 '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.6.0 + semver: 7.6.3 '@npmcli/fs@3.1.0': dependencies: - semver: 7.6.0 + semver: 7.6.3 '@npmcli/git@2.1.0': dependencies: @@ -12084,7 +12108,7 @@ snapshots: npm-pick-manifest: 6.1.1 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.6.0 + semver: 7.6.3 which: 2.0.2 transitivePeerDependencies: - bluebird @@ -12097,7 +12121,7 @@ snapshots: proc-log: 3.0.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.6.0 + semver: 7.6.3 which: 3.0.1 transitivePeerDependencies: - bluebird @@ -12124,7 +12148,7 @@ snapshots: cacache: 15.3.0 json-parse-even-better-errors: 2.3.1 pacote: 12.0.3 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - bluebird - supports-color @@ -12355,7 +12379,7 @@ snapshots: ramda: '@pnpm/ramda@0.28.1' right-pad: 1.0.1 rxjs: 7.8.1 - semver: 7.6.0 + semver: 7.6.3 stacktracey: 2.1.8 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -12364,7 +12388,7 @@ snapshots: dependencies: '@pnpm/crypto.base32-hash': 3.0.0 '@pnpm/types': 10.0.0 - semver: 7.6.0 + semver: 7.6.3 '@pnpm/error@4.0.1': dependencies: @@ -12438,7 +12462,7 @@ snapshots: '@pnpm/resolver-base': 12.0.0 graceful-git: 3.1.2 hosted-git-info: '@pnpm/hosted-git-info@1.0.0' - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - '@pnpm/logger' - domexception @@ -12483,7 +12507,7 @@ snapshots: js-yaml: '@zkochan/js-yaml@0.0.7' normalize-path: 3.0.0 ramda: '@pnpm/ramda@0.28.1' - semver: 7.6.0 + semver: 7.6.3 sort-keys: 4.2.0 strip-bom: 4.0.0 write-file-atomic: 5.0.1 @@ -12531,7 +12555,7 @@ snapshots: '@pnpm/lockfile-types': 6.0.0 comver-to-semver: 1.0.0 ramda: '@pnpm/ramda@0.28.1' - semver: 7.6.0 + semver: 7.6.3 '@pnpm/meta-updater@1.0.0': dependencies: @@ -12600,7 +12624,7 @@ snapshots: detect-libc: 2.0.3 execa: safe-execa@0.1.2 mem: 8.1.1 - semver: 7.6.0 + semver: 7.6.3 '@pnpm/pick-fetcher@3.0.0': {} @@ -12679,7 +12703,7 @@ snapshots: '@polka/url@1.0.0-next.25': {} - '@rushstack/eslint-patch@1.8.0': {} + '@rushstack/eslint-patch@1.10.4': {} '@sideway/address@4.1.5': dependencies: @@ -13305,56 +13329,61 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/scope-manager': 7.4.0 '@typescript-eslint/type-utils': 7.4.0(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/visitor-keys': 7.4.0 - debug: 4.3.5 + debug: 4.3.6 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.0 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.3) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.5 + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 eslint: 8.57.0 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.5.3) - '@typescript-eslint/visitor-keys': 7.4.0 - debug: 4.3.5 + '@typescript-eslint/scope-manager': 7.2.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.6 eslint: 8.57.0 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@6.21.0': + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + + '@typescript-eslint/scope-manager@7.2.0': dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 '@typescript-eslint/scope-manager@7.4.0': dependencies: @@ -13365,7 +13394,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.5.3) '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.5 + debug: 4.3.6 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: @@ -13373,19 +13402,36 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@6.21.0': {} + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/types@7.2.0': {} '@typescript-eslint/types@7.4.0': {} - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.5.3)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.3)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.3) + optionalDependencies: + typescript: 5.5.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@7.2.0(typescript@5.5.3)': dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.5 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.6.0 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 @@ -13396,11 +13442,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.4.0 '@typescript-eslint/visitor-keys': 7.4.0 - debug: 4.3.5 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.6.0 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 @@ -13416,14 +13462,19 @@ snapshots: '@typescript-eslint/types': 7.4.0 '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.5.3) eslint: 8.57.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@6.21.0': + '@typescript-eslint/visitor-keys@7.18.0': dependencies: - '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@7.2.0': + dependencies: + '@typescript-eslint/types': 7.2.0 eslint-visitor-keys: 3.4.3 '@typescript-eslint/visitor-keys@7.4.0': @@ -13438,7 +13489,7 @@ snapshots: http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 jszip: 3.10.1 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -13607,13 +13658,13 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color agentkeepalive@4.2.1: dependencies: - debug: 4.3.5 + debug: 4.3.6 depd: 1.1.2 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -13752,10 +13803,6 @@ snapshots: dependencies: deep-equal: 2.2.3 - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 @@ -13769,7 +13816,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 @@ -13780,7 +13827,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -13789,7 +13836,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -13798,28 +13845,21 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 - es-shim-unscopables: 1.0.2 - - array.prototype.toreversed@1.1.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - array.prototype.tosorted@1.1.3: + array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 @@ -13828,7 +13868,7 @@ snapshots: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 @@ -13874,11 +13914,11 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - axe-core@4.7.0: {} + axe-core@4.10.0: {} - axobject-query@3.2.1: + axobject-query@3.1.1: dependencies: - dequal: 2.0.3 + deep-equal: 2.2.3 babel-jest@29.7.0(@babel/core@7.24.3): dependencies: @@ -14116,7 +14156,7 @@ snapshots: builtins@5.0.1: dependencies: - semver: 7.6.0 + semver: 7.6.3 bundle-name@4.1.0: dependencies: @@ -14651,7 +14691,7 @@ snapshots: postcss-modules-scope: 3.1.1(postcss@8.4.38) postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 - semver: 7.6.0 + semver: 7.6.3 optionalDependencies: webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) @@ -14664,7 +14704,7 @@ snapshots: postcss-modules-scope: 3.1.1(postcss@8.4.38) postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 - semver: 7.6.0 + semver: 7.6.3 optionalDependencies: webpack: 5.91.0(esbuild@0.20.2) @@ -14838,7 +14878,7 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.3.5: + debug@4.3.6: dependencies: ms: 2.1.2 @@ -14972,7 +15012,7 @@ snapshots: detect-port@1.5.1: dependencies: address: 1.2.2 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -15103,7 +15143,7 @@ snapshots: iconv-lite: 0.6.3 optional: true - enhanced-resolve@5.17.0: + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -15133,7 +15173,7 @@ snapshots: error@10.4.0: {} - es-abstract@1.23.2: + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -15150,7 +15190,7 @@ snapshots: function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 - globalthis: 1.0.3 + globalthis: 1.0.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 @@ -15166,7 +15206,7 @@ snapshots: is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.1 + object-inspect: 1.13.2 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 @@ -15200,16 +15240,16 @@ snapshots: isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - es-iterator-helpers@1.0.18: + es-iterator-helpers@1.0.19: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 es-set-tostringtag: 2.0.3 function-bind: 1.1.2 get-intrinsic: 1.2.4 - globalthis: 1.0.3 + globalthis: 1.0.4 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 @@ -15287,18 +15327,18 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-next@14.1.4(eslint@8.57.0)(typescript@5.5.3): + eslint-config-next@14.2.5(eslint@8.57.0)(typescript@5.5.3): dependencies: - '@next/eslint-plugin-next': 14.1.4 - '@rushstack/eslint-patch': 1.8.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.3) + '@next/eslint-plugin-next': 14.2.5 + '@rushstack/eslint-patch': 1.10.4 + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.1(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) + eslint-plugin-react: 7.35.0(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: @@ -15312,21 +15352,21 @@ snapshots: eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.13.1 + is-core-module: 2.15.0 resolve: 1.22.8 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: - debug: 4.3.5 - enhanced-resolve: 5.17.0 + debug: 4.3.6 + enhanced-resolve: 5.17.1 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.3 - is-core-module: 2.13.1 + is-core-module: 2.15.0 is-glob: 4.0.3 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -15334,16 +15374,16 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: - debug: 4.3.5 - enhanced-resolve: 5.17.0 + debug: 4.3.6 + enhanced-resolve: 5.17.1 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.3 - is-core-module: 2.13.1 + is-core-module: 2.15.0 is-glob: 4.0.3 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -15351,39 +15391,39 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -15393,9 +15433,9 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 - is-core-module: 2.13.1 + is-core-module: 2.15.0 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 @@ -15404,13 +15444,13 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -15420,9 +15460,9 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 - is-core-module: 2.13.1 + is-core-module: 2.15.0 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 @@ -15431,31 +15471,31 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0): dependencies: - '@babel/runtime': 7.24.1 - aria-query: 5.3.0 + aria-query: 5.1.3 array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 + axe-core: 4.10.0 + axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.18 + es-iterator-helpers: 1.0.19 eslint: 8.57.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.8 object.fromentries: 2.0.8 + safe-regex-test: 1.0.3 + string.prototype.includes: 2.0.0 eslint-plugin-mocha@10.4.1(eslint@8.57.0): dependencies: @@ -15464,31 +15504,31 @@ snapshots: globals: 13.24.0 rambda: 7.5.0 - eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-plugin-react@7.34.1(eslint@8.57.0): + eslint-plugin-react@7.35.0(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 + array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.0.18 + es-iterator-helpers: 1.0.19 eslint: 8.57.0 estraverse: 5.3.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 object.entries: 1.1.8 object.fromentries: 2.0.8 - object.hasown: 1.1.4 object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 string.prototype.matchall: 4.0.11 + string.prototype.repeat: 1.0.0 eslint-plugin-unicorn@51.0.1(eslint@8.57.0): dependencies: @@ -15507,17 +15547,17 @@ snapshots: read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 - semver: 7.6.0 + semver: 7.6.3 strip-indent: 3.0.0 transitivePeerDependencies: - supports-color - eslint-plugin-unused-imports@3.1.0(@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0): + eslint-plugin-unused-imports@3.1.0(@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-rule-composer: 0.3.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 7.4.0(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/eslint-plugin': 7.4.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) eslint-rule-composer@0.3.0: {} @@ -15562,7 +15602,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.6 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -15592,20 +15632,20 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.7.0: + eslint@9.8.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@eslint-community/regexpp': 4.11.0 - '@eslint/config-array': 0.17.0 + '@eslint/config-array': 0.17.1 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.7.0 + '@eslint/js': 9.8.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.6 escape-string-regexp: 4.0.0 eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 @@ -15948,7 +15988,7 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.7.0)(typescript@5.5.3)(webpack@5.91.0(esbuild@0.20.2)): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.8.0)(typescript@5.5.3)(webpack@5.91.0(esbuild@0.20.2)): dependencies: '@babel/code-frame': 7.24.2 '@types/json-schema': 7.0.15 @@ -15961,12 +16001,12 @@ snapshots: memfs: 3.5.3 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.6.0 + semver: 7.6.3 tapable: 1.1.3 typescript: 5.5.3 webpack: 5.91.0(esbuild@0.20.2) optionalDependencies: - eslint: 9.7.0 + eslint: 9.8.0 form-data-encoder@2.1.4: {} @@ -16018,7 +16058,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 functions-have-names: 1.2.3 functions-have-names@1.2.3: {} @@ -16149,9 +16189,10 @@ snapshots: globals@14.0.0: optional: true - globalthis@1.0.3: + globalthis@1.0.4: dependencies: define-properties: 1.2.1 + gopd: 1.0.1 globby@11.1.0: dependencies: @@ -16467,7 +16508,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -16475,7 +16516,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -16526,7 +16567,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -16711,7 +16752,7 @@ snapshots: dependencies: ci-info: 3.9.0 - is-core-module@2.13.1: + is-core-module@2.15.0: dependencies: hasown: 2.0.2 @@ -16904,7 +16945,7 @@ snapshots: '@babel/parser': 7.24.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -16916,7 +16957,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.5 + debug: 4.3.6 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -17224,7 +17265,7 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -17406,11 +17447,11 @@ snapshots: kuler@2.0.0: {} - language-subtag-registry@0.3.22: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: dependencies: - language-subtag-registry: 0.3.22 + language-subtag-registry: 0.3.23 latest-version@7.0.0: dependencies: @@ -17545,7 +17586,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.0 + semver: 7.6.3 make-error@1.3.6: {} @@ -18160,7 +18201,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.5 + debug: 4.3.6 decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.0 @@ -18236,6 +18277,10 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + minimist-options@4.1.0: dependencies: arrify: 1.0.1 @@ -18473,7 +18518,7 @@ snapshots: nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.6.0 + semver: 7.6.3 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -18490,7 +18535,7 @@ snapshots: nopt: 6.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.6.0 + semver: 7.6.3 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -18524,15 +18569,15 @@ snapshots: normalize-package-data@3.0.3: dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.13.1 - semver: 7.6.0 + is-core-module: 2.15.0 + semver: 7.6.3 validate-npm-package-license: 3.0.4 normalize-package-data@5.0.0: dependencies: hosted-git-info: 6.1.1 - is-core-module: 2.13.1 - semver: 7.6.0 + is-core-module: 2.15.0 + semver: 7.6.3 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -18555,11 +18600,11 @@ snapshots: npm-install-checks@4.0.0: dependencies: - semver: 7.6.0 + semver: 7.6.3 npm-install-checks@6.3.0: dependencies: - semver: 7.6.0 + semver: 7.6.3 npm-normalize-package-bin@1.0.1: {} @@ -18571,20 +18616,20 @@ snapshots: dependencies: hosted-git-info: 6.1.1 proc-log: 3.0.0 - semver: 7.6.0 + semver: 7.6.3 validate-npm-package-name: 5.0.0 npm-package-arg@11.0.1: dependencies: hosted-git-info: 7.0.1 proc-log: 3.0.0 - semver: 7.6.0 + semver: 7.6.3 validate-npm-package-name: 5.0.0 npm-package-arg@8.1.5: dependencies: hosted-git-info: 4.1.0 - semver: 7.6.0 + semver: 7.6.3 validate-npm-package-name: 3.0.0 npm-packlist@3.0.0: @@ -18603,14 +18648,14 @@ snapshots: npm-install-checks: 4.0.0 npm-normalize-package-bin: 1.0.1 npm-package-arg: 8.1.5 - semver: 7.6.0 + semver: 7.6.3 npm-pick-manifest@8.0.2: dependencies: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 npm-package-arg: 10.1.0 - semver: 7.6.0 + semver: 7.6.3 npm-registry-fetch@12.0.2: dependencies: @@ -18666,7 +18711,7 @@ snapshots: object-hash@3.0.0: {} - object-inspect@1.13.1: {} + object-inspect@1.13.2: {} object-is@1.1.6: dependencies: @@ -18692,20 +18737,14 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-object-atoms: 1.0.0 object.groupby@1.0.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 - - object.hasown@1.1.4: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.2 - es-object-atoms: 1.0.0 + es-abstract: 1.23.3 object.values@1.2.0: dependencies: @@ -18837,7 +18876,7 @@ snapshots: p-transform@1.3.0: dependencies: - debug: 4.3.5 + debug: 4.3.6 p-queue: 6.6.2 transitivePeerDependencies: - supports-color @@ -18849,7 +18888,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.6.0 + semver: 7.6.3 pacote@12.0.3: dependencies: @@ -19102,7 +19141,7 @@ snapshots: cosmiconfig: 8.3.6(typescript@5.5.3) jiti: 1.21.0 postcss: 8.4.38 - semver: 7.6.0 + semver: 7.6.3 webpack: 5.91.0(esbuild@0.20.2) transitivePeerDependencies: - typescript @@ -19112,7 +19151,7 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.5.3) jiti: 1.21.0 postcss: 8.4.38 - semver: 7.6.0 + semver: 7.6.3 optionalDependencies: webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) transitivePeerDependencies: @@ -19453,7 +19492,7 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-dev-utils@12.0.1(eslint@9.7.0)(typescript@5.5.3)(webpack@5.91.0(esbuild@0.20.2)): + react-dev-utils@12.0.1(eslint@9.8.0)(typescript@5.5.3)(webpack@5.91.0(esbuild@0.20.2)): dependencies: '@babel/code-frame': 7.24.2 address: 1.2.2 @@ -19464,7 +19503,7 @@ snapshots: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.7.0)(typescript@5.5.3)(webpack@5.91.0(esbuild@0.20.2)) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.8.0)(typescript@5.5.3)(webpack@5.91.0(esbuild@0.20.2)) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -19719,11 +19758,11 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 - globalthis: 1.0.3 - which-builtin-type: 1.1.3 + globalthis: 1.0.4 + which-builtin-type: 1.1.4 regenerate-unicode-properties@10.1.1: dependencies: @@ -19886,13 +19925,13 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 resolve@2.0.0-next.5: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -20034,7 +20073,7 @@ snapshots: semver-diff@4.0.0: dependencies: - semver: 7.6.0 + semver: 7.6.3 semver@5.7.2: {} @@ -20044,9 +20083,7 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 + semver@7.6.3: {} send@0.18.0: dependencies: @@ -20157,7 +20194,7 @@ snapshots: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.2 signal-exit@3.0.7: {} @@ -20225,7 +20262,7 @@ snapshots: socks-proxy-agent@6.1.1: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -20233,7 +20270,7 @@ snapshots: socks-proxy-agent@6.2.1: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -20241,7 +20278,7 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -20299,7 +20336,7 @@ snapshots: spdy-transport@3.0.0: dependencies: - debug: 4.3.5 + debug: 4.3.6 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -20310,7 +20347,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.3.5 + debug: 4.3.6 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -20399,11 +20436,16 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string.prototype.includes@2.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 @@ -20414,11 +20456,16 @@ snapshots: set-function-name: 2.0.2 side-channel: 1.0.6 + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-object-atoms: 1.0.0 string.prototype.trimend@1.0.8: @@ -20775,7 +20822,7 @@ snapshots: json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.6.0 + semver: 7.6.3 typescript: 5.5.3 yargs-parser: 21.1.1 optionalDependencies: @@ -20787,9 +20834,9 @@ snapshots: ts-loader@9.5.1(typescript@5.5.3)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: chalk: 4.1.2 - enhanced-resolve: 5.17.0 + enhanced-resolve: 5.17.1 micromatch: 4.0.5 - semver: 7.6.0 + semver: 7.6.3 source-map: 0.7.4 typescript: 5.5.3 webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) @@ -20826,7 +20873,7 @@ snapshots: tuf-js@1.1.7: dependencies: '@tufjs/models': 1.0.4 - debug: 4.3.5 + debug: 4.3.6 make-fetch-happen: 11.1.1 transitivePeerDependencies: - supports-color @@ -21021,7 +21068,7 @@ snapshots: is-yarn-global: 0.4.1 latest-version: 7.0.0 pupa: 3.1.0 - semver: 7.6.0 + semver: 7.6.3 semver-diff: 4.0.0 xdg-basedir: 5.1.0 @@ -21305,7 +21352,7 @@ snapshots: acorn-import-assertions: 1.9.0(acorn@8.12.1) browserslist: 4.23.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.0 + enhanced-resolve: 5.17.1 es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 @@ -21336,7 +21383,7 @@ snapshots: acorn-import-assertions: 1.9.0(acorn@8.12.1) browserslist: 4.23.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.0 + enhanced-resolve: 5.17.1 es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 @@ -21369,7 +21416,7 @@ snapshots: acorn-import-attributes: 1.9.5(acorn@8.12.1) browserslist: 4.23.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.0 + enhanced-resolve: 5.17.1 es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 @@ -21429,7 +21476,7 @@ snapshots: is-string: 1.0.7 is-symbol: 1.0.4 - which-builtin-type@1.1.3: + which-builtin-type@1.1.4: dependencies: function.prototype.name: 1.1.6 has-tostringtag: 1.0.2 @@ -21630,7 +21677,7 @@ snapshots: cli-table: 0.3.11 commander: 7.1.0 dateformat: 4.6.3 - debug: 4.3.5 + debug: 4.3.6 diff: 5.2.0 error: 10.4.0 escape-string-regexp: 4.0.0 @@ -21653,7 +21700,7 @@ snapshots: preferred-pm: 3.1.3 pretty-bytes: 5.6.0 readable-stream: 4.5.2 - semver: 7.6.0 + semver: 7.6.3 slash: 3.0.0 strip-ansi: 6.0.1 text-table: 0.2.0 @@ -21667,7 +21714,7 @@ snapshots: dependencies: chalk: 4.1.2 dargs: 7.0.0 - debug: 4.3.5 + debug: 4.3.6 execa: 5.1.1 github-username: 6.0.0(encoding@0.1.13) lodash: 4.17.21 @@ -21676,7 +21723,7 @@ snapshots: pacote: 15.2.0 read-pkg-up: 7.0.1 run-async: 2.4.1 - semver: 7.6.0 + semver: 7.6.3 shelljs: 0.8.5 sort-keys: 4.2.0 text-table: 0.2.0 From b424e1d664eafc83cd6d18a246ce0e948536378d Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Tue, 30 Jul 2024 14:35:07 +0200 Subject: [PATCH 20/35] change type --- .../commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts b/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts index ad83e00d1f..e8747ae5b0 100644 --- a/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts +++ b/packages/cursorless-engine/src/core/commandVersionUpgrades/upgradeV5ToV6/upgradeV5ToV6.ts @@ -102,7 +102,7 @@ function upgradeAction( return { name, commandId: action.args![0] as string, - options: action.args?.[1] as ExecuteCommandOptions, + options: action.args?.[1] as ExecuteCommandOptions | undefined, target: upgradeTarget(targets[0]), }; case "replace": @@ -129,7 +129,7 @@ function upgradeAction( case "getText": return { name, - options: action.args?.[0] as GetTextActionOptions, + options: action.args?.[0] as GetTextActionOptions | undefined, target: upgradeTarget(targets[0]), }; case "parsed": From fc824af74883370e841bafc5c36bd40b0bd73987 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Tue, 30 Jul 2024 14:39:40 +0200 Subject: [PATCH 21/35] Updates --- .../cursorless-tutorial/src/TutorialImpl.ts | 20 +++++++++---------- .../ide/vscode/hats/FakeFontMeasurements.ts | 2 +- .../src/ide/vscode/hats/FontMeasurements.ts | 2 +- .../ide/vscode/hats/FontMeasurementsImpl.ts | 4 ++-- .../src/ide/vscode/hats/VscodeHatRenderer.ts | 4 ++-- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/cursorless-tutorial/src/TutorialImpl.ts b/packages/cursorless-tutorial/src/TutorialImpl.ts index 6a46bb2170..b5bdc81b21 100644 --- a/packages/cursorless-tutorial/src/TutorialImpl.ts +++ b/packages/cursorless-tutorial/src/TutorialImpl.ts @@ -75,9 +75,9 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { this.reparseCurrentTutorial = this.reparseCurrentTutorial.bind(this); const debouncer = new Debouncer(() => this.checkPreconditions(), 100); - void this.loadTutorials().then(() => { + void this.loadTutorials().then(async () => { if (this.state_.type === "loading") { - this.setState(this.getPickingTutorialState()); + await this.setState(this.getPickingTutorialState()); } }); @@ -176,7 +176,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { ); this.currentTutorial = tutorialContent; - this.setState( + await this.setState( state.hasErrors ? { ...state, @@ -211,7 +211,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { ); this.currentTutorial = tutorialContent; - this.setState(state); + await this.setState(state); await this.setupStep(); } @@ -250,7 +250,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { const nextStep = this.currentTutorial!.steps[newStepNumber]; - this.setState({ + await this.setState({ type: "doingTutorial", hasErrors: false, id: this.state_.id, @@ -281,15 +281,15 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { } async list() { - this.setState(this.getPickingTutorialState()); + await this.setState(this.getPickingTutorialState()); await this.setupStep(); } - private setState(state: TutorialState) { + private async setState(state: TutorialState) { this.state_ = state; if (state.type === "doingTutorial") { - void this.ide.keyValueStore.set( + await this.ide.keyValueStore.set( "tutorialProgress", produce(this.ide.keyValueStore.get("tutorialProgress"), (draft) => { draft[state.id] = { @@ -317,7 +317,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { ); if (this.editor !== editor && this.editor != null) { - void this.ide.setHighlightRanges(HIGHLIGHT_COLOR, this.editor, []); + await this.ide.setHighlightRanges(HIGHLIGHT_COLOR, this.editor, []); } this.editor = editor; @@ -353,7 +353,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { currentStep, ); if (preConditionsMet !== this.state_.preConditionsMet) { - this.setState({ + await this.setState({ ...this.state_, preConditionsMet, }); diff --git a/packages/cursorless-vscode/src/ide/vscode/hats/FakeFontMeasurements.ts b/packages/cursorless-vscode/src/ide/vscode/hats/FakeFontMeasurements.ts index 45479951aa..764a3885a1 100644 --- a/packages/cursorless-vscode/src/ide/vscode/hats/FakeFontMeasurements.ts +++ b/packages/cursorless-vscode/src/ide/vscode/hats/FakeFontMeasurements.ts @@ -5,7 +5,7 @@ export class FakeFontMeasurements implements FontMeasurements { characterWidth = 12; characterHeight = 12; - clearCache() { + async clearCache() { // Do nothing } diff --git a/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurements.ts b/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurements.ts index 0cb011560c..1f50e352d5 100644 --- a/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurements.ts +++ b/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurements.ts @@ -2,6 +2,6 @@ export interface FontMeasurements { fontSize: number; characterWidth: number; characterHeight: number; - clearCache(): void; + clearCache(): Promise; calculate(): Promise; } diff --git a/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts b/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts index 9ca510853d..b19cf9740c 100644 --- a/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts +++ b/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts @@ -20,8 +20,8 @@ export class FontMeasurementsImpl implements FontMeasurements { constructor(private extensionContext: vscode.ExtensionContext) {} - clearCache() { - void this.extensionContext.globalState.update("fontRatios", undefined); + async clearCache() { + await this.extensionContext.globalState.update("fontRatios", undefined); } async calculate() { diff --git a/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts b/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts index 030e0087af..0edf9b0175 100644 --- a/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts +++ b/packages/cursorless-vscode/src/ide/vscode/hats/VscodeHatRenderer.ts @@ -95,7 +95,7 @@ export default class VscodeHatRenderer { } public async forceRecomputeDecorationStyles() { - this.fontMeasurements.clearCache(); + await this.fontMeasurements.clearCache(); await this.recomputeDecorations(); } @@ -203,7 +203,7 @@ export default class VscodeHatRenderer { .getConfiguration("cursorless") .get("individualHatAdjustments")!; - await performPr1868ShapeUpdateInit( + void performPr1868ShapeUpdateInit( this.extensionContext, this.vscodeApi, this.messages, From c558926ff79caa165c6b10fe1af588249986cc71 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Tue, 30 Jul 2024 14:57:11 +0200 Subject: [PATCH 22/35] Update lint config --- .eslintrc.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index d8d7e8054f..7dbd5cb39f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -89,6 +89,14 @@ } ] } + }, + { + "files": [ + "jest.config.ts", + "docusaurus.config.mts", + "mdx-components.tsx" + ], + "extends": ["plugin:@typescript-eslint/disable-type-checked"] } ], "settings": { @@ -105,9 +113,6 @@ "**/vendor/**/*.ts", "**/vendor/**/*.js", "**/out/**", - "**/generated/**", - "/packages/*/jest.config.ts", - "/packages/cursorless-org-docs/docusaurus.config.mts", - "/packages/cursorless-org/mdx-components.tsx" + "**/generated/**" ] } From b89d193c27ebf3387b19f5616dc05f3c8cefce33 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Tue, 30 Jul 2024 15:09:11 +0200 Subject: [PATCH 23/35] Add comment --- packages/cursorless-engine/src/actions/ShowParseTree.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cursorless-engine/src/actions/ShowParseTree.ts b/packages/cursorless-engine/src/actions/ShowParseTree.ts index a6655ab07d..b53f822947 100644 --- a/packages/cursorless-engine/src/actions/ShowParseTree.ts +++ b/packages/cursorless-engine/src/actions/ShowParseTree.ts @@ -22,6 +22,7 @@ export default class ShowParseTree { results.push(parseTree(editor.document, tree, contentRange)); } + // FIXME: If we await this our test break. We should probably find out when this actually resolves. void ide().openUntitledTextDocument({ language: "markdown", content: results.join("\n\n"), From 7a6436cb85b021415dc330e4102bac2db1a3dcca Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:33:24 +0100 Subject: [PATCH 24/35] tweaks --- .../cursorless-tutorial/src/TutorialImpl.ts | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/packages/cursorless-tutorial/src/TutorialImpl.ts b/packages/cursorless-tutorial/src/TutorialImpl.ts index b5bdc81b21..35b27b52ea 100644 --- a/packages/cursorless-tutorial/src/TutorialImpl.ts +++ b/packages/cursorless-tutorial/src/TutorialImpl.ts @@ -77,7 +77,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { void this.loadTutorials().then(async () => { if (this.state_.type === "loading") { - await this.setState(this.getPickingTutorialState()); + this.setState(this.getPickingTutorialState()); } }); @@ -176,7 +176,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { ); this.currentTutorial = tutorialContent; - await this.setState( + this.setState( state.hasErrors ? { ...state, @@ -211,7 +211,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { ); this.currentTutorial = tutorialContent; - await this.setState(state); + this.setState(state); await this.setupStep(); } @@ -250,7 +250,7 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { const nextStep = this.currentTutorial!.steps[newStepNumber]; - await this.setState({ + this.setState({ type: "doingTutorial", hasErrors: false, id: this.state_.id, @@ -281,13 +281,17 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { } async list() { - await this.setState(this.getPickingTutorialState()); + this.setState(this.getPickingTutorialState()); await this.setupStep(); } - private async setState(state: TutorialState) { + private setState(state: TutorialState) { this.state_ = state; + void this.updateTutorialProgress(state); + this.notifier.notifyListeners(state); + } + private async updateTutorialProgress(state: TutorialState) { if (state.type === "doingTutorial") { await this.ide.keyValueStore.set( "tutorialProgress", @@ -299,8 +303,6 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { }), ); } - - this.notifier.notifyListeners(state); } get state() { @@ -322,22 +324,22 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { this.editor = editor; this.highlightRanges = highlightRanges; - this.ensureHighlights(); + await this.ensureHighlights(); } - private ensureHighlights() { + private async ensureHighlights() { if (this.editor != null) { if ( this.state_.type === "doingTutorial" && this.state_.preConditionsMet ) { - void this.ide.setHighlightRanges( + await this.ide.setHighlightRanges( HIGHLIGHT_COLOR, this.editor, this.highlightRanges, ); } else { - void this.ide.setHighlightRanges(HIGHLIGHT_COLOR, this.editor, []); + await this.ide.setHighlightRanges(HIGHLIGHT_COLOR, this.editor, []); } } } @@ -353,11 +355,11 @@ export class TutorialImpl implements Tutorial, CommandRunnerDecorator { currentStep, ); if (preConditionsMet !== this.state_.preConditionsMet) { - await this.setState({ + this.setState({ ...this.state_, preConditionsMet, }); - this.ensureHighlights(); + await this.ensureHighlights(); } } } From 376fdb88113ff4a57f7aac69134c5cd7fa5cd20f Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:38:01 +0100 Subject: [PATCH 25/35] Fixes --- .../src/ide/vscode/hats/FontMeasurementsImpl.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts b/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts index b19cf9740c..4b1db39eba 100644 --- a/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts +++ b/packages/cursorless-vscode/src/ide/vscode/hats/FontMeasurementsImpl.ts @@ -35,7 +35,7 @@ export class FontMeasurementsImpl implements FontMeasurements { if (fontRatiosCache == null || fontRatiosCache.fontFamily !== fontFamily) { const fontRatios = await getFontRatios(this.extensionContext); - void this.extensionContext.globalState.update("fontRatios", { + await this.extensionContext.globalState.update("fontRatios", { ...fontRatios, fontFamily, }); From 8ee5ebcb8a280108f669226221ce6905e29186ad Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:40:55 +0100 Subject: [PATCH 26/35] Tweaks --- .../src/keyboard/KeyboardCommandHandler.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts b/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts index 4db0c6dde5..55297b81f5 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts @@ -35,7 +35,7 @@ export class KeyboardCommandHandler { constructor(private targeted: KeyboardCommandsTargeted) {} targetDecoratedMark({ decoratedMark, mode }: DecoratedMarkArg) { - void this.targeted.targetDecoratedMark({ ...decoratedMark, mode }); + return this.targeted.targetDecoratedMark({ ...decoratedMark, mode }); } async vscodeCommand({ @@ -75,12 +75,12 @@ export class KeyboardCommandHandler { }: { actionDescriptor: SimpleKeyboardActionDescriptor; }) { - void this.targeted.performSimpleActionOnTarget(actionDescriptor); + return this.targeted.performSimpleActionOnTarget(actionDescriptor); } performWrapActionOnTarget({ actionDescriptor, delimiter }: WrapActionArg) { const [left, right] = surroundingPairsDelimiters[delimiter]!; - void this.targeted.performActionOnTarget( + return this.targeted.performActionOnTarget( (target) => ({ name: "wrapWithPairedDelimiter", target, @@ -98,11 +98,11 @@ export class KeyboardCommandHandler { modifier: Modifier; mode?: TargetingMode; }) { - void this.targeted.targetModifier(modifier, mode); + return this.targeted.targetModifier(modifier, mode); } targetMark({ mark, mode }: { mark: PartialMark; mode?: TargetingMode }) { - void this.targeted.targetMark(mark, mode); + return this.targeted.targetMark(mark, mode); } } From 7aac8004742fd9aeed7c4b567ae32256ce7c7272 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:42:46 +0100 Subject: [PATCH 27/35] More tweaks --- .../src/keyboard/KeyboardCommandsModal.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModal.ts b/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModal.ts index a227a6b171..dd0124da05 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModal.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardCommandsModal.ts @@ -56,15 +56,15 @@ export default class KeyboardCommandsModal { init() { this.extensionContext.subscriptions.push( - vscode.workspace.onDidChangeConfiguration((event) => { + vscode.workspace.onDidChangeConfiguration(async (event) => { if ( event.affectsConfiguration( "cursorless.experimental.keyboard.modal.keybindings", ) ) { if (this.isModeOn()) { - void this.modeOff(); - void this.modeOn(); + await this.modeOff(); + await this.modeOn(); } this.layerCache.clear(); this.processKeyMap(); @@ -212,9 +212,9 @@ export default class KeyboardCommandsModal { modeToggle = () => { if (this.isModeOn()) { - void this.modeOff(); + return this.modeOff(); } else { - void this.modeOn(); + return this.modeOn(); } }; From ba3945fefe2b60e7891e2bc14f0f84663e263b71 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:51:35 +0100 Subject: [PATCH 28/35] tweaks --- .../src/keyboard/KeyboardCommandHandler.ts | 29 ++++++++++++------- .../src/keyboard/KeyboardHandler.ts | 26 +++++++++-------- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts b/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts index 55297b81f5..107fd650f8 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardCommandHandler.ts @@ -34,8 +34,8 @@ import { ModalVscodeCommandDescriptor } from "./TokenTypes"; export class KeyboardCommandHandler { constructor(private targeted: KeyboardCommandsTargeted) {} - targetDecoratedMark({ decoratedMark, mode }: DecoratedMarkArg) { - return this.targeted.targetDecoratedMark({ ...decoratedMark, mode }); + async targetDecoratedMark({ decoratedMark, mode }: DecoratedMarkArg) { + await this.targeted.targetDecoratedMark({ ...decoratedMark, mode }); } async vscodeCommand({ @@ -70,17 +70,20 @@ export class KeyboardCommandHandler { await vscode.commands.executeCommand(commandId, ...(args ?? [])); } - performSimpleActionOnTarget({ + async performSimpleActionOnTarget({ actionDescriptor, }: { actionDescriptor: SimpleKeyboardActionDescriptor; }) { - return this.targeted.performSimpleActionOnTarget(actionDescriptor); + await this.targeted.performSimpleActionOnTarget(actionDescriptor); } - performWrapActionOnTarget({ actionDescriptor, delimiter }: WrapActionArg) { + async performWrapActionOnTarget({ + actionDescriptor, + delimiter, + }: WrapActionArg) { const [left, right] = surroundingPairsDelimiters[delimiter]!; - return this.targeted.performActionOnTarget( + await this.targeted.performActionOnTarget( (target) => ({ name: "wrapWithPairedDelimiter", target, @@ -91,18 +94,24 @@ export class KeyboardCommandHandler { ); } - modifyTarget({ + async modifyTarget({ modifier, mode, }: { modifier: Modifier; mode?: TargetingMode; }) { - return this.targeted.targetModifier(modifier, mode); + await this.targeted.targetModifier(modifier, mode); } - targetMark({ mark, mode }: { mark: PartialMark; mode?: TargetingMode }) { - return this.targeted.targetMark(mark, mode); + async targetMark({ + mark, + mode, + }: { + mark: PartialMark; + mode?: TargetingMode; + }) { + await this.targeted.targetMark(mark, mode); } } diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts b/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts index 311ddabebb..08b364506c 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts @@ -119,7 +119,7 @@ export default class KeyboardHandler { }), ); - this.ensureState(); + void this.ensureState(); } dispose() { @@ -154,7 +154,7 @@ export default class KeyboardHandler { .reverse() .forEach(({ listener }) => listener.handleCancelled()); this.listeners.splice(index); - this.ensureState(); + void this.ensureState(); }, }; @@ -162,7 +162,7 @@ export default class KeyboardHandler { this.listeners.push(listenerEntry); - this.ensureState(); + void this.ensureState(); return disposable; } @@ -215,7 +215,7 @@ export default class KeyboardHandler { * the state that we control is as expected. Eg it changes cursor if * necessary, sets when clause contexts, etc */ - private ensureState() { + private async ensureState() { const activeListener = this.listeners.length === 0 ? undefined @@ -226,15 +226,17 @@ export default class KeyboardHandler { return; } - this.disposeOfActiveListener(); - this.activateListener(activeListener); + await this.disposeOfActiveListener(); + await this.activateListener(activeListener); this.ensureCursorStyle(); this.ensureStatusBarText(); - this.ensureGlobalWhenClauseContext(); + await this.ensureGlobalWhenClauseContext(); } - private activateListener(listenerEntry: ListenerEntry | undefined): void { + private async activateListener( + listenerEntry: ListenerEntry | undefined, + ): Promise { if (listenerEntry == null) { return; } @@ -261,7 +263,7 @@ export default class KeyboardHandler { this.disposables.push(this.typeCommandDisposable); if (whenClauseContext != null) { - void vscode.commands.executeCommand( + await vscode.commands.executeCommand( "setContext", whenClauseContext, true, @@ -271,7 +273,7 @@ export default class KeyboardHandler { this.activeListener = listenerEntry; } - private disposeOfActiveListener() { + private async disposeOfActiveListener() { if (this.activeListener == null) { return; } @@ -283,7 +285,7 @@ export default class KeyboardHandler { const { whenClauseContext } = this.activeListener.listener.displayOptions; if (whenClauseContext != null) { - void vscode.commands.executeCommand( + await vscode.commands.executeCommand( "setContext", whenClauseContext, false, @@ -328,7 +330,7 @@ export default class KeyboardHandler { } private ensureGlobalWhenClauseContext() { - void vscode.commands.executeCommand( + return vscode.commands.executeCommand( "setContext", GLOBAL_WHEN_CLAUSE_CONTEXT, this.activeListener != null, From 56b249073763dc506515986924c14381c2377021 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:54:06 +0100 Subject: [PATCH 29/35] More tweaks --- .../cursorless-vscode/src/VscodeTutorial.ts | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/cursorless-vscode/src/VscodeTutorial.ts b/packages/cursorless-vscode/src/VscodeTutorial.ts index ff6e8e8712..4b5eed19a8 100644 --- a/packages/cursorless-vscode/src/VscodeTutorial.ts +++ b/packages/cursorless-vscode/src/VscodeTutorial.ts @@ -124,48 +124,48 @@ export class VscodeTutorial implements WebviewViewProvider { public async start(id: TutorialId | number) { await this.tutorial.start(id); - this.revealTutorial(); + await this.revealTutorial(); } - documentationOpened() { + async documentationOpened() { this.tutorial.documentationOpened(); - this.revealTutorial(); + await this.revealTutorial(); } async next() { await this.tutorial.next(); - this.revealTutorial(); + await this.revealTutorial(); } async previous() { await this.tutorial.previous(); - this.revealTutorial(); + await this.revealTutorial(); } async restart() { await this.tutorial.restart(); - this.revealTutorial(); + await this.revealTutorial(); } async resume() { await this.tutorial.resume(); - this.revealTutorial(); + await this.revealTutorial(); } async list() { await this.tutorial.list(); - this.revealTutorial(); + await this.revealTutorial(); } private onState(state: TutorialState) { void this.view?.webview.postMessage(state); } - private revealTutorial() { + private async revealTutorial() { if (this.view != null) { this.view.show(true); } else { - void this.vscodeApi.commands.executeCommand("cursorless.tutorial.focus"); + await this.vscodeApi.commands.executeCommand("cursorless.tutorial.focus"); } } From d88a85844c0ca17da0167827d547eadddbe3d5ab Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:56:47 +0100 Subject: [PATCH 30/35] Tweaks --- .../test-case-recorder/src/TestCaseRecorder.ts | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/test-case-recorder/src/TestCaseRecorder.ts b/packages/test-case-recorder/src/TestCaseRecorder.ts index bdea200a8c..9898f34310 100644 --- a/packages/test-case-recorder/src/TestCaseRecorder.ts +++ b/packages/test-case-recorder/src/TestCaseRecorder.ts @@ -33,7 +33,7 @@ import { getRecordedTestsDirPath, walkDirsSync } from "@cursorless/node-common"; import { invariant } from "immutability-helper"; import { merge } from "lodash-es"; import * as fs from "node:fs"; -import { access, readFile } from "node:fs/promises"; +import { access, readFile, unlink } from "node:fs/promises"; import * as path from "node:path"; import { RecordTestCaseCommandOptions } from "./RecordTestCaseCommandOptions"; import { takeSnapshot } from "./takeSnapshot"; @@ -375,13 +375,12 @@ export class TestCaseRecorder { await ide().openTextDocument(outPath); } if (action === "Delete") { - fs.unlink(outPath, (err) => { - if (err) { - console.log(`failed to delete ${outPath}: ${err}`); - } else { - console.log(`deleted ${outPath}`); - } - }); + try { + await unlink(outPath); + console.log(`deleted ${outPath}`); + } catch (err) { + console.log(`failed to delete ${outPath}: ${err}`); + } } }); } From 4868442740a7eb40e9316675ff9a86ab8f148151 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:58:19 +0100 Subject: [PATCH 31/35] cleanup lint ignores --- .eslintrc.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 7dbd5cb39f..9011304732 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -108,11 +108,10 @@ } }, "ignorePatterns": [ - "/typings/**", - "/data/playground/**", - "**/vendor/**/*.ts", - "**/vendor/**/*.js", + "**/generated/**", "**/out/**", - "**/generated/**" + "**/vendor/**/*.js", + "**/vendor/**/*.ts", + "/data/playground/**" ] } From 5f403502a3e4f36ea1ef196d322d40acd6611217 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:05:33 +0100 Subject: [PATCH 32/35] tweak ignore --- .eslintrc.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index 9011304732..292278199a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -94,7 +94,8 @@ "files": [ "jest.config.ts", "docusaurus.config.mts", - "mdx-components.tsx" + "mdx-components.tsx", + "/typings/**" ], "extends": ["plugin:@typescript-eslint/disable-type-checked"] } From 1cb6e01868ab09681a4bd90cc5317ce1c4183549 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:11:42 +0100 Subject: [PATCH 33/35] fix overrides --- .eslintrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index 292278199a..54fc05744e 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -95,7 +95,7 @@ "jest.config.ts", "docusaurus.config.mts", "mdx-components.tsx", - "/typings/**" + "typings/**" ], "extends": ["plugin:@typescript-eslint/disable-type-checked"] } From 9c39a3054a55a958c4564051a6689943f9974ef9 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:36:27 +0100 Subject: [PATCH 34/35] Empty commit From 23ee3da42eeb568a6d234e197b2998a2d1d6730c Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:47:54 +0100 Subject: [PATCH 35/35] fix keyboard tests --- .../src/keyboard/KeyboardHandler.ts | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts b/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts index 08b364506c..311ddabebb 100644 --- a/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts +++ b/packages/cursorless-vscode/src/keyboard/KeyboardHandler.ts @@ -119,7 +119,7 @@ export default class KeyboardHandler { }), ); - void this.ensureState(); + this.ensureState(); } dispose() { @@ -154,7 +154,7 @@ export default class KeyboardHandler { .reverse() .forEach(({ listener }) => listener.handleCancelled()); this.listeners.splice(index); - void this.ensureState(); + this.ensureState(); }, }; @@ -162,7 +162,7 @@ export default class KeyboardHandler { this.listeners.push(listenerEntry); - void this.ensureState(); + this.ensureState(); return disposable; } @@ -215,7 +215,7 @@ export default class KeyboardHandler { * the state that we control is as expected. Eg it changes cursor if * necessary, sets when clause contexts, etc */ - private async ensureState() { + private ensureState() { const activeListener = this.listeners.length === 0 ? undefined @@ -226,17 +226,15 @@ export default class KeyboardHandler { return; } - await this.disposeOfActiveListener(); - await this.activateListener(activeListener); + this.disposeOfActiveListener(); + this.activateListener(activeListener); this.ensureCursorStyle(); this.ensureStatusBarText(); - await this.ensureGlobalWhenClauseContext(); + this.ensureGlobalWhenClauseContext(); } - private async activateListener( - listenerEntry: ListenerEntry | undefined, - ): Promise { + private activateListener(listenerEntry: ListenerEntry | undefined): void { if (listenerEntry == null) { return; } @@ -263,7 +261,7 @@ export default class KeyboardHandler { this.disposables.push(this.typeCommandDisposable); if (whenClauseContext != null) { - await vscode.commands.executeCommand( + void vscode.commands.executeCommand( "setContext", whenClauseContext, true, @@ -273,7 +271,7 @@ export default class KeyboardHandler { this.activeListener = listenerEntry; } - private async disposeOfActiveListener() { + private disposeOfActiveListener() { if (this.activeListener == null) { return; } @@ -285,7 +283,7 @@ export default class KeyboardHandler { const { whenClauseContext } = this.activeListener.listener.displayOptions; if (whenClauseContext != null) { - await vscode.commands.executeCommand( + void vscode.commands.executeCommand( "setContext", whenClauseContext, false, @@ -330,7 +328,7 @@ export default class KeyboardHandler { } private ensureGlobalWhenClauseContext() { - return vscode.commands.executeCommand( + void vscode.commands.executeCommand( "setContext", GLOBAL_WHEN_CLAUSE_CONTEXT, this.activeListener != null,