From e4dfabfdac372d44901a61379b01007338753241 Mon Sep 17 00:00:00 2001 From: SimeonC <1085899+SimeonC@users.noreply.github.com> Date: Thu, 8 Sep 2022 21:19:47 +0900 Subject: [PATCH 01/11] Fix test fixture upgrade scripts --- .vscode/settings.json | 3 ++- .../canonicalizeAndValidateCommand.ts | 7 +++---- .../upgradeV1ToV2/upgradeV1ToV2.ts | 4 ++-- src/definitions/utils.d.ts | 19 +++++++++++++++++++ .../transformations/reorderFields.ts | 8 +++++++- src/testUtil/cleanUpTestCaseCommand.ts | 16 ++++++---------- 6 files changed, 39 insertions(+), 18 deletions(-) create mode 100644 src/definitions/utils.d.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 70ab63fbcf..6210d00a1d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -22,5 +22,6 @@ "pojo", "subword" ], - "files.eol": "\n" + "files.eol": "\n", + "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts b/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts index 139db87e27..b738fd34a9 100644 --- a/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts +++ b/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts @@ -26,14 +26,13 @@ import { upgradeV1ToV2 } from "./upgradeV1ToV2"; */ export function canonicalizeAndValidateCommand( command: Command -): CommandComplete { +): EnforceUndefined { const commandUpgraded = upgradeCommand(command); const { action, targets: inputPartialTargets, usePrePhraseSnapshot = false, - version, - ...rest + spokenForm, } = commandUpgraded; const actionName = canonicalizeActionName(action.name); @@ -42,8 +41,8 @@ export function canonicalizeAndValidateCommand( validateCommand(actionName, partialTargets); return { - ...rest, version: LATEST_VERSION, + spokenForm, action: { name: actionName, args: action.args ?? [], diff --git a/src/core/commandVersionUpgrades/upgradeV1ToV2/upgradeV1ToV2.ts b/src/core/commandVersionUpgrades/upgradeV1ToV2/upgradeV1ToV2.ts index 2997447830..e4786e0e34 100644 --- a/src/core/commandVersionUpgrades/upgradeV1ToV2/upgradeV1ToV2.ts +++ b/src/core/commandVersionUpgrades/upgradeV1ToV2/upgradeV1ToV2.ts @@ -152,10 +152,10 @@ function upgradePrimitiveTarget( return { type, isImplicit, - // Cursor token is just cursor position but treated as a token. This is done in the pipeline for normal cursor now - mark: mark?.type === "cursorToken" ? undefined : mark, // Empty array of modifiers is not allowed modifiers: modifiers.length > 0 ? modifiers : undefined, + // Cursor token is just cursor position but treated as a token. This is done in the pipeline for normal cursor now + mark: mark?.type === "cursorToken" ? undefined : mark, }; } diff --git a/src/definitions/utils.d.ts b/src/definitions/utils.d.ts new file mode 100644 index 0000000000..7f1d87509b --- /dev/null +++ b/src/definitions/utils.d.ts @@ -0,0 +1,19 @@ +type GetOptional = { + [K in keyof T as Pick extends Required> ? never : K]: T[K]; +}; + +type GetRequired = { + [K in keyof T as Pick extends Required> ? K : never]: T[K]; +}; + +type UnionUndefined = { + [K in keyof T]: T[K] | undefined; +}; + +/** + * Use this type to convert all optional keys in an interface to required undefined unions. + * Useful for passthrough objects that need manual extending + * { opt?: boolean; } => { opt: boolean | undefined; } + */ +type EnforceUndefined = GetRequired & + UnionUndefined>>; diff --git a/src/scripts/transformRecordedTests/transformations/reorderFields.ts b/src/scripts/transformRecordedTests/transformations/reorderFields.ts index ae31011a8c..ec8ca32dac 100644 --- a/src/scripts/transformRecordedTests/transformations/reorderFields.ts +++ b/src/scripts/transformRecordedTests/transformations/reorderFields.ts @@ -1,13 +1,19 @@ import { TestCaseFixture } from "../../../testUtil/TestCase"; -export function reorderFields(fixture: TestCaseFixture) { +export function reorderFields( + fixture: TestCaseFixture +): EnforceUndefined { return { languageId: fixture.languageId, command: fixture.command, marksToCheck: fixture.marksToCheck, initialState: fixture.initialState, finalState: fixture.finalState, + decorations: fixture.decorations, returnValue: fixture.returnValue, fullTargets: fixture.fullTargets, + thrownError: fixture.thrownError, + postCommandSleepTimeMs: fixture.postCommandSleepTimeMs, + postEditorOpenSleepTimeMs: fixture.postEditorOpenSleepTimeMs, }; } diff --git a/src/testUtil/cleanUpTestCaseCommand.ts b/src/testUtil/cleanUpTestCaseCommand.ts index 63edfa6083..46abb2c157 100644 --- a/src/testUtil/cleanUpTestCaseCommand.ts +++ b/src/testUtil/cleanUpTestCaseCommand.ts @@ -1,16 +1,12 @@ import { TestCaseCommand } from "./TestCase"; +import { merge } from "lodash"; export function cleanUpTestCaseCommand( command: TestCaseCommand ): TestCaseCommand { - const { action, ...rest } = command; - const { args } = action; - - return { - ...rest, - action: { - ...action, - args: args == null ? undefined : args.length === 0 ? undefined : args, - }, - }; + const { args } = command.action; + const result = merge({}, command); + result.action.args = + args == null ? undefined : args.length === 0 ? undefined : args; + return result; } From 415fc9ffa8431d496eacbe6c81c31b719a8c39e7 Mon Sep 17 00:00:00 2001 From: SimeonC <1085899+SimeonC@users.noreply.github.com> Date: Fri, 9 Sep 2022 10:18:52 +0900 Subject: [PATCH 02/11] Upgrade typescript MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Didn’t upgrade the website as the typegen package requires ts 4.5 --- cursorless-nx/package-lock.json | 180 +++++++++++++++++++------------- cursorless-nx/package.json | 2 +- package.json | 2 +- src/definitions/utils.d.ts | 24 +++-- src/util/makeGraph.ts | 34 +++--- yarn.lock | 8 +- 6 files changed, 140 insertions(+), 110 deletions(-) diff --git a/cursorless-nx/package-lock.json b/cursorless-nx/package-lock.json index cb8768c361..5be9aeb4e1 100644 --- a/cursorless-nx/package-lock.json +++ b/cursorless-nx/package-lock.json @@ -58,7 +58,7 @@ "react-test-renderer": "18.1.0", "ts-jest": "27.1.4", "ts-node": "10.8.2", - "typescript": "4.7.4" + "typescript": "4.8.3" } }, "node_modules/@ampproject/remapping": { @@ -1925,7 +1925,7 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, + "devOptional": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -1937,7 +1937,7 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, + "devOptional": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -2886,7 +2886,7 @@ "version": "3.0.8", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz", "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==", - "dev": true, + "devOptional": true, "engines": { "node": ">=6.0.0" } @@ -2928,7 +2928,7 @@ "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "devOptional": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.14", @@ -5114,25 +5114,25 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true + "devOptional": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "devOptional": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "devOptional": true }, "node_modules/@tsconfig/node16": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true + "devOptional": true }, "node_modules/@types/aria-query": { "version": "4.2.2", @@ -5378,7 +5378,7 @@ "version": "18.0.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==", - "dev": true + "devOptional": true }, "node_modules/@types/npmlog": { "version": "4.1.4", @@ -6018,7 +6018,7 @@ "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, + "devOptional": true, "bin": { "acorn": "bin/acorn" }, @@ -7838,7 +7838,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "devOptional": true }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -8621,7 +8621,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.3.1" } @@ -14669,7 +14669,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "devOptional": true }, "node_modules/makeerror": { "version": "1.0.12", @@ -19101,7 +19101,7 @@ "version": "10.8.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.2.tgz", "integrity": "sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==", - "dev": true, + "devOptional": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -19144,7 +19144,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.4.0" } @@ -19153,7 +19153,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "devOptional": true }, "node_modules/tsconfig-paths": { "version": "3.14.1", @@ -19375,10 +19375,10 @@ } }, "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19622,7 +19622,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "devOptional": true }, "node_modules/v8-to-istanbul": { "version": "8.1.1", @@ -20352,7 +20352,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, + "devOptional": true, "engines": { "node": ">=6" } @@ -21660,7 +21660,7 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, + "devOptional": true, "requires": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -21669,7 +21669,7 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, + "devOptional": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -22395,7 +22395,7 @@ "version": "3.0.8", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz", "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==", - "dev": true + "devOptional": true }, "@jridgewell/set-array": { "version": "1.1.2", @@ -22430,7 +22430,7 @@ "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "devOptional": true }, "@jridgewell/trace-mapping": { "version": "0.3.14", @@ -23763,49 +23763,57 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", "integrity": "sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==", - "dev": true + "dev": true, + "requires": {} }, "@svgr/babel-plugin-remove-jsx-attribute": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz", "integrity": "sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==", - "dev": true + "dev": true, + "requires": {} }, "@svgr/babel-plugin-remove-jsx-empty-expression": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz", "integrity": "sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==", - "dev": true + "dev": true, + "requires": {} }, "@svgr/babel-plugin-replace-jsx-attribute-value": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz", "integrity": "sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==", - "dev": true + "dev": true, + "requires": {} }, "@svgr/babel-plugin-svg-dynamic-title": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz", "integrity": "sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==", - "dev": true + "dev": true, + "requires": {} }, "@svgr/babel-plugin-svg-em-dimensions": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz", "integrity": "sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==", - "dev": true + "dev": true, + "requires": {} }, "@svgr/babel-plugin-transform-react-native-svg": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz", "integrity": "sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==", - "dev": true + "dev": true, + "requires": {} }, "@svgr/babel-plugin-transform-svg-component": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz", "integrity": "sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==", - "dev": true + "dev": true, + "requires": {} }, "@svgr/babel-preset": { "version": "6.2.0", @@ -23977,25 +23985,25 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true + "devOptional": true }, "@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "devOptional": true }, "@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "devOptional": true }, "@tsconfig/node16": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true + "devOptional": true }, "@types/aria-query": { "version": "4.2.2", @@ -24241,7 +24249,7 @@ "version": "18.0.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==", - "dev": true + "devOptional": true }, "@types/npmlog": { "version": "4.1.4", @@ -24764,7 +24772,7 @@ "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true + "devOptional": true }, "acorn-globals": { "version": "6.0.0", @@ -24788,13 +24796,15 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true + "dev": true, + "requires": {} }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "acorn-node": { "version": "1.8.2", @@ -24882,7 +24892,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ansi-colors": { "version": "4.1.3", @@ -26119,7 +26130,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "devOptional": true }, "cross-spawn": { "version": "7.0.3", @@ -26147,7 +26158,8 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", - "dev": true + "dev": true, + "requires": {} }, "css-in-js-utils": { "version": "2.0.1", @@ -26325,7 +26337,8 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true + "dev": true, + "requires": {} }, "csso": { "version": "4.2.0", @@ -26696,7 +26709,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true + "devOptional": true }, "diff-sequences": { "version": "27.5.1", @@ -27247,7 +27260,8 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz", "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==", - "dev": true + "dev": true, + "requires": {} }, "eslint-import-resolver-node": { "version": "0.3.6", @@ -27494,7 +27508,8 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz", "integrity": "sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==", - "dev": true + "dev": true, + "requires": {} }, "eslint-scope": { "version": "7.1.1", @@ -28788,7 +28803,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true + "dev": true, + "requires": {} }, "identity-obj-proxy": { "version": "3.0.0", @@ -30008,7 +30024,8 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true + "dev": true, + "requires": {} }, "jest-regex-util": { "version": "27.5.1", @@ -31228,7 +31245,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "devOptional": true }, "makeerror": { "version": "1.0.12", @@ -32218,25 +32235,29 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-duplicates": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-empty": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-overridden": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-import": { "version": "14.1.0", @@ -32360,7 +32381,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -32403,7 +32425,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -32805,7 +32828,8 @@ "react-side-effect": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz", - "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==" + "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==", + "requires": {} } } }, @@ -32889,7 +32913,8 @@ "react-universal-interface": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz", - "integrity": "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==" + "integrity": "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==", + "requires": {} } } }, @@ -33201,7 +33226,8 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz", "integrity": "sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==", - "dev": true + "dev": true, + "requires": {} }, "rollup-plugin-postcss": { "version": "4.0.2", @@ -33345,7 +33371,8 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/rxjs-for-await/-/rxjs-for-await-0.0.2.tgz", "integrity": "sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw==", - "dev": true + "dev": true, + "requires": {} }, "safe-buffer": { "version": "5.1.2", @@ -34007,7 +34034,8 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true + "dev": true, + "requires": {} }, "stylehacks": { "version": "5.1.0", @@ -34491,7 +34519,7 @@ "version": "10.8.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.2.tgz", "integrity": "sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==", - "dev": true, + "devOptional": true, "requires": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -34512,13 +34540,13 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true + "devOptional": true }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "devOptional": true } } }, @@ -34697,10 +34725,10 @@ } }, "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "devOptional": true }, "unbox-primitive": { "version": "1.0.2", @@ -34868,7 +34896,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "devOptional": true }, "v8-to-istanbul": { "version": "8.1.1", @@ -35156,7 +35184,8 @@ "version": "8.8.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -35336,7 +35365,8 @@ "version": "7.5.8", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", - "dev": true + "dev": true, + "requires": {} }, "xml-name-validator": { "version": "3.0.0", @@ -35407,7 +35437,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true + "devOptional": true }, "yocto-queue": { "version": "0.1.0", diff --git a/cursorless-nx/package.json b/cursorless-nx/package.json index 4bd0a81272..cc59fdaa26 100644 --- a/cursorless-nx/package.json +++ b/cursorless-nx/package.json @@ -43,7 +43,7 @@ "react-test-renderer": "18.1.0", "ts-jest": "27.1.4", "ts-node": "10.8.2", - "typescript": "4.7.4" + "typescript": "4.8.3" }, "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.1.1", diff --git a/package.json b/package.json index 76c4f6bb7a..c77ce9cd15 100644 --- a/package.json +++ b/package.json @@ -593,7 +593,7 @@ "semver": "^7.3.7", "sinon": "^11.1.1", "ts-unused-exports": "8.0.0", - "typescript": "^4.5.5" + "typescript": "^4.8.3" }, "dependencies": { "@types/lodash": "^4.14.168", diff --git a/src/definitions/utils.d.ts b/src/definitions/utils.d.ts index 7f1d87509b..d6ddbc93f8 100644 --- a/src/definitions/utils.d.ts +++ b/src/definitions/utils.d.ts @@ -1,19 +1,21 @@ -type GetOptional = { - [K in keyof T as Pick extends Required> ? never : K]: T[K]; -}; +declare namespace Utils { + type GetOptional = { + [K in keyof T as Pick extends Required> ? never : K]: T[K]; + }; -type GetRequired = { - [K in keyof T as Pick extends Required> ? K : never]: T[K]; -}; + type GetRequired = { + [K in keyof T as Pick extends Required> ? K : never]: T[K]; + }; -type UnionUndefined = { - [K in keyof T]: T[K] | undefined; -}; + type UnionUndefined = { + [K in keyof T]: T[K] | undefined; + }; +} /** * Use this type to convert all optional keys in an interface to required undefined unions. * Useful for passthrough objects that need manual extending * { opt?: boolean; } => { opt: boolean | undefined; } */ -type EnforceUndefined = GetRequired & - UnionUndefined>>; +type EnforceUndefined = Utils.GetRequired & + Utils.UnionUndefined>>; diff --git a/src/util/makeGraph.ts b/src/util/makeGraph.ts index 2bcadbdaac..4343218b3d 100644 --- a/src/util/makeGraph.ts +++ b/src/util/makeGraph.ts @@ -12,26 +12,24 @@ function makeGetter( key: K ): () => GraphType[K] { return () => { - let returnValue: GraphType[K]; - - if (components[key] == null) { - if (lockedKeys.includes(key)) { - const cycle = [...lockedKeys.slice(lockedKeys.indexOf(key)), key].join( - " -> " - ); - throw new Error(`Dependency injection graph cycle detected: ${cycle}`); - } - const factory = factoryMap[key] as (graph: GraphType) => GraphType[K]; - lockedKeys.push(key); - returnValue = factory(graph); - if (lockedKeys.pop() !== key) { - throw new Error("Unexpected key at top of graph stack"); - } - components[key] = returnValue; - } else { - returnValue = components[key] as GraphType[K]; + const componentValue = components[key]; + if (componentValue != null) { + return componentValue; } + if (lockedKeys.includes(key)) { + const cycle = [...lockedKeys.slice(lockedKeys.indexOf(key)), key].join( + " -> " + ); + throw new Error(`Dependency injection graph cycle detected: ${cycle}`); + } + const factory = factoryMap[key]; + lockedKeys.push(key); + const returnValue = factory(graph); + if (lockedKeys.pop() !== key) { + throw new Error("Unexpected key at top of graph stack"); + } + components[key] = returnValue; return returnValue; }; } diff --git a/yarn.lock b/yarn.lock index 625cab8360..66f94c0215 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1844,10 +1844,10 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -typescript@^4.5.5: - version "4.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== +typescript@^4.8.3: + version "4.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" + integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== unzipper@^0.10.11: version "0.10.11" From a756bafaccdc74542992e952a5c459d658383bb9 Mon Sep 17 00:00:00 2001 From: Simeon Cheeseman <1085899+SimeonC@users.noreply.github.com> Date: Fri, 9 Sep 2022 10:20:41 +0900 Subject: [PATCH 03/11] Update src/scripts/transformRecordedTests/transformations/reorderFields.ts Update key order Co-authored-by: Pokey Rule <755842+pokey@users.noreply.github.com> --- .../transformRecordedTests/transformations/reorderFields.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/scripts/transformRecordedTests/transformations/reorderFields.ts b/src/scripts/transformRecordedTests/transformations/reorderFields.ts index ec8ca32dac..944e84394d 100644 --- a/src/scripts/transformRecordedTests/transformations/reorderFields.ts +++ b/src/scripts/transformRecordedTests/transformations/reorderFields.ts @@ -11,9 +11,9 @@ export function reorderFields( finalState: fixture.finalState, decorations: fixture.decorations, returnValue: fixture.returnValue, - fullTargets: fixture.fullTargets, thrownError: fixture.thrownError, - postCommandSleepTimeMs: fixture.postCommandSleepTimeMs, postEditorOpenSleepTimeMs: fixture.postEditorOpenSleepTimeMs, + postCommandSleepTimeMs: fixture.postCommandSleepTimeMs, + fullTargets: fixture.fullTargets, }; } From 599368b02c6086908a3b3cdce738edc8245de2c8 Mon Sep 17 00:00:00 2001 From: SimeonC <1085899+SimeonC@users.noreply.github.com> Date: Mon, 12 Sep 2022 12:00:42 +0900 Subject: [PATCH 04/11] Update website TS version and small style change --- src/testUtil/cleanUpTestCaseCommand.ts | 5 +- website/package.json | 12 ++-- website/yarn.lock | 97 +++++++++++++++----------- 3 files changed, 64 insertions(+), 50 deletions(-) diff --git a/src/testUtil/cleanUpTestCaseCommand.ts b/src/testUtil/cleanUpTestCaseCommand.ts index 46abb2c157..04524140c6 100644 --- a/src/testUtil/cleanUpTestCaseCommand.ts +++ b/src/testUtil/cleanUpTestCaseCommand.ts @@ -6,7 +6,8 @@ export function cleanUpTestCaseCommand( ): TestCaseCommand { const { args } = command.action; const result = merge({}, command); - result.action.args = - args == null ? undefined : args.length === 0 ? undefined : args; + if (args == null || args.length === 0) { + result.action.args = undefined; + } return result; } diff --git a/website/package.json b/website/package.json index 96d3279d84..b8caca7ba2 100644 --- a/website/package.json +++ b/website/package.json @@ -38,11 +38,11 @@ }, "devDependencies": { "docusaurus-plugin-typedoc": "^0.17.2", - "typedoc": "^0.22.10", - "typedoc-plugin-markdown": "^3.11.9", - "typedoc-plugin-mdn-links": "^1.0.4", - "typedoc-plugin-missing-exports": "^0.22.6", - "typedoc-plugin-rename-defaults": "^0.4.0", - "typescript": "^4.5.5" + "typedoc": "^0.23.14", + "typedoc-plugin-markdown": "^3.13.6", + "typedoc-plugin-mdn-links": "^1.0.6", + "typedoc-plugin-missing-exports": "^0.23.0", + "typedoc-plugin-rename-defaults": "^0.6.4", + "typescript": "^4.8.3" } } diff --git a/website/yarn.lock b/website/yarn.lock index 2f75ed5583..1b99618d24 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -3641,6 +3641,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" @@ -5064,7 +5071,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.0.0, glob@^7.1.3, glob@^7.1.6, glob@^7.2.0: +glob@^7.0.0, glob@^7.1.3, glob@^7.1.6: version "7.2.0" resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -6010,10 +6017,10 @@ markdown-escapes@^1.0.0: resolved "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== -marked@^3.0.8: - version "3.0.8" - resolved "https://registry.npmjs.org/marked/-/marked-3.0.8.tgz" - integrity sha512-0gVrAjo5m0VZSJb4rpL59K1unJAMb/hm8HRXqasD8VeC8m91ytDPMritgFSlKonfdt+rRYYpP/JfLxgIX8yoSw== +marked@^4.0.19: + version "4.1.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.1.0.tgz#3fc6e7485f21c1ca5d6ec4a39de820e146954796" + integrity sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA== mdast-squeeze-paragraphs@^4.0.0: version "4.0.0" @@ -6193,6 +6200,13 @@ minimatch@3.0.4, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimatch@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" @@ -7780,14 +7794,14 @@ shelljs@^0.8.5: interpret "^1.0.0" rechoir "^0.6.2" -shiki@^0.9.12: - version "0.9.15" - resolved "https://registry.npmjs.org/shiki/-/shiki-0.9.15.tgz" - integrity sha512-/Y0z9IzhJ8nD9nbceORCqu6NgT9X6I8Fk8c3SICHI5NbZRLdZYFaB233gwct9sU0vvSypyaL/qaKvzyQGJBZSw== +shiki@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.11.1.tgz#df0f719e7ab592c484d8b73ec10e215a503ab8cc" + integrity sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA== dependencies: jsonc-parser "^3.0.0" vscode-oniguruma "^1.6.1" - vscode-textmate "5.2.0" + vscode-textmate "^6.0.0" side-channel@^1.0.4: version "1.0.4" @@ -8224,43 +8238,42 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedoc-plugin-markdown@^3.11.9: - version "3.11.14" - resolved "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.11.14.tgz" - integrity sha512-lh47OQvl0079nB18YL9wuTRRhMpjo300SZKfx/xpQY8qG+GINeSxTod95QBELeI0NP81sNtUbemRDrn5nyef4Q== +typedoc-plugin-markdown@^3.13.6: + version "3.13.6" + resolved "https://registry.yarnpkg.com/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.13.6.tgz#a419794e3bdbe459fb22772d8e6e02bac05211c1" + integrity sha512-ISSc9v3BK7HkokxSBuJPttXox4tJ6hP0N9wfSIk0fmLN67+eqtAxbk97gs2nDiuha+RTO5eW9gdeAb+RPP0mgg== dependencies: handlebars "^4.7.7" -typedoc-plugin-mdn-links@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-1.0.4.tgz" - integrity sha512-mw5IISaKRq8w1hJwp05vkFD9Ijtlv9j7uuM68zlp1zVdzQr4JRYQBTtde4cnSdYatFmLVjQpuFYwoGREJxlHlw== +typedoc-plugin-mdn-links@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-1.0.6.tgz#4ef9f2d5c1780cccd7955a45c197520f33526460" + integrity sha512-ee+uJXZH8vXzi5wpXBc+Wgjt30hQdRE3SyUvAHVoBbHsoqkGbs4hMTDo9mU8aQsZ2MZkve0nTmN3eVc79YN/Qg== -typedoc-plugin-missing-exports@^0.22.6: - version "0.22.6" - resolved "https://registry.npmjs.org/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-0.22.6.tgz" - integrity sha512-1uguGQqa+c5f33nWS3v1mm0uAx4Ii1lw4Kx2zQksmYFKNEWTmrmMXbMNBoBg4wu0p4dFCNC7JIWPoRzpNS6pFA== +typedoc-plugin-missing-exports@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-0.23.0.tgz#076df6ffce4d84e8097be009b7c62a17d58477a5" + integrity sha512-9smahDSsFRno9ZwoEshQDuIYMHWGB1E6LUud5qMxR2wNZ0T4DlZz0QjoK3HzXtX34mUpTH0dYtt7NQUK4D6B6Q== -typedoc-plugin-rename-defaults@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/typedoc-plugin-rename-defaults/-/typedoc-plugin-rename-defaults-0.4.0.tgz" - integrity sha512-7m7MbNZKcxCA4Z+0MW06sFEmuQ+he1xfc+rLRtvvQcQypPTd3fgFmkEJKVu42t8mONC+kKS/WkbmqwzsiqI1YQ== +typedoc-plugin-rename-defaults@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/typedoc-plugin-rename-defaults/-/typedoc-plugin-rename-defaults-0.6.4.tgz#8019bbfdbb4616682a0af8ecf1e8f42d053d4a40" + integrity sha512-0rAeNttAfu6ixbi1yu6d+DqNZN8SfRivj2QbnZ4zVa+5HcCPcmQrlR6WHjNzdDfpkGytiiqPTtRD6pAfW/yACg== -typedoc@^0.22.10: - version "0.22.10" - resolved "https://registry.npmjs.org/typedoc/-/typedoc-0.22.10.tgz" - integrity sha512-hQYZ4WtoMZ61wDC6w10kxA42+jclWngdmztNZsDvIz7BMJg7F2xnT+uYsUa7OluyKossdFj9E9Ye4QOZKTy8SA== +typedoc@^0.23.14: + version "0.23.14" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.23.14.tgz#d3af50b38fe98210ac39e112b5892f9d88546c93" + integrity sha512-s2I+ZKBET38EctZvbXp2GooHrNaKjWZkrwGEK/sttnOGiKJqU0vHrsdcwLgKZGuo2aedNL3RRPj1LnAAeYscig== dependencies: - glob "^7.2.0" lunr "^2.3.9" - marked "^3.0.8" - minimatch "^3.0.4" - shiki "^0.9.12" + marked "^4.0.19" + minimatch "^5.1.0" + shiki "^0.11.1" -typescript@^4.5.5: - version "4.5.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz" - integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== +typescript@^4.8.3: + version "4.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" + integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== ua-parser-js@^0.7.30: version "0.7.31" @@ -8563,10 +8576,10 @@ vscode-oniguruma@^1.6.1: resolved "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz" integrity sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ== -vscode-textmate@5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz" - integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ== +vscode-textmate@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-6.0.0.tgz#a3777197235036814ac9a92451492f2748589210" + integrity sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ== wait-on@^6.0.1: version "6.0.1" From a32844898834275e7275c7839d739bb9e59a78a5 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Mon, 12 Sep 2022 16:08:00 +0100 Subject: [PATCH 05/11] Kick CI From 22677b8ff7ad6365ee76638cacd31c8abdb6efae Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Fri, 9 Dec 2022 16:54:58 +0000 Subject: [PATCH 06/11] Update .vscode/settings.json Co-authored-by: David Vo --- .vscode/settings.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index 6210d00a1d..864638293c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -23,5 +23,6 @@ "subword" ], "files.eol": "\n", + "typescript.enablePromptUseWorkspaceTsdk": true, "typescript.tsdk": "node_modules/typescript/lib" } From c0d73d014073e9aa29c0660d69bbff595fef98fa Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 9 Dec 2022 17:23:18 +0000 Subject: [PATCH 07/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../commandVersionUpgrades/canonicalizeAndValidateCommand.ts | 2 +- .../transformRecordedTests/transformations/reorderFields.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts b/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts index cc085c31ae..63b92c47d5 100644 --- a/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts +++ b/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts @@ -28,7 +28,7 @@ import { upgradeV2ToV3 } from "./upgradeV2ToV3"; * @returns The normalized command argument */ export function canonicalizeAndValidateCommand( - command: Command + command: Command, ): EnforceUndefined { const commandUpgraded = upgradeCommand(command); const { diff --git a/src/scripts/transformRecordedTests/transformations/reorderFields.ts b/src/scripts/transformRecordedTests/transformations/reorderFields.ts index 045b441d2c..caf639d813 100644 --- a/src/scripts/transformRecordedTests/transformations/reorderFields.ts +++ b/src/scripts/transformRecordedTests/transformations/reorderFields.ts @@ -1,7 +1,7 @@ import { TestCaseFixture } from "../../../testUtil/TestCaseFixture"; export function reorderFields( - fixture: TestCaseFixture + fixture: TestCaseFixture, ): EnforceUndefined { return { languageId: fixture.languageId, From 653a0b824fa252f2804c484241e92caedbdd9dd3 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Fri, 9 Dec 2022 18:00:19 +0000 Subject: [PATCH 08/11] Factor orthogonal work into separate PRs --- .vscode/settings.json | 4 +--- cursorless-nx/package.json | 2 +- docs-site/package.json | 12 ++++++------ package.json | 4 ++-- src/util/makeGraph.ts | 34 ++++++++++++++++++---------------- 5 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 864638293c..70ab63fbcf 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -22,7 +22,5 @@ "pojo", "subword" ], - "files.eol": "\n", - "typescript.enablePromptUseWorkspaceTsdk": true, - "typescript.tsdk": "node_modules/typescript/lib" + "files.eol": "\n" } diff --git a/cursorless-nx/package.json b/cursorless-nx/package.json index 3556f05714..3dc0c2c1af 100644 --- a/cursorless-nx/package.json +++ b/cursorless-nx/package.json @@ -45,7 +45,7 @@ "react-test-renderer": "18.1.0", "ts-jest": "27.1.4", "ts-node": "10.8.2", - "typescript": "4.8.3", + "typescript": "4.7.4", "typescript-plugin-css-modules": "^3.4.0" }, "dependencies": { diff --git a/docs-site/package.json b/docs-site/package.json index bb7274488e..b633df40e6 100644 --- a/docs-site/package.json +++ b/docs-site/package.json @@ -38,11 +38,11 @@ }, "devDependencies": { "docusaurus-plugin-typedoc": "^0.17.2", - "typedoc": "^0.23.14", - "typedoc-plugin-markdown": "^3.13.6", - "typedoc-plugin-mdn-links": "^1.0.6", - "typedoc-plugin-missing-exports": "^0.23.0", - "typedoc-plugin-rename-defaults": "^0.6.4", - "typescript": "^4.8.3" + "typedoc": "^0.22.10", + "typedoc-plugin-markdown": "^3.11.9", + "typedoc-plugin-mdn-links": "^1.0.4", + "typedoc-plugin-missing-exports": "^0.22.6", + "typedoc-plugin-rename-defaults": "^0.4.0", + "typescript": "4.6.3" } } diff --git a/package.json b/package.json index 673fac3552..cb235e4da3 100644 --- a/package.json +++ b/package.json @@ -762,8 +762,8 @@ "prettier": "2.7.1", "semver": "^7.3.7", "sinon": "^11.1.1", - "ts-unused-exports": "8.0.0", - "typescript": "^4.8.3" + "ts-unused-exports": "^8.0.0", + "typescript": "4.6.3" }, "dependencies": { "immer": "^9.0.15", diff --git a/src/util/makeGraph.ts b/src/util/makeGraph.ts index c588613314..145a896bc6 100644 --- a/src/util/makeGraph.ts +++ b/src/util/makeGraph.ts @@ -12,24 +12,26 @@ function makeGetter( key: K, ): () => GraphType[K] { return () => { - const componentValue = components[key]; - if (componentValue != null) { - return componentValue; - } + let returnValue: GraphType[K]; - if (lockedKeys.includes(key)) { - const cycle = [...lockedKeys.slice(lockedKeys.indexOf(key)), key].join( - " -> ", - ); - throw new Error(`Dependency injection graph cycle detected: ${cycle}`); - } - const factory = factoryMap[key]; - lockedKeys.push(key); - const returnValue = factory(graph); - if (lockedKeys.pop() !== key)˜ { - throw new Error("Unexpected key at top of graph stack"); + if (components[key] == null) { + if (lockedKeys.includes(key)) { + const cycle = [...lockedKeys.slice(lockedKeys.indexOf(key)), key].join( + " -> ", + ); + throw new Error(`Dependency injection graph cycle detected: ${cycle}`); + } + const factory = factoryMap[key] as (graph: GraphType) => GraphType[K]; + lockedKeys.push(key); + returnValue = factory(graph); + if (lockedKeys.pop() !== key) { + throw new Error("Unexpected key at top of graph stack"); + } + components[key] = returnValue; + } else { + returnValue = components[key] as GraphType[K]; } - components[key] = returnValue; + return returnValue; }; } From 5de5261661c8e9915dbc424f080cad3db8e1b49e Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Fri, 9 Dec 2022 17:48:58 +0000 Subject: [PATCH 09/11] Tweaks --- .../canonicalizeAndValidateCommand.ts | 1 + src/definitions/utils.d.ts | 21 ------------------- src/libs/common/util/typeUtils.ts | 19 +++++++++++++++++ .../transformations/reorderFields.ts | 2 ++ src/testUtil/TestCase.ts | 2 +- 5 files changed, 23 insertions(+), 22 deletions(-) delete mode 100644 src/definitions/utils.d.ts create mode 100644 src/libs/common/util/typeUtils.ts diff --git a/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts b/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts index 63b92c47d5..e5d7ad82be 100644 --- a/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts +++ b/src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts @@ -1,5 +1,6 @@ import { ActionType } from "../../actions/actions.types"; import { OutdatedExtensionError } from "../../errors"; +import { EnforceUndefined } from "../../libs/common/util/typeUtils"; import ide from "../../libs/cursorless-engine/singletons/ide.singleton"; import { Modifier, diff --git a/src/definitions/utils.d.ts b/src/definitions/utils.d.ts deleted file mode 100644 index d6ddbc93f8..0000000000 --- a/src/definitions/utils.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -declare namespace Utils { - type GetOptional = { - [K in keyof T as Pick extends Required> ? never : K]: T[K]; - }; - - type GetRequired = { - [K in keyof T as Pick extends Required> ? K : never]: T[K]; - }; - - type UnionUndefined = { - [K in keyof T]: T[K] | undefined; - }; -} - -/** - * Use this type to convert all optional keys in an interface to required undefined unions. - * Useful for passthrough objects that need manual extending - * { opt?: boolean; } => { opt: boolean | undefined; } - */ -type EnforceUndefined = Utils.GetRequired & - Utils.UnionUndefined>>; diff --git a/src/libs/common/util/typeUtils.ts b/src/libs/common/util/typeUtils.ts new file mode 100644 index 0000000000..c2ea20cd12 --- /dev/null +++ b/src/libs/common/util/typeUtils.ts @@ -0,0 +1,19 @@ +type GetOptional = { + [K in keyof T as Pick extends Required> ? never : K]: T[K]; +}; + +type GetRequired = { + [K in keyof T as Pick extends Required> ? K : never]: T[K]; +}; + +type UnionUndefined = { + [K in keyof T]: T[K] | undefined; +}; + +/** + * Use this type to convert all optional keys in an interface to required undefined unions. + * Useful for passthrough objects that need manual extending + * { opt?: boolean; } => { opt: boolean | undefined; } + */ +export type EnforceUndefined = GetRequired & + UnionUndefined>>; diff --git a/src/scripts/transformRecordedTests/transformations/reorderFields.ts b/src/scripts/transformRecordedTests/transformations/reorderFields.ts index caf639d813..abd546b5e2 100644 --- a/src/scripts/transformRecordedTests/transformations/reorderFields.ts +++ b/src/scripts/transformRecordedTests/transformations/reorderFields.ts @@ -1,3 +1,4 @@ +import { EnforceUndefined } from "../../../libs/common/util/typeUtils"; import { TestCaseFixture } from "../../../testUtil/TestCaseFixture"; export function reorderFields( @@ -12,6 +13,7 @@ export function reorderFields( decorations: fixture.decorations, returnValue: fixture.returnValue, thrownError: fixture.thrownError, + ide: fixture.ide, postEditorOpenSleepTimeMs: fixture.postEditorOpenSleepTimeMs, postCommandSleepTimeMs: fixture.postCommandSleepTimeMs, fullTargets: fixture.fullTargets, diff --git a/src/testUtil/TestCase.ts b/src/testUtil/TestCase.ts index b15477b63a..5ceb1d371b 100644 --- a/src/testUtil/TestCase.ts +++ b/src/testUtil/TestCase.ts @@ -163,9 +163,9 @@ export class TestCase { finalState: this.finalState, decorations: this.decorations, returnValue: this.returnValue, - fullTargets: this.fullTargets, thrownError: this.thrownError, ide: this.spyIdeValues, + fullTargets: this.fullTargets, }; return serialize(fixture); } From 7a85b6022012268d983011d3b14b1a3d2d6a5643 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Fri, 9 Dec 2022 18:16:21 +0000 Subject: [PATCH 10/11] Fix test case transformer --- package.json | 3 ++- src/scripts/transformRecordedTests/index.ts | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index cb235e4da3..6771ecbaaf 100644 --- a/package.json +++ b/package.json @@ -732,7 +732,8 @@ "test": "env CURSORLESS_TEST=true node ./out/test/scripts/runTestsCI.js", "unused-exports": "ts-unused-exports tsconfig.json --showLineNumber", "init-launch-sandbox": "node ./out/scripts/initLaunchSandbox.js", - "prepare-for-extension-publish": "node ./out/scripts/prepareForExtensionPublish.js" + "prepare-for-extension-publish": "node ./out/scripts/prepareForExtensionPublish.js", + "transform-recorded-tests": "node ./out/scripts/transformRecordedTests/index.js" }, "devDependencies": { "@types/chai": "^4.3.3", diff --git a/src/scripts/transformRecordedTests/index.ts b/src/scripts/transformRecordedTests/index.ts index ee2823f4d0..fcf5aa186d 100644 --- a/src/scripts/transformRecordedTests/index.ts +++ b/src/scripts/transformRecordedTests/index.ts @@ -1,3 +1,6 @@ +// Ensures that the aliases such as @cursorless/common that we define in +// package.json are active +import "module-alias/register"; import { getRecordedTestPaths } from "../../apps/cursorless-vscode-e2e/getFixturePaths"; import { identity } from "./transformations/identity"; import { upgrade } from "./transformations/upgrade"; From 9c07b706a1d261712f39a7654034bffd9f31f914 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Fri, 9 Dec 2022 18:19:35 +0000 Subject: [PATCH 11/11] tweak readme --- docs/contributing/test-case-recorder.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/contributing/test-case-recorder.md b/docs/contributing/test-case-recorder.md index 282f29f728..5641f23a74 100644 --- a/docs/contributing/test-case-recorder.md +++ b/docs/contributing/test-case-recorder.md @@ -78,11 +78,11 @@ and can be run in vscode or via yarn in terminal. ### Autoformatting -To clean up the formatting of all of the yaml test cases, run `yarn run compile && node ./out/scripts/transformRecordedTests/index.js` +To clean up the formatting of all of the yaml test cases, run `yarn compile && yarn transform-recorded-tests` ### Upgrading fixtures -To upgrade all the test fixtures to the latest command version, run the command `yarn run compile && node ./out/scripts/transformRecordedTests/index.js upgrade`. This command should be idempotent. +To upgrade all the test fixtures to the latest command version, run the command `yarn compile && yarn transform-recorded-tests upgrade`. This command should be idempotent. ### Custom transformation @@ -90,7 +90,7 @@ To upgrade all the test fixtures to the latest command version, run the command 1. Change the value at the `custom` key in `AVAILABLE_TRANSFORMATIONS` at the top of [`transformRecordedTests/index.ts`](../../src/scripts/transformRecordedTests/index.ts) to point to your new transformation -1. Run `yarn run compile && node ./out/scripts/transformRecordedTests/index.js custom` +1. Run `yarn compile && yarn transform-recorded-tests custom` Example of a custom transformation