Restore ESLint and Prettier auto-formatting and CI linting (#1457)

* Restore ESLint and Prettier autoformatting

* Fix formatting and lints in web files

* Hacky fix to eslint crash

* Fix remaining lints

* Add lint-fix script

---------

Co-authored-by: 0hypercube <0hypercube@gmail.com>
This commit is contained in:
Keavon Chambers
2023-11-16 13:12:47 -08:00
committed by GitHub
parent 9784d31edb
commit a6ca43bb2d
63 changed files with 5869 additions and 351 deletions

View File

@@ -52,7 +52,6 @@ module.exports = {
"@typescript-eslint/camelcase": "off",
"@typescript-eslint/no-use-before-define": "off",
"@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_", ignoreRestSiblings: true }],
"@typescript-eslint/explicit-function-return-type": ["error"],
// Import plugin config (used to intelligently validate module import statements)
"import/prefer-default-export": "off",

View File

@@ -37,7 +37,7 @@ class BezierDemo extends HTMLElement implements Demo {
sliderUnits!: Record<string, string | string[]>;
async connectedCallback(): Promise<void> {
async connectedCallback() {
this.title = this.getAttribute("title") || "";
this.points = JSON.parse(this.getAttribute("points") || "[]");
this.key = this.getAttribute("key") as BezierFeatureKey;
@@ -59,15 +59,15 @@ class BezierDemo extends HTMLElement implements Demo {
this.drawDemo(figure);
}
render(): void {
render() {
renderDemo(this);
}
drawDemo(figure: HTMLElement, mouseLocation?: [number, number]): void {
drawDemo(figure: HTMLElement, mouseLocation?: [number, number]) {
figure.innerHTML = this.callback(this.bezier, this.sliderData, mouseLocation);
}
onMouseDown(event: MouseEvent): void {
onMouseDown(event: MouseEvent) {
const mx = event.offsetX;
const my = event.offsetY;
for (let pointIndex = 0; pointIndex < this.points.length; pointIndex += 1) {
@@ -79,11 +79,11 @@ class BezierDemo extends HTMLElement implements Demo {
}
}
onMouseUp(): void {
onMouseUp() {
this.activeIndex = undefined;
}
onMouseMove(event: MouseEvent): void {
onMouseMove(event: MouseEvent) {
const mx = event.offsetX;
const my = event.offsetY;
const figure = event.currentTarget as HTMLElement;

View File

@@ -41,7 +41,7 @@ class BezierDemoPane extends HTMLElement implements DemoPane {
id!: string;
connectedCallback(): void {
connectedCallback() {
this.key = (this.getAttribute("name") || "") as BezierFeatureKey;
this.id = `bezier/${this.key}`;
this.name = bezierFeatures[this.key].name;
@@ -62,7 +62,7 @@ class BezierDemoPane extends HTMLElement implements DemoPane {
this.render();
}
render(): void {
render() {
renderDemoPane(this);
}

View File

@@ -34,7 +34,7 @@ class SubpathDemo extends HTMLElement {
sliderUnits!: Record<string, string | string[]>;
async connectedCallback(): Promise<void> {
async connectedCallback() {
this.title = this.getAttribute("title") || "";
this.triples = JSON.parse(this.getAttribute("triples") || "[]");
this.key = this.getAttribute("key") as SubpathFeatureKey;
@@ -53,15 +53,15 @@ class SubpathDemo extends HTMLElement {
this.drawDemo(figure);
}
render(): void {
render() {
renderDemo(this);
}
drawDemo(figure: HTMLElement, mouseLocation?: [number, number]): void {
drawDemo(figure: HTMLElement, mouseLocation?: [number, number]) {
figure.innerHTML = this.callback(this.subpath, this.sliderData, mouseLocation);
}
onMouseDown(event: MouseEvent): void {
onMouseDown(event: MouseEvent) {
const mx = event.offsetX;
const my = event.offsetY;
for (let controllerIndex = 0; controllerIndex < this.triples.length; controllerIndex += 1) {
@@ -75,11 +75,11 @@ class SubpathDemo extends HTMLElement {
}
}
onMouseUp(): void {
onMouseUp() {
this.activeIndex = undefined;
}
onMouseMove(event: MouseEvent): void {
onMouseMove(event: MouseEvent) {
const mx = event.offsetX;
const my = event.offsetY;
const figure = event.currentTarget as HTMLElement;

View File

@@ -17,7 +17,7 @@ class SubpathDemoPane extends HTMLElement implements DemoPane {
id!: string;
connectedCallback(): void {
connectedCallback() {
this.demos = [
{
title: "Open Subpath",
@@ -52,7 +52,7 @@ class SubpathDemoPane extends HTMLElement implements DemoPane {
this.render();
}
render(): void {
render() {
renderDemoPane(this);
}

View File

@@ -20,7 +20,7 @@ window.customElements.define("bezier-demo-pane", BezierDemoPane);
window.customElements.define("subpath-demo", SubpathDemo);
window.customElements.define("subpath-demo-pane", SubpathDemoPane);
function renderBezierPane(featureName: BezierFeatureKey, container: HTMLElement | null): void {
function renderBezierPane(featureName: BezierFeatureKey, container: HTMLElement | null) {
const feature = bezierFeatures[featureName];
const demo = document.createElement("bezier-demo-pane");
@@ -30,7 +30,7 @@ function renderBezierPane(featureName: BezierFeatureKey, container: HTMLElement
container?.append(demo);
}
function renderSubpathPane(featureName: SubpathFeatureKey, container: HTMLElement | null): void {
function renderSubpathPane(featureName: SubpathFeatureKey, container: HTMLElement | null) {
const feature = subpathFeatures[featureName];
const demo = document.createElement("subpath-demo-pane");
@@ -46,7 +46,7 @@ function isUrlSolo(url: string): boolean {
return splitHash?.length === 3 && splitHash?.[2] === "solo";
}
window.addEventListener("hashchange", (e: Event): void => {
window.addEventListener("hashchange", (e: Event) => {
const hashChangeEvent = e as HashChangeEvent;
const isOldHashSolo = isUrlSolo(hashChangeEvent.oldURL);
const isNewHashSolo = isUrlSolo(hashChangeEvent.newURL);
@@ -57,7 +57,7 @@ window.addEventListener("hashchange", (e: Event): void => {
}
});
function renderExamples(): void {
function renderExamples() {
const hash = window.location.hash;
const splitHash = hash.split("/");

View File

@@ -1,6 +1,6 @@
import { Demo, DemoPane, InputOption } from "@/utils/types";
export function renderDemo(demo: Demo): void {
export function renderDemo(demo: Demo) {
const header = document.createElement("h4");
header.className = "demo-header";
header.innerText = demo.title;
@@ -47,7 +47,7 @@ export function renderDemo(demo: Demo): void {
selectInput.disabled = true;
}
selectInput.addEventListener("change", (event: Event): void => {
selectInput.addEventListener("change", (event: Event) => {
demo.sliderData[inputOption.variable] = Number((event.target as HTMLInputElement).value);
demo.drawDemo(figure);
});
@@ -65,7 +65,7 @@ export function renderDemo(demo: Demo): void {
const ratio = (Number(inputOption.default) - Number(inputOption.min)) / range;
sliderInput.style.setProperty("--range-ratio", String(ratio));
sliderInput.addEventListener("input", (event: Event): void => {
sliderInput.addEventListener("input", (event: Event) => {
const target = event.target as HTMLInputElement;
demo.sliderData[inputOption.variable] = Number(target.value);
const data = demo.sliderData[inputOption.variable];
@@ -86,7 +86,7 @@ export function renderDemo(demo: Demo): void {
demo.append(parentSliderContainer);
}
export function renderDemoPane(demoPane: DemoPane): void {
export function renderDemoPane(demoPane: DemoPane) {
const container = document.createElement("div");
container.className = "demo-pane-container";

View File

@@ -79,10 +79,10 @@ export interface Demo extends HTMLElement {
sliderData: Record<string, number>;
sliderUnits: Record<string, string | string[]>;
drawDemo(figure: HTMLElement, mouseLocation?: [number, number]): void;
onMouseDown(event: MouseEvent): void;
onMouseUp(): void;
onMouseMove(event: MouseEvent): void;
drawDemo(figure: HTMLElement, mouseLocation?: [number, number]);
onMouseDown(event: MouseEvent);
onMouseUp();
onMouseMove(event: MouseEvent);
getSliderUnit(sliderValue: number, variable: string): string;
}