add million lint in dev mode (#6162)

add million lint

Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
Jess Frazelle
2025-05-01 15:35:55 -07:00
committed by GitHub
parent 88288c3979
commit 7356af556a
5 changed files with 2158 additions and 149 deletions

1
.gitignore vendored
View File

@ -85,3 +85,4 @@ venv
.vscode-test .vscode-test
.biome/ .biome/
.million

View File

@ -71,7 +71,7 @@
TARGET_CC = "${pkgs.stdenv.cc}/bin/${pkgs.stdenv.cc.targetPrefix}cc"; TARGET_CC = "${pkgs.stdenv.cc}/bin/${pkgs.stdenv.cc.targetPrefix}cc";
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
ELECTRON_OVERRIDE_DIST_PATH = "${pkgs.electron}/bin/"; ELECTRON_OVERRIDE_DIST_PATH = if pkgs.stdenv.isDarwin then "${pkgs.electron}/Applications" else "${pkgs.electron}/bin";
PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true; PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true;
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${pkgs.playwright-driver.browsers}/chromium-1091/chrome-linux/chrome"; PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${pkgs.playwright-driver.browsers}/chromium-1091/chrome-linux/chrome";
PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}"; PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}";

2150
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -34,6 +34,7 @@
"@kittycad/lib": "2.0.28", "@kittycad/lib": "2.0.28",
"@lezer/highlight": "^1.2.1", "@lezer/highlight": "^1.2.1",
"@lezer/lr": "^1.4.1", "@lezer/lr": "^1.4.1",
"@million/lint": "^1.0.14",
"@react-hook/resize-observer": "^2.0.1", "@react-hook/resize-observer": "^2.0.1",
"@replit/codemirror-interact": "^6.3.1", "@replit/codemirror-interact": "^6.3.1",
"@ts-stack/markdown": "^1.5.0", "@ts-stack/markdown": "^1.5.0",

View File

@ -6,85 +6,90 @@ import version from 'vite-plugin-package-version'
import topLevelAwait from 'vite-plugin-top-level-await' import topLevelAwait from 'vite-plugin-top-level-await'
import viteTsconfigPaths from 'vite-tsconfig-paths' import viteTsconfigPaths from 'vite-tsconfig-paths'
import { configDefaults, defineConfig } from 'vitest/config' import { configDefaults, defineConfig } from 'vitest/config'
import MillionLint from '@million/lint'
const config = defineConfig({ export default defineConfig(({ command, mode }) => {
server: { const runMillion = process.env.RUN_MILLION
open: true,
port: 3000, return {
watch: { server: {
ignored: [ open: true,
'**/target/**', port: 3000,
'**/dist/**', watch: {
'**/build/**', ignored: [
'**/test-results/**', '**/target/**',
'**/playwright-report/**', '**/dist/**',
], '**/build/**',
}, '**/test-results/**',
}, '**/playwright-report/**',
test: { ],
globals: true,
pool: 'forks',
poolOptions: {
forks: {
maxForks: 2,
minForks: 1,
}, },
}, },
setupFiles: ['src/setupTests.ts', '@vitest/web-worker'], test: {
environment: 'happy-dom', globals: true,
coverage: { pool: 'forks',
provider: 'istanbul', // or 'v8' poolOptions: {
}, forks: {
exclude: [...configDefaults.exclude, '**/e2e/**/*.spec.*', 'rust'], maxForks: 2,
deps: { minForks: 1,
optimizer: {
web: {
include: ['vitest-canvas-mock'],
}, },
}, },
setupFiles: ['src/setupTests.ts', '@vitest/web-worker'],
environment: 'happy-dom',
coverage: {
provider: 'istanbul', // or 'v8'
},
exclude: [...configDefaults.exclude, '**/e2e/**/*.spec.*', 'rust'],
deps: {
optimizer: {
web: {
include: ['vitest-canvas-mock'],
},
},
},
clearMocks: true,
restoreMocks: true,
mockReset: true,
reporters: process.env.GITHUB_ACTIONS
? ['dot', 'github-actions']
: // Gotcha: 'hanging-process' is very noisey, turn off by default on localhost
// : ['verbose', 'hanging-process'],
['verbose'],
testTimeout: 1000,
hookTimeout: 1000,
teardownTimeout: 1000,
}, },
clearMocks: true, build: {
restoreMocks: true, outDir: 'build',
mockReset: true,
reporters: process.env.GITHUB_ACTIONS
? ['dot', 'github-actions']
: // Gotcha: 'hanging-process' is very noisey, turn off by default on localhost
// : ['verbose', 'hanging-process'],
['verbose'],
testTimeout: 1000,
hookTimeout: 1000,
teardownTimeout: 1000,
},
build: {
outDir: 'build',
},
resolve: {
alias: {
'@kittycad/codemirror-lsp-client': '/packages/codemirror-lsp-client/src',
'@kittycad/codemirror-lang-kcl': '/packages/codemirror-lang-kcl/src',
'@rust': '/rust',
'@e2e': '/e2e',
'@src': '/src',
'@public': '/public',
'@root': '/',
}, },
}, resolve: {
plugins: [ alias: {
react(), '@kittycad/codemirror-lsp-client':
viteTsconfigPaths(), '/packages/codemirror-lsp-client/src',
eslint(), '@kittycad/codemirror-lang-kcl': '/packages/codemirror-lang-kcl/src',
version(), '@rust': '/rust',
lezer(), '@e2e': '/e2e',
topLevelAwait({ '@src': '/src',
// The export name of top-level await promise for each chunk module '@public': '/public',
promiseExportName: '__tla', '@root': '/',
// The function to generate import names of top-level await promise in each chunk module },
promiseImportName: (i) => `__tla_${i}`, },
}), plugins: [
], react(),
worker: { viteTsconfigPaths(),
plugins: () => [viteTsconfigPaths()], eslint(),
}, version(),
lezer(),
topLevelAwait({
// The export name of top-level await promise for each chunk module
promiseExportName: '__tla',
// The function to generate import names of top-level await promise in each chunk module
promiseImportName: (i) => `__tla_${i}`,
}),
runMillion && MillionLint.vite(),
],
worker: {
plugins: () => [viteTsconfigPaths()],
},
}
}) })
export default config