ci: Add codecov

This commit is contained in:
deytenit committed 2026-01-30 22:54:10 +03:00
1 parent 5225285aba
commit ff15814404
9 files changed
+199 -26

No files matched your search

@@ -130,15 +130,13 @@ jobs:
run: pnpm --filter @ermnvldmr/vite-config build
- name: Build Storybook config
run: pnpm --filter @ermnvldmr/storybook-config build
- name: Test STL package
run: pnpm --filter @ermnvldmr/stl test:coverage
- name: Test UI package
run: pnpm --filter @ermnvldmr/ui test:coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: ./packages/stl/coverage/lcov.info,./packages/ui/coverage/lcov.info
flags: stl,ui
files: ./packages/ui/coverage/lcov.info
flags: ui
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
@@ -169,6 +167,36 @@ jobs:
- name: Build UI Storybook
run: pnpm --filter @ermnvldmr/ui build-storybook
test-storybook:
name: Test - Storybook
needs: build-storybook
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9.12.3
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install Playwright browsers
run: pnpm exec playwright install --with-deps chromium
- name: Build UI Storybook
run: pnpm --filter @ermnvldmr/ui build-storybook
- name: Test Storybook
run: pnpm --filter @ermnvldmr/ui test:storybook:ci
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: ./packages/ui/coverage/storybook/lcov.info
flags: ui-storybook
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
build-ui:
name: Build - UI
needs: build-configs
@@ -174,6 +174,13 @@ jobs:
run: pnpm --filter @ermnvldmr/ui test:coverage
- name: Test WWW service
run: pnpm --filter @ermnvldmr/www test:coverage
- name: Upload Unit coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: ./services/www/coverage/lcov.info
flags: www
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- name: Download Storybook build
uses: actions/download-artifact@v4
with:
@@ -181,11 +188,11 @@ jobs:
path: services/www/storybook-static/
- name: Serve Storybook and run tests with coverage
run: pnpm --filter @ermnvldmr/www test:storybook:ci
- name: Upload coverage to Codecov
- name: Upload Storybook coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: ./services/www/coverage/lcov.info,./services/www/coverage/storybook/coverage-storybook.json
flags: unittests,storybook
files: ./services/www/coverage/storybook/lcov.info
flags: www-storybook
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+3 -1
View File
@@ -1,5 +1,7 @@
# [ermnvldmr.com](https://ermnvldmr.com)
[![codecov](https://codecov.io/gh/deytenit/ermnvldmr.com/graph/badge.svg)](https://app.codecov.io/github/deytenit/ermnvldmr.com)
The monorepo powering the front pages of my own
## Quick Start
@@ -52,7 +54,7 @@ Want to contribute or understand the codebase.
- UI Library: `pnpm ui:dev`
- **Development Guide**: [AGENTS.md](./AGENTS.md)
- **Component Development**: `pnpm ui:storybook`
- **Testing**: `pnpm test` or `pnpm test:coverage`
- **Testing**: `pnpm test` or `pnpm test:coverage` (View results on [Codecov](https://app.codecov.io/github/deytenit/ermnvldmr.com))
- **Code Quality**: `pnpm lint` and `pnpm typecheck`
### Designer
+47
View File
@@ -0,0 +1,47 @@
codecov:
notify:
wait_for_ci: true
coverage:
status:
project:
default:
target: auto
threshold: 1%
stl:
target: auto
flags:
- stl
ui:
target: auto
flags:
- ui
ui-storybook:
target: auto
flags:
- ui-storybook
www:
target: auto
flags:
- www
www-storybook:
target: auto
flags:
- www-storybook
flags:
stl:
paths:
- packages/stl
ui:
paths:
- packages/ui
ui-storybook:
paths:
- packages/ui
www:
paths:
- services/www
www-storybook:
paths:
- services/www
+1
View File
@@ -32,6 +32,7 @@
"@ermnvldmr/jest-config": "workspace:*",
"@ermnvldmr/vite-config": "workspace:*",
"jest": "^30.2.0",
"ts-jest": "^29.4.6",
"typescript": "^5.8.3",
"vite": "^7.2.2"
},
+11
View File
@@ -1,4 +1,6 @@
import type { StorybookConfig } from '@storybook/react-vite';
import { mergeConfig } from 'vite';
import { resolve } from 'path';
const config: StorybookConfig = {
stories: ['../src/**/*.stories.@(js|jsx|ts|tsx|mdx)'],
@@ -21,6 +23,15 @@ const config: StorybookConfig = {
propFilter: (prop) => (prop.parent ? !/node_modules/.test(prop.parent.fileName) : true),
},
},
viteFinal: async (config) => {
return mergeConfig(config, {
resolve: {
alias: {
'@ermnvldmr/stl': resolve(__dirname, '../../stl/src/index.ts'),
},
},
});
},
};
export default config;
+12 -1
View File
@@ -24,6 +24,7 @@
"storybook": "storybook dev -p 6007",
"build-storybook": "storybook build",
"test:storybook": "@storybook/test-runner",
"test:storybook:ci": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"http-server storybook-static --port 6006 --silent\" \"wait-on tcp:127.0.0.1:6006 && test-storybook --coverage --url http://127.0.0.1:6006\"",
"lint": "eslint src --max-warnings 0",
"typecheck": "tsc --noEmit",
"clean": "rm -rf dist coverage storybook-static"
@@ -45,21 +46,31 @@
"@ermnvldmr/jest-config": "workspace:*",
"@ermnvldmr/storybook-config": "workspace:*",
"@ermnvldmr/vite-config": "workspace:*",
"@storybook/addon-a11y": "^8.6.15",
"@storybook/addon-coverage": "^3.0.0",
"@storybook/addon-essentials": "^8.6.15",
"@storybook/addon-interactions": "^8.6.15",
"@storybook/addon-themes": "^8.6.15",
"@storybook/react": "^8.6.15",
"@storybook/react-vite": "^8.6.15",
"@storybook/test": "^8.6.15",
"@storybook/test-runner": "^0.19.1",
"@tailwindcss/vite": "^4.1.4",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.1",
"@testing-library/user-event": "^14.6.1",
"@types/react": "^19.1.2",
"@types/react-dom": "^19.1.2",
"concurrently": "^9.1.2",
"http-server": "^14.1.1",
"jest": "^30.2.0",
"jest-environment-jsdom": "^30.2.0",
"storybook": "^8.6.15",
"ts-jest": "^29.4.6",
"typescript": "^5.8.3",
"vite": "^7.2.2",
"vite-plugin-istanbul": "^7.2.1"
"vite-plugin-istanbul": "^7.2.1",
"wait-on": "^8.0.3"
},
"peerDependencies": {
"react": "^19.1.0",
+82 -17
View File
@@ -83,13 +83,13 @@ importers:
version: 30.0.0
jest:
specifier: ^30.2.0
version: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))
version: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
jest-environment-jsdom:
specifier: ^30.2.0
version: 30.2.0
ts-jest:
specifier: ^29.4.6
version: 29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(esbuild@0.27.2)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2)))(typescript@5.8.3)
version: 29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(esbuild@0.27.2)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3)))(typescript@5.8.3)
devDependencies:
typescript:
specifier: ^5.8.3
@@ -118,7 +118,10 @@ importers:
version: link:../vite-config
jest:
specifier: ^30.2.0
version: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))
version: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
ts-jest:
specifier: ^29.4.6
version: 29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(esbuild@0.27.2)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3)))(typescript@5.8.3)
typescript:
specifier: ^5.8.3
version: 5.8.3
@@ -220,6 +223,21 @@ importers:
'@ermnvldmr/vite-config':
specifier: workspace:*
version: link:../vite-config
'@storybook/addon-a11y':
specifier: ^8.6.15
version: 8.6.15(storybook@8.6.15(prettier@3.5.3))
'@storybook/addon-coverage':
specifier: ^3.0.0
version: 3.0.0(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
'@storybook/addon-essentials':
specifier: ^8.6.15
version: 8.6.15(@types/react@19.2.9)(storybook@8.6.15(prettier@3.5.3))
'@storybook/addon-interactions':
specifier: ^8.6.15
version: 8.6.15(storybook@8.6.15(prettier@3.5.3))
'@storybook/addon-themes':
specifier: ^8.6.15
version: 8.6.15(storybook@8.6.15(prettier@3.5.3))
'@storybook/react':
specifier: ^8.6.15
version: 8.6.15(@storybook/test@8.6.15(storybook@8.6.15(prettier@3.5.3)))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@8.6.15(prettier@3.5.3))(typescript@5.8.3)
@@ -229,6 +247,9 @@ importers:
'@storybook/test':
specifier: ^8.6.15
version: 8.6.15(storybook@8.6.15(prettier@3.5.3))
'@storybook/test-runner':
specifier: ^0.19.1
version: 0.19.1(@swc/helpers@0.5.18)(@types/node@25.0.10)(storybook@8.6.15(prettier@3.5.3))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
'@tailwindcss/vite':
specifier: ^4.1.4
version: 4.1.18(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
@@ -247,15 +268,24 @@ importers:
'@types/react-dom':
specifier: ^19.1.2
version: 19.2.3(@types/react@19.2.9)
concurrently:
specifier: ^9.1.2
version: 9.2.1
http-server:
specifier: ^14.1.1
version: 14.1.1
jest:
specifier: ^30.2.0
version: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))
version: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
jest-environment-jsdom:
specifier: ^30.2.0
version: 30.2.0
storybook:
specifier: ^8.6.15
version: 8.6.15(prettier@3.5.3)
ts-jest:
specifier: ^29.4.6
version: 29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(esbuild@0.25.12)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3)))(typescript@5.8.3)
typescript:
specifier: ^5.8.3
version: 5.8.3
@@ -265,6 +295,9 @@ importers:
vite-plugin-istanbul:
specifier: ^7.2.1
version: 7.2.1(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
wait-on:
specifier: ^8.0.3
version: 8.0.5
packages/vite-config:
dependencies:
@@ -317,7 +350,7 @@ importers:
version: link:../../packages/eslint-config
'@tailwindcss/vite':
specifier: ^4.1.4
version: 4.1.18(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
version: 4.1.18(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
eslint:
specifier: ^9.25.1
version: 9.39.2(jiti@2.6.1)
@@ -417,7 +450,7 @@ importers:
version: 14.1.1
jest:
specifier: ^30.2.0
version: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
version: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
jest-environment-jsdom:
specifier: ^30.2.0
version: 30.2.0
@@ -436,6 +469,9 @@ importers:
storybook:
specifier: ^8.6.15
version: 8.6.15(prettier@3.5.3)
ts-jest:
specifier: ^29.4.6
version: 29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(esbuild@0.27.2)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3)))(typescript@5.8.3)
ts-node:
specifier: ^10.9.2
version: 10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3)
@@ -8539,7 +8575,7 @@ snapshots:
- supports-color
- ts-node
'@jest/core@30.2.0(esbuild-register@3.6.0(esbuild@0.27.2))':
'@jest/core@30.2.0(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))':
dependencies:
'@jest/console': 30.2.0
'@jest/pattern': 30.0.1
@@ -8554,7 +8590,7 @@ snapshots:
exit-x: 0.2.2
graceful-fs: 4.2.11
jest-changed-files: 30.2.0
jest-config: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))
jest-config: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
jest-haste-map: 30.2.0
jest-message-util: 30.2.0
jest-regex-util: 30.0.1
@@ -10844,6 +10880,13 @@ snapshots:
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.18
'@tailwindcss/oxide-win32-x64-msvc': 4.1.18
'@tailwindcss/vite@4.1.18(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))':
dependencies:
'@tailwindcss/node': 4.1.18
'@tailwindcss/oxide': 4.1.18
tailwindcss: 4.1.18
vite: 6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)
'@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))':
dependencies:
'@tailwindcss/node': 4.1.18
@@ -13606,15 +13649,15 @@ snapshots:
- supports-color
- ts-node
jest-cli@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2)):
jest-cli@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3)):
dependencies:
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.2))
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
'@jest/test-result': 30.2.0
'@jest/types': 30.2.0
chalk: 4.1.2
exit-x: 0.2.2
import-local: 3.2.0
jest-config: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))
jest-config: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
jest-util: 30.2.0
jest-validate: 30.2.0
yargs: 17.7.2
@@ -13690,7 +13733,7 @@ snapshots:
- babel-plugin-macros
- supports-color
jest-config@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2)):
jest-config@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3)):
dependencies:
'@babel/core': 7.28.6
'@jest/get-type': 30.1.0
@@ -13719,6 +13762,7 @@ snapshots:
optionalDependencies:
'@types/node': 25.0.10
esbuild-register: 3.6.0(esbuild@0.27.2)
ts-node: 10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -14244,12 +14288,12 @@ snapshots:
- supports-color
- ts-node
jest@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2)):
jest@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3)):
dependencies:
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.2))
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
'@jest/types': 30.2.0
import-local: 3.2.0
jest-cli: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))
jest-cli: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -16269,12 +16313,33 @@ snapshots:
ts-dedent@2.2.0: {}
ts-jest@29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(esbuild@0.27.2)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2)))(typescript@5.8.3):
ts-jest@29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(esbuild@0.25.12)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3)))(typescript@5.8.3):
dependencies:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
handlebars: 4.7.8
jest: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))
jest: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
json5: 2.2.3
lodash.memoize: 4.1.2
make-error: 1.3.6
semver: 7.7.3
type-fest: 4.41.0
typescript: 5.8.3
yargs-parser: 21.1.1
optionalDependencies:
'@babel/core': 7.28.6
'@jest/transform': 30.2.0
'@jest/types': 30.2.0
babel-jest: 30.2.0(@babel/core@7.28.6)
esbuild: 0.25.12
jest-util: 30.2.0
ts-jest@29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(esbuild@0.27.2)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3)))(typescript@5.8.3):
dependencies:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
handlebars: 4.7.8
jest: 30.2.0(@types/node@25.0.10)(esbuild-register@3.6.0(esbuild@0.27.2))(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@25.0.10)(typescript@5.8.3))
json5: 2.2.3
lodash.memoize: 4.1.2
make-error: 1.3.6
+1
View File
@@ -58,6 +58,7 @@
"prettier-plugin-astro": "^0.14.1",
"prettier-plugin-tailwindcss": "^0.6.11",
"storybook": "^8.6.15",
"ts-jest": "^29.4.6",
"ts-node": "^10.9.2",
"typescript": "^5.8.3",
"vite": "^7.2.2",