From 07f890eb5d926f506c26cf8f8afcaf0e5a48659c Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 15:31:49 +0200
Subject: [PATCH 01/33] Remove eslint and prettier
---
.eslintrc.js | 5 -
.vscode/settings.json | 5 -
README.md | 2 -
package.json | 8 +-
packages/class/.eslintrc.cjs | 10 -
packages/class/package.json | 4 -
packages/class/tsconfig.json | 21 +-
packages/config-eslint/index.js | 19 -
packages/config-eslint/package.json | 14 -
packages/config-typescript/base.json | 23 -
packages/config-typescript/package.json | 9 -
packages/config-typescript/vite.json | 22 -
pnpm-lock.yaml | 645 ------------------------
turbo.json | 1 -
14 files changed, 21 insertions(+), 767 deletions(-)
delete mode 100644 .eslintrc.js
delete mode 100644 packages/class/.eslintrc.cjs
delete mode 100644 packages/config-eslint/index.js
delete mode 100644 packages/config-eslint/package.json
delete mode 100644 packages/config-typescript/base.json
delete mode 100644 packages/config-typescript/package.json
delete mode 100644 packages/config-typescript/vite.json
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index f727597..0000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/** @type {import("eslint").Linter.Config} */
-module.exports = {
- root: true,
- extends: ["@classmodel/eslint-config/index.js"],
-};
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 44a73ec..2c63c08 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,7 +1,2 @@
{
- "eslint.workingDirectories": [
- {
- "mode": "auto"
- }
- ]
}
diff --git a/README.md b/README.md
index 90c7726..823b8c1 100644
--- a/README.md
+++ b/README.md
@@ -22,8 +22,6 @@ Currently the repo is home to the following:
- packages/
- class: reimplementation of CLASS in typescript
- - config-eslint: shared configuration for eslint
- - config-typescript: shared configuration for typescript
- apps/
- class-solid: web application with a graphical user interface for CLASS
diff --git a/package.json b/package.json
index 7c9fb63..514b087 100644
--- a/package.json
+++ b/package.json
@@ -2,15 +2,11 @@
"private": true,
"scripts": {
"build": "turbo build",
- "dev": "turbo dev",
- "lint": "turbo lint",
- "format": "prettier --write \"**/*.{ts,tsx,md}\""
+ "dev": "turbo dev"
},
"devDependencies": {
- "eslint": "^8.57.0",
- "prettier": "^3.2.5",
"turbo": "^2.0.6"
},
"packageManager": "pnpm@8.15.6",
- "name": "with-vite"
+ "name": "class-web"
}
diff --git a/packages/class/.eslintrc.cjs b/packages/class/.eslintrc.cjs
deleted file mode 100644
index 6a66138..0000000
--- a/packages/class/.eslintrc.cjs
+++ /dev/null
@@ -1,10 +0,0 @@
-/** @type {import("eslint").Linter.Config} */
-module.exports = {
- root: true,
- ignorePatterns: [".eslintrc.cjs"],
- extends: ["@classmodel/eslint-config/index.js"],
- parser: "@typescript-eslint/parser",
- parserOptions: {
- project: true,
- },
-};
diff --git a/packages/class/package.json b/packages/class/package.json
index e0f6d89..a56922c 100644
--- a/packages/class/package.json
+++ b/packages/class/package.json
@@ -8,15 +8,11 @@
},
"license": "GPL-3.0-only",
"scripts": {
- "lint": "eslint \"**/*.ts\"",
"test": "jest",
"test:watch": "jext --watch"
},
"devDependencies": {
- "@classmodel/eslint-config": "workspace:*",
- "@classmodel/typescript-config": "workspace:*",
"@types/jest": "^29.5.12",
- "eslint": "^8.57.0",
"jest": "^29.7.0",
"ts-jest": "^29.2.2",
"typescript": "^5.3.3"
diff --git a/packages/class/tsconfig.json b/packages/class/tsconfig.json
index 46198dc..ad471ee 100644
--- a/packages/class/tsconfig.json
+++ b/packages/class/tsconfig.json
@@ -1,5 +1,22 @@
{
- "extends": "@classmodel/typescript-config/base.json",
+ "compilerOptions": {
+ "composite": false,
+ "declaration": true,
+ "declarationMap": true,
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "inlineSources": false,
+ "isolatedModules": true,
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "noUnusedLocals": false,
+ "noUnusedParameters": false,
+ "preserveWatchOutput": true,
+ "skipLibCheck": true,
+ "strict": true
+ },
"include": ["."],
- "exclude": ["node_modules"]
+ "exclude": [
+ "node_modules"
+ ]
}
diff --git a/packages/config-eslint/index.js b/packages/config-eslint/index.js
deleted file mode 100644
index 9417d1c..0000000
--- a/packages/config-eslint/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-module.exports = {
- env: {
- node: true,
- },
- parser: "@typescript-eslint/parser",
- extends: [
- "eslint:recommended",
- "plugin:@typescript-eslint/recommended",
- "prettier",
- ],
- plugins: ["@typescript-eslint"],
- parserOptions: {
- sourceType: "module",
- ecmaVersion: 2020,
- },
- rules: {
- "@typescript-eslint/no-non-null-assertion": "off",
- },
-};
diff --git a/packages/config-eslint/package.json b/packages/config-eslint/package.json
deleted file mode 100644
index dc08787..0000000
--- a/packages/config-eslint/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "@classmodel/eslint-config",
- "version": "0.0.0",
- "main": "index.js",
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/eslint-plugin": "^7.1.0",
- "@typescript-eslint/parser": "^7.1.0",
- "eslint-config-prettier": "^9.1.0"
- },
- "publishConfig": {
- "access": "public"
- }
-}
diff --git a/packages/config-typescript/base.json b/packages/config-typescript/base.json
deleted file mode 100644
index 289474e..0000000
--- a/packages/config-typescript/base.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/tsconfig",
- "display": "Default",
- "compilerOptions": {
- "composite": false,
- "declaration": true,
- "declarationMap": true,
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "inlineSources": false,
- "isolatedModules": true,
- "module": "ESNext",
- "moduleResolution": "Bundler",
- "noUnusedLocals": false,
- "noUnusedParameters": false,
- "preserveWatchOutput": true,
- "skipLibCheck": true,
- "strict": true
- },
- "exclude": [
- "node_modules"
- ]
-}
diff --git a/packages/config-typescript/package.json b/packages/config-typescript/package.json
deleted file mode 100644
index 1aa9bbe..0000000
--- a/packages/config-typescript/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@classmodel/typescript-config",
- "version": "0.0.0",
- "private": true,
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- }
-}
diff --git a/packages/config-typescript/vite.json b/packages/config-typescript/vite.json
deleted file mode 100644
index 47bacea..0000000
--- a/packages/config-typescript/vite.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "extends": "./base.json",
- "compilerOptions": {
- "target": "ESNext",
- "useDefineForClassFields": true,
- "module": "ESNext",
- "lib": [
- "ESNext",
- "DOM",
- "dom.iterable"
- ],
- "sourceMap": true,
- "resolveJsonModule": true,
- "noEmit": true,
- "noUnusedLocals": true,
- "noUnusedParameters": true,
- "noImplicitReturns": true
- },
- "exclude": [
- "node_modules"
- ]
-}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ce67191..d2ae6a5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,12 +8,6 @@ importers:
.:
devDependencies:
- eslint:
- specifier: ^8.57.0
- version: 8.57.0
- prettier:
- specifier: ^3.2.5
- version: 3.2.5
turbo:
specifier: ^2.0.6
version: 2.0.6
@@ -75,18 +69,9 @@ importers:
specifier: ^3.23.1
version: 3.23.1(zod@3.23.8)
devDependencies:
- '@classmodel/eslint-config':
- specifier: workspace:*
- version: link:../config-eslint
- '@classmodel/typescript-config':
- specifier: workspace:*
- version: link:../config-typescript
'@types/jest':
specifier: ^29.5.12
version: 29.5.12
- eslint:
- specifier: ^8.57.0
- version: 8.57.0
jest:
specifier: ^29.7.0
version: 29.7.0(@types/node@20.14.10)
@@ -97,26 +82,8 @@ importers:
specifier: ^5.3.3
version: 5.3.3
- packages/config-eslint:
- dependencies:
- '@typescript-eslint/eslint-plugin':
- specifier: ^7.1.0
- version: 7.1.0(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3)
- '@typescript-eslint/parser':
- specifier: ^7.1.0
- version: 7.1.0(eslint@8.57.0)(typescript@5.3.3)
- eslint-config-prettier:
- specifier: ^9.1.0
- version: 9.1.0(eslint@8.57.0)
-
- packages/config-typescript: {}
-
packages:
- '@aashutoshrathi/word-wrap@1.2.6':
- resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
- engines: {node: '>=0.10.0'}
-
'@alloc/quick-lru@5.2.0':
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
@@ -641,24 +608,6 @@ packages:
cpu: [x64]
os: [win32]
- '@eslint-community/eslint-utils@4.4.0':
- resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
-
- '@eslint-community/regexpp@4.10.0':
- resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
-
- '@eslint/eslintrc@2.1.4':
- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- '@eslint/js@8.57.0':
- resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
'@fastify/busboy@2.1.1':
resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
engines: {node: '>=14'}
@@ -672,19 +621,6 @@ packages:
'@floating-ui/utils@0.2.4':
resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==}
- '@humanwhocodes/config-array@0.11.14':
- resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
- engines: {node: '>=10.10.0'}
- deprecated: Use @eslint/config-array instead
-
- '@humanwhocodes/module-importer@1.0.1':
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
-
- '@humanwhocodes/object-schema@2.0.2':
- resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==}
- deprecated: Use @eslint/object-schema instead
-
'@internationalized/date@3.5.4':
resolution: {integrity: sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==}
@@ -1195,9 +1131,6 @@ packages:
'@types/jest@29.5.12':
resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==}
- '@types/json-schema@7.0.15':
- resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
-
'@types/micromatch@4.0.9':
resolution: {integrity: sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==}
@@ -1207,9 +1140,6 @@ packages:
'@types/resolve@1.20.2':
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
- '@types/semver@7.5.6':
- resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==}
-
'@types/stack-utils@2.0.3':
resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
@@ -1219,67 +1149,6 @@ packages:
'@types/yargs@17.0.32':
resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==}
- '@typescript-eslint/eslint-plugin@7.1.0':
- resolution: {integrity: sha512-j6vT/kCulhG5wBmGtstKeiVr1rdXE4nk+DT1k6trYkwlrvW9eOF5ZbgKnd/YR6PcM4uTEXa0h6Fcvf6X7Dxl0w==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- '@typescript-eslint/parser': ^7.0.0
- eslint: ^8.56.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/parser@7.1.0':
- resolution: {integrity: sha512-V1EknKUubZ1gWFjiOZhDSNToOjs63/9O0puCgGS8aDOgpZY326fzFu15QAUjwaXzRZjf/qdsdBrckYdv9YxB8w==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- eslint: ^8.56.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/scope-manager@7.1.0':
- resolution: {integrity: sha512-6TmN4OJiohHfoOdGZ3huuLhpiUgOGTpgXNUPJgeZOZR3DnIpdSgtt83RS35OYNNXxM4TScVlpVKC9jyQSETR1A==}
- engines: {node: ^16.0.0 || >=18.0.0}
-
- '@typescript-eslint/type-utils@7.1.0':
- resolution: {integrity: sha512-UZIhv8G+5b5skkcuhgvxYWHjk7FW7/JP5lPASMEUoliAPwIH/rxoUSQPia2cuOj9AmDZmwUl1usKm85t5VUMew==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- eslint: ^8.56.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/types@7.1.0':
- resolution: {integrity: sha512-qTWjWieJ1tRJkxgZYXx6WUYtWlBc48YRxgY2JN1aGeVpkhmnopq+SUC8UEVGNXIvWH7XyuTjwALfG6bFEgCkQA==}
- engines: {node: ^16.0.0 || >=18.0.0}
-
- '@typescript-eslint/typescript-estree@7.1.0':
- resolution: {integrity: sha512-k7MyrbD6E463CBbSpcOnwa8oXRdHzH1WiVzOipK3L5KSML92ZKgUBrTlehdi7PEIMT8k0bQixHUGXggPAlKnOQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/utils@7.1.0':
- resolution: {integrity: sha512-WUFba6PZC5OCGEmbweGpnNJytJiLG7ZvDBJJoUcX4qZYf1mGZ97mO2Mps6O2efxJcJdRNpqweCistDbZMwIVHw==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- eslint: ^8.56.0
-
- '@typescript-eslint/visitor-keys@7.1.0':
- resolution: {integrity: sha512-FhUqNWluiGNzlvnDZiXad4mZRhtghdoKW6e98GoEOYSu5cND+E39rG5KwJMUzeENwm1ztYBRqof8wMLP+wNPIA==}
- engines: {node: ^16.0.0 || >=18.0.0}
-
- '@ungap/structured-clone@1.2.0':
- resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
-
'@vercel/nft@0.26.5':
resolution: {integrity: sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==}
engines: {node: '>=16'}
@@ -1339,9 +1208,6 @@ packages:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
- ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
-
ansi-align@3.0.1:
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
@@ -1409,10 +1275,6 @@ packages:
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
-
ast-types@0.16.1:
resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==}
engines: {node: '>=4'}
@@ -1785,9 +1647,6 @@ packages:
babel-plugin-macros:
optional: true
- deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
-
deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
@@ -1849,17 +1708,9 @@ packages:
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
-
dlv@1.1.3:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
- doctrine@3.0.0:
- resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
- engines: {node: '>=6.0.0'}
-
dot-prop@8.0.2:
resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==}
engines: {node: '>=16'}
@@ -1936,64 +1787,21 @@ packages:
resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
engines: {node: '>=8'}
- escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
-
escape-string-regexp@5.0.0:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
- eslint-config-prettier@9.1.0:
- resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
- hasBin: true
- peerDependencies:
- eslint: '>=7.0.0'
-
- eslint-scope@7.2.2:
- resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint-visitor-keys@3.4.3:
- resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint@8.57.0:
- resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- hasBin: true
-
- espree@9.6.1:
- resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
hasBin: true
- esquery@1.5.0:
- resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
- engines: {node: '>=0.10'}
-
- esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
-
- estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
-
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
estree-walker@3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
- esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
-
etag@1.8.1:
resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
engines: {node: '>= 0.6'}
@@ -2029,9 +1837,6 @@ packages:
resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
-
fast-fifo@1.3.2:
resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
@@ -2042,19 +1847,12 @@ packages:
fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
- fast-levenshtein@2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
-
fastq@1.17.1:
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
fb-watchman@2.0.2:
resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
- file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
-
file-uri-to-path@1.0.0:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
@@ -2069,17 +1867,6 @@ packages:
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
engines: {node: '>=8'}
- find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
- flat-cache@3.2.0:
- resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
- engines: {node: ^10.12.0 || >=12.0.0}
-
- flatted@3.3.1:
- resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
-
follow-redirects@1.15.6:
resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
engines: {node: '>=4.0'}
@@ -2176,14 +1963,6 @@ packages:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
- globals@13.24.0:
- resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
- engines: {node: '>=8'}
-
- globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
-
globby@14.0.2:
resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==}
engines: {node: '>=18'}
@@ -2191,9 +1970,6 @@ packages:
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
gzip-size@7.0.0:
resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -2272,10 +2048,6 @@ packages:
immutable@4.3.6:
resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==}
- import-fresh@3.3.0:
- resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
- engines: {node: '>=6'}
-
import-local@3.1.0:
resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
engines: {node: '>=8'}
@@ -2352,10 +2124,6 @@ packages:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
- is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
is-reference@1.2.1:
resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
@@ -2577,18 +2345,9 @@ packages:
engines: {node: '>=4'}
hasBin: true
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
- json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
-
- json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
-
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
@@ -2597,9 +2356,6 @@ packages:
jsonfile@6.1.0:
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
-
kleur@3.0.3:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
@@ -2619,10 +2375,6 @@ packages:
resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
engines: {node: '>=6'}
- levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
-
lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
@@ -2646,10 +2398,6 @@ packages:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
- locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
-
lodash.defaults@4.2.0:
resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
@@ -2659,9 +2407,6 @@ packages:
lodash.memoize@4.1.2:
resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
- lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
-
lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
@@ -2740,10 +2485,6 @@ packages:
resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
engines: {node: '>=10'}
- minimatch@9.0.3:
- resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
- engines: {node: '>=16 || 14 >=14.17'}
-
minimatch@9.0.5:
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -2910,10 +2651,6 @@ packages:
resolution: {integrity: sha512-c/hfooPx+RBIOPM09GSxABOZhYPblDoyaGhqBkD/59vtpN21jEuWKDlM0KYTvqJVlSYjKs0tBcIdeXKChlSPtw==}
hasBin: true
- optionator@0.9.3:
- resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
- engines: {node: '>= 0.8.0'}
-
p-limit@2.3.0:
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
engines: {node: '>=6'}
@@ -2926,10 +2663,6 @@ packages:
resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
engines: {node: '>=8'}
- p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
-
p-try@2.2.0:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
@@ -2937,10 +2670,6 @@ packages:
package-json-from-dist@1.0.0:
resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
- parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
-
parse-json@5.2.0:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
@@ -2975,10 +2704,6 @@ packages:
path-to-regexp@6.2.2:
resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==}
- path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
-
path-type@5.0.0:
resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==}
engines: {node: '>=12'}
@@ -3055,15 +2780,6 @@ packages:
resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==}
engines: {node: ^10 || ^12 || >=14}
- prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
-
- prettier@3.2.5:
- resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
- engines: {node: '>=14'}
- hasBin: true
-
pretty-bytes@6.1.1:
resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==}
engines: {node: ^14.13.1 || >=16.0.0}
@@ -3083,10 +2799,6 @@ packages:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'}
- punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
-
pure-rand@6.1.0:
resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
@@ -3156,10 +2868,6 @@ packages:
resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
engines: {node: '>=8'}
- resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
-
resolve-from@5.0.0:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'}
@@ -3485,9 +3193,6 @@ packages:
text-decoder@1.1.1:
resolution: {integrity: sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==}
- text-table@0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
-
thenify-all@1.6.0:
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
engines: {node: '>=0.8'}
@@ -3524,12 +3229,6 @@ packages:
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
- ts-api-utils@1.0.3:
- resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
- engines: {node: '>=16.13.0'}
- peerDependencies:
- typescript: '>=4.2.0'
-
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
@@ -3594,18 +3293,10 @@ packages:
resolution: {integrity: sha512-/Ftmxd5Mq//a9yMonvmwENNUN65jOVTwhhBPQjEtNZutYT9YKyzydFGLyVM1nzhpLWahQSMamRc/RDBv5EapzA==}
hasBin: true
- type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
-
type-detect@4.0.8:
resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
engines: {node: '>=4'}
- type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
-
type-fest@0.21.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
@@ -3724,9 +3415,6 @@ packages:
uqr@0.1.2:
resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==}
- uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-
urlpattern-polyfill@8.0.2:
resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==}
@@ -3889,8 +3577,6 @@ packages:
snapshots:
- '@aashutoshrathi/word-wrap@1.2.6': {}
-
'@alloc/quick-lru@5.2.0': {}
'@ampproject/remapping@2.3.0':
@@ -4359,29 +4045,6 @@ snapshots:
'@esbuild/win32-x64@0.21.5':
optional: true
- '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
- dependencies:
- eslint: 8.57.0
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/regexpp@4.10.0': {}
-
- '@eslint/eslintrc@2.1.4':
- dependencies:
- ajv: 6.12.6
- debug: 4.3.4
- espree: 9.6.1
- globals: 13.24.0
- ignore: 5.3.1
- import-fresh: 3.3.0
- js-yaml: 4.1.0
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/js@8.57.0': {}
-
'@fastify/busboy@2.1.1': {}
'@floating-ui/core@1.6.4':
@@ -4395,18 +4058,6 @@ snapshots:
'@floating-ui/utils@0.2.4': {}
- '@humanwhocodes/config-array@0.11.14':
- dependencies:
- '@humanwhocodes/object-schema': 2.0.2
- debug: 4.3.4
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
- '@humanwhocodes/module-importer@1.0.1': {}
-
- '@humanwhocodes/object-schema@2.0.2': {}
-
'@internationalized/date@3.5.4':
dependencies:
'@swc/helpers': 0.5.12
@@ -5015,8 +4666,6 @@ snapshots:
expect: 29.7.0
pretty-format: 29.7.0
- '@types/json-schema@7.0.15': {}
-
'@types/micromatch@4.0.9':
dependencies:
'@types/braces': 3.0.4
@@ -5027,8 +4676,6 @@ snapshots:
'@types/resolve@1.20.2': {}
- '@types/semver@7.5.6': {}
-
'@types/stack-utils@2.0.3': {}
'@types/yargs-parser@21.0.3': {}
@@ -5037,94 +4684,6 @@ snapshots:
dependencies:
'@types/yargs-parser': 21.0.3
- '@typescript-eslint/eslint-plugin@7.1.0(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3)':
- dependencies:
- '@eslint-community/regexpp': 4.10.0
- '@typescript-eslint/parser': 7.1.0(eslint@8.57.0)(typescript@5.3.3)
- '@typescript-eslint/scope-manager': 7.1.0
- '@typescript-eslint/type-utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3)
- '@typescript-eslint/utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3)
- '@typescript-eslint/visitor-keys': 7.1.0
- debug: 4.3.4
- eslint: 8.57.0
- graphemer: 1.4.0
- ignore: 5.3.1
- natural-compare: 1.4.0
- semver: 7.5.4
- ts-api-utils: 1.0.3(typescript@5.3.3)
- optionalDependencies:
- typescript: 5.3.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3)':
- dependencies:
- '@typescript-eslint/scope-manager': 7.1.0
- '@typescript-eslint/types': 7.1.0
- '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3)
- '@typescript-eslint/visitor-keys': 7.1.0
- debug: 4.3.4
- eslint: 8.57.0
- optionalDependencies:
- typescript: 5.3.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/scope-manager@7.1.0':
- dependencies:
- '@typescript-eslint/types': 7.1.0
- '@typescript-eslint/visitor-keys': 7.1.0
-
- '@typescript-eslint/type-utils@7.1.0(eslint@8.57.0)(typescript@5.3.3)':
- dependencies:
- '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3)
- '@typescript-eslint/utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3)
- debug: 4.3.4
- eslint: 8.57.0
- ts-api-utils: 1.0.3(typescript@5.3.3)
- optionalDependencies:
- typescript: 5.3.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/types@7.1.0': {}
-
- '@typescript-eslint/typescript-estree@7.1.0(typescript@5.3.3)':
- dependencies:
- '@typescript-eslint/types': 7.1.0
- '@typescript-eslint/visitor-keys': 7.1.0
- debug: 4.3.4
- globby: 11.1.0
- is-glob: 4.0.3
- minimatch: 9.0.3
- semver: 7.5.4
- ts-api-utils: 1.0.3(typescript@5.3.3)
- optionalDependencies:
- typescript: 5.3.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@7.1.0(eslint@8.57.0)(typescript@5.3.3)':
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@types/json-schema': 7.0.15
- '@types/semver': 7.5.6
- '@typescript-eslint/scope-manager': 7.1.0
- '@typescript-eslint/types': 7.1.0
- '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3)
- eslint: 8.57.0
- semver: 7.5.4
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- '@typescript-eslint/visitor-keys@7.1.0':
- dependencies:
- '@typescript-eslint/types': 7.1.0
- eslint-visitor-keys: 3.4.3
-
- '@ungap/structured-clone@1.2.0': {}
-
'@vercel/nft@0.26.5':
dependencies:
'@mapbox/node-pre-gyp': 1.0.11
@@ -5230,13 +4789,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- ajv@6.12.6:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
-
ansi-align@3.0.1:
dependencies:
string-width: 4.2.3
@@ -5305,8 +4857,6 @@ snapshots:
argparse@2.0.1: {}
- array-union@2.1.0: {}
-
ast-types@0.16.1:
dependencies:
tslib: 2.6.3
@@ -5663,8 +5213,6 @@ snapshots:
dedent@1.5.3: {}
- deep-is@0.1.4: {}
-
deepmerge@4.3.1: {}
default-browser-id@3.0.0:
@@ -5705,16 +5253,8 @@ snapshots:
diff-sequences@29.6.3: {}
- dir-glob@3.0.1:
- dependencies:
- path-type: 4.0.0
-
dlv@1.1.3: {}
- doctrine@3.0.0:
- dependencies:
- esutils: 2.0.3
-
dot-prop@8.0.2:
dependencies:
type-fest: 3.13.1
@@ -5813,90 +5353,16 @@ snapshots:
escape-string-regexp@2.0.0: {}
- escape-string-regexp@4.0.0: {}
-
escape-string-regexp@5.0.0: {}
- eslint-config-prettier@9.1.0(eslint@8.57.0):
- dependencies:
- eslint: 8.57.0
-
- eslint-scope@7.2.2:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.3.0
-
- eslint-visitor-keys@3.4.3: {}
-
- eslint@8.57.0:
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@eslint-community/regexpp': 4.10.0
- '@eslint/eslintrc': 2.1.4
- '@eslint/js': 8.57.0
- '@humanwhocodes/config-array': 0.11.14
- '@humanwhocodes/module-importer': 1.0.1
- '@nodelib/fs.walk': 1.2.8
- '@ungap/structured-clone': 1.2.0
- ajv: 6.12.6
- chalk: 4.1.2
- cross-spawn: 7.0.3
- debug: 4.3.4
- doctrine: 3.0.0
- escape-string-regexp: 4.0.0
- eslint-scope: 7.2.2
- eslint-visitor-keys: 3.4.3
- espree: 9.6.1
- esquery: 1.5.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
- find-up: 5.0.0
- glob-parent: 6.0.2
- globals: 13.24.0
- graphemer: 1.4.0
- ignore: 5.3.1
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- is-path-inside: 3.0.3
- js-yaml: 4.1.0
- json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
- lodash.merge: 4.6.2
- minimatch: 3.1.2
- natural-compare: 1.4.0
- optionator: 0.9.3
- strip-ansi: 6.0.1
- text-table: 0.2.0
- transitivePeerDependencies:
- - supports-color
-
- espree@9.6.1:
- dependencies:
- acorn: 8.11.3
- acorn-jsx: 5.3.2(acorn@8.11.3)
- eslint-visitor-keys: 3.4.3
-
esprima@4.0.1: {}
- esquery@1.5.0:
- dependencies:
- estraverse: 5.3.0
-
- esrecurse@4.3.0:
- dependencies:
- estraverse: 5.3.0
-
- estraverse@5.3.0: {}
-
estree-walker@2.0.2: {}
estree-walker@3.0.3:
dependencies:
'@types/estree': 1.0.5
- esutils@2.0.3: {}
-
etag@1.8.1: {}
event-target-shim@5.0.1: {}
@@ -5951,8 +5417,6 @@ snapshots:
jest-message-util: 29.7.0
jest-util: 29.7.0
- fast-deep-equal@3.1.3: {}
-
fast-fifo@1.3.2: {}
fast-glob@3.3.2:
@@ -5965,8 +5429,6 @@ snapshots:
fast-json-stable-stringify@2.1.0: {}
- fast-levenshtein@2.0.6: {}
-
fastq@1.17.1:
dependencies:
reusify: 1.0.4
@@ -5975,10 +5437,6 @@ snapshots:
dependencies:
bser: 2.1.1
- file-entry-cache@6.0.1:
- dependencies:
- flat-cache: 3.2.0
-
file-uri-to-path@1.0.0: {}
filelist@1.0.4:
@@ -5994,19 +5452,6 @@ snapshots:
locate-path: 5.0.0
path-exists: 4.0.0
- find-up@5.0.0:
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
-
- flat-cache@3.2.0:
- dependencies:
- flatted: 3.3.1
- keyv: 4.5.4
- rimraf: 3.0.2
-
- flatted@3.3.1: {}
-
follow-redirects@1.15.6: {}
foreground-child@3.2.1:
@@ -6106,19 +5551,6 @@ snapshots:
globals@11.12.0: {}
- globals@13.24.0:
- dependencies:
- type-fest: 0.20.2
-
- globby@11.1.0:
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.2
- ignore: 5.3.1
- merge2: 1.4.1
- slash: 3.0.0
-
globby@14.0.2:
dependencies:
'@sindresorhus/merge-streams': 2.3.0
@@ -6130,8 +5562,6 @@ snapshots:
graceful-fs@4.2.11: {}
- graphemer@1.4.0: {}
-
gzip-size@7.0.0:
dependencies:
duplexer: 0.1.2
@@ -6224,11 +5654,6 @@ snapshots:
immutable@4.3.6:
optional: true
- import-fresh@3.3.0:
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
-
import-local@3.1.0:
dependencies:
pkg-dir: 4.2.0
@@ -6295,8 +5720,6 @@ snapshots:
is-number@7.0.0: {}
- is-path-inside@3.0.3: {}
-
is-reference@1.2.1:
dependencies:
'@types/estree': 1.0.5
@@ -6704,14 +6127,8 @@ snapshots:
jsesc@2.5.2: {}
- json-buffer@3.0.1: {}
-
json-parse-even-better-errors@2.3.1: {}
- json-schema-traverse@0.4.1: {}
-
- json-stable-stringify-without-jsonify@1.0.1: {}
-
json5@2.2.3: {}
jsonfile@6.1.0:
@@ -6720,10 +6137,6 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
- keyv@4.5.4:
- dependencies:
- json-buffer: 3.0.1
-
kleur@3.0.3: {}
klona@2.0.6: {}
@@ -6736,11 +6149,6 @@ snapshots:
leven@3.1.0: {}
- levn@0.4.1:
- dependencies:
- prelude-ls: 1.2.1
- type-check: 0.4.0
-
lilconfig@2.1.0: {}
lilconfig@3.1.2: {}
@@ -6779,18 +6187,12 @@ snapshots:
dependencies:
p-locate: 4.1.0
- locate-path@6.0.0:
- dependencies:
- p-locate: 5.0.0
-
lodash.defaults@4.2.0: {}
lodash.isarguments@3.1.0: {}
lodash.memoize@4.1.2: {}
- lodash.merge@4.6.2: {}
-
lodash@4.17.21: {}
lru-cache@10.4.3: {}
@@ -6858,10 +6260,6 @@ snapshots:
dependencies:
brace-expansion: 2.0.1
- minimatch@9.0.3:
- dependencies:
- brace-expansion: 2.0.1
-
minimatch@9.0.5:
dependencies:
brace-expansion: 2.0.1
@@ -7095,15 +6493,6 @@ snapshots:
undici: 5.28.4
yargs-parser: 21.1.1
- optionator@0.9.3:
- dependencies:
- '@aashutoshrathi/word-wrap': 1.2.6
- deep-is: 0.1.4
- fast-levenshtein: 2.0.6
- levn: 0.4.1
- prelude-ls: 1.2.1
- type-check: 0.4.0
-
p-limit@2.3.0:
dependencies:
p-try: 2.2.0
@@ -7116,18 +6505,10 @@ snapshots:
dependencies:
p-limit: 2.3.0
- p-locate@5.0.0:
- dependencies:
- p-limit: 3.1.0
-
p-try@2.2.0: {}
package-json-from-dist@1.0.0: {}
- parent-module@1.0.1:
- dependencies:
- callsites: 3.1.0
-
parse-json@5.2.0:
dependencies:
'@babel/code-frame': 7.24.7
@@ -7154,8 +6535,6 @@ snapshots:
path-to-regexp@6.2.2: {}
- path-type@4.0.0: {}
-
path-type@5.0.0: {}
pathe@1.1.2: {}
@@ -7219,10 +6598,6 @@ snapshots:
picocolors: 1.0.1
source-map-js: 1.2.0
- prelude-ls@1.2.1: {}
-
- prettier@3.2.5: {}
-
pretty-bytes@6.1.1: {}
pretty-format@29.7.0:
@@ -7240,8 +6615,6 @@ snapshots:
kleur: 3.0.3
sisteransi: 1.0.5
- punycode@2.3.1: {}
-
pure-rand@6.1.0: {}
queue-microtask@1.2.3: {}
@@ -7321,8 +6694,6 @@ snapshots:
dependencies:
resolve-from: 5.0.0
- resolve-from@4.0.0: {}
-
resolve-from@5.0.0: {}
resolve.exports@2.0.2: {}
@@ -7688,8 +7059,6 @@ snapshots:
dependencies:
b4a: 1.6.6
- text-table@0.2.0: {}
-
thenify-all@1.6.0:
dependencies:
thenify: 3.3.1
@@ -7716,10 +7085,6 @@ snapshots:
tr46@0.0.3: {}
- ts-api-utils@1.0.3(typescript@5.3.3):
- dependencies:
- typescript: 5.3.3
-
ts-interface-checker@0.1.13: {}
ts-jest@29.2.2(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.10))(typescript@5.3.3):
@@ -7770,14 +7135,8 @@ snapshots:
turbo-windows-64: 2.0.6
turbo-windows-arm64: 2.0.6
- type-check@0.4.0:
- dependencies:
- prelude-ls: 1.2.1
-
type-detect@4.0.8: {}
- type-fest@0.20.2: {}
-
type-fest@0.21.3: {}
type-fest@2.19.0: {}
@@ -7884,10 +7243,6 @@ snapshots:
uqr@0.1.2: {}
- uri-js@4.4.1:
- dependencies:
- punycode: 2.3.1
-
urlpattern-polyfill@8.0.2: {}
util-deprecate@1.0.2: {}
diff --git a/turbo.json b/turbo.json
index c352c07..2f4f4b1 100644
--- a/turbo.json
+++ b/turbo.json
@@ -13,7 +13,6 @@
"dist/**"
]
},
- "lint": {},
"dev": {
"cache": false,
"persistent": true
From b203b86c6ef2b393627a5419829de9a7642293f2 Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 15:37:00 +0200
Subject: [PATCH 02/33] Move biome to now
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 823b8c1..5478c2f 100644
--- a/README.md
+++ b/README.md
@@ -57,9 +57,11 @@ by [Kobalte](https://kobalte.dev/docs/core/overview/introduction) and
application and tweaked further as seen fit. It can also do charts, using
[chart.js](https://www.chartjs.org/), though we might deviate from that later.
+To format and lint the code, we use [biome](https://biomejs.dev/) as it combines eslint, prettier in one package.
+To check types, we use typescript script `pnpm typecheck` as other commands ignore types.
+
**Further plans/ideas**
-- Use [biome](https://biomejs.dev/) for linting/formatting
- Use [modular forms](https://modularforms.dev/) for form state management/validation
- Use [auto](https://intuit.github.io/auto/index) for managing versions/releases
- Use [d3.js](https://d3js.org/) for more low-level charting
From 17615d95a6c90d6546936367abbedba527489e19 Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 15:48:35 +0200
Subject: [PATCH 03/33] pnpm add --save-dev --save-exact --workspace-root
@biomejs/biome
---
package.json | 1 +
pnpm-lock.yaml | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 92 insertions(+)
diff --git a/package.json b/package.json
index 514b087..3a3fb2e 100644
--- a/package.json
+++ b/package.json
@@ -5,6 +5,7 @@
"dev": "turbo dev"
},
"devDependencies": {
+ "@biomejs/biome": "1.8.3",
"turbo": "^2.0.6"
},
"packageManager": "pnpm@8.15.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d2ae6a5..36b1df1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,6 +8,9 @@ importers:
.:
devDependencies:
+ '@biomejs/biome':
+ specifier: 1.8.3
+ version: 1.8.3
turbo:
specifier: ^2.0.6
version: 2.0.6
@@ -317,6 +320,59 @@ packages:
'@bcoe/v8-coverage@0.2.3':
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+ '@biomejs/biome@1.8.3':
+ resolution: {integrity: sha512-/uUV3MV+vyAczO+vKrPdOW0Iaet7UnJMU4bNMinggGJTAnBPjCoLEYcyYtYHNnUNYlv4xZMH6hVIQCAozq8d5w==}
+ engines: {node: '>=14.21.3'}
+ hasBin: true
+
+ '@biomejs/cli-darwin-arm64@1.8.3':
+ resolution: {integrity: sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@biomejs/cli-darwin-x64@1.8.3':
+ resolution: {integrity: sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@biomejs/cli-linux-arm64-musl@1.8.3':
+ resolution: {integrity: sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@biomejs/cli-linux-arm64@1.8.3':
+ resolution: {integrity: sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@biomejs/cli-linux-x64-musl@1.8.3':
+ resolution: {integrity: sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [linux]
+
+ '@biomejs/cli-linux-x64@1.8.3':
+ resolution: {integrity: sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [linux]
+
+ '@biomejs/cli-win32-arm64@1.8.3':
+ resolution: {integrity: sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@biomejs/cli-win32-x64@1.8.3':
+ resolution: {integrity: sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [win32]
+
'@cloudflare/kv-asset-handler@0.3.4':
resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==}
engines: {node: '>=16.13'}
@@ -3891,6 +3947,41 @@ snapshots:
'@bcoe/v8-coverage@0.2.3': {}
+ '@biomejs/biome@1.8.3':
+ optionalDependencies:
+ '@biomejs/cli-darwin-arm64': 1.8.3
+ '@biomejs/cli-darwin-x64': 1.8.3
+ '@biomejs/cli-linux-arm64': 1.8.3
+ '@biomejs/cli-linux-arm64-musl': 1.8.3
+ '@biomejs/cli-linux-x64': 1.8.3
+ '@biomejs/cli-linux-x64-musl': 1.8.3
+ '@biomejs/cli-win32-arm64': 1.8.3
+ '@biomejs/cli-win32-x64': 1.8.3
+
+ '@biomejs/cli-darwin-arm64@1.8.3':
+ optional: true
+
+ '@biomejs/cli-darwin-x64@1.8.3':
+ optional: true
+
+ '@biomejs/cli-linux-arm64-musl@1.8.3':
+ optional: true
+
+ '@biomejs/cli-linux-arm64@1.8.3':
+ optional: true
+
+ '@biomejs/cli-linux-x64-musl@1.8.3':
+ optional: true
+
+ '@biomejs/cli-linux-x64@1.8.3':
+ optional: true
+
+ '@biomejs/cli-win32-arm64@1.8.3':
+ optional: true
+
+ '@biomejs/cli-win32-x64@1.8.3':
+ optional: true
+
'@cloudflare/kv-asset-handler@0.3.4':
dependencies:
mime: 3.0.0
From 9f976b90ed2c7b812c56fd62226836f258bad0ab Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 15:49:42 +0200
Subject: [PATCH 04/33] pnpm biome init
---
biome.json | 12 ++++++++++++
1 file changed, 12 insertions(+)
create mode 100644 biome.json
diff --git a/biome.json b/biome.json
new file mode 100644
index 0000000..3867749
--- /dev/null
+++ b/biome.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json",
+ "organizeImports": {
+ "enabled": true
+ },
+ "linter": {
+ "enabled": true,
+ "rules": {
+ "recommended": true
+ }
+ }
+}
From b49140e536ea6cec5c29c3de9b719244de0f0609 Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 15:51:02 +0200
Subject: [PATCH 05/33] Suggest biome vs code extension
---
.vscode/extensions.json | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 .vscode/extensions.json
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..a5824a5
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,5 @@
+{
+ "recommendations": [
+ "biomejs.biome"
+ ]
+}
\ No newline at end of file
From 9d035c83ede63207f6dc2388703c16c6011eb02f Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 15:52:35 +0200
Subject: [PATCH 06/33] Add format-and-lint script
---
README.md | 8 ++++++++
package.json | 4 +++-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 5478c2f..289ad6c 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,14 @@ Currently the repo is home to the following:
- apps/
- class-solid: web application with a graphical user interface for CLASS
+To run linter and formatter use
+
+```shell
+pnpm format-and-lint
+# To fix some of the issues automatically use
+pnpm format-and-lint:fix
+```
+
## Local build
To run a local development version:
diff --git a/package.json b/package.json
index 3a3fb2e..ffa2971 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,9 @@
"private": true,
"scripts": {
"build": "turbo build",
- "dev": "turbo dev"
+ "dev": "turbo dev",
+ "format-and-lint": "biome check .",
+ "format-and-lint:fix": "biome check . --write"
},
"devDependencies": {
"@biomejs/biome": "1.8.3",
From a748097ff5aff61aa5b835de3923e3e2c1d5650a Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 15:53:05 +0200
Subject: [PATCH 07/33] Enable formatter
---
biome.json | 3 +++
1 file changed, 3 insertions(+)
diff --git a/biome.json b/biome.json
index 3867749..6cc842d 100644
--- a/biome.json
+++ b/biome.json
@@ -8,5 +8,8 @@
"rules": {
"recommended": true
}
+ },
+ "formatter": {
+ "enabled": true
}
}
From 797932e17f371f3a69d9fecbe294560e1da961c6 Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 15:55:09 +0200
Subject: [PATCH 08/33] Add biome to CI
---
.github/workflows/quality.yml | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
create mode 100644 .github/workflows/quality.yml
diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml
new file mode 100644
index 0000000..461742b
--- /dev/null
+++ b/.github/workflows/quality.yml
@@ -0,0 +1,18 @@
+name: Code quality
+
+on:
+ push:
+ pull_request:
+
+jobs:
+ quality:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Setup Biome
+ uses: biomejs/setup-biome@v2
+ with:
+ version: latest
+ - name: Run Biome
+ run: biome ci .
From db93a82d333f81dd60836e74a922db911078644d Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 16:05:55 +0200
Subject: [PATCH 09/33] Ignore solidstart build files
---
.gitignore | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.gitignore b/.gitignore
index a627497..96dd0d7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,5 @@ dist-ssr
.cache
server/dist
public/dist
+apps/class-solid/.vinxi
+apps/class-solid/.output
From aa780d268b82a16ec062630f6d1c3ae3ec7a2d66 Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 16:06:55 +0200
Subject: [PATCH 10/33] Enable vcs
---
biome.json | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/biome.json b/biome.json
index 6cc842d..8f255b3 100644
--- a/biome.json
+++ b/biome.json
@@ -11,5 +11,10 @@
},
"formatter": {
"enabled": true
+ },
+ "vcs": {
+ "enabled": true,
+ "clientKind": "git",
+ "useIgnoreFile": true
}
}
From 76db05df13cb35adde0687b9579bdce460f474c2 Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 16:12:17 +0200
Subject: [PATCH 11/33] Move biome commands to own chapter
---
README.md | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md
index 289ad6c..3565193 100644
--- a/README.md
+++ b/README.md
@@ -25,14 +25,6 @@ Currently the repo is home to the following:
- apps/
- class-solid: web application with a graphical user interface for CLASS
-To run linter and formatter use
-
-```shell
-pnpm format-and-lint
-# To fix some of the issues automatically use
-pnpm format-and-lint:fix
-```
-
## Local build
To run a local development version:
@@ -44,6 +36,20 @@ pnpm install
pnpm run dev
```
+## Linter & formatter
+
+We use [biome](https://biomejs.dev/) to lint and format the code.
+The following commands are available
+
+```shell
+# To run linter and formatter use
+pnpm format-and-lint
+# To fix formatting and some lint errors run
+pnpm format-and-lint:fix
+# To run other biome comands use
+pnpm exec biome --help
+```
+
## Tech stack
The CLASS package is written in typescript. It uses [zod](https://zod.dev/) for
From 642f05543db99af41f4e23d6967afbf70a598a20 Mon Sep 17 00:00:00 2001
From: sverhoeven
Date: Thu, 1 Aug 2024 16:13:19 +0200
Subject: [PATCH 12/33] Format
with
pnpm exec biome format --write .
---
.vscode/extensions.json | 6 +-
.vscode/settings.json | 3 +-
apps/class-solid/app.config.ts | 14 +-
apps/class-solid/package.json | 54 +-
apps/class-solid/postcss.config.cjs | 10 +-
apps/class-solid/src/app.tsx | 24 +-
apps/class-solid/src/components/Analysis.tsx | 172 +++---
.../class-solid/src/components/Experiment.tsx | 196 +++----
.../src/components/ExperimentConfigForm.tsx | 196 +++----
apps/class-solid/src/components/Nav.tsx | 32 +-
apps/class-solid/src/components/icons.tsx | 106 ++--
apps/class-solid/src/components/ui/button.tsx | 100 ++--
apps/class-solid/src/components/ui/card.tsx | 80 ++-
apps/class-solid/src/components/ui/charts.tsx | 499 +++++++++---------
apps/class-solid/src/components/ui/dialog.tsx | 238 +++++----
apps/class-solid/src/components/ui/flex.tsx | 118 +++--
.../src/components/ui/text-field.tsx | 232 ++++----
apps/class-solid/src/entry-server.tsx | 32 +-
apps/class-solid/src/lib/utils.ts | 10 +-
apps/class-solid/src/routes/[...404].tsx | 48 +-
apps/class-solid/src/routes/about.tsx | 46 +-
apps/class-solid/src/routes/index.tsx | 136 ++---
apps/class-solid/tailwind.config.cjs | 192 +++----
apps/class-solid/tsconfig.json | 40 +-
apps/class-solid/ui.config.json | 20 +-
package.json | 26 +-
packages/class/jest.config.js | 10 +-
packages/class/jsr.json | 24 +-
packages/class/package.json | 44 +-
packages/class/src/class.test.ts | 60 +--
packages/class/src/class.ts | 250 ++++-----
packages/class/src/config.ts | 156 +++---
packages/class/src/runclass.ts | 10 +-
packages/class/src/runner.ts | 26 +-
packages/class/tsconfig.json | 38 +-
turbo.json | 41 +-
36 files changed, 1686 insertions(+), 1603 deletions(-)
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index a5824a5..16e8e66 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -1,5 +1,3 @@
{
- "recommendations": [
- "biomejs.biome"
- ]
-}
\ No newline at end of file
+ "recommendations": ["biomejs.biome"]
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 2c63c08..0967ef4 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,2 +1 @@
-{
-}
+{}
diff --git a/apps/class-solid/app.config.ts b/apps/class-solid/app.config.ts
index e932c6e..c1273b4 100644
--- a/apps/class-solid/app.config.ts
+++ b/apps/class-solid/app.config.ts
@@ -1,11 +1,11 @@
import { defineConfig } from "@solidjs/start/config";
export default defineConfig({
- server: {
- static: true,
- prerender: {
- routes: [],
- crawlLinks: true,
- },
- },
+ server: {
+ static: true,
+ prerender: {
+ routes: [],
+ crawlLinks: true,
+ },
+ },
});
diff --git a/apps/class-solid/package.json b/apps/class-solid/package.json
index 124d1d8..08e4ace 100644
--- a/apps/class-solid/package.json
+++ b/apps/class-solid/package.json
@@ -1,29 +1,29 @@
{
- "name": "class-solid",
- "type": "module",
- "scripts": {
- "dev": "vinxi dev",
- "build": "vinxi build",
- "start": "vinxi start"
- },
- "dependencies": {
- "@kobalte/core": "^0.13.3",
- "@classmodel/class": "workspace:*",
- "@solid-primitives/refs": "^1.0.8",
- "@solidjs/router": "^0.14.1",
- "@solidjs/start": "^1.0.4",
- "autoprefixer": "^10.4.19",
- "chart.js": "^4.4.3",
- "class-variance-authority": "^0.7.0",
- "clsx": "^2.1.1",
- "postcss": "^8.4.38",
- "solid-js": "^1.8.18",
- "tailwind-merge": "^2.4.0",
- "tailwindcss": "^3.4.4",
- "tailwindcss-animate": "^1.0.7",
- "vinxi": "^0.3.14"
- },
- "engines": {
- "node": ">=18"
- }
+ "name": "class-solid",
+ "type": "module",
+ "scripts": {
+ "dev": "vinxi dev",
+ "build": "vinxi build",
+ "start": "vinxi start"
+ },
+ "dependencies": {
+ "@kobalte/core": "^0.13.3",
+ "@classmodel/class": "workspace:*",
+ "@solid-primitives/refs": "^1.0.8",
+ "@solidjs/router": "^0.14.1",
+ "@solidjs/start": "^1.0.4",
+ "autoprefixer": "^10.4.19",
+ "chart.js": "^4.4.3",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.1.1",
+ "postcss": "^8.4.38",
+ "solid-js": "^1.8.18",
+ "tailwind-merge": "^2.4.0",
+ "tailwindcss": "^3.4.4",
+ "tailwindcss-animate": "^1.0.7",
+ "vinxi": "^0.3.14"
+ },
+ "engines": {
+ "node": ">=18"
+ }
}
diff --git a/apps/class-solid/postcss.config.cjs b/apps/class-solid/postcss.config.cjs
index 33ad091..e873f1a 100644
--- a/apps/class-solid/postcss.config.cjs
+++ b/apps/class-solid/postcss.config.cjs
@@ -1,6 +1,6 @@
module.exports = {
- plugins: {
- tailwindcss: {},
- autoprefixer: {},
- },
-}
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+};
diff --git a/apps/class-solid/src/app.tsx b/apps/class-solid/src/app.tsx
index 2c10a95..ea4aa33 100644
--- a/apps/class-solid/src/app.tsx
+++ b/apps/class-solid/src/app.tsx
@@ -5,16 +5,16 @@ import Nav from "~/components/Nav";
import "./app.css";
export default function App() {
- return (
- (
- <>
-
- {props.children}
- >
- )}
- >
-
-
- );
+ return (
+ (
+ <>
+
+ {props.children}
+ >
+ )}
+ >
+
+
+ );
}
diff --git a/apps/class-solid/src/components/Analysis.tsx b/apps/class-solid/src/components/Analysis.tsx
index 824be1c..bf71e8a 100644
--- a/apps/class-solid/src/components/Analysis.tsx
+++ b/apps/class-solid/src/components/Analysis.tsx
@@ -2,40 +2,40 @@ import { createUniqueId, For, Match, Switch } from "solid-js";
import { setAnalyses, analyses, experiments } from "~/lib/store";
import { MdiDownload, MdiCog, MdiContentCopy, MdiDelete } from "./icons";
import {
- Card,
- CardHeader,
- CardTitle,
- CardContent,
- CardFooter,
+ Card,
+ CardHeader,
+ CardTitle,
+ CardContent,
+ CardFooter,
} from "./ui/card";
import { Button } from "./ui/button";
import { Experiment } from "./Experiment";
import { LineChart } from "./ui/charts";
export interface Analysis {
- name: string;
- description: string;
- id: string;
- experiments: Experiment[] | undefined;
- type: string;
+ name: string;
+ description: string;
+ id: string;
+ experiments: Experiment[] | undefined;
+ type: string;
}
export function addAnalysis(type = "default") {
- const name = {
- default: "Final height",
- timeseries: "Timeseries",
- }[type];
+ const name = {
+ default: "Final height",
+ timeseries: "Timeseries",
+ }[type];
- setAnalyses(analyses.length, {
- name: name,
- id: createUniqueId(),
- experiments: experiments,
- type: type,
- });
+ setAnalyses(analyses.length, {
+ name: name,
+ id: createUniqueId(),
+ experiments: experiments,
+ type: type,
+ });
}
function deleteAnalysis(analysis: Analysis) {
- setAnalyses(analyses.filter((ana) => ana.id !== analysis.id));
+ setAnalyses(analyses.filter((ana) => ana.id !== analysis.id));
}
/** Very rudimentary plot showing time series of each experiment globally available
@@ -43,77 +43,77 @@ function deleteAnalysis(analysis: Analysis) {
* It isn't reactive; would require intercepting the signal to call chart.update()
*/
export function TimeSeriesPlot() {
- const chartData = {
- labels: experiments[0].output?.t,
- datasets: experiments
- .filter((e) => e.output)
- .map((e) => {
- return {
- label: e.id,
- data: e.output!.h,
- fill: false,
- };
- }),
- };
+ const chartData = {
+ labels: experiments[0].output?.t,
+ datasets: experiments
+ .filter((e) => e.output)
+ .map((e) => {
+ return {
+ label: e.id,
+ data: e.output!.h,
+ fill: false,
+ };
+ }),
+ };
- return ;
+ return ;
}
/** Simply show the final height for each experiment that has output */
function FinalHeights() {
- return (
-
- {(experiment, i) => {
- const h =
- (experiment.output &&
- experiment.output.h[experiment.output.h.length - 1]) ||
- 0;
- return (
-
-
- {experiment.id}: {h.toFixed()} m
-
-
- );
- }}
-
- );
+ return (
+
+ {(experiment, i) => {
+ const h =
+ (experiment.output &&
+ experiment.output.h[experiment.output.h.length - 1]) ||
+ 0;
+ return (
+
+
+ {experiment.id}: {h.toFixed()} m
+
+
+ );
+ }}
+
+ );
}
export function AnalysisCard(analysis: Analysis) {
- return (
-
-
- {/* TODO: make name & description editable */}
- {analysis.name}
-
-
- Unknown analysis type
}>
-
-
-
-
-
-
-
-
-
- {/* TODO: implement download functionality */}
-
- {/* TODO: implement "configure" functionality */}
-
- {/* TODO: implement duplicate functionality */}
-
-
-
-
- );
+ return (
+
+
+ {/* TODO: make name & description editable */}
+ {analysis.name}
+
+
+ Unknown analysis type}>
+
+
+
+
+
+
+
+
+
+ {/* TODO: implement download functionality */}
+
+ {/* TODO: implement "configure" functionality */}
+
+ {/* TODO: implement duplicate functionality */}
+
+
+
+
+ );
}
diff --git a/apps/class-solid/src/components/Experiment.tsx b/apps/class-solid/src/components/Experiment.tsx
index 5a683b5..01701c9 100644
--- a/apps/class-solid/src/components/Experiment.tsx
+++ b/apps/class-solid/src/components/Experiment.tsx
@@ -1,124 +1,124 @@
import { Button } from "~/components/ui/button";
import { MdiDownload, MdiCog, MdiContentCopy, MdiDelete } from "./icons";
import {
- Card,
- CardHeader,
- CardTitle,
- CardDescription,
- CardContent,
- CardFooter,
+ Card,
+ CardHeader,
+ CardTitle,
+ CardDescription,
+ CardContent,
+ CardFooter,
} from "./ui/card";
import { ClassConfig, classConfig } from "@classmodel/class/config";
import { ClassOutput, runClass } from "@classmodel/class/runner";
import { createUniqueId, createSignal } from "solid-js";
import { ExperimentConfigForm } from "./ExperimentConfigForm";
import {
- Dialog,
- DialogTrigger,
- DialogContent,
- DialogHeader,
- DialogTitle,
- DialogDescription,
- DialogFooter,
+ Dialog,
+ DialogTrigger,
+ DialogContent,
+ DialogHeader,
+ DialogTitle,
+ DialogDescription,
+ DialogFooter,
} from "./ui/dialog";
import { experiments, setExperiments } from "~/lib/store";
export interface Experiment {
- name: string;
- description: string;
- id: string;
- config: ClassConfig;
- output: ClassOutput | undefined;
+ name: string;
+ description: string;
+ id: string;
+ config: ClassConfig;
+ output: ClassOutput | undefined;
}
export function addDefaultExperiment() {
- const id = createUniqueId();
- const config = classConfig.parse({});
- const output = runClass(config);
- const newExperiment = {
- name: "My experiment",
- description: "Default experiment",
- id,
- config,
- output,
- };
- setExperiments(experiments.length, newExperiment);
+ const id = createUniqueId();
+ const config = classConfig.parse({});
+ const output = runClass(config);
+ const newExperiment = {
+ name: "My experiment",
+ description: "Default experiment",
+ id,
+ config,
+ output,
+ };
+ setExperiments(experiments.length, newExperiment);
}
export function AddCustomExperiment() {
- const config = classConfig.parse({});
- const [open, setOpen] = createSignal(false);
- return (
-
- );
+ const config = classConfig.parse({});
+ const [open, setOpen] = createSignal(false);
+ return (
+
+ );
}
function deleteExperiment(experiment: Experiment) {
- setExperiments(experiments.filter((exp) => exp.id !== experiment.id));
+ setExperiments(experiments.filter((exp) => exp.id !== experiment.id));
}
export function ExperimentCard(experiment: Experiment) {
- return (
-
-
- {/* TODO: make name & description editable */}
- {experiment.name}
- {experiment.id}
-
- {experiment.description}
-
- {/* TODO: implement download functionality */}
-
- {/* TODO: implement "configure" functionality */}
-
- {/* TODO: implement duplicate functionality */}
-
-
-
-
- );
+ return (
+
+
+ {/* TODO: make name & description editable */}
+ {experiment.name}
+ {experiment.id}
+
+ {experiment.description}
+
+ {/* TODO: implement download functionality */}
+
+ {/* TODO: implement "configure" functionality */}
+
+ {/* TODO: implement duplicate functionality */}
+
+
+
+
+ );
}
diff --git a/apps/class-solid/src/components/ExperimentConfigForm.tsx b/apps/class-solid/src/components/ExperimentConfigForm.tsx
index 73bcf3d..0ba5f7c 100644
--- a/apps/class-solid/src/components/ExperimentConfigForm.tsx
+++ b/apps/class-solid/src/components/ExperimentConfigForm.tsx
@@ -1,13 +1,13 @@
import {
- TextField,
- TextFieldInput,
- TextFieldLabel,
+ TextField,
+ TextFieldInput,
+ TextFieldLabel,
} from "~/components/ui/text-field";
import { For, Switch, Match } from "solid-js";
import {
- classConfig,
- ClassConfig,
- classDefaultConfigSchema,
+ classConfig,
+ ClassConfig,
+ classDefaultConfigSchema,
} from "@classmodel/class/config";
const ClassConfigJsonSchema = classDefaultConfigSchema.definitions!.classConfig;
@@ -17,115 +17,115 @@ const ClassConfigJsonSchema = classDefaultConfigSchema.definitions!.classConfig;
* "initialState.h_0" => { initialState: { h_0: ... } }
*/
function inflate(rawData: { [key: string]: any }) {
- const config: { [key: string]: any } = {};
+ const config: { [key: string]: any } = {};
- for (const key in rawData) {
- const parts = key.split(".");
- let parent = config;
+ for (const key in rawData) {
+ const parts = key.split(".");
+ let parent = config;
- parts.forEach((child, index) => {
- if (index === parts.length - 1) {
- // Prevent parsing "" as 0 later on
- if (rawData[key] !== "") {
- parent[child] = rawData[key];
- }
- } else {
- if (!parent[child]) {
- parent[child] = {};
- }
- parent = parent[child];
- }
- });
- }
+ parts.forEach((child, index) => {
+ if (index === parts.length - 1) {
+ // Prevent parsing "" as 0 later on
+ if (rawData[key] !== "") {
+ parent[child] = rawData[key];
+ }
+ } else {
+ if (!parent[child]) {
+ parent[child] = {};
+ }
+ parent = parent[child];
+ }
+ });
+ }
- return config;
+ return config;
}
export function ExperimentConfigForm({
- id,
- config,
- onSubmit,
+ id,
+ config,
+ onSubmit,
}: {
- id: string;
- config: ClassConfig;
- onSubmit: (c: ClassConfig) => void;
+ id: string;
+ config: ClassConfig;
+ onSubmit: (c: ClassConfig) => void;
}) {
- return (
-
- );
+ return (
+
+ );
}
function ObjectField({ schema, name = "" }: { schema: any; name?: string }) {
- // name can be empty, but only for root, which should be treated differently
- const isRoot = name === "";
+ // name can be empty, but only for root, which should be treated differently
+ const isRoot = name === "";
- function Children() {
- return (
-
- {([propName, propSchema]) => (
-
- )}
-
- );
- }
+ function Children() {
+ return (
+
+ {([propName, propSchema]) => (
+
+ )}
+
+ );
+ }
- return (
-
-
-
-
-
-
-
-
- );
+ return (
+
+
+
+
+
+
+
+
+ );
}
function PropField({ name, schema }: { name: string; schema: any }) {
- return (
- Unknown type}>
-
-
-
-
-
-
-
-
-
-
- );
+ return (
+ Unknown type}>
+
+
+
+
+
+
+
+
+
+
+ );
}
function MyTextField({ name, schema }: { name: string; schema: any }) {
- return (
-
- {schema.description ?? name}
-
-
- );
+ return (
+
+ {schema.description ?? name}
+
+
+ );
}
diff --git a/apps/class-solid/src/components/Nav.tsx b/apps/class-solid/src/components/Nav.tsx
index 8dd77d7..5c45a82 100644
--- a/apps/class-solid/src/components/Nav.tsx
+++ b/apps/class-solid/src/components/Nav.tsx
@@ -1,19 +1,21 @@
import { useLocation } from "@solidjs/router";
export default function Nav() {
- const location = useLocation();
- const active = (path: string) =>
- path == location.pathname ? "border-sky-600" : "border-transparent hover:border-sky-600";
- return (
-
- );
+ const location = useLocation();
+ const active = (path: string) =>
+ path == location.pathname
+ ? "border-sky-600"
+ : "border-transparent hover:border-sky-600";
+ return (
+
+ );
}
diff --git a/apps/class-solid/src/components/icons.tsx b/apps/class-solid/src/components/icons.tsx
index 79ac1ee..fd406bc 100644
--- a/apps/class-solid/src/components/icons.tsx
+++ b/apps/class-solid/src/components/icons.tsx
@@ -1,66 +1,66 @@
import { JSX } from "solid-js";
export function MdiDownload(props: JSX.IntrinsicElements["svg"]) {
- return (
-
- );
+ return (
+
+ );
}
export function MdiCog(props: JSX.IntrinsicElements["svg"]) {
- return (
-
- );
+ return (
+
+ );
}
export function MdiContentCopy(props: JSX.IntrinsicElements["svg"]) {
- return (
-
- );
+ return (
+
+ );
}
export function MdiDelete(props: JSX.IntrinsicElements["svg"]) {
- return (
-
- );
+ return (
+
+ );
}
diff --git a/apps/class-solid/src/components/ui/button.tsx b/apps/class-solid/src/components/ui/button.tsx
index 8f9be44..7deca87 100644
--- a/apps/class-solid/src/components/ui/button.tsx
+++ b/apps/class-solid/src/components/ui/button.tsx
@@ -1,52 +1,66 @@
-import { JSX, splitProps, ValidComponent } from "solid-js"
+import { JSX, splitProps, ValidComponent } from "solid-js";
-import * as ButtonPrimitive from "@kobalte/core/button"
-import { PolymorphicProps } from "@kobalte/core/polymorphic"
-import type { VariantProps } from "class-variance-authority"
-import { cva } from "class-variance-authority"
+import * as ButtonPrimitive from "@kobalte/core/button";
+import { PolymorphicProps } from "@kobalte/core/polymorphic";
+import type { VariantProps } from "class-variance-authority";
+import { cva } from "class-variance-authority";
-import { cn } from "~/lib/utils"
+import { cn } from "~/lib/utils";
const buttonVariants = cva(
- "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
- {
- variants: {
- variant: {
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
- outline: "border border-input hover:bg-accent hover:text-accent-foreground",
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
- ghost: "hover:bg-accent hover:text-accent-foreground",
- link: "text-primary underline-offset-4 hover:underline"
- },
- size: {
- default: "h-10 px-4 py-2",
- sm: "h-9 rounded-md px-3",
- lg: "h-11 rounded-md px-8",
- icon: "size-10"
- }
- },
- defaultVariants: {
- variant: "default",
- size: "default"
- }
- }
-)
+ "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
+ {
+ variants: {
+ variant: {
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
+ destructive:
+ "bg-destructive text-destructive-foreground hover:bg-destructive/90",
+ outline:
+ "border border-input hover:bg-accent hover:text-accent-foreground",
+ secondary:
+ "bg-secondary text-secondary-foreground hover:bg-secondary/80",
+ ghost: "hover:bg-accent hover:text-accent-foreground",
+ link: "text-primary underline-offset-4 hover:underline",
+ },
+ size: {
+ default: "h-10 px-4 py-2",
+ sm: "h-9 rounded-md px-3",
+ lg: "h-11 rounded-md px-8",
+ icon: "size-10",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
+ },
+ },
+);
-type ButtonProps = ButtonPrimitive.ButtonRootProps &
- VariantProps & { class?: string | undefined; children?: JSX.Element }
+type ButtonProps =
+ ButtonPrimitive.ButtonRootProps &
+ VariantProps & {
+ class?: string | undefined;
+ children?: JSX.Element;
+ };
const Button = (
- props: PolymorphicProps>
+ props: PolymorphicProps>,
) => {
- const [local, others] = splitProps(props as ButtonProps, ["variant", "size", "class"])
- return (
-
- )
-}
+ const [local, others] = splitProps(props as ButtonProps, [
+ "variant",
+ "size",
+ "class",
+ ]);
+ return (
+
+ );
+};
-export type { ButtonProps }
-export { Button, buttonVariants }
+export type { ButtonProps };
+export { Button, buttonVariants };
diff --git a/apps/class-solid/src/components/ui/card.tsx b/apps/class-solid/src/components/ui/card.tsx
index 939806b..e381a27 100644
--- a/apps/class-solid/src/components/ui/card.tsx
+++ b/apps/class-solid/src/components/ui/card.tsx
@@ -1,43 +1,65 @@
-import type { Component, ComponentProps } from "solid-js"
-import { splitProps } from "solid-js"
+import type { Component, ComponentProps } from "solid-js";
+import { splitProps } from "solid-js";
-import { cn } from "~/lib/utils"
+import { cn } from "~/lib/utils";
const Card: Component> = (props) => {
- const [local, others] = splitProps(props, ["class"])
- return (
-
- )
-}
+ const [local, others] = splitProps(props, ["class"]);
+ return (
+
+ );
+};
const CardHeader: Component> = (props) => {
- const [local, others] = splitProps(props, ["class"])
- return
-}
+ const [local, others] = splitProps(props, ["class"]);
+ return (
+
+ );
+};
const CardTitle: Component> = (props) => {
- const [local, others] = splitProps(props, ["class"])
- return (
-
- )
-}
+ const [local, others] = splitProps(props, ["class"]);
+ return (
+
+ );
+};
const CardDescription: Component> = (props) => {
- const [local, others] = splitProps(props, ["class"])
- return
-}
+ const [local, others] = splitProps(props, ["class"]);
+ return (
+
+ );
+};
const CardContent: Component> = (props) => {
- const [local, others] = splitProps(props, ["class"])
- return
-}
+ const [local, others] = splitProps(props, ["class"]);
+ return ;
+};
const CardFooter: Component> = (props) => {
- const [local, others] = splitProps(props, ["class"])
- return
-}
+ const [local, others] = splitProps(props, ["class"]);
+ return (
+
+ );
+};
-export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }
+export {
+ Card,
+ CardHeader,
+ CardFooter,
+ CardTitle,
+ CardDescription,
+ CardContent,
+};
diff --git a/apps/class-solid/src/components/ui/charts.tsx b/apps/class-solid/src/components/ui/charts.tsx
index 1d8c9fa..8ea3f17 100644
--- a/apps/class-solid/src/components/ui/charts.tsx
+++ b/apps/class-solid/src/components/ui/charts.tsx
@@ -1,291 +1,304 @@
-import type { Component } from "solid-js"
-import { createEffect, createSignal, mergeProps, on, onCleanup, onMount } from "solid-js"
-import { unwrap } from "solid-js/store"
+import type { Component } from "solid-js";
+import {
+ createEffect,
+ createSignal,
+ mergeProps,
+ on,
+ onCleanup,
+ onMount,
+} from "solid-js";
+import { unwrap } from "solid-js/store";
-import { mergeRefs, Ref } from "@solid-primitives/refs"
+import { mergeRefs, Ref } from "@solid-primitives/refs";
import type {
- ChartComponent,
- ChartData,
- ChartItem,
- ChartOptions,
- Plugin as ChartPlugin,
- ChartType,
- ChartTypeRegistry,
- TooltipModel
-} from "chart.js"
+ ChartComponent,
+ ChartData,
+ ChartItem,
+ ChartOptions,
+ Plugin as ChartPlugin,
+ ChartType,
+ ChartTypeRegistry,
+ TooltipModel,
+} from "chart.js";
import {
- ArcElement,
- BarController,
- BarElement,
- BubbleController,
- CategoryScale,
- Chart,
- Colors,
- DoughnutController,
- Filler,
- Legend,
- LinearScale,
- LineController,
- LineElement,
- PieController,
- PointElement,
- PolarAreaController,
- RadarController,
- RadialLinearScale,
- ScatterController,
- Tooltip
-} from "chart.js"
+ ArcElement,
+ BarController,
+ BarElement,
+ BubbleController,
+ CategoryScale,
+ Chart,
+ Colors,
+ DoughnutController,
+ Filler,
+ Legend,
+ LinearScale,
+ LineController,
+ LineElement,
+ PieController,
+ PointElement,
+ PolarAreaController,
+ RadarController,
+ RadialLinearScale,
+ ScatterController,
+ Tooltip,
+} from "chart.js";
type TypedChartProps = {
- data: ChartData
- options?: ChartOptions
- plugins?: ChartPlugin[]
- ref?: Ref
- width?: number | undefined
- height?: number | undefined
-}
+ data: ChartData;
+ options?: ChartOptions;
+ plugins?: ChartPlugin[];
+ ref?: Ref;
+ width?: number | undefined;
+ height?: number | undefined;
+};
type ChartProps = TypedChartProps & {
- type: ChartType
-}
+ type: ChartType;
+};
type ChartContext = {
- chart: Chart
- tooltip: TooltipModel
-}
+ chart: Chart;
+ tooltip: TooltipModel;
+};
const BaseChart: Component = (rawProps) => {
- const [canvasRef, setCanvasRef] = createSignal()
- const [chart, setChart] = createSignal()
+ const [canvasRef, setCanvasRef] = createSignal();
+ const [chart, setChart] = createSignal();
- const props = mergeProps(
- {
- width: 512,
- height: 512,
- options: { responsive: true } as ChartOptions,
- plugins: [] as ChartPlugin[]
- },
- rawProps
- )
+ const props = mergeProps(
+ {
+ width: 512,
+ height: 512,
+ options: { responsive: true } as ChartOptions,
+ plugins: [] as ChartPlugin[],
+ },
+ rawProps,
+ );
- const init = () => {
- const ctx = canvasRef()?.getContext("2d") as ChartItem
- const config = unwrap(props)
- const chart = new Chart(ctx, {
- type: config.type,
- data: config.data,
- options: config.options,
- plugins: config.plugins
- })
- setChart(chart)
- }
+ const init = () => {
+ const ctx = canvasRef()?.getContext("2d") as ChartItem;
+ const config = unwrap(props);
+ const chart = new Chart(ctx, {
+ type: config.type,
+ data: config.data,
+ options: config.options,
+ plugins: config.plugins,
+ });
+ setChart(chart);
+ };
- onMount(() => init())
+ onMount(() => init());
- createEffect(
- on(
- () => props.data,
- () => {
- chart()!.data = props.data
- chart()!.update()
- },
- { defer: true }
- )
- )
+ createEffect(
+ on(
+ () => props.data,
+ () => {
+ chart()!.data = props.data;
+ chart()!.update();
+ },
+ { defer: true },
+ ),
+ );
- createEffect(
- on(
- () => props.options,
- () => {
- chart()!.options = props.options
- chart()!.update()
- },
- { defer: true }
- )
- )
+ createEffect(
+ on(
+ () => props.options,
+ () => {
+ chart()!.options = props.options;
+ chart()!.update();
+ },
+ { defer: true },
+ ),
+ );
- createEffect(
- on(
- [() => props.width, () => props.height],
- () => {
- chart()!.resize(props.width, props.height)
- },
- { defer: true }
- )
- )
+ createEffect(
+ on(
+ [() => props.width, () => props.height],
+ () => {
+ chart()!.resize(props.width, props.height);
+ },
+ { defer: true },
+ ),
+ );
- createEffect(
- on(
- () => props.type,
- () => {
- const dimensions = [chart()!.width, chart()!.height]
- chart()!.destroy()
- init()
- chart()!.resize(...dimensions)
- },
- { defer: true }
- )
- )
+ createEffect(
+ on(
+ () => props.type,
+ () => {
+ const dimensions = [chart()!.width, chart()!.height];
+ chart()!.destroy();
+ init();
+ chart()!.resize(...dimensions);
+ },
+ { defer: true },
+ ),
+ );
- onCleanup(() => {
- chart()?.destroy()
- mergeRefs(props.ref, null)
- })
+ onCleanup(() => {
+ chart()?.destroy();
+ mergeRefs(props.ref, null);
+ });
- Chart.register(Colors, Filler, Legend, Tooltip)
- return (
-