diff --git a/packages/@n8n_io/eslint-config/frontend.js b/packages/@n8n_io/eslint-config/frontend.js index e36d4c33b7..a93c510e20 100644 --- a/packages/@n8n_io/eslint-config/frontend.js +++ b/packages/@n8n_io/eslint-config/frontend.js @@ -4,7 +4,7 @@ module.exports = { plugins: ['vue'], - extends: ['plugin:vue/essential', '@vue/typescript', './base'], + extends: ['plugin:vue/vue3-essential', '@vue/typescript', './base'], env: { browser: true, @@ -37,6 +37,12 @@ module.exports = { 'vue/no-unused-components': 'error', 'vue/multi-word-component-names': 'off', + // TODO: fix these + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/restrict-template-expressions': 'off', + '@typescript-eslint/unbound-method': 'off', + // TODO: remove these 'vue/no-mutating-props': 'warn', 'vue/no-side-effects-in-computed-properties': 'warn', diff --git a/packages/design-system/src/components/N8nActionToggle/ActionToggle.vue b/packages/design-system/src/components/N8nActionToggle/ActionToggle.vue index de04e0c35d..662403ab26 100644 --- a/packages/design-system/src/components/N8nActionToggle/ActionToggle.vue +++ b/packages/design-system/src/components/N8nActionToggle/ActionToggle.vue @@ -4,7 +4,7 @@ :placement="placement" :size="size" trigger="click" - @click.native.stop + @click.stop @command="onCommand" @visible-change="onVisibleChange" > diff --git a/packages/design-system/src/components/N8nRecycleScroller/RecycleScroller.vue b/packages/design-system/src/components/N8nRecycleScroller/RecycleScroller.vue index 4c4a1073ae..abd34dae17 100644 --- a/packages/design-system/src/components/N8nRecycleScroller/RecycleScroller.vue +++ b/packages/design-system/src/components/N8nRecycleScroller/RecycleScroller.vue @@ -164,7 +164,7 @@ export default defineComponent({ } function onUpdateItemSize(item: { [key: string]: string }) { - nextTick(() => { + void nextTick(() => { const itemId = item[props.itemKey]; const itemRef = itemRefs.value[itemId] as HTMLElement; const previousSize = itemSizeCache.value[itemId]; @@ -186,7 +186,7 @@ export default defineComponent({ function onWindowResize() { if (wrapperRef.value) { wrapperHeight.value = wrapperRef.value.offsetHeight; - nextTick(() => { + void nextTick(() => { updateItemSizeCache(visibleItems.value); }); } diff --git a/packages/design-system/src/components/N8nTabs/Tabs.vue b/packages/design-system/src/components/N8nTabs/Tabs.vue index cdcf6df930..5425e9e1e3 100644 --- a/packages/design-system/src/components/N8nTabs/Tabs.vue +++ b/packages/design-system/src/components/N8nTabs/Tabs.vue @@ -88,7 +88,7 @@ export default defineComponent({ this.canScrollRight = scrollWidth - width > this.scrollPosition; } }, - destroyed() { + unmounted() { if (this.resizeObserver) { this.resizeObserver.disconnect(); } diff --git a/packages/design-system/src/components/ResizeObserver/ResizeObserver.vue b/packages/design-system/src/components/ResizeObserver/ResizeObserver.vue index 5de3a5f934..8f91ce5334 100644 --- a/packages/design-system/src/components/ResizeObserver/ResizeObserver.vue +++ b/packages/design-system/src/components/ResizeObserver/ResizeObserver.vue @@ -68,7 +68,7 @@ export default defineComponent({ observer.observe(this.$refs.root as HTMLDivElement); } }, - beforeDestroy() { + beforeUnmount() { if (this.enabled) { this.observer?.disconnect(); // eslint-disable-line } diff --git a/packages/design-system/src/styleguide/ColorCircles.vue b/packages/design-system/src/styleguide/ColorCircles.vue index ae2c0940d0..5901e5366b 100644 --- a/packages/design-system/src/styleguide/ColorCircles.vue +++ b/packages/design-system/src/styleguide/ColorCircles.vue @@ -78,7 +78,7 @@ export default defineComponent({ this.observer.observe(body, { attributes: true }); } }, - destroyed() { + unmounted() { if (this.observer) { this.observer.disconnect(); } diff --git a/packages/design-system/src/styleguide/Sizes.vue b/packages/design-system/src/styleguide/Sizes.vue index 69b2c01a6f..a22de96cd3 100644 --- a/packages/design-system/src/styleguide/Sizes.vue +++ b/packages/design-system/src/styleguide/Sizes.vue @@ -68,7 +68,7 @@ export default defineComponent({ this.observer.observe(body, { attributes: true }); } }, - destroyed() { + unmounted() { if (this.observer) { this.observer.disconnect(); } diff --git a/packages/design-system/src/styleguide/VariableTable.vue b/packages/design-system/src/styleguide/VariableTable.vue index aebf21acd3..5548a2f481 100644 --- a/packages/design-system/src/styleguide/VariableTable.vue +++ b/packages/design-system/src/styleguide/VariableTable.vue @@ -65,7 +65,7 @@ export default defineComponent({ this.observer.observe(body, { attributes: true }); } }, - destroyed() { + unmounted() { if (this.observer) { this.observer.disconnect(); } diff --git a/packages/editor-ui/src/components/CopyInput.vue b/packages/editor-ui/src/components/CopyInput.vue index 4b071ade30..30ad2ad81e 100644 --- a/packages/editor-ui/src/components/CopyInput.vue +++ b/packages/editor-ui/src/components/CopyInput.vue @@ -20,6 +20,7 @@ import { defineComponent } from 'vue'; import { copyPaste } from '@/mixins/copyPaste'; import { useToast } from '@/composables'; +import { i18n } from '@/plugins/i18n'; export default defineComponent({ mixins: [copyPaste], @@ -36,13 +37,13 @@ export default defineComponent({ copyButtonText: { type: String, default(): string { - return this.$locale.baseText('generic.copy'); + return i18n.baseText('generic.copy'); }, }, toastTitle: { type: String, default(): string { - return this.$locale.baseText('generic.copiedToClipboard'); + return i18n.baseText('generic.copiedToClipboard'); }, }, toastMessage: { diff --git a/packages/editor-ui/src/components/ExecutionsView/ExecutionsList.vue b/packages/editor-ui/src/components/ExecutionsView/ExecutionsList.vue index 262a7d3c45..0d45b295ce 100644 --- a/packages/editor-ui/src/components/ExecutionsView/ExecutionsList.vue +++ b/packages/editor-ui/src/components/ExecutionsView/ExecutionsList.vue @@ -349,7 +349,9 @@ export default defineComponent({ async startAutoRefreshInterval() { if (this.autoRefresh) { await this.loadAutoRefresh(); - this.autoRefreshTimeout = setTimeout(() => this.startAutoRefreshInterval(), 4000); + this.autoRefreshTimeout = setTimeout(() => { + void this.startAutoRefreshInterval(); + }, 4000); } }, stopAutoRefreshInterval() { @@ -363,13 +365,13 @@ export default defineComponent({ this.uiStore.executionSidebarAutoRefresh = this.autoRefresh; this.stopAutoRefreshInterval(); // Clear any previously existing intervals (if any - there shouldn't) - this.startAutoRefreshInterval(); + void this.startAutoRefreshInterval(); }, onDocumentVisibilityChange() { if (document.visibilityState === 'hidden') { - this.stopAutoRefreshInterval(); + void this.stopAutoRefreshInterval(); } else { - this.startAutoRefreshInterval(); + void this.startAutoRefreshInterval(); } }, async loadAutoRefresh(): Promise { @@ -449,7 +451,7 @@ export default defineComponent({ return []; } try { - return await this.workflowsStore.loadCurrentWorkflowExecutions(this.requestFilter); + return this.workflowsStore.loadCurrentWorkflowExecutions(this.requestFilter); } catch (error) { if (error.errorCode === NO_NETWORK_ERROR_CODE) { this.showMessage( diff --git a/packages/editor-ui/src/components/FixedCollectionParameter.vue b/packages/editor-ui/src/components/FixedCollectionParameter.vue index b4b1e607fd..b67baa1587 100644 --- a/packages/editor-ui/src/components/FixedCollectionParameter.vue +++ b/packages/editor-ui/src/components/FixedCollectionParameter.vue @@ -115,7 +115,7 @@