From 1d2a594f0a3c7c2ce24f6eafbbfa8ef381c797d8 Mon Sep 17 00:00:00 2001 From: Kristaps Fabians Geikins Date: Thu, 20 Feb 2025 14:18:18 +0200 Subject: [PATCH] chore: upgrade TS 5.2 -> 5.7.3 & ESLint to 9.20.1 (#4032) * chore: upgrade TS 5.2 -> 5.7.3 * vite dts fix * lint fix * resolutions fix * ui comp build fix * precommit fix? * latest eslint version * autoloader fix * undo unnecessary viewer change * eslint fixes fe2 + trying disabled type linting * lint fixes --- package.json | 13 +- packages/dui3/eslint.config.mjs | 4 +- .../dui3/lib/accounts/composables/setup.ts | 2 +- packages/dui3/lib/bridge/generic.ts | 2 +- packages/dui3/package.json | 2 +- packages/dui3/pages/test.vue | 2 +- .../automate/automation/CreateDialog.vue | 4 +- .../create-dialog/SelectFunctionStep.vue | 5 +- .../components/automate/viewer/Panel.vue | 2 +- .../frontend-2/components/common/Card.vue | 2 +- .../common/TransitioningContents.vue | 2 +- .../error/page/ProjectAccessErrorBlock.vue | 2 +- .../error/page/WorkspaceAccessErrorBlock.vue | 2 +- .../components/form/MarkdownEditor.vue | 2 +- .../form/json/ArrayListRenderer.vue | 2 - .../form/json/BooleanControlRenderer.vue | 2 +- .../form/json/DateControlRenderer.vue | 2 +- .../form/json/DateTimeControlRenderer.vue | 2 +- .../form/json/EnumControlRenderer.vue | 4 +- .../form/json/EnumOneOfControlRenderer.vue | 2 +- .../frontend-2/components/form/json/Form.vue | 1 - .../form/json/IntegerControlRenderer.vue | 2 +- .../form/json/MultiStringControlRenderer.vue | 2 +- .../form/json/NumberControlRenderer.vue | 2 +- .../form/json/StringControlRenderer.vue | 2 +- .../form/json/TimeControlRenderer.vue | 2 +- .../components/form/select/Models.vue | 6 +- .../frontend-2/components/preview/Image.vue | 2 +- .../automation/FunctionSettingsDialog.vue | 6 +- .../project/page/automation/Runs.vue | 4 +- .../project/page/automations/Row.vue | 2 +- .../project/page/automations/Tab.vue | 5 +- .../project/page/discussions/Results.vue | 4 +- .../settings/collaborators/Collaborators.vue | 1 - .../projects/MoveToWorkspaceDialog.vue | 2 +- .../settings/server/ActiveUsers.vue | 3 +- .../settings/server/PendingInvitations.vue | 4 +- .../workspaces/billing/PricingTable/Plan.vue | 5 +- .../workspaces/members/JoinRequestsTable.vue | 2 +- .../security/DomainRemoveDialog.vue | 2 +- .../frontend-2/components/viewer/Controls.vue | 10 +- .../viewer/anchored-point/NewThread.vue | 2 +- .../viewer/anchored-point/Thread.vue | 2 +- .../viewer/anchored-point/thread/NewReply.vue | 2 +- .../viewer/compare-changes/Panel.vue | 1 - .../components/viewer/explorer/Explorer.vue | 1 + .../components/viewer/selection/Object.vue | 1 - .../components/workspace/header/Header.vue | 2 +- .../invite/DiscoverableWorkspaceBanner.vue | 2 +- packages/frontend-2/composables/logging.ts | 2 +- packages/frontend-2/eslint.config.mjs | 50 +- .../lib/automate/composables/jsonSchema.ts | 1 - .../lib/common/composables/crypto.ts | 2 +- .../lib/common/composables/graphql.ts | 2 +- .../lib/common/composables/reactiveCookie.ts | 1 - .../frontend-2/lib/common/helpers/github.ts | 2 +- .../frontend-2/lib/common/helpers/graphql.ts | 2 - .../frontend-2/lib/common/helpers/tailwind.ts | 2 +- .../frontend-2/lib/core/configs/apollo.ts | 11 +- .../lib/core/helpers/apolloSetup.ts | 1 - .../lib/core/helpers/observability.ts | 4 +- .../frontend-2/lib/dashboard/helpers/types.ts | 2 +- .../lib/form/composables/jsonRenderers.ts | 2 +- packages/frontend-2/lib/form/jsonRenderers.ts | 1 - .../lib/viewer/composables/setup/postSetup.ts | 2 - .../lib/viewer/composables/setup/selection.ts | 2 - .../lib/viewer/extensions/PassReader.ts | 2 +- .../lib/viewer/helpers/sceneExplorer.ts | 12 +- .../lib/viewer/pipelines/snow/SnowFallPass.ts | 2 +- .../lib/viewer/pipelines/snow/SnowMaterial.ts | 1 - .../middleware/003-acceptInvites.global.ts | 2 +- packages/frontend-2/package.json | 4 +- .../frontend-2/pages/projects/[id]/index.vue | 2 +- .../pages/settings/server/projects.vue | 4 +- .../settings/workspaces/[slug]/projects.vue | 4 +- packages/frontend-2/plugins/005-cache.ts | 2 - .../server/lib/core/helpers/observability.ts | 1 - .../server/routes/web-api/cookie-fix.ts | 2 +- packages/frontend-2/tsconfig.eslint.json | 2 +- packages/frontend-2/tsconfig.json | 1 + packages/objectsender/src/utils/Serializer.ts | 1 + packages/server/app.ts | 4 +- packages/server/eslint.config.mjs | 8 + packages/server/logging/machineId.ts | 2 +- .../automate/clients/executionEngine.ts | 4 +- .../migrations/20230905162038_automations.ts | 2 +- .../automate/services/runsManagement.ts | 2 +- .../modules/automate/tests/trigger.spec.ts | 24 +- .../modules/core/domain/streams/operations.ts | 2 +- .../server/modules/core/errors/ratelimit.ts | 4 +- .../server/modules/core/errors/userinput.ts | 2 +- .../modules/core/graph/plugins/logging.ts | 1 - .../core/migrations/20220803104832_ts_test.ts | 2 + packages/server/modules/core/rest/upload.ts | 4 +- .../core/services/richTextEditorService.ts | 2 +- .../integration/objectsStream.rest.spec.ts | 1 + .../core/tests/unit/scheduledTasks.spec.ts | 2 +- .../server/modules/core/utils/chunking.ts | 2 +- packages/server/modules/fileuploads/index.ts | 2 +- .../gatekeeper/domain/workspacePricing.ts | 7 +- .../tests/unit/subscriptions.spec.ts | 4 +- packages/server/modules/gendo/rest/index.ts | 5 +- packages/server/modules/index.ts | 6 +- .../repositories/serverInvites.ts | 2 +- packages/server/modules/shared/errors/base.ts | 2 +- .../server/modules/shared/errors/index.ts | 4 +- .../server/modules/shared/helpers/dbHelper.ts | 1 - .../modules/shared/helpers/envHelper.ts | 2 +- .../server/modules/shared/helpers/mocks.ts | 1 - .../modules/shared/helpers/sanitization.ts | 4 +- .../server/modules/shared/middleware/index.ts | 2 +- .../workspaces/events/eventListener.ts | 2 - .../server/modules/workspaces/rest/sso.ts | 1 + .../tests/unit/services/join.spec.ts | 2 +- packages/server/test/mockHelper.ts | 2 +- packages/shared/src/core/helpers/utility.ts | 2 +- .../shared/src/core/utils/localStorage.ts | 2 +- .../src/environment/multiRegionConfig.ts | 2 +- packages/tailwind-theme/eslint.config.mjs | 7 +- packages/tailwind-theme/src/plugin.ts | 2 +- packages/ui-components/.storybook/main.ts | 1 - packages/ui-components/eslint.config.mjs | 7 +- packages/ui-components/package.json | 9 +- .../src/components/common/Alert.vue | 4 +- .../src/components/form/Checkbox.stories.ts | 1 + .../src/components/form/Radio.stories.ts | 1 + .../src/components/form/RadioGroup.vue | 8 +- .../src/components/form/Switch.stories.ts | 2 +- .../src/components/layout/Dialog.vue | 6 +- .../src/components/layout/Disclosure.vue | 10 +- .../src/components/layout/Menu.vue | 6 +- .../layout/sidebar/menu/group/Item.vue | 4 +- .../src/components/user/AvatarEditable.vue | 5 +- packages/ui-components/src/lib.ts | 2 +- packages/ui-components/vite.config.ts | 15 +- packages/viewer-sandbox/eslint.config.mjs | 3 +- .../src/Extensions/RotateCamera.ts | 1 - packages/viewer-sandbox/src/Sandbox.ts | 4 - packages/viewer-sandbox/src/main-multi.ts | 5 - packages/viewer-sandbox/src/main.ts | 10 - packages/viewer/eslint.config.mjs | 2 + packages/viewer/src/modules/Assets.ts | 14 +- packages/viewer/src/modules/UrlHelper.ts | 2 +- .../src/modules/extensions/DiffExtension.ts | 4 +- .../src/modules/loaders/OBJ/ObjLoader.ts | 10 +- .../modules/loaders/Speckle/SpeckleLoader.ts | 3 +- utils/eslint-projectwide.mjs | 13 +- yarn.lock | 2585 ++++++++++------- 148 files changed, 1840 insertions(+), 1302 deletions(-) diff --git a/package.json b/package.json index fce545129..5964d2d2c 100644 --- a/package.json +++ b/package.json @@ -72,12 +72,12 @@ "@datadog/datadog-ci/ws": "^7.5.10", "@microsoft/api-extractor/semver": "^7.5.4", "@rushstack/node-core-library/semver": "^7.5.4", - "@typescript-eslint/eslint-plugin": "^7.12.0", - "@typescript-eslint/parser": "^7.12.0", + "@typescript-eslint/eslint-plugin": "^8.20.0", + "@typescript-eslint/parser": "^8.20.0", "@types/react": "file:./packages/frontend-2/type-augmentations/stubs/types__react", "core-js": "3.22.4", "core-js-compat/semver": "^7.5.4", - "eslint": "^9.4.0", + "eslint": "^9.20.1", "eslint-config-prettier": "^9.1.0", "levelup/bl": ">=1.2.3", "levelup/semver": ">=5.7.2", @@ -88,9 +88,10 @@ "rollup-plugin-terser/serialize-javascript": ">=6.0.2", "simple-update-notifier/semver": "^7.5.4", "tslib": "^2.3.1", - "typescript": "^5.2.2", - "typescript-eslint": "^7.12.0", - "wait-on": ">=7.2.0" + "typescript": "^5.7.3", + "typescript-eslint": "^8.20.0", + "wait-on": ">=7.2.0", + "vue-tsc@npm:2.2.2/@vue/language-core": "2.2.0" }, "config": { "commitizen": { diff --git a/packages/dui3/eslint.config.mjs b/packages/dui3/eslint.config.mjs index 859b12062..efa50520e 100644 --- a/packages/dui3/eslint.config.mjs +++ b/packages/dui3/eslint.config.mjs @@ -57,7 +57,7 @@ const configs = await withNuxt([ '@typescript-eslint/no-for-in-array': ['error'], '@typescript-eslint/restrict-plus-operands': ['error'], '@typescript-eslint/await-thenable': ['warn'], - '@typescript-eslint/ban-types': ['warn'], + '@typescript-eslint/no-restricted-types': ['warn'], 'require-await': 'off', '@typescript-eslint/require-await': 'error', 'no-undef': 'off', @@ -105,7 +105,7 @@ const configs = await withNuxt([ rules: { 'no-var': 'off', '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/ban-types': 'off' + '@typescript-eslint/no-restricted-types': 'off' } } ]).prepend([ diff --git a/packages/dui3/lib/accounts/composables/setup.ts b/packages/dui3/lib/accounts/composables/setup.ts index b40ec3670..06da215de 100644 --- a/packages/dui3/lib/accounts/composables/setup.ts +++ b/packages/dui3/lib/accounts/composables/setup.ts @@ -52,7 +52,7 @@ export function useAccountsSetup(): DUIAccountsState { try { await acc.client.query({ query: accountTestQuery }) acc.isValid = true - } catch (error) { + } catch { // TODO: properly dispose and kill this client. It's unclear how to do it. acc.isValid = false // NOTE: we do not want to delete the client, as we might want to "refresh" in diff --git a/packages/dui3/lib/bridge/generic.ts b/packages/dui3/lib/bridge/generic.ts index 72a18cc57..7b441868c 100644 --- a/packages/dui3/lib/bridge/generic.ts +++ b/packages/dui3/lib/bridge/generic.ts @@ -17,7 +17,7 @@ export class GenericBridge extends BaseBridge { try { availableMethodNames = await this.bridge.GetBindingsMethodNames() - } catch (e) { + } catch { console.warn(`Failed to get method names.`) return false } diff --git a/packages/dui3/package.json b/packages/dui3/package.json index 40206e0c3..6c2bf9a0e 100644 --- a/packages/dui3/package.json +++ b/packages/dui3/package.json @@ -73,7 +73,7 @@ "tailwindcss": "^3.3.2", "type-fest": "^3.5.1", "typescript": "^4.8.3", - "vue-tsc": "1.3.4" + "vue-tsc": "^2.2.2" }, "installConfig": { "hoistingLimits": "workspaces" diff --git a/packages/dui3/pages/test.vue b/packages/dui3/pages/test.vue index 9eb0837b8..5f01daa83 100644 --- a/packages/dui3/pages/test.vue +++ b/packages/dui3/pages/test.vue @@ -66,7 +66,7 @@ const tests = ref([ } ).sayHi('Speckle', 0) // note, invalid on purpose, it looks long because ts needs to be happy return 'not ok' - } catch (e) { + } catch { return 'ok' } }, diff --git a/packages/frontend-2/components/automate/automation/CreateDialog.vue b/packages/frontend-2/components/automate/automation/CreateDialog.vue index 20f969b7b..5082ebdf7 100644 --- a/packages/frontend-2/components/automate/automation/CreateDialog.vue +++ b/packages/frontend-2/components/automate/automation/CreateDialog.vue @@ -420,7 +420,7 @@ const onDetailsSubmit = handleDetailsSubmit(async () => { parameters: encryptedParams } ], - triggerDefinitions: { + triggerDefinitions: { version: Automate.AutomateTypes.TRIGGER_DEFINITIONS_SCHEMA_VERSION, definitions: [ { @@ -428,7 +428,7 @@ const onDetailsSubmit = handleDetailsSubmit(async () => { modelId: model.id } ] - } + } satisfies Automate.AutomateTypes.TriggerDefinitionsSchema } }, { hideSuccessToast: true } diff --git a/packages/frontend-2/components/automate/automation/create-dialog/SelectFunctionStep.vue b/packages/frontend-2/components/automate/automation/create-dialog/SelectFunctionStep.vue index 46c327ae7..b94d3210c 100644 --- a/packages/frontend-2/components/automate/automation/create-dialog/SelectFunctionStep.vue +++ b/packages/frontend-2/components/automate/automation/create-dialog/SelectFunctionStep.vue @@ -39,7 +39,7 @@ import { useDebouncedTextInput } from '@speckle/ui-components' import { useQueryLoading } from '@vue/apollo-composable' import { graphql } from '~/lib/common/generated/gql' import type { CreateAutomationSelectableFunction } from '~/lib/automate/helpers/automations' -import type { Optional } from '@speckle/shared' +import type { Nullable, Optional } from '@speckle/shared' import { usePaginatedQuery } from '~/lib/common/composables/graphql' const searchQuery = graphql(` @@ -91,7 +91,8 @@ const { query: searchQuery, baseVariables: computed(() => ({ workspaceId: props.workspaceId ?? '', - search: search.value?.length ? search.value : '' + search: search.value?.length ? search.value : '', + cursor: null as Nullable })), resolveKey: (vars) => [vars.search || ''], resolveCurrentResult: (res) => res?.workspace?.automateFunctions, diff --git a/packages/frontend-2/components/automate/viewer/Panel.vue b/packages/frontend-2/components/automate/viewer/Panel.vue index 8bc685842..1bb55c061 100644 --- a/packages/frontend-2/components/automate/viewer/Panel.vue +++ b/packages/frontend-2/components/automate/viewer/Panel.vue @@ -26,7 +26,7 @@ diff --git a/packages/ui-components/src/components/form/Switch.stories.ts b/packages/ui-components/src/components/form/Switch.stories.ts index 4b3d0f2cc..b616116ac 100644 --- a/packages/ui-components/src/components/form/Switch.stories.ts +++ b/packages/ui-components/src/components/form/Switch.stories.ts @@ -41,7 +41,7 @@ export const Default: SwitchStoryType = { `, methods: { onModelUpdate(value: boolean) { - args['update:modelValue'] && args['update:modelValue'](value) + if (args['update:modelValue']) args['update:modelValue'](value) ctx.updateArgs({ ...args, modelValue: value }) } } diff --git a/packages/ui-components/src/components/layout/Dialog.vue b/packages/ui-components/src/components/layout/Dialog.vue index bde6bcf07..64a39ec8c 100644 --- a/packages/ui-components/src/components/layout/Dialog.vue +++ b/packages/ui-components/src/components/layout/Dialog.vue @@ -1,6 +1,6 @@