Skip to content

Commit 58fa384

Browse files
author
Robin Offel
committed
FSR-64: fix lint errors
- rewrite license checker to be in esm - lint fixes: - {} -> object or unknown - let -> const where possible - ts-ignore -> ts-expect-error - fix consola type in global window FSR-64 (Update to Eslint 9)
1 parent 649f9b6 commit 58fa384

File tree

133 files changed

+260
-286
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

133 files changed

+260
-286
lines changed

demo/src/components/FileExplorer.vue

+9-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
<script setup lang="ts">
22
import { h, onMounted, reactive, ref } from "vue";
3-
import type {
4-
FileExplorerContextMenu,
5-
FileExplorerItem,
6-
// @ts-ignore
7-
} from "webapps-common/ui/components/FileExplorer/types";
83
9-
import { Button, Checkbox, Dropdown, FileExplorer } from "@knime/components";
4+
import {
5+
Button,
6+
Checkbox,
7+
Dropdown,
8+
FileExplorer,
9+
type FileExplorerContextMenu,
10+
type FileExplorerItem,
11+
} from "@knime/components";
1012
1113
const items = [
1214
{
@@ -143,7 +145,7 @@ const customContextMenuComponent = ({
143145
}) => {
144146
return {
145147
render(): any {
146-
// @ts-expect-error
148+
// @ts-expect-error Property 'items' does not exist on type '{ render(): any; computed: { items(): any[]; }; }'
147149
const options = this.items.map((item: any) => {
148150
const onClick = () => {
149151
if (item.id === "custom-option") {

demo/src/components/ToastService.vue

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { rfcErrors } from "@knime/hub-features";
55
import Interactive from "@knime/styles/img/icons/interactive.svg";
66
77
import CodeExample from "./demo/CodeExample.vue";
8-
// @ts-ignore
98
109
// import toastServiceCode from "@knime/components/toastService?raw";
1110
// import typesCode from "@knime/components/types?raw";

demo/vite.config.ts

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { defineConfig } from "vite";
44
import vue from "@vitejs/plugin-vue";
55
import svgLoader from "vite-svg-loader";
66

7-
// @ts-ignore
87
import { svgoConfig } from "@knime/styles/config/svgo.config";
98

109
// https://vitejs.dev/config/

packages/components/src/components/Avatar/AvatarImagePlaceholder.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script setup lang="ts">
22
import { computed } from "vue";
3-
// @ts-ignore No types available for module
3+
// @ts-expect-error No types available for module
44
import ColorHash from "color-hash/dist/esm";
55
66
import {

packages/components/src/components/Avatar/__tests__/Avatar.test.ts

+1
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,6 @@ describe("Avatar.vue", () => {
4545
},
4646
});
4747
wrapper.getComponent(AvatarImagePlaceholder);
48+
expect(wrapper.findComponent(AvatarImagePlaceholder).exists()).toBe(true);
4849
});
4950
});

packages/components/src/components/Breadcrumb/Breadcrumb.vue

-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ export default {
6868
},
6969
},
7070
emits: {
71-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
7271
"click-item": (_item: BreadcrumbItem) => true,
7372
},
7473
computed: {

packages/components/src/components/Breadcrumb/__tests__/Breadcrumb.test.js

-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ describe("Breadcrumb.vue", () => {
3737
});
3838
let renderedItems = wrapper.findAll("li > *");
3939

40-
/* eslint-disable no-magic-numbers */
4140
expect(renderedItems[0].element.tagName).toBe("SPAN");
4241
expect(renderedItems[2].element.tagName).toBe("A");
4342
expect(renderedItems[4].element.tagName).toBe("SPAN");
@@ -61,7 +60,6 @@ describe("Breadcrumb.vue", () => {
6160
}
6261
}
6362
expect(arrows).toBe(3);
64-
/* eslint-enable no-magic-numbers */
6563
});
6664

6765
it.each([

packages/components/src/components/DonutChart/DonutChart.vue

+8-5
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,17 @@ export default {
8686
: this.secondaryValue;
8787
},
8888
clippedValue() {
89-
let value = Math.max(0, this.primarySegment.value);
89+
const value = Math.max(0, this.primarySegment.value);
9090
return this.acceptValuesLargerThanMax
9191
? value
9292
: Math.min(value, this.maxValue);
9393
},
9494
secondaryClippedValue() {
9595
// calculate secondary value including the first value (to overlap the two svgs)
96-
let value = Math.max(0, this.secondarySegment.value + this.clippedValue);
96+
const value = Math.max(
97+
0,
98+
this.secondarySegment.value + this.clippedValue,
99+
);
97100
return this.acceptValuesLargerThanMax
98101
? value
99102
: Math.min(value, this.maxValue);
@@ -137,11 +140,11 @@ export default {
137140
},
138141
labelStyle() {
139142
// simple approach to account for larger numbers as the label inside the donut hole
140-
let valueExceedsLarge = this.clippedValue > this.regularLabelMaxValue;
141-
let maxValueExceedsLarge =
143+
const valueExceedsLarge = this.clippedValue > this.regularLabelMaxValue;
144+
const maxValueExceedsLarge =
142145
Number.isFinite(this.maxValue) &&
143146
this.maxValue > this.regularLabelMaxValue;
144-
let size =
147+
const size =
145148
valueExceedsLarge || maxValueExceedsLarge
146149
? this.smallLabelFontSize
147150
: this.regularLabelFontSize;

packages/components/src/components/FileExplorer/components/FileExplorer.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ const forwardEmit = (
321321
return;
322322
}
323323
324-
// @ts-expect-error
324+
// @ts-expect-error No overload matches this call.
325325
emit(eventName, eventPayload);
326326
};
327327
/** DRAGGING */
@@ -421,7 +421,7 @@ const openContextMenu = (
421421
contextMenuPos.value.y = event.clientY;
422422
} else {
423423
const rect = element.getBoundingClientRect();
424-
// eslint-disable-next-line no-magic-numbers
424+
425425
contextMenuPos.value.x = rect.x + rect.width * 0.8;
426426
contextMenuPos.value.y = rect.y + rect.height / 2;
427427
}

packages/components/src/components/FileExplorer/components/__tests__/FileExplorer.test.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import FileExplorerContextMenu from "../FileExplorerContextMenu.vue";
1616
import FileExplorerItemComp from "../FileExplorerItem.vue";
1717

1818
vi.mock("motion", () => ({
19-
// @ts-ignore
19+
// @ts-expect-error implicit any
2020
animate: (_1, _2, { onComplete }) => {
2121
onComplete();
2222
},
@@ -101,7 +101,7 @@ describe("FileExplorer.vue", () => {
101101
];
102102

103103
type DoMountOptions = {
104-
props?: Props | {};
104+
props?: Props | object;
105105
customSlots?: { contextMenu?: any; itemIcon?: any; itemContent?: any };
106106
};
107107

@@ -602,7 +602,7 @@ describe("FileExplorer.vue", () => {
602602
expect.objectContaining({ onComplete: expect.any(Function) }),
603603
);
604604

605-
// @ts-ignore
605+
// @ts-expect-error Object is possibly unknown
606606
const { onComplete } = wrapper.emitted("moveItems")[0][0];
607607

608608
// mimic callback being triggered from outside listener

packages/components/src/components/FileExplorer/components/__tests__/FileExplorerContextMenu.test.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ describe("FileExplorerContextMenu.vue", () => {
7676
});
7777

7878
it("should set the popper offset accounting for the menu height", async () => {
79-
// @ts-expect-error
79+
// @ts-expect-error Type 'Mock<() => { top: number; left: number; height: number; }>' is not assignable to type '() => DOMRect'.
8080
defaultProps.anchor.element.getBoundingClientRect = vi.fn(() => ({
8181
top: 0,
8282
left: 10,
@@ -93,8 +93,8 @@ describe("FileExplorerContextMenu.vue", () => {
9393

9494
await nextTick();
9595

96-
// @ts-expect-error
97-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
96+
// @ts-expect-error Property 'mock' does not exist on type
97+
9898
const [_, __, options] = useFloating.mock.calls[0];
9999
expect(options.middleware.value[0]).toStrictEqual({
100100
crossAxis: 30,
@@ -118,7 +118,7 @@ describe("FileExplorerContextMenu.vue", () => {
118118
});
119119

120120
it("should set the popper offset accounting distance to the window bottom", async () => {
121-
// @ts-expect-error
121+
// @ts-expect-error Type 'Mock<() => { top: number; left: number; height: number; }>' is not assignable to type '() => DOMRect'.
122122
defaultProps.anchor.element.getBoundingClientRect = vi.fn(() => ({
123123
top: 20,
124124
left: 10,
@@ -137,8 +137,8 @@ describe("FileExplorerContextMenu.vue", () => {
137137

138138
await nextTick();
139139

140-
// @ts-expect-error
141-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
140+
// @ts-expect-error Property 'mock' does not exist on type
141+
142142
const [_, __, options] = useFloating.mock.calls[0];
143143
expect(options.middleware.value[0]).toStrictEqual({
144144
crossAxis: 30,

packages/components/src/components/FileExplorer/composables/useTestUtils.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ import { h } from "vue";
33
import type { VueWrapper } from "@vue/test-utils";
44

55
type IntersectionObserverMockType = {
6-
// @ts-ignore
6+
// @ts-expect-error Call signature, which lacks return-type annotation, implicitly has an 'any' return type
77
(callback: (...args: any[]) => any);
88
__trigger__: (isIntersecting: boolean) => void;
99
};
1010

11-
// @ts-ignore
11+
// @ts-expect-error Property '__trigger__' is missing in type '(this: any, callback: (...args: any[]) => any) => void' but required in type 'IntersectionObserverMockType'.
1212
export const MockIntersectionObserver: IntersectionObserverMockType =
1313
function MockIntersectionObserver(this: any, callback) {
1414
this.callbackRef = callback;
1515
this.element = null;
1616

17-
// @ts-ignore
17+
// @ts-expect-error Property '__trigger__' does not exist on type '(this: any, callback: (...args: any[]) => any) => void'.
1818
MockIntersectionObserver.__trigger__ = (isIntersecting = false) => {
1919
this.callbackRef([{ isIntersecting }]);
2020
};

packages/components/src/components/FileExplorer/utils/__tests__/dragGhostHelpers.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { describe, expect, it, vi } from "vitest";
33
import { createDragGhosts } from "../dragGhostHelpers";
44

55
vi.mock("motion", () => ({
6-
// @ts-ignore
6+
// @ts-expect-error implicit any
77
animate: (_1, _2, { onComplete }) => {
88
onComplete();
99
},
@@ -34,7 +34,7 @@ describe("dragGhostHelpers", () => {
3434
const dataTransfer = {
3535
setDragImage: vi.fn(),
3636
};
37-
// @ts-expect-error
37+
// @ts-expect-error Cannot assign to 'dataTransfer' because it is a read-only property
3838
dragStartEvent.dataTransfer = dataTransfer;
3939
dragTarget.dispatchEvent(dragStartEvent);
4040

packages/components/src/components/FileExplorer/utils/dragGhostHelpers.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { animate } from "motion";
22

3-
// @ts-ignore
43
import * as knimeColors from "@knime/styles/colors/knimeColors";
54

65
const COLORS = {
@@ -22,7 +21,7 @@ const applyStyles = (
2221
styles: Partial<CSSStyleDeclaration>,
2322
): void => {
2423
Object.entries(styles).forEach(([property, value]) => {
25-
// @ts-ignore
24+
// @ts-expect-error Element implicitly has an 'any' type because index expression is not of type 'number'.
2625
element.style[property] = value;
2726
});
2827
};
@@ -274,7 +273,7 @@ export const createDragGhosts = ({
274273
const { ghost } = createGhostElement({
275274
textContent,
276275
target: targetEl,
277-
// eslint-disable-next-line no-magic-numbers
276+
278277
// Don't add shadows when there are more than 2 elements to ghost, since it makes the shadow too dark
279278
addShadow: index < 2,
280279
});
@@ -313,7 +312,7 @@ export const createDragGhosts = ({
313312
}
314313
try {
315314
document.body.removeChild(ghost);
316-
} catch (error) {
315+
} catch (_error) {
317316
// mute exception trying to delete ghost.
318317
// this could happen if the `removeGhosts` function is called more than once
319318
// in which case it would result in an exception when attempting to remove

packages/components/src/components/FileLink/FileLink.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export default {
3535
},
3636
computed: {
3737
icon() {
38-
let candidate = `${this.fileExt}Icon`;
38+
const candidate = `${this.fileExt}Icon`;
3939
return this.fileExt && this.$options.components[candidate]
4040
? candidate
4141
: "fileIcon";

packages/components/src/components/Messages/__tests__/Messages.test.js

-2
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,6 @@ describe("Messages.vue", () => {
155155
expect(messageComponents[i].find("a").exists()).toBe(false);
156156
}
157157

158-
// eslint-disable-next-line no-magic-numbers
159158
let link = messageComponents[3].find("a");
160159
expect(link.exists()).toBe(true);
161160
expect(link.text()).toBe("Linked text.");
@@ -182,7 +181,6 @@ describe("Messages.vue", () => {
182181
);
183182
}
184183

185-
// eslint-disable-next-line no-magic-numbers
186184
let link = messageComponents[3].findComponent(RouterLinkStub);
187185
expect(link.exists()).toBe(true);
188186
expect(link.text()).toBe("Linked text.");

packages/components/src/components/OpenSourceCredits/OpenSourceCredits.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export default {
5454
},
5555
computed: {
5656
displayPackages() {
57-
let allUniquePackages = [];
57+
const allUniquePackages = [];
5858
5959
this.packages.concat(this.additionalPackages).forEach((pkg) => {
6060
const alreadyExists = allUniquePackages.some(
@@ -78,7 +78,7 @@ export default {
7878
},
7979
methods: {
8080
toggleDetails(e) {
81-
let expanded = e.target.getAttribute("aria-expanded") === "true";
81+
const expanded = e.target.getAttribute("aria-expanded") === "true";
8282
e.target.setAttribute("aria-expanded", (!expanded).toString());
8383
e.target.parentElement.parentElement.classList[
8484
expanded ? "remove" : "add"

packages/components/src/components/StyleListItem/__tests__/StyledListItem.test.js

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
/* eslint-disable max-lines */
2-
/* eslint-disable no-magic-numbers */
31
import { describe, expect, it, vi } from "vitest";
42
import { mount } from "@vue/test-utils";
53

packages/components/src/components/SubMenu/SubMenu.vue

+2-3
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ export default {
124124
const expanded = ref(false);
125125
const shadowRoot = inject<ShadowRoot | null>("shadowRoot", null);
126126
127-
// @ts-expect-error - force cast shadowRoot into HTMLElement
127+
// @ts-expect-error No overload matches this call.
128128
const clippingBoundary = computed<HTMLElement>(
129129
() => shadowRoot || document?.body,
130130
);
@@ -180,8 +180,7 @@ export default {
180180
this.expanded = !this.expanded;
181181
182182
const toggleCallback = this.expanded
183-
? // eslint-disable-next-line brace-style
184-
() => {
183+
? () => {
185184
this.expanded = false;
186185
}
187186
: () => {};

packages/components/src/components/SvgWithTitle/svgWithTitle.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export default (SvgComponent: ComponentInstance<any>, title: string) => ({
3030
const renderedComponent = SvgComponent.render({}, []);
3131

3232
const titleEl = h("title", title);
33-
// @ts-ignore
33+
// @ts-expect-error Property 'ns' does not exist on type 'VNode<RendererNode, RendererElement, { [key: string]: any; }>'.
3434
titleEl.ns = "svg";
3535

3636
renderedComponent.children.unshift(titleEl);

packages/components/src/components/Toast/toastService.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ export const useToasts = ({
183183
if (!serviceSymbol && !propertyName) {
184184
try {
185185
return useToastsFromSymbol(defaultToastServiceSymbol);
186-
} catch (error) {
186+
} catch (_error) {
187187
return useToastsFromGlobalProperty(defaultGlobalPropertyName);
188188
}
189189
}

packages/components/src/components/base/MenuItem/__tests__/BaseMenuItems.test.js

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* eslint-disable max-nested-callbacks */
21
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
32
import { RouterLinkStub, mount } from "@vue/test-utils";
43

packages/components/src/components/forms/Checkbox/Checkbox.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export default {
4848
* @event input
4949
* @type {Boolean}
5050
*/
51-
let { checked } = $event.target;
51+
const { checked } = $event.target;
5252
consola.trace("Checkbox value changed to", checked);
5353
this.$emit("update:modelValue", checked);
5454
},

packages/components/src/components/forms/Checkboxes/Checkboxes.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export default {
5959
emits: ["update:modelValue"],
6060
methods: {
6161
validate() {
62-
let isValid = !this.possibleValues.some((x) => x.invalid);
62+
const isValid = !this.possibleValues.some((x) => x.invalid);
6363
return {
6464
isValid,
6565
errorMessage: isValid

packages/components/src/components/forms/ComboBox/ComboBox.vue

-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ export default defineComponent({
9696
},
9797
9898
emits: {
99-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
10099
"update:modelValue": (_payload: Array<Id>) => true,
101100
},
102101

0 commit comments

Comments
 (0)