From 7dfe02a75ba92c15d1378b2109721e4c9997ca92 Mon Sep 17 00:00:00 2001 From: Yuta Hiroto Date: Sun, 5 Jan 2025 21:39:39 +0900 Subject: [PATCH] chore(deps): use lefthook instead of lint-staged --- .githooks/pre-commit | 2 - .gitignore | 2 + .internal/create-app-foundation/package.json | 2 +- .internal/create-app-foundation/src/index.mjs | 1 + .internal/site/.vitepress/config.mts | 4 +- .../introduction/what-is-web-app-template.md | 2 +- .../site/src/public/images/libs/lefthook.png | Bin 0 -> 43789 bytes .../src/public/images/libs/lint-staged.png | Bin 20160 -> 0 bytes .internal/tests/common.test.mjs.snapshot | 7 +- .internal/tests/no-docker.test.mjs.snapshot | 3 +- .internal/tests/no-e2e.test.mjs.snapshot | 7 +- .internal/tests/no-otel.test.mjs.snapshot | 5 +- README.md | 2 +- lefthook.yml | 18 + lint-staged.config.mjs | 7 - package.json | 6 +- pnpm-lock.yaml | 429 ++++-------------- 17 files changed, 140 insertions(+), 357 deletions(-) delete mode 100755 .githooks/pre-commit create mode 100644 .internal/site/src/public/images/libs/lefthook.png delete mode 100644 .internal/site/src/public/images/libs/lint-staged.png create mode 100644 lefthook.yml delete mode 100644 lint-staged.config.mjs diff --git a/.githooks/pre-commit b/.githooks/pre-commit deleted file mode 100755 index a926c36..0000000 --- a/.githooks/pre-commit +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -npx lint-staged diff --git a/.gitignore b/.gitignore index 1d258e5..0422928 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +.githooks + node_modules coverage diff --git a/.internal/create-app-foundation/package.json b/.internal/create-app-foundation/package.json index b435b24..f6a7369 100644 --- a/.internal/create-app-foundation/package.json +++ b/.internal/create-app-foundation/package.json @@ -1,6 +1,6 @@ { "name": "create-app-foundation", - "version": "1.0.13", + "version": "1.0.14", "description": "Create a web app template using Next.js, NextAuth, Prisma, etc. An easy way to begin development 🐕", "bin": { "create-app-foundation": "src/index.mjs" diff --git a/.internal/create-app-foundation/src/index.mjs b/.internal/create-app-foundation/src/index.mjs index 60a436b..e753f9d 100755 --- a/.internal/create-app-foundation/src/index.mjs +++ b/.internal/create-app-foundation/src/index.mjs @@ -123,6 +123,7 @@ async function copyDir(from, to) { await copyDirectory(from, tmpDir, [ // add files written in .gitignore + /.githooks/, /node_modules/, /\.DS_Store$/, /\.next$/, diff --git a/.internal/site/.vitepress/config.mts b/.internal/site/.vitepress/config.mts index 6645841..50d1e97 100644 --- a/.internal/site/.vitepress/config.mts +++ b/.internal/site/.vitepress/config.mts @@ -67,8 +67,8 @@ export default defineConfig({ { icon: "twitter", link: "https://x.com/about_hiroppy" }, ], editLink: { - // TODO - pattern: "https://github.com/vuejs/vitepress/edit/main/docs/:path", + pattern: + "https://github.com/hiroppy/web-app-template/tree/main/.internal/site/src/:path", text: "Edit this page on GitHub", }, lastUpdated: { diff --git a/.internal/site/src/introduction/what-is-web-app-template.md b/.internal/site/src/introduction/what-is-web-app-template.md index 6778b5c..07dec8b 100644 --- a/.internal/site/src/introduction/what-is-web-app-template.md +++ b/.internal/site/src/introduction/what-is-web-app-template.md @@ -33,7 +33,7 @@ These are the main libraries that are installed. However, Playwright and OpenTel | |
zod
Zod
|
otel
OpenTelemetry
|
prisma
Prisma
|
prisma
PostgreSQL
| | | | | | | **Tools** |
typescirpt
TypeScript
|
pnpm
pnpm
|
biome
Biome
|
prettier
Prettier
| -| |
editorconfig
EditorConfig
|
lint-staged
lint-staged
|
docker
Docker
| | +| |
editorconfig
EditorConfig
|
lefthook
lefthook
|
docker
Docker
| | | | | | | | **Testing** |
vitest
Vitest
|
testing-library
Testing Library
|
playwright
Playwright
|
testcontainers
Testcontainers
| | | | | diff --git a/.internal/site/src/public/images/libs/lefthook.png b/.internal/site/src/public/images/libs/lefthook.png new file mode 100644 index 0000000000000000000000000000000000000000..fc0d1ba2eb38c983a88346bd0d6f04a0dabf202c GIT binary patch literal 43789 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 diff --git a/.internal/tests/common.test.mjs.snapshot b/.internal/tests/common.test.mjs.snapshot index b34fd50..533036c 100644 --- a/.internal/tests/common.test.mjs.snapshot +++ b/.internal/tests/common.test.mjs.snapshot @@ -4,7 +4,6 @@ exports[`common > should put files 1`] = ` "internal-tests-output-common/.env", "internal-tests-output-common/.env.sample", "internal-tests-output-common/.env.test", - "internal-tests-output-common/.githooks/pre-commit", "internal-tests-output-common/.github/actions/setup-db/action.yml", "internal-tests-output-common/.github/actions/setup-node/action.yml", "internal-tests-output-common/.github/actions/setup-prisma/action.yml", @@ -19,7 +18,7 @@ exports[`common > should put files 1`] = ` "internal-tests-output-common/README.md", "internal-tests-output-common/biome.json", "internal-tests-output-common/compose.yml", - "internal-tests-output-common/lint-staged.config.mjs", + "internal-tests-output-common/lefthook.yml", "internal-tests-output-common/next.config.ts", "internal-tests-output-common/otel-collector-config.yml", "internal-tests-output-common/package.json", @@ -128,6 +127,8 @@ exports[`common > should update .github/workflows/ci.yml 1`] = ` exports[`common > should update .gitignore 1`] = ` [ + ".githooks", + "", "node_modules", "coverage", "", @@ -307,7 +308,7 @@ exports[`common > should update dependencies 1`] = ` "dotenv", "dotenv-cli", "jsdom", - "lint-staged", + "lefthook", "postcss", "prettier", "prisma", diff --git a/.internal/tests/no-docker.test.mjs.snapshot b/.internal/tests/no-docker.test.mjs.snapshot index 34b5d44..3d66f7d 100644 --- a/.internal/tests/no-docker.test.mjs.snapshot +++ b/.internal/tests/no-docker.test.mjs.snapshot @@ -4,7 +4,6 @@ exports[`no-docker > should put files 1`] = ` "internal-tests-output-no-docker/.env", "internal-tests-output-no-docker/.env.sample", "internal-tests-output-no-docker/.env.test", - "internal-tests-output-no-docker/.githooks/pre-commit", "internal-tests-output-no-docker/.github/actions/setup-db/action.yml", "internal-tests-output-no-docker/.github/actions/setup-node/action.yml", "internal-tests-output-no-docker/.github/actions/setup-prisma/action.yml", @@ -18,7 +17,7 @@ exports[`no-docker > should put files 1`] = ` "internal-tests-output-no-docker/README.md", "internal-tests-output-no-docker/biome.json", "internal-tests-output-no-docker/compose.yml", - "internal-tests-output-no-docker/lint-staged.config.mjs", + "internal-tests-output-no-docker/lefthook.yml", "internal-tests-output-no-docker/next.config.ts", "internal-tests-output-no-docker/otel-collector-config.yml", "internal-tests-output-no-docker/package.json", diff --git a/.internal/tests/no-e2e.test.mjs.snapshot b/.internal/tests/no-e2e.test.mjs.snapshot index 834b58f..34d4d61 100644 --- a/.internal/tests/no-e2e.test.mjs.snapshot +++ b/.internal/tests/no-e2e.test.mjs.snapshot @@ -4,7 +4,6 @@ exports[`no-e2e > should put files 1`] = ` "internal-tests-output-no-e2e/.env", "internal-tests-output-no-e2e/.env.sample", "internal-tests-output-no-e2e/.env.test", - "internal-tests-output-no-e2e/.githooks/pre-commit", "internal-tests-output-no-e2e/.github/actions/setup-db/action.yml", "internal-tests-output-no-e2e/.github/actions/setup-node/action.yml", "internal-tests-output-no-e2e/.github/actions/setup-prisma/action.yml", @@ -19,7 +18,7 @@ exports[`no-e2e > should put files 1`] = ` "internal-tests-output-no-e2e/README.md", "internal-tests-output-no-e2e/biome.json", "internal-tests-output-no-e2e/compose.yml", - "internal-tests-output-no-e2e/lint-staged.config.mjs", + "internal-tests-output-no-e2e/lefthook.yml", "internal-tests-output-no-e2e/next.config.ts", "internal-tests-output-no-e2e/otel-collector-config.yml", "internal-tests-output-no-e2e/package.json", @@ -116,6 +115,8 @@ exports[`no-e2e > should update .github/workflows/ci.yml 1`] = ` exports[`no-e2e > should update .gitignore 1`] = ` [ + ".githooks", + "", "node_modules", "coverage", "", @@ -234,7 +235,7 @@ exports[`no-e2e > should update dependencies 1`] = ` "dotenv", "dotenv-cli", "jsdom", - "lint-staged", + "lefthook", "postcss", "prettier", "prisma", diff --git a/.internal/tests/no-otel.test.mjs.snapshot b/.internal/tests/no-otel.test.mjs.snapshot index 44a1a44..37ef101 100644 --- a/.internal/tests/no-otel.test.mjs.snapshot +++ b/.internal/tests/no-otel.test.mjs.snapshot @@ -4,7 +4,6 @@ exports[`no-otel > should put files 1`] = ` "internal-tests-output-no-otel/.env", "internal-tests-output-no-otel/.env.sample", "internal-tests-output-no-otel/.env.test", - "internal-tests-output-no-otel/.githooks/pre-commit", "internal-tests-output-no-otel/.github/actions/setup-db/action.yml", "internal-tests-output-no-otel/.github/actions/setup-node/action.yml", "internal-tests-output-no-otel/.github/actions/setup-prisma/action.yml", @@ -19,7 +18,7 @@ exports[`no-otel > should put files 1`] = ` "internal-tests-output-no-otel/README.md", "internal-tests-output-no-otel/biome.json", "internal-tests-output-no-otel/compose.yml", - "internal-tests-output-no-otel/lint-staged.config.mjs", + "internal-tests-output-no-otel/lefthook.yml", "internal-tests-output-no-otel/next.config.ts", "internal-tests-output-no-otel/package.json", "internal-tests-output-no-otel/playwright.config.ts", @@ -151,7 +150,7 @@ exports[`no-otel > should update dependencies 1`] = ` "dotenv", "dotenv-cli", "jsdom", - "lint-staged", + "lefthook", "postcss", "prettier", "prisma", diff --git a/README.md b/README.md index 13f0c6e..b9cb3f5 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ | |
zod
Zod
|
otel
OpenTelemetry
|
prisma
Prisma
|
prisma
PostgreSQL
| | | | | | | **Tools** |
typescirpt
TypeScript
|
pnpm
pnpm
|
biome
Biome
|
prettier
Prettier
| -| |
editorconfig
EditorConfig
|
lint-staged
lint-staged
|
docker
Docker
| | +| |
editorconfig
EditorConfig
|
lefthook
lefthook
|
docker
Docker
| | | | | | | | **Testing** |
vitest
Vitest
|
testing-library
Testing Library
|
playwright
Playwright
|
testcontainers
Testcontainers
| | | | | diff --git a/lefthook.yml b/lefthook.yml new file mode 100644 index 0000000..1ee5bfb --- /dev/null +++ b/lefthook.yml @@ -0,0 +1,18 @@ +pre-commit: + parallel: true + commands: + biome: + glob: "*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}" + run: | + npx biome check --write --no-errors-on-unmatched {staged_files} + stage_fixed: true + prettier: + glob: "*.{md,yml}" + run: | + npx prettier --write {staged_files} + stage_fixed: true + prisma: + glob: "*.prisma" + run: | + npx prisma format {staged_files} + stage_fixed: true diff --git a/lint-staged.config.mjs b/lint-staged.config.mjs deleted file mode 100644 index 4845036..0000000 --- a/lint-staged.config.mjs +++ /dev/null @@ -1,7 +0,0 @@ -export default { - "*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}": [ - "biome check --write --no-errors-on-unmatched", - ], - "*.{md,yml}": ["prettier --write"], - "*.prisma": ["prisma format"], -}; diff --git a/package.json b/package.json index ac98f43..7d8d462 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "", "packageManager": "pnpm@9.15.2", "scripts": { - "setup": "git config --local core.hooksPath .githooks && corepack enable pnpm", + "setup": "corepack enable pnpm", "dev": "pnpm db:up && pnpm db:migrate && pnpm generate:client && next dev", "start": "next start", "build": "pnpm generate:client && next build", @@ -18,7 +18,7 @@ "db:reset": "prisma migrate reset -f", "db:deploy": "prisma migrate deploy", "db:studio": "prisma studio", - "generate:client": "prisma generate", + "generate:client": "prisma generate && prettier -w ./prisma/ERD.md", "lint": "biome lint --write .", "fmt": "prettier -w './**/*.{md,yml}' && biome format --write ." }, @@ -56,7 +56,7 @@ "dotenv": "16.4.7", "dotenv-cli": "8.0.0", "jsdom": "25.0.1", - "lint-staged": "15.3.0", + "lefthook": "1.10.1", "postcss": "8.4.49", "prettier": "3.4.2", "prisma": "6.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eac3cb8..bb1576a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,9 +102,9 @@ importers: jsdom: specifier: 25.0.1 version: 25.0.1 - lint-staged: - specifier: 15.3.0 - version: 15.3.0 + lefthook: + specifier: 1.10.1 + version: 1.10.1 postcss: specifier: 8.4.49 version: 8.4.49 @@ -1213,10 +1213,6 @@ packages: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} - engines: {node: '>=18'} - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1304,10 +1300,6 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - browserslist@4.24.3: resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -1368,10 +1360,6 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -1387,14 +1375,6 @@ packages: cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} - client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -1426,9 +1406,6 @@ packages: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -1437,10 +1414,6 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - compress-commons@6.0.2: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} @@ -1577,9 +1550,6 @@ packages: electron-to-chromium@1.5.76: resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} - emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1597,10 +1567,6 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} - engines: {node: '>=18'} - error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -1627,17 +1593,10 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - expect-type@1.1.0: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} @@ -1653,10 +1612,6 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -1692,10 +1647,6 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.2.0: - resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} - engines: {node: '>=18'} - get-port@5.1.1: resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} engines: {node: '>=8'} @@ -1704,10 +1655,6 @@ packages: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - glob@10.3.10: resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} @@ -1748,10 +1695,6 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -1782,18 +1725,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} - engines: {node: '>=18'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -1801,10 +1732,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -1855,6 +1782,60 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} + lefthook-darwin-arm64@1.10.1: + resolution: {integrity: sha512-dGi4Oiu2LSve8Xmz7vHWlUbnU5mk6HnhTbC1CnXqaFbb08yNYSYoJBwsalS+LoO4L6I/pqnv32ESCbdIzuhBiQ==} + cpu: [arm64] + os: [darwin] + + lefthook-darwin-x64@1.10.1: + resolution: {integrity: sha512-NkEkBZm5jYH4fqbpJweDyJx/+/jWLst0FEHOCU5QZ8xFm+42hTGj4+6kfbjirU1ubvmRY/TeilYDsq1OIr5jZQ==} + cpu: [x64] + os: [darwin] + + lefthook-freebsd-arm64@1.10.1: + resolution: {integrity: sha512-hX/c4p0+JoCrr55e8zfXC63ReW3Cg4WKzZKP6NA2uNDaKItHlQ4zR3CCOytdVnuPXOa6f93WB9lmRYtIp34dqw==} + cpu: [arm64] + os: [freebsd] + + lefthook-freebsd-x64@1.10.1: + resolution: {integrity: sha512-0suh8/Mx56Rircc/hvr3vU/XKv0E/afD/LkF8lkOPm4besgq6k9HCkpdPgBykP8Q0ve/W3rOlXeBQ7c7oDhX8Q==} + cpu: [x64] + os: [freebsd] + + lefthook-linux-arm64@1.10.1: + resolution: {integrity: sha512-zADf8CSkoV7EfpLsy5U22gq0+famMjUEfKy9nacS6zEgPvMxDk5Q/7QpnMWJeeiwkf9XWgQ+GATWuGahA3Id9A==} + cpu: [arm64] + os: [linux] + + lefthook-linux-x64@1.10.1: + resolution: {integrity: sha512-wdPVMZAN6vi3/4rlhzaWjR5N3AZE5+dUd3lSzfP6mmfXVQtwnJ29HFUlje6TAnwZBSOBI8yoMsz38FrhPuayYg==} + cpu: [x64] + os: [linux] + + lefthook-openbsd-arm64@1.10.1: + resolution: {integrity: sha512-PJ0fHvjcgapaWsn+4uhj3ZMRvkV0Ug+BOrRovF+SdXdA7DiBbRzFPTpUWrGoV3lw7uFjY6pJqGqakDqZ0J7J6g==} + cpu: [arm64] + os: [openbsd] + + lefthook-openbsd-x64@1.10.1: + resolution: {integrity: sha512-Bs0hBWHW4s6Dp0qVG4LXv96Vo1NXsM/y6VrWten3pv2oEO18Yw9PmKd6vl4mGI7yA72wq4HNATBagFx460IIEw==} + cpu: [x64] + os: [openbsd] + + lefthook-windows-arm64@1.10.1: + resolution: {integrity: sha512-xoBiiAChVSv1YYVkwkpfEoAbjNuRblrA0tI8GOtPBhkzlfBP3MaD5JfU2SPzID9IfAG/yV5dOlrLVKhacQA66A==} + cpu: [arm64] + os: [win32] + + lefthook-windows-x64@1.10.1: + resolution: {integrity: sha512-+AwTHtBP8npL604Dd13rnEblWh6a9+sf0lSzoLy22y3jdae4kVENLmYoeZ6bz0Wf6SF18UCjf+byvspQRnnCHg==} + cpu: [x64] + os: [win32] + + lefthook@1.10.1: + resolution: {integrity: sha512-WLwXd8FxAcZ0KJg0d/u1r2nY7F/i2XJlyxQSKJkFkbuzqggNU876ksHuNAluSbsZ4nNdI+tWbBUu1Th3SPvgcQ==} + hasBin: true + lightningcss-darwin-arm64@1.28.2: resolution: {integrity: sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==} engines: {node: '>= 12.0.0'} @@ -1919,32 +1900,15 @@ packages: resolution: {integrity: sha512-ePLRrbt3fgjXI5VFZOLbvkLD5ZRuxGKm+wJ3ujCqBtL3NanDHPo/5zicR5uEKAPiIjBYF99BM4K4okvMznjkVA==} engines: {node: '>= 12.0.0'} - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lint-staged@15.3.0: - resolution: {integrity: sha512-vHFahytLoF2enJklgtOtCtIjZrKD/LoxlaUusd5nh7dWv/dkKQJY74ndFSzxCdv7g0ueGg1ORgTSt4Y9LPZn9A==} - engines: {node: '>=18.12.0'} - hasBin: true - - listr2@8.2.5: - resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} - engines: {node: '>=18.0.0'} - lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} - engines: {node: '>=18'} - long@5.2.3: resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} @@ -1969,13 +1933,6 @@ packages: magic-string@0.30.12: resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -1984,14 +1941,6 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - minimatch@5.1.6: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} @@ -2088,10 +2037,6 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - npm-run-path@5.2.0: - resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - nwsapi@2.2.16: resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} @@ -2101,14 +2046,6 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2124,10 +2061,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -2152,15 +2085,6 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - playwright-core@1.49.1: resolution: {integrity: sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==} engines: {node: '>=18'} @@ -2322,17 +2246,10 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.10.0: resolution: {integrity: sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -2399,14 +2316,6 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} - engines: {node: '>=18'} - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -2434,10 +2343,6 @@ packages: streamx@2.21.1: resolution: {integrity: sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==} - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2446,10 +2351,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string-width@7.1.0: - resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} - engines: {node: '>=18'} - string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -2464,10 +2365,6 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} @@ -2557,10 +2454,6 @@ packages: resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} engines: {node: '>=14.14'} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - tough-cookie@5.0.0: resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} engines: {node: '>=16'} @@ -2710,10 +2603,6 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} - engines: {node: '>=18'} - wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -3831,10 +3720,6 @@ snapshots: agent-base@7.1.3: {} - ansi-escapes@7.0.0: - dependencies: - environment: 1.1.0 - ansi-regex@5.0.1: {} ansi-regex@6.0.1: {} @@ -3932,10 +3817,6 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - browserslist@4.24.3: dependencies: caniuse-lite: 1.0.30001690 @@ -3995,8 +3876,6 @@ snapshots: chalk@5.3.0: {} - chalk@5.4.1: {} - check-error@2.1.1: {} chownr@1.1.4: {} @@ -4008,15 +3887,6 @@ snapshots: cjs-module-lexer@1.2.3: {} - cli-cursor@5.0.0: - dependencies: - restore-cursor: 5.1.0 - - cli-truncate@4.0.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 7.1.0 - client-only@0.0.1: {} cliui@8.0.1: @@ -4051,16 +3921,12 @@ snapshots: color-string: 1.9.1 optional: true - colorette@2.0.20: {} - combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 commander@10.0.1: {} - commander@12.1.0: {} - compress-commons@6.0.2: dependencies: crc-32: 1.2.2 @@ -4183,8 +4049,6 @@ snapshots: electron-to-chromium@1.5.76: {} - emoji-regex@10.3.0: {} - emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -4200,8 +4064,6 @@ snapshots: entities@4.5.0: {} - environment@1.1.0: {} - error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -4244,22 +4106,8 @@ snapshots: event-target-shim@5.0.1: {} - eventemitter3@5.0.1: {} - events@3.3.0: {} - execa@8.0.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.2.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - expect-type@1.1.0: {} extract-zip@2.0.1: @@ -4278,10 +4126,6 @@ snapshots: dependencies: pend: 1.2.0 - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - foreground-child@3.1.1: dependencies: cross-spawn: 7.0.6 @@ -4309,16 +4153,12 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.2.0: {} - get-port@5.1.1: {} get-stream@5.2.0: dependencies: pump: 3.0.0 - get-stream@8.0.1: {} - glob@10.3.10: dependencies: foreground-child: 3.1.1 @@ -4364,8 +4204,6 @@ snapshots: transitivePeerDependencies: - supports-color - human-signals@5.0.0: {} - iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 @@ -4397,20 +4235,10 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@4.0.0: {} - - is-fullwidth-code-point@5.0.0: - dependencies: - get-east-asian-width: 1.2.0 - - is-number@7.0.0: {} - is-potential-custom-element-name@1.0.1: {} is-stream@2.0.1: {} - is-stream@3.0.0: {} - isarray@1.0.0: {} isexe@2.0.0: {} @@ -4469,6 +4297,49 @@ snapshots: dependencies: readable-stream: 2.3.8 + lefthook-darwin-arm64@1.10.1: + optional: true + + lefthook-darwin-x64@1.10.1: + optional: true + + lefthook-freebsd-arm64@1.10.1: + optional: true + + lefthook-freebsd-x64@1.10.1: + optional: true + + lefthook-linux-arm64@1.10.1: + optional: true + + lefthook-linux-x64@1.10.1: + optional: true + + lefthook-openbsd-arm64@1.10.1: + optional: true + + lefthook-openbsd-x64@1.10.1: + optional: true + + lefthook-windows-arm64@1.10.1: + optional: true + + lefthook-windows-x64@1.10.1: + optional: true + + lefthook@1.10.1: + optionalDependencies: + lefthook-darwin-arm64: 1.10.1 + lefthook-darwin-x64: 1.10.1 + lefthook-freebsd-arm64: 1.10.1 + lefthook-freebsd-x64: 1.10.1 + lefthook-linux-arm64: 1.10.1 + lefthook-linux-x64: 1.10.1 + lefthook-openbsd-arm64: 1.10.1 + lefthook-openbsd-x64: 1.10.1 + lefthook-windows-arm64: 1.10.1 + lefthook-windows-x64: 1.10.1 + lightningcss-darwin-arm64@1.28.2: optional: true @@ -4514,46 +4385,12 @@ snapshots: lightningcss-win32-arm64-msvc: 1.28.2 lightningcss-win32-x64-msvc: 1.28.2 - lilconfig@3.1.3: {} - lines-and-columns@1.2.4: {} - lint-staged@15.3.0: - dependencies: - chalk: 5.4.1 - commander: 12.1.0 - debug: 4.4.0 - execa: 8.0.1 - lilconfig: 3.1.3 - listr2: 8.2.5 - micromatch: 4.0.8 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.6.1 - transitivePeerDependencies: - - supports-color - - listr2@8.2.5: - dependencies: - cli-truncate: 4.0.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 9.0.0 - lodash.camelcase@4.3.0: {} lodash@4.17.21: {} - log-update@6.1.0: - dependencies: - ansi-escapes: 7.0.0 - cli-cursor: 5.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 - long@5.2.3: {} loupe@3.1.2: {} @@ -4574,23 +4411,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - merge-stream@2.0.0: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - mime-db@1.52.0: {} mime-types@2.1.35: dependencies: mime-db: 1.52.0 - mimic-fn@4.0.0: {} - - mimic-function@5.0.1: {} - minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 @@ -4661,10 +4487,6 @@ snapshots: normalize-path@3.0.0: {} - npm-run-path@5.2.0: - dependencies: - path-key: 4.0.0 - nwsapi@2.2.16: {} oauth4webapi@3.1.4: {} @@ -4673,14 +4495,6 @@ snapshots: dependencies: wrappy: 1.0.2 - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - onetime@7.0.0: - dependencies: - mimic-function: 5.0.1 - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -4698,8 +4512,6 @@ snapshots: path-key@3.1.1: {} - path-key@4.0.0: {} - path-parse@1.0.7: {} path-scurry@1.10.1: @@ -4717,10 +4529,6 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} - - pidtree@0.6.0: {} - playwright-core@1.49.1: {} playwright@1.49.1: @@ -4924,15 +4732,8 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@5.1.0: - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - retry@0.12.0: {} - rfdc@1.4.1: {} - rollup@4.10.0: dependencies: '@types/estree': 1.0.5 @@ -5021,16 +4822,6 @@ snapshots: is-arrayish: 0.3.2 optional: true - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - slice-ansi@7.1.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 - source-map-js@1.2.1: {} split-ca@1.0.1: {} @@ -5062,8 +4853,6 @@ snapshots: optionalDependencies: bare-events: 2.5.0 - string-argv@0.3.2: {} - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -5076,12 +4865,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string-width@7.1.0: - dependencies: - emoji-regex: 10.3.0 - get-east-asian-width: 1.2.0 - strip-ansi: 7.1.0 - string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -5098,8 +4881,6 @@ snapshots: dependencies: ansi-regex: 6.0.1 - strip-final-newline@3.0.0: {} - styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.0.0): dependencies: client-only: 0.0.1 @@ -5203,10 +4984,6 @@ snapshots: tmp@0.2.3: {} - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - tough-cookie@5.0.0: dependencies: tldts: 6.1.70 @@ -5354,12 +5131,6 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 - wrap-ansi@9.0.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 7.1.0 - strip-ansi: 7.1.0 - wrappy@1.0.2: {} ws@8.13.0: {}