diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 735f2ed28..49d6ac5d4 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -25,7 +25,7 @@ jobs: node-version-file: '.nvmrc' cache: 'npm' - run: npm install - - run: npm run fmt-check + - run: npm run fmt:check npm-build-wasm: # Build the wasm blob once on the fastest runner. diff --git a/.gitignore b/.gitignore index 9c82688f2..3089b837d 100644 --- a/.gitignore +++ b/.gitignore @@ -84,3 +84,4 @@ dist venv .vscode-test +.biome/ diff --git a/README.md b/README.md index 69b027191..4d2d243f4 100644 --- a/README.md +++ b/README.md @@ -420,7 +420,7 @@ npm run test-setup ``` npm run tsc -npm run fmt-check +npm run fmt:check npm run lint npm run test:unit:local ``` diff --git a/biome.json b/biome.json new file mode 100644 index 000000000..33695351d --- /dev/null +++ b/biome.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.6.0/schema.json", + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "correctness": { + "noUnusedVariables": "error" + }, + "suspicious": { + "noExplicitAny": "warn" + }, + "style": { + "useBlockStatements": "error", + "useShorthandArrayType": "error" + } + } + }, + "formatter": { + "enabled": true, + "indentWidth": 2, + "indentStyle": "space", + "lineWidth": 80, + "formatWithErrors": true + }, + "javascript": { + "formatter": { + "quoteStyle": "single", + "jsxQuoteStyle": "double", + "trailingCommas": "es5", + "semicolons": "asNeeded" + }, + "parser": { + "unsafeParameterDecoratorsEnabled": true + } + }, + "css": { + "parser": { + "cssModules": true + } + }, + "files": { + "ignore": ["**/*.json"] + } +} diff --git a/e2e/playwright/basic-sketch.spec.ts b/e2e/playwright/basic-sketch.spec.ts index d386bda7e..d3a0da867 100644 --- a/e2e/playwright/basic-sketch.spec.ts +++ b/e2e/playwright/basic-sketch.spec.ts @@ -66,15 +66,17 @@ async function doBasicSketch( await page.waitForTimeout(500) if (openPanes.includes('code')) { - await expect(u.codeLocator) - .toHaveText(`sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${commonPoints.startAt}, sketch001) + await expect( + u.codeLocator + ).toHaveText(`sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${commonPoints.startAt}, sketch001) |> xLine(length = ${commonPoints.num1})`) } await page.waitForTimeout(500) await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 20) if (openPanes.includes('code')) { - await expect(u.codeLocator) - .toHaveText(`sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${ + await expect( + u.codeLocator + ).toHaveText(`sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${ commonPoints.startAt }, sketch001) |> xLine(length = ${commonPoints.num1}) @@ -85,8 +87,9 @@ async function doBasicSketch( await page.waitForTimeout(200) await page.mouse.click(startXPx, 500 - PUR * 20) if (openPanes.includes('code')) { - await expect(u.codeLocator) - .toHaveText(`@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${ + await expect( + u.codeLocator + ).toHaveText(`@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${ commonPoints.startAt }, sketch001) |> xLine(length = ${commonPoints.num1}) @@ -142,8 +145,9 @@ async function doBasicSketch( // Open the code pane. await u.openKclCodePanel() - await expect(u.codeLocator) - .toHaveText(`@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${ + await expect( + u.codeLocator + ).toHaveText(`@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${ commonPoints.startAt }, sketch001) |> xLine(length = ${commonPoints.num1}, tag = $seg01) diff --git a/e2e/playwright/code-pane-and-errors.spec.ts b/e2e/playwright/code-pane-and-errors.spec.ts index 3a66167a5..2ef0ff990 100644 --- a/e2e/playwright/code-pane-and-errors.spec.ts +++ b/e2e/playwright/code-pane-and-errors.spec.ts @@ -1,6 +1,6 @@ +import { join } from 'path' import { bracket } from '@e2e/playwright/fixtures/bracket' import fsp from 'fs/promises' -import { join } from 'path' import { TEST_CODE_LONG_WITH_ERROR_OUT_OF_VIEW } from '@e2e/playwright/storageStates' import { diff --git a/e2e/playwright/command-bar-tests.spec.ts b/e2e/playwright/command-bar-tests.spec.ts index 84c48a9e2..ecb1043d4 100644 --- a/e2e/playwright/command-bar-tests.spec.ts +++ b/e2e/playwright/command-bar-tests.spec.ts @@ -1,6 +1,6 @@ +import path, { join } from 'path' import { KCL_DEFAULT_LENGTH } from '@src/lib/constants' import * as fsp from 'fs/promises' -import path, { join } from 'path' import { executorInputPath, diff --git a/e2e/playwright/desktop-export.spec.ts b/e2e/playwright/desktop-export.spec.ts index a8d9ba341..36a7c2194 100644 --- a/e2e/playwright/desktop-export.spec.ts +++ b/e2e/playwright/desktop-export.spec.ts @@ -1,5 +1,5 @@ -import fsp from 'fs/promises' import path from 'path' +import fsp from 'fs/promises' import { executorInputPath, diff --git a/e2e/playwright/editor-tests.spec.ts b/e2e/playwright/editor-tests.spec.ts index 9b6a0ecb2..5ba90f185 100644 --- a/e2e/playwright/editor-tests.spec.ts +++ b/e2e/playwright/editor-tests.spec.ts @@ -1,6 +1,6 @@ +import { join } from 'path' import { uuidv4 } from '@src/lib/utils' import fsp from 'fs/promises' -import { join } from 'path' import { TEST_COLORS, @@ -409,8 +409,9 @@ sketch_001 = startSketchOn(XY) // Hit alt+shift+f to format the code await page.keyboard.press('Alt+Shift+KeyF') - await expect(page.locator('.cm-content')) - .toHaveText(`sketch001 = startSketchOn(XY) + await expect( + page.locator('.cm-content') + ).toHaveText(`sketch001 = startSketchOn(XY) |> startProfileAt([-10, -10], %) |> line(end = [20, 0]) |> line(end = [0, 20]) @@ -462,8 +463,9 @@ sketch_001 = startSketchOn(XY) await u.expectCmdLog('[data-message-type="execution-done"]') await u.closeDebugPanel() - await expect(page.locator('.cm-content')) - .toHaveText(`sketch_001 = startSketchOn(XY) + await expect( + page.locator('.cm-content') + ).toHaveText(`sketch_001 = startSketchOn(XY) |> startProfileAt([-10, -10], %) |> line(end = [20, 0]) |> line(end = [0, 20]) @@ -978,8 +980,9 @@ sketch001 = startSketchOn(XZ) await page.keyboard.up('Control') await page.waitForTimeout(100) - await expect(page.locator('.cm-content')) - .toHaveText(`sketch001 = startSketchOn(XZ) + await expect( + page.locator('.cm-content') + ).toHaveText(`sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) |> tangentialArc(endAbsolute = [24.95, -5.38]) diff --git a/e2e/playwright/feature-tree-pane.spec.ts b/e2e/playwright/feature-tree-pane.spec.ts index b91dfb4fa..530eadd2c 100644 --- a/e2e/playwright/feature-tree-pane.spec.ts +++ b/e2e/playwright/feature-tree-pane.spec.ts @@ -1,5 +1,5 @@ -import * as fsp from 'fs/promises' import { join } from 'path' +import * as fsp from 'fs/promises' import { expect, test } from '@e2e/playwright/zoo-test' diff --git a/e2e/playwright/file-tree.spec.ts b/e2e/playwright/file-tree.spec.ts index 8b531878f..75a8e284f 100644 --- a/e2e/playwright/file-tree.spec.ts +++ b/e2e/playwright/file-tree.spec.ts @@ -1,7 +1,7 @@ -import { FILE_EXT } from '@src/lib/constants' import * as fs from 'fs' -import * as fsp from 'fs/promises' import { join } from 'path' +import { FILE_EXT } from '@src/lib/constants' +import * as fsp from 'fs/promises' import { createProject, diff --git a/e2e/playwright/fixtures/cmdBarFixture.ts b/e2e/playwright/fixtures/cmdBarFixture.ts index a51562e60..e458429ed 100644 --- a/e2e/playwright/fixtures/cmdBarFixture.ts +++ b/e2e/playwright/fixtures/cmdBarFixture.ts @@ -1,7 +1,7 @@ -import type { Locator, Page, Request, Route, TestInfo } from '@playwright/test' -import { expect } from '@playwright/test' import * as fs from 'fs' import * as path from 'path' +import type { Locator, Page, Request, Route, TestInfo } from '@playwright/test' +import { expect } from '@playwright/test' export type CmdBarSerialised = | { diff --git a/e2e/playwright/fixtures/fixtureSetup.ts b/e2e/playwright/fixtures/fixtureSetup.ts index 3cccb7d0b..552aff9da 100644 --- a/e2e/playwright/fixtures/fixtureSetup.ts +++ b/e2e/playwright/fixtures/fixtureSetup.ts @@ -7,11 +7,11 @@ import type { } from '@playwright/test' import { _electron as electron } from '@playwright/test' +import fs from 'node:fs' +import path from 'path' import { SETTINGS_FILE_NAME } from '@src/lib/constants' import type { DeepPartial } from '@src/lib/types' import fsp from 'fs/promises' -import fs from 'node:fs' -import path from 'path' import type { Settings } from '@rust/kcl-lib/bindings/Settings' diff --git a/e2e/playwright/import-ui.spec.ts b/e2e/playwright/import-ui.spec.ts index 9a78e17ec..a02e11a8e 100644 --- a/e2e/playwright/import-ui.spec.ts +++ b/e2e/playwright/import-ui.spec.ts @@ -1,6 +1,6 @@ +import path from 'path' import { expect, test } from '@e2e/playwright/zoo-test' import * as fsp from 'fs/promises' -import path from 'path' test.describe('Import UI tests', () => { test('shows toast when trying to sketch on imported face, and hovering over imported geometry should NOT highlight any code', async ({ diff --git a/e2e/playwright/machines.spec.ts b/e2e/playwright/machines.spec.ts index 8f61c649c..3c5894a50 100644 --- a/e2e/playwright/machines.spec.ts +++ b/e2e/playwright/machines.spec.ts @@ -1,5 +1,5 @@ -import fsp from 'fs/promises' import { join } from 'path' +import fsp from 'fs/promises' import { executorInputPath } from '@e2e/playwright/test-utils' import { expect, test } from '@e2e/playwright/zoo-test' diff --git a/e2e/playwright/named-views.spec.ts b/e2e/playwright/named-views.spec.ts index 91687abd1..5af156443 100644 --- a/e2e/playwright/named-views.spec.ts +++ b/e2e/playwright/named-views.spec.ts @@ -1,6 +1,6 @@ +import { join } from 'path' import { PROJECT_SETTINGS_FILE_NAME } from '@src/lib/constants' import * as fsp from 'fs/promises' -import { join } from 'path' import type { NamedView } from '@rust/kcl-lib/bindings/NamedView' diff --git a/e2e/playwright/onboarding-tests.spec.ts b/e2e/playwright/onboarding-tests.spec.ts index 1e397c1ea..54a13fe32 100644 --- a/e2e/playwright/onboarding-tests.spec.ts +++ b/e2e/playwright/onboarding-tests.spec.ts @@ -1,7 +1,7 @@ +import { join } from 'path' import { bracket } from '@e2e/playwright/fixtures/bracket' import { onboardingPaths } from '@src/routes/Onboarding/paths' import fsp from 'fs/promises' -import { join } from 'path' import { expectPixelColor } from '@e2e/playwright/fixtures/sceneFixture' import { diff --git a/e2e/playwright/point-click-assemblies.spec.ts b/e2e/playwright/point-click-assemblies.spec.ts index 0a61fe9c9..7dab3e7c7 100644 --- a/e2e/playwright/point-click-assemblies.spec.ts +++ b/e2e/playwright/point-click-assemblies.spec.ts @@ -1,5 +1,5 @@ -import * as fsp from 'fs/promises' import path from 'path' +import * as fsp from 'fs/promises' import type { CmdBarFixture } from '@e2e/playwright/fixtures/cmdBarFixture' import type { ToolbarFixture } from '@e2e/playwright/fixtures/toolbarFixture' diff --git a/e2e/playwright/point-click.spec.ts b/e2e/playwright/point-click.spec.ts index f269533b3..a776d8ad0 100644 --- a/e2e/playwright/point-click.spec.ts +++ b/e2e/playwright/point-click.spec.ts @@ -1,6 +1,6 @@ -import type { Locator, Page } from '@playwright/test' import fs from 'node:fs/promises' import path from 'node:path' +import type { Locator, Page } from '@playwright/test' import type { EditorFixture } from '@e2e/playwright/fixtures/editorFixture' import type { SceneFixture } from '@e2e/playwright/fixtures/sceneFixture' diff --git a/e2e/playwright/projects.spec.ts b/e2e/playwright/projects.spec.ts index ca25d7b65..ffd9a199e 100644 --- a/e2e/playwright/projects.spec.ts +++ b/e2e/playwright/projects.spec.ts @@ -1,7 +1,7 @@ -import { DEFAULT_PROJECT_KCL_FILE } from '@src/lib/constants' import fs from 'fs' -import fsp from 'fs/promises' import path from 'path' +import { DEFAULT_PROJECT_KCL_FILE } from '@src/lib/constants' +import fsp from 'fs/promises' import type { Paths } from '@e2e/playwright/test-utils' import { diff --git a/e2e/playwright/regression-tests.spec.ts b/e2e/playwright/regression-tests.spec.ts index c5deb4b9c..53932437d 100644 --- a/e2e/playwright/regression-tests.spec.ts +++ b/e2e/playwright/regression-tests.spec.ts @@ -1,8 +1,8 @@ +import path from 'path' import { bracket } from '@e2e/playwright/fixtures/bracket' import type { Page } from '@playwright/test' import { reportRejection } from '@src/lib/trap' import * as fsp from 'fs/promises' -import path from 'path' import { TEST_CODE_TRIGGER_ENGINE_EXPORT_ERROR } from '@e2e/playwright/storageStates' import type { TestColor } from '@e2e/playwright/test-utils' @@ -304,8 +304,9 @@ extrude001 = extrude(sketch001, length = 50) await page.keyboard.press('Enter') await page.keyboard.press('ArrowLeft') - await expect(page.locator('.cm-content')) - .toContainText(`exampleSketch = startSketchOn("XZ") + await expect( + page.locator('.cm-content') + ).toContainText(`exampleSketch = startSketchOn("XZ") |> startProfileAt([0, 0], %) |> angledLine(angle = 50, length = 45 ) |> yLine(endAbsolute = 0) diff --git a/e2e/playwright/sketch-tests.spec.ts b/e2e/playwright/sketch-tests.spec.ts index 38c43616f..4179b88a5 100644 --- a/e2e/playwright/sketch-tests.spec.ts +++ b/e2e/playwright/sketch-tests.spec.ts @@ -1,7 +1,7 @@ -import type { Page } from '@playwright/test' -import { roundOff, uuidv4 } from '@src/lib/utils' import fs from 'node:fs/promises' import path from 'node:path' +import type { Page } from '@playwright/test' +import { roundOff, uuidv4 } from '@src/lib/utils' import type { CmdBarFixture } from '@e2e/playwright/fixtures/cmdBarFixture' import type { HomePageFixture } from '@e2e/playwright/fixtures/homePageFixture' @@ -161,7 +161,8 @@ sketch001 = startSketchOn(XZ) // click to add segment await page.mouse.click(700, 200) - await expect.poll(u.normalisedEditorCode, { timeout: 1000 }) + await expect + .poll(u.normalisedEditorCode, { timeout: 1000 }) .toBe(`@settings(defaultLengthUnit = in) @@ -403,8 +404,9 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) await u.openKclCodePanel() // expect the code to have changed - await expect(page.locator('.cm-content')) - .toHaveText(`sketch001 = startSketchOn(XZ) + await expect( + page.locator('.cm-content') + ).toHaveText(`sketch001 = startSketchOn(XZ) |> startProfileAt([6.44, -12.07], %) |> line(end = [14.72, 1.97]) |> tangentialArc(endAbsolute = [26.92, -3.32]) diff --git a/e2e/playwright/snapshot-tests.spec.ts b/e2e/playwright/snapshot-tests.spec.ts index cac35b324..a18275be6 100644 --- a/e2e/playwright/snapshot-tests.spec.ts +++ b/e2e/playwright/snapshot-tests.spec.ts @@ -1,9 +1,9 @@ +import { spawn } from 'child_process' +import path from 'path' import type { Models } from '@kittycad/lib' import { KCL_DEFAULT_LENGTH } from '@src/lib/constants' -import { spawn } from 'child_process' import fsp from 'fs/promises' import JSZip from 'jszip' -import path from 'path' import type { CmdBarFixture } from '@e2e/playwright/fixtures/cmdBarFixture' import type { SceneFixture } from '@e2e/playwright/fixtures/sceneFixture' diff --git a/e2e/playwright/test-network-and-connection-issues.spec.ts b/e2e/playwright/test-network-and-connection-issues.spec.ts index e19bafe2a..fe0b5dab6 100644 --- a/e2e/playwright/test-network-and-connection-issues.spec.ts +++ b/e2e/playwright/test-network-and-connection-issues.spec.ts @@ -126,8 +126,9 @@ test.describe('Test network and connection issues', () => { await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 10) await page.waitForTimeout(100) - await expect(page.locator('.cm-content')) - .toHaveText(`sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${commonPoints.startAt}, sketch001) + await expect( + page.locator('.cm-content') + ).toHaveText(`sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${commonPoints.startAt}, sketch001) |> xLine(length = ${commonPoints.num1})`) // Expect the network to be up @@ -215,7 +216,8 @@ test.describe('Test network and connection issues', () => { await page.waitForTimeout(100) // Ensure we can continue sketching await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 20) - await expect.poll(u.normalisedEditorCode) + await expect + .poll(u.normalisedEditorCode) .toBe(`sketch001 = startSketchOn(XZ) profile001 = startProfileAt([12.34, -12.34], sketch001) |> xLine(length = 12.34) @@ -225,7 +227,8 @@ profile001 = startProfileAt([12.34, -12.34], sketch001) await page.waitForTimeout(100) await page.mouse.click(startXPx, 500 - PUR * 20) - await expect.poll(u.normalisedEditorCode) + await expect + .poll(u.normalisedEditorCode) .toBe(`sketch001 = startSketchOn(XZ) profile001 = startProfileAt([12.34, -12.34], sketch001) |> xLine(length = 12.34) diff --git a/e2e/playwright/test-utils.ts b/e2e/playwright/test-utils.ts index 518aacb95..446ef2468 100644 --- a/e2e/playwright/test-utils.ts +++ b/e2e/playwright/test-utils.ts @@ -1,3 +1,4 @@ +import path from 'path' import * as TOML from '@iarna/toml' import type { Models } from '@kittycad/lib' import type { BrowserContext, Locator, Page, TestInfo } from '@playwright/test' @@ -9,7 +10,6 @@ import { reportRejection } from '@src/lib/trap' import type { DeepPartial } from '@src/lib/types' import { isArray } from '@src/lib/utils' import fsp from 'fs/promises' -import path from 'path' import pixelMatch from 'pixelmatch' import type { Protocol } from 'playwright-core/types/protocol' import { PNG } from 'pngjs' diff --git a/e2e/playwright/testing-constraints.spec.ts b/e2e/playwright/testing-constraints.spec.ts index 2efcc091a..b4fc908f6 100644 --- a/e2e/playwright/testing-constraints.spec.ts +++ b/e2e/playwright/testing-constraints.spec.ts @@ -1,6 +1,6 @@ +import path from 'node:path' import { XOR } from '@src/lib/utils' import * as fsp from 'fs/promises' -import path from 'node:path' import { TEST_COLORS, diff --git a/e2e/playwright/testing-samples-loading.spec.ts b/e2e/playwright/testing-samples-loading.spec.ts index 01cce02c1..dcbc146b7 100644 --- a/e2e/playwright/testing-samples-loading.spec.ts +++ b/e2e/playwright/testing-samples-loading.spec.ts @@ -1,7 +1,7 @@ +import { join } from 'path' import { bracket } from '@e2e/playwright/fixtures/bracket' import { FILE_EXT } from '@src/lib/constants' import * as fsp from 'fs/promises' -import { join } from 'path' import type { CmdBarSerialised } from '@e2e/playwright/fixtures/cmdBarFixture' import type { ElectronZoo } from '@e2e/playwright/fixtures/fixtureSetup' diff --git a/e2e/playwright/testing-selections.spec.ts b/e2e/playwright/testing-selections.spec.ts index 54cc4bd19..13eb29d49 100644 --- a/e2e/playwright/testing-selections.spec.ts +++ b/e2e/playwright/testing-selections.spec.ts @@ -78,22 +78,25 @@ test.describe('Testing selections', { tag: ['@skipWin'] }, () => { await page.waitForTimeout(100) await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 10) - await expect(page.locator('.cm-content')) - .toHaveText(`@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${commonPoints.startAt}, sketch001) + await expect( + page.locator('.cm-content') + ).toHaveText(`@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${commonPoints.startAt}, sketch001) |> xLine(length = ${commonPoints.num1})`) await page.waitForTimeout(100) await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 20) - await expect(page.locator('.cm-content')) - .toHaveText(`@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${ + await expect( + page.locator('.cm-content') + ).toHaveText(`@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${ commonPoints.startAt }, sketch001) |> xLine(length = ${commonPoints.num1}) |> yLine(length = ${commonPoints.num1 + 0.01})`) await page.waitForTimeout(100) await page.mouse.click(startXPx, 500 - PUR * 20) - await expect(page.locator('.cm-content')) - .toHaveText(`@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${ + await expect( + page.locator('.cm-content') + ).toHaveText(`@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)profile001 = startProfileAt(${ commonPoints.startAt }, sketch001) |> xLine(length = ${commonPoints.num1}) diff --git a/e2e/playwright/testing-settings.spec.ts b/e2e/playwright/testing-settings.spec.ts index bccda6c12..82fa1f081 100644 --- a/e2e/playwright/testing-settings.spec.ts +++ b/e2e/playwright/testing-settings.spec.ts @@ -1,3 +1,4 @@ +import { join } from 'path' import { PROJECT_SETTINGS_FILE_NAME, SETTINGS_FILE_NAME, @@ -5,7 +6,6 @@ import { import type { SettingsLevel } from '@src/lib/settings/settingsTypes' import type { DeepPartial } from '@src/lib/types' import * as fsp from 'fs/promises' -import { join } from 'path' import type { Settings } from '@rust/kcl-lib/bindings/Settings' diff --git a/e2e/playwright/text-to-cad-tests.spec.ts b/e2e/playwright/text-to-cad-tests.spec.ts index 1d47915d0..7c3a8e0ad 100644 --- a/e2e/playwright/text-to-cad-tests.spec.ts +++ b/e2e/playwright/text-to-cad-tests.spec.ts @@ -1,6 +1,6 @@ -import type { Page } from '@playwright/test' import fs from 'fs' import { join } from 'path' +import type { Page } from '@playwright/test' import { createProject, diff --git a/forge.config.ts b/forge.config.ts index ace957e8b..e6d50d445 100644 --- a/forge.config.ts +++ b/forge.config.ts @@ -1,8 +1,8 @@ +import path from 'path' import { FusesPlugin } from '@electron-forge/plugin-fuses' import { VitePlugin } from '@electron-forge/plugin-vite' import type { ForgeConfig } from '@electron-forge/shared-types' import { FuseV1Options, FuseVersion } from '@electron/fuses' -import path from 'path' const rootDir = process.cwd() diff --git a/interface.d.ts b/interface.d.ts index e5b1fda20..96caab368 100644 --- a/interface.d.ts +++ b/interface.d.ts @@ -1,10 +1,10 @@ import { MachinesListing } from 'components/MachineManagerProvider' import 'electron' +import fs from 'node:fs/promises' +import path from 'path' import { dialog, shell } from 'electron' import type { WebContentSendPayload } from 'menu/channels' import { ZooLabel } from 'menu/roles' -import fs from 'node:fs/promises' -import path from 'path' // Extend the interface with additional custom properties declare module 'electron' { diff --git a/package-lock.json b/package-lock.json index 7962f34b0..878c12310 100644 --- a/package-lock.json +++ b/package-lock.json @@ -76,6 +76,7 @@ "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@babel/preset-env": "^7.26.9", + "@biomejs/biome": "^1.9.4", "@electron-forge/cli": "^7.8.0", "@electron-forge/plugin-fuses": "^7.8.0", "@electron-forge/plugin-vite": "^7.8.0", @@ -87,7 +88,6 @@ "@playwright/test": "^1.51.1", "@testing-library/jest-dom": "^5.14.1", "@testing-library/react": "^15.0.2", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@types/diff": "^7.0.2", "@types/electron": "^1.6.10", "@types/isomorphic-fetch": "^0.0.39", @@ -131,8 +131,6 @@ "pngjs": "^7.0.0", "postcss": "^8.4.43", "postinstall-postinstall": "^2.1.0", - "prettier": "^3.5.3", - "prettier-plugin-organize-imports": "^4.1.0", "setimmediate": "^1.0.5", "tailwindcss": "^3.4.17", "ts-node": "^10.0.0", @@ -1926,6 +1924,170 @@ "node": ">=6.9.0" } }, + "node_modules/@biomejs/biome": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.9.4.tgz", + "integrity": "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==", + "dev": true, + "hasInstallScript": true, + "license": "MIT OR Apache-2.0", + "bin": { + "biome": "bin/biome" + }, + "engines": { + "node": ">=14.21.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/biome" + }, + "optionalDependencies": { + "@biomejs/cli-darwin-arm64": "1.9.4", + "@biomejs/cli-darwin-x64": "1.9.4", + "@biomejs/cli-linux-arm64": "1.9.4", + "@biomejs/cli-linux-arm64-musl": "1.9.4", + "@biomejs/cli-linux-x64": "1.9.4", + "@biomejs/cli-linux-x64-musl": "1.9.4", + "@biomejs/cli-win32-arm64": "1.9.4", + "@biomejs/cli-win32-x64": "1.9.4" + } + }, + "node_modules/@biomejs/cli-darwin-arm64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.4.tgz", + "integrity": "sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-darwin-x64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.4.tgz", + "integrity": "sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.4.tgz", + "integrity": "sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64-musl": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.4.tgz", + "integrity": "sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-x64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz", + "integrity": "sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-x64-musl": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.4.tgz", + "integrity": "sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-arm64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.4.tgz", + "integrity": "sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-x64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.4.tgz", + "integrity": "sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, "node_modules/@codemirror/autocomplete": { "version": "6.18.6", "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz", @@ -5038,41 +5200,6 @@ "node": ">= 10" } }, - "node_modules/@trivago/prettier-plugin-sort-imports": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-5.2.2.tgz", - "integrity": "sha512-fYDQA9e6yTNmA13TLVSA+WMQRc5Bn/c0EUBditUHNfMMxN7M82c38b1kEggVE3pLpZ0FwkwJkUEKMiOi52JXFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@babel/generator": "^7.26.5", - "@babel/parser": "^7.26.7", - "@babel/traverse": "^7.26.7", - "@babel/types": "^7.26.7", - "javascript-natural-sort": "^0.7.1", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">18.12" - }, - "peerDependencies": { - "@vue/compiler-sfc": "3.x", - "prettier": "2.x - 3.x", - "prettier-plugin-svelte": "3.x", - "svelte": "4.x || 5.x" - }, - "peerDependenciesMeta": { - "@vue/compiler-sfc": { - "optional": true - }, - "prettier-plugin-svelte": { - "optional": true - }, - "svelte": { - "optional": true - } - } - }, "node_modules/@ts-stack/markdown": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@ts-stack/markdown/-/markdown-1.5.0.tgz", @@ -13349,13 +13476,6 @@ "node": ">=10" } }, - "node_modules/javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", - "dev": true, - "license": "MIT" - }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -16552,39 +16672,6 @@ "node": ">= 0.8.0" } }, - "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-plugin-organize-imports": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz", - "integrity": "sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "prettier": ">=2.0", - "typescript": ">=2.9", - "vue-tsc": "^2.1.0" - }, - "peerDependenciesMeta": { - "vue-tsc": { - "optional": true - } - } - }, "node_modules/pretty-format": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", diff --git a/package.json b/package.json index 8b9a837ca..5df54afac 100644 --- a/package.json +++ b/package.json @@ -96,9 +96,10 @@ "simpleserver:stop": "kill-port 3000", "tsc": "tsc", "playwright": "playwright", - "fmt": "prettier --write .eslintrc.json ./src *.ts *.json *.js ./e2e ./packages ./rust/kcl-language-server ./rust/kcl-lib/bindings ./rust/kcl-wasm-lib/pkg", - "fmt:generated": "prettier --write .eslintrc.json *.ts *.json *.js ./rust/kcl-lib/bindings ./rust/kcl-wasm-lib/pkg", - "fmt-check": "prettier --check .eslintrc.json ./src *.ts *.json *.js ./e2e ./packages ./rust/kcl-language-server", + "fmt": "biome format --write .eslintrc.json ./src *.ts *.js ./e2e ./packages ./rust/kcl-language-server ./rust/kcl-lib/bindings ./rust/kcl-wasm-lib/pkg", + "fmt:check": "biome check --write --organize-imports-enabled=true --formatter-enabled=false --linter-enabled=false --files-ignore-unknown=true ./src *.ts *.js ./e2e ./packages ./rust/kcl-language-server ./rust/kcl-lib/bindings ./rust/kcl-wasm-lib/pkg", + "organize-imports": "biome check --write --organize-imports-enabled=true --formatter-enabled=false --linter-enabled=false ./src ./e2e ./packages --files-ignore-unknown=true", + "check": "biome check ./src ./e2e ./packages/codemirror-lsp-client/src ./rust/kcl-language-server/client/src", "fetch:wasm": "./scripts/get-latest-wasm-bundle.sh", "fetch:wasm:windows": "powershell -ExecutionPolicy Bypass -File ./scripts/get-latest-wasm-bundle.ps1", "fetch:samples": "rm -rf public/kcl-samples* && curl -L -o public/kcl-samples.zip https://github.com/KittyCAD/kcl-samples/archive/refs/heads/achalmers/kw-args-xylineto.zip && unzip -o public/kcl-samples.zip -d public && mv public/kcl-samples-* public/kcl-samples", @@ -146,32 +147,8 @@ "test:unit:local": "npm run simpleserver:bg && npm run test:unit; kill-port 3000", "test:unit:kcl-samples:local": "npm run simpleserver:bg && npm run test:unit:kcl-samples; kill-port 3000" }, - "prettier": { - "trailingComma": "es5", - "tabWidth": 2, - "semi": false, - "singleQuote": true, - "importOrder": [ - "", - "^@rust/(.*)$", - "^@public/(.*)$", - "^@e2e/(.*)$", - "^@src/(.*)$", - "^[./]" - ], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "plugins": [ - "@trivago/prettier-plugin-sort-imports", - "prettier-plugin-organize-imports" - ] - }, "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], + "production": [">0.2%", "not dead", "not op_mini all"], "development": [ "last 1 chrome version", "last 1 firefox version", @@ -181,6 +158,7 @@ "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@babel/preset-env": "^7.26.9", + "@biomejs/biome": "^1.9.4", "@electron-forge/cli": "^7.8.0", "@electron-forge/plugin-fuses": "^7.8.0", "@electron-forge/plugin-vite": "^7.8.0", @@ -192,7 +170,6 @@ "@playwright/test": "^1.51.1", "@testing-library/jest-dom": "^5.14.1", "@testing-library/react": "^15.0.2", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@types/diff": "^7.0.2", "@types/electron": "^1.6.10", "@types/isomorphic-fetch": "^0.0.39", @@ -236,8 +213,6 @@ "pngjs": "^7.0.0", "postcss": "^8.4.43", "postinstall-postinstall": "^2.1.0", - "prettier": "^3.5.3", - "prettier-plugin-organize-imports": "^4.1.0", "setimmediate": "^1.0.5", "tailwindcss": "^3.4.17", "ts-node": "^10.0.0", diff --git a/packages/codemirror-lang-kcl/package.json b/packages/codemirror-lang-kcl/package.json index f7225b8c3..0ca72f92b 100644 --- a/packages/codemirror-lang-kcl/package.json +++ b/packages/codemirror-lang-kcl/package.json @@ -32,7 +32,5 @@ "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.1.1" }, - "files": [ - "dist/" - ] + "files": ["dist/"] } diff --git a/packages/codemirror-lang-kcl/test/all.test.ts b/packages/codemirror-lang-kcl/test/all.test.ts index 5d03f09f3..8372c0c2e 100644 --- a/packages/codemirror-lang-kcl/test/all.test.ts +++ b/packages/codemirror-lang-kcl/test/all.test.ts @@ -1,6 +1,6 @@ -import { fileTests } from '@lezer/generator/dist/test' import * as fs from 'fs' import * as path from 'path' +import { fileTests } from '@lezer/generator/dist/test' import { KclLanguage } from '../src/index' diff --git a/playwright.config.ts b/playwright.config.ts index a6a813232..8fe3fda5b 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,5 +1,5 @@ -import { defineConfig, devices } from '@playwright/test' import os from 'os' +import { defineConfig, devices } from '@playwright/test' const platform = os.platform() // 'linux' (Ubuntu), 'darwin' (macOS), 'win32' (Windows) diff --git a/playwright.electron.config.ts b/playwright.electron.config.ts index 7fe6dcfde..45c5c889f 100644 --- a/playwright.electron.config.ts +++ b/playwright.electron.config.ts @@ -1,5 +1,5 @@ -import { defineConfig, devices } from '@playwright/test' import os from 'os' +import { defineConfig, devices } from '@playwright/test' const platform = os.platform() // 'linux' (Ubuntu), 'darwin' (macOS), 'win32' (Windows) diff --git a/rust/kcl-language-server/client/src/test/runTest.ts b/rust/kcl-language-server/client/src/test/runTest.ts index 7467c59a4..e90f8b226 100644 --- a/rust/kcl-language-server/client/src/test/runTest.ts +++ b/rust/kcl-language-server/client/src/test/runTest.ts @@ -1,5 +1,5 @@ -import { runTests } from '@vscode/test-electron' import * as path from 'path' +import { runTests } from '@vscode/test-electron' async function main() { try { diff --git a/rust/kcl-language-server/package.json b/rust/kcl-language-server/package.json index 2f4ef6172..8cdb812a3 100644 --- a/rust/kcl-language-server/package.json +++ b/rust/kcl-language-server/package.json @@ -17,9 +17,7 @@ "cad", "manufacturing" ], - "categories": [ - "Programming Languages" - ], + "categories": ["Programming Languages"], "repository": { "url": "https://github.com/kittycad/modeling-app.git", "type": "git" @@ -28,17 +26,13 @@ "vscode": "^1.97.0" }, "enabledApiProposals": [], - "activationEvents": [ - "onLanguage:kcl" - ], + "activationEvents": ["onLanguage:kcl"], "main": "./dist/main.js", "contributes": { "languages": [ { "id": "kcl", - "extensions": [ - ".kcl" - ] + "extensions": [".kcl"] } ], "configuration": { @@ -46,10 +40,7 @@ "title": "kcl-language-server", "properties": { "kcl-language-server.server.path": { - "type": [ - "null", - "string" - ], + "type": ["null", "string"], "scope": "machine-overridable", "default": null, "markdownDescription": "Path to kcl-language-server executable (points to bundled binary by default)." @@ -57,16 +48,8 @@ "kcl-language-server.trace.server": { "type": "string", "scope": "window", - "enum": [ - "off", - "messages", - "verbose" - ], - "enumDescriptions": [ - "No traces", - "Error only", - "Full log" - ], + "enum": ["off", "messages", "verbose"], + "enumDescriptions": ["No traces", "Error only", "Full log"], "default": "off", "description": "Trace requests to the kcl-language-server (this is usually overly verbose and not recommended for regular users)." }, diff --git a/scripts/build-wasm-dev.ps1 b/scripts/build-wasm-dev.ps1 index 24dd855fb..6a3e43a05 100644 --- a/scripts/build-wasm-dev.ps1 +++ b/scripts/build-wasm-dev.ps1 @@ -19,4 +19,4 @@ cargo test -p kcl-lib export_bindings cd .. copy rust\kcl-wasm-lib\pkg\kcl_wasm_lib_bg.wasm public -npm run fmt:generated +npm run fmt diff --git a/scripts/build-wasm-dev.sh b/scripts/build-wasm-dev.sh index 68a104b2a..b97c05047 100755 --- a/scripts/build-wasm-dev.sh +++ b/scripts/build-wasm-dev.sh @@ -13,4 +13,4 @@ cargo test -p kcl-lib export_bindings cd .. cp rust/kcl-wasm-lib/pkg/kcl_wasm_lib_bg.wasm public -npm run fmt:generated +npm run fmt diff --git a/scripts/build-wasm.ps1 b/scripts/build-wasm.ps1 index e8f0dd1ce..935b73076 100644 --- a/scripts/build-wasm.ps1 +++ b/scripts/build-wasm.ps1 @@ -19,4 +19,4 @@ cargo test -p kcl-lib export_bindings cd .. copy rust\kcl-wasm-lib\pkg\kcl_wasm_lib_bg.wasm public -npm run fmt:generated +npm run fmt diff --git a/scripts/build-wasm.sh b/scripts/build-wasm.sh index ccc10068e..4b1e5a4b1 100755 --- a/scripts/build-wasm.sh +++ b/scripts/build-wasm.sh @@ -13,4 +13,4 @@ cargo test -p kcl-lib export_bindings cd .. cp rust/kcl-wasm-lib/pkg/kcl_wasm_lib_bg.wasm public -npm run fmt:generated +npm run fmt diff --git a/src/clientSideScene/confirmModal.tsx b/src/clientSideScene/confirmModal.tsx index 778a9aa3f..d476564bf 100644 --- a/src/clientSideScene/confirmModal.tsx +++ b/src/clientSideScene/confirmModal.tsx @@ -1,5 +1,5 @@ import { Fragment } from 'react' -import { create, type InstanceProps } from 'react-modal-promise' +import { type InstanceProps, create } from 'react-modal-promise' import { Dialog, Transition } from '@headlessui/react' import { ActionButton } from '@src/components/ActionButton' diff --git a/src/clientSideScene/sceneEntities.ts b/src/clientSideScene/sceneEntities.ts index f1a7dcb44..e2c8f709c 100644 --- a/src/clientSideScene/sceneEntities.ts +++ b/src/clientSideScene/sceneEntities.ts @@ -59,7 +59,6 @@ import { CIRCLE_THREE_POINT_SEGMENT, DRAFT_DASHED_LINE, EXTRA_SEGMENT_HANDLE, - getParentGroup, PROFILE_START, SEGMENT_BODIES, SEGMENT_BODIES_PLUS_PROFILE_START, @@ -70,6 +69,7 @@ import { THREE_POINT_ARC_HANDLE2, THREE_POINT_ARC_HANDLE3, THREE_POINT_ARC_SEGMENT, + getParentGroup, } from '@src/clientSideScene/sceneConstants' import type { OnClickCallbackArgs, @@ -83,13 +83,13 @@ import { AXIS_GROUP, DRAFT_POINT, DRAFT_POINT_GROUP, - getSceneScale, INTERSECTION_PLANE_LAYER, RAYCASTABLE_PLANE, SKETCH_GROUP_SEGMENTS, SKETCH_LAYER, X_AXIS, Y_AXIS, + getSceneScale, } from '@src/clientSideScene/sceneUtils' import type { SegmentUtils } from '@src/clientSideScene/segments' import { @@ -99,6 +99,7 @@ import { segmentUtils, } from '@src/clientSideScene/segments' import type EditorManager from '@src/editor/manager' +import type { KclManager } from '@src/lang/KclSingleton' import type CodeManager from '@src/lang/codeManager' import { ARG_END, ARG_END_ABSOLUTE } from '@src/lang/constants' import { @@ -113,7 +114,6 @@ import { createVariableDeclaration, findUniqueName, } from '@src/lang/create' -import type { KclManager } from '@src/lang/KclSingleton' import type { ToolTip } from '@src/lang/langHelpers' import { executeAstMock } from '@src/lang/langHelpers' import { updateModelingState } from '@src/lang/modelingWorkflows' @@ -3725,7 +3725,6 @@ function prepareTruncatedAst( (updatedSrcRangeAst.body[bodyStartIndex] as VariableDeclaration) .declaration.init as PipeExpression ).body.slice(-1)[0] - ;( (_ast.body[bodyStartIndex] as VariableDeclaration).declaration .init as PipeExpression diff --git a/src/colors.css b/src/colors.css index 0982fa84d..992049e49 100644 --- a/src/colors.css +++ b/src/colors.css @@ -6,7 +6,7 @@ var(--primary-hue, 264.48); --primary: oklch( var(--primary-lightness) var(--primary-chroma) var(--primary-hue, 264.48) / - var(--opacity, 1) + var(--opacity, 1) ); /* diff --git a/src/components/FileTree.module.css b/src/components/FileTree.module.css index eac058581..f90491310 100644 --- a/src/components/FileTree.module.css +++ b/src/components/FileTree.module.css @@ -3,7 +3,7 @@ } .folder::after { - content: ''; + content: ""; width: 1px; z-index: -1; @apply absolute top-0 bottom-0; diff --git a/src/components/Toggle/Toggle.module.css b/src/components/Toggle/Toggle.module.css index ffdfc490d..331a9d44e 100644 --- a/src/components/Toggle/Toggle.module.css +++ b/src/components/Toggle/Toggle.module.css @@ -21,9 +21,7 @@ .toggle > span { @apply relative rounded border border-chalkboard-70 hover:border-chalkboard-80 cursor-pointer; border-width: var(--border); - width: calc( - 2 * (var(--toggle-size) + var(--padding) * 2 - var(--border) * 2) - ); + width: calc(2 * (var(--toggle-size) + var(--padding) * 2 - var(--border) * 2)); height: calc(var(--toggle-size) + var(--padding) * 2 - var(--border) * 2); } @@ -35,7 +33,7 @@ width: var(--toggle-size); height: var(--toggle-size); border-radius: calc(var(--toggle-size) / 8); - content: ''; + content: ""; @apply absolute bg-chalkboard-70; top: 50%; left: 50%; diff --git a/src/components/Tooltip.module.css b/src/components/Tooltip.module.css index 896f9adc7..aacdb2180 100644 --- a/src/components/Tooltip.module.css +++ b/src/components/Tooltip.module.css @@ -20,9 +20,7 @@ /* The parts that will be transitioned */ opacity: 0; transform: translate(var(--_x, 0), var(--_y, 0)); - transition: - transform 0.15s ease-out, - opacity 0.11s ease-out; + transition: transform 0.15s ease-out, opacity 0.11s ease-out; } .tooltip { @@ -83,18 +81,18 @@ } .tooltip::before { - content: '; Has tooltip: '; + content: "; Has tooltip: "; } /* Sometimes there's no visible label, * so we'll use the tooltip as the label */ .tooltip:only-child::before { - content: ''; + content: ""; } .tooltip:only-child::after { - content: ' (tooltip)'; + content: " (tooltip)"; } .top, diff --git a/src/hooks/useProjectsLoader.tsx b/src/hooks/useProjectsLoader.tsx index d7d158a31..9f30d5e41 100644 --- a/src/hooks/useProjectsLoader.tsx +++ b/src/hooks/useProjectsLoader.tsx @@ -24,7 +24,6 @@ export const useProjectsLoader = (deps?: [number]) => { if (deps) { setLastTs(deps[0]) } - ;(async () => { const { configuration } = await loadAndValidateSettings() const _projectsDir = await ensureProjectDirectoryExists(configuration) diff --git a/src/index.css b/src/index.css index c030b65f2..a86a11330 100644 --- a/src/index.css +++ b/src/index.css @@ -1,4 +1,4 @@ -@import './colors.css'; +@import "./colors.css"; @tailwind base; @tailwind components; @@ -131,13 +131,13 @@ input { } .mono { - font-family: - source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", + monospace; } code { - font-family: - source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", + monospace; } /* @@ -249,10 +249,10 @@ code { #code-mirror-override .cm-tooltip-autocomplete li { @apply px-2 py-1; } -#code-mirror-override .cm-tooltip-autocomplete li[aria-selected='true'] { +#code-mirror-override .cm-tooltip-autocomplete li[aria-selected="true"] { @apply bg-liquid-10 text-liquid-110; } -.dark #code-mirror-override .cm-tooltip-autocomplete li[aria-selected='true'] { +.dark #code-mirror-override .cm-tooltip-autocomplete li[aria-selected="true"] { @apply bg-liquid-100 text-liquid-20; } diff --git a/src/lang/KclSingleton.ts b/src/lang/KclSingleton.ts index f143749ed..a69aab3fb 100644 --- a/src/lang/KclSingleton.ts +++ b/src/lang/KclSingleton.ts @@ -122,9 +122,11 @@ export class KclManager { private _isExecutingCallback: (arg: boolean) => void = () => {} private _astCallBack: (arg: Node) => void = () => {} - private _variablesCallBack: (arg: { - [key in string]?: KclValue | undefined - }) => void = () => {} + private _variablesCallBack: ( + arg: { + [key in string]?: KclValue | undefined + } + ) => void = () => {} private _logsCallBack: (arg: string[]) => void = () => {} private _kclErrorsCallBack: (errors: KCLError[]) => void = () => {} private _diagnosticsCallback: (errors: Diagnostic[]) => void = () => {} diff --git a/src/lang/std/engineConnection.ts b/src/lang/std/engineConnection.ts index 05c795042..c0486dbd9 100644 --- a/src/lang/std/engineConnection.ts +++ b/src/lang/std/engineConnection.ts @@ -5,8 +5,8 @@ import { BSON } from 'bson' import type { MachineManager } from '@src/components/MachineManagerProvider' import type { useModelingContext } from '@src/hooks/useModelingContext' -import type CodeManager from '@src/lang/codeManager' import type { KclManager } from '@src/lang/KclSingleton' +import type CodeManager from '@src/lang/codeManager' import type { EngineCommand, ResponseMap } from '@src/lang/std/artifactGraph' import type { CommandLog } from '@src/lang/std/commandLog' import { CommandLogType } from '@src/lang/std/commandLog' diff --git a/src/lang/wasm.ts b/src/lang/wasm.ts index 1285d1477..33dc60a0e 100644 --- a/src/lang/wasm.ts +++ b/src/lang/wasm.ts @@ -28,8 +28,8 @@ import type { UnitLen } from '@rust/kcl-lib/bindings/UnitLen' import { KCLError } from '@src/lang/errors' import { getNodePathFromSourceRange } from '@src/lang/queryAstNodePathUtils' import { - defaultArtifactGraph, type Artifact, + defaultArtifactGraph, } from '@src/lang/std/artifactGraph' import type { Coords2d } from '@src/lang/std/sketch' import { diff --git a/src/lang/wasmUtilsNode.ts b/src/lang/wasmUtilsNode.ts index a4e0b7270..2e476a45c 100644 --- a/src/lang/wasmUtilsNode.ts +++ b/src/lang/wasmUtilsNode.ts @@ -1,7 +1,7 @@ -import { init, reloadModule } from '@src/lib/wasm_lib_wrapper' import fs from 'fs' -import fsPromises from 'fs/promises' import path from 'path' +import { init, reloadModule } from '@src/lib/wasm_lib_wrapper' +import fsPromises from 'fs/promises' export const wasmUrlNode = () => { // In prod the file will be right next to the compiled js file. diff --git a/src/lib/getCurrentProjectFile.ts b/src/lib/getCurrentProjectFile.ts index 28d374d06..c8a14ebb9 100644 --- a/src/lib/getCurrentProjectFile.ts +++ b/src/lib/getCurrentProjectFile.ts @@ -1,10 +1,10 @@ +import type { Stats } from 'fs' +import * as path from 'path' import { importFileExtensions, relevantFileExtensions, } from '@src/lang/wasmUtils' -import type { Stats } from 'fs' import * as fs from 'fs/promises' -import * as path from 'path' import { PROJECT_ENTRYPOINT } from '@src/lib/constants' diff --git a/src/lib/operations.ts b/src/lib/operations.ts index 9d067c95a..01bda2772 100644 --- a/src/lib/operations.ts +++ b/src/lib/operations.ts @@ -1,4 +1,4 @@ -import type { Operation, OpKclValue } from '@rust/kcl-lib/bindings/Operation' +import type { OpKclValue, Operation } from '@rust/kcl-lib/bindings/Operation' import type { CustomIconName } from '@src/components/CustomIcon' import { getNodePathFromSourceRange } from '@src/lang/queryAstNodePathUtils' diff --git a/src/machines/modelingMachine.ts b/src/machines/modelingMachine.ts index 4f5e69c0b..557d33509 100644 --- a/src/machines/modelingMachine.ts +++ b/src/machines/modelingMachine.ts @@ -15,7 +15,6 @@ import { createProfileStartHandle } from '@src/clientSideScene/segments' import type { MachineManager } from '@src/components/MachineManagerProvider' import type { ModelingMachineContext } from '@src/components/ModelingMachineProvider' import type { SidebarType } from '@src/components/ModelingSidebar/ModelingPanes' -import { angleLengthInfo } from '@src/components/Toolbar/angleLengthInfo' import { applyConstraintEqualAngle, equalAngleInfo, @@ -42,6 +41,7 @@ import { applyConstraintHorzVertAlign, horzVertDistanceInfo, } from '@src/components/Toolbar/SetHorzVertDistance' +import { angleLengthInfo } from '@src/components/Toolbar/angleLengthInfo' import { createLiteral, createLocalName } from '@src/lang/create' import { updateModelingState } from '@src/lang/modelingWorkflows' import { diff --git a/src/main.ts b/src/main.ts index 69a155cbf..4936effa5 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,3 +1,5 @@ +import os from 'node:os' +import path from 'path' // Some of the following was taken from bits and pieces of the vite-typescript // template that ElectronJS provides. // @ts-ignore: TS1343 @@ -18,9 +20,7 @@ import { systemPreferences, } from 'electron' import electronUpdater, { type AppUpdater } from 'electron-updater' -import os from 'node:os' import { Issuer } from 'openid-client' -import path from 'path' import { argvFromYargs, diff --git a/src/menu.ts b/src/menu.ts index c6275dc72..28fb6f4ca 100644 --- a/src/menu.ts +++ b/src/menu.ts @@ -1,3 +1,4 @@ +import os from 'node:os' import { modelingDesignRole } from '@src/menu/designRole' import { modelingEditRole, projectEditRole } from '@src/menu/editRole' import { modelingFileRole, projectFileRole } from '@src/menu/fileRole' @@ -6,7 +7,6 @@ import type { ZooMenuItemConstructorOptions } from '@src/menu/roles' import { modelingViewRole, projectViewRole } from '@src/menu/viewRole' import type { BrowserWindow } from 'electron' import { Menu, app } from 'electron' -import os from 'node:os' const isMac = os.platform() === 'darwin' diff --git a/src/menu/editRole.ts b/src/menu/editRole.ts index 0b5389da4..65a019ab4 100644 --- a/src/menu/editRole.ts +++ b/src/menu/editRole.ts @@ -1,5 +1,5 @@ -import type { BrowserWindow } from 'electron' import os from 'node:os' +import type { BrowserWindow } from 'electron' import { typeSafeWebContentsSend } from '@src/menu/channels' import type { ZooMenuItemConstructorOptions } from '@src/menu/roles' diff --git a/src/menu/fileRole.ts b/src/menu/fileRole.ts index 211b2c481..579ee7ce2 100644 --- a/src/menu/fileRole.ts +++ b/src/menu/fileRole.ts @@ -1,5 +1,5 @@ -import type { BrowserWindow } from 'electron' import os from 'node:os' +import type { BrowserWindow } from 'electron' import { typeSafeWebContentsSend } from '@src/menu/channels' import type { ZooMenuItemConstructorOptions } from '@src/menu/roles' diff --git a/src/menu/viewRole.ts b/src/menu/viewRole.ts index ffd683098..0dde901c3 100644 --- a/src/menu/viewRole.ts +++ b/src/menu/viewRole.ts @@ -1,5 +1,5 @@ -import type { BrowserWindow } from 'electron' import os from 'node:os' +import type { BrowserWindow } from 'electron' import { typeSafeWebContentsSend } from '@src/menu/channels' import type { ZooMenuItemConstructorOptions } from '@src/menu/roles' diff --git a/src/preload.ts b/src/preload.ts index bb244ffa4..2c0c0f873 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -1,12 +1,12 @@ +import fsSync from 'node:fs' +import fs from 'node:fs/promises' +import os from 'node:os' +import path from 'path' import packageJson from '@root/package.json' import type { MachinesListing } from '@src/components/MachineManagerProvider' import chokidar from 'chokidar' import type { IpcRendererEvent } from 'electron' import { contextBridge, ipcRenderer } from 'electron' -import fsSync from 'node:fs' -import fs from 'node:fs/promises' -import os from 'node:os' -import path from 'path' import type { Channel } from '@src/channels' import type { WebContentSendPayload } from '@src/menu/channels' diff --git a/src/routes/Onboarding/InteractiveNumbers.tsx b/src/routes/Onboarding/InteractiveNumbers.tsx index cc78d7772..d5217f085 100644 --- a/src/routes/Onboarding/InteractiveNumbers.tsx +++ b/src/routes/Onboarding/InteractiveNumbers.tsx @@ -2,8 +2,8 @@ import { bracketWidthConstantLine } from '@src/lib/exampleKcl' import { onboardingPaths } from '@src/routes/Onboarding/paths' import { - kbdClasses, OnboardingButtons, + kbdClasses, useDemoCode, } from '@src/routes/Onboarding/utils'