From 67539ad9020339a6318acf0a3b1818331c0aaf75 Mon Sep 17 00:00:00 2001 From: tianyingchun Date: Thu, 1 Aug 2024 11:24:38 +0800 Subject: [PATCH] refactor: refactor `next-standalone` --- .changeset/tall-toys-look.md | 5 + package.json | 8 +- src/file-walk.ts | 16 -- src/next-standalone.ts | 57 ++++--- src/utils.ts | 33 ++++ tests/next-standalone.spec.ts | 29 ++-- yarn.lock | 291 +++++++++++++++++----------------- 7 files changed, 234 insertions(+), 205 deletions(-) create mode 100644 .changeset/tall-toys-look.md delete mode 100644 src/file-walk.ts create mode 100644 src/utils.ts diff --git a/.changeset/tall-toys-look.md b/.changeset/tall-toys-look.md new file mode 100644 index 0000000..90b4342 --- /dev/null +++ b/.changeset/tall-toys-look.md @@ -0,0 +1,5 @@ +--- +"@hyperse/hyper-env": patch +--- + +refactor `next-standalone` diff --git a/package.json b/package.json index a4c7f5e..70ff273 100644 --- a/package.json +++ b/package.json @@ -61,16 +61,16 @@ "@changesets/cli": "2.27.7", "@commitlint/cli": "19.3.0", "@commitlint/config-conventional": "19.2.2", - "@hyperse/eslint-config-hyperse": "^1.0.10", + "@hyperse/eslint-config-hyperse": "^1.0.12", "@hyperse/exec-program": "^1.0.10", "@types/minimist": "^1.2.5", - "@types/node": "^20.14.12", + "@types/node": "^22.0.2", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "commitizen": "4.3.0", "cz-conventional-changelog": "3.3.0", "eslint": "^9.8.0", - "husky": "9.1.3", + "husky": "9.1.4", "lint-staged": "15.2.7", "next": "14.2.5", "npm-run-all": "^4.1.5", @@ -78,7 +78,7 @@ "react-dom": "^18.3.1", "tsup": "^8.2.3", "typescript": "^5.5.4", - "vitest": "^2.0.4" + "vitest": "^2.0.5" }, "engines": { "node": ">=18" diff --git a/src/file-walk.ts b/src/file-walk.ts deleted file mode 100644 index e2339c6..0000000 --- a/src/file-walk.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { Options } from 'globby'; -import { globby } from 'globby'; - -export const fileWalk = ( - pattern: string | readonly string[], - options: Options = {} -): Promise => { - const ignorePattern = options.ignore || []; - return globby(pattern, { - absolute: false, - dot: true, - unique: true, - ...options, - ignore: [...ignorePattern, '**/__MACOSX/**', '**/*.DS_Store'], - }); -}; diff --git a/src/next-standalone.ts b/src/next-standalone.ts index e8635b8..de2927b 100644 --- a/src/next-standalone.ts +++ b/src/next-standalone.ts @@ -1,16 +1,26 @@ import fs from 'fs'; import fsPromise from 'fs/promises'; import minimist from 'minimist'; -import { dirname, resolve } from 'path'; +import { dirname, isAbsolute, relative, resolve } from 'path'; import { nodeFileTrace } from '@vercel/nft'; -import { fileWalk } from './file-walk.js'; import { getDirname } from './get-dir-name.js'; +import { fileWalk } from './utils.js'; type Argv = { - f: string; - fromBase: string; - c: string; - copyToBase: string; + p: string; + /** + * THe project root folder, normally it always `process.cwd()`, it can be a relative path from the repository root folder. + * @example `docs` for `monorepo` + * @default `process.cwd()` + */ + projectCwd: string; + + r: string; + /** + * The repository root folder + * @default `process.cwd()` + */ + repoCwd: string; }; /** @@ -21,27 +31,34 @@ type Argv = { */ export const nextStandalone = async (args: string[]) => { const binFile = getDirname(import.meta.url, '../bin/hyper-env.mjs'); + const defaultRepoCwd = /\/node_modules\//.test(binFile) + ? binFile.split('node_modules')[0] + : process.cwd(); + + const defaultProjectCwd = process.cwd(); + const argv = minimist(args, { '--': true, alias: { - f: 'fromBase', - c: 'copyToBase', + r: 'repoCwd', + p: 'projectCwd', }, default: { - fromBase: process.cwd(), - copyToBase: process.cwd(), + repoCwd: defaultRepoCwd, + projectCwd: defaultProjectCwd, }, }); - const { fromBase, copyToBase } = argv; + const repoCwd = resolve(defaultRepoCwd, argv.repoCwd); + const projectCwd = resolve(repoCwd, argv.projectCwd); const { fileList } = await nodeFileTrace([binFile], { - base: fromBase, + base: repoCwd, }); const envFiles = await fileWalk(['.env', '.env.*'], { - cwd: fromBase, - absolute: false, + cwd: projectCwd, + absolute: true, }); for (const absEnvFile of envFiles) { @@ -49,13 +66,15 @@ export const nextStandalone = async (args: string[]) => { } for (const filePath of fileList) { - const copyTo = resolve(copyToBase, '.next/standalone', filePath); + const copyFrom = resolve(repoCwd, filePath); + const copyTo = resolve( + projectCwd, + '.next/standalone', + isAbsolute(filePath) ? relative(projectCwd, filePath) : filePath + ); if (!fs.existsSync(dirname(copyTo))) { fs.mkdirSync(dirname(copyTo), { recursive: true }); } - await fsPromise.copyFile( - resolve(fromBase, filePath), - resolve(copyToBase, '.next/standalone', filePath) - ); + await fsPromise.copyFile(copyFrom, copyTo); } }; diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..051f698 --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,33 @@ +import type { Options } from 'globby'; +import { globby } from 'globby'; +import { existsSync } from 'node:fs'; +import { join } from 'node:path'; + +export const fileWalk = ( + pattern: string | readonly string[], + options: Options = {} +): Promise => { + const ignorePattern = options.ignore || []; + return globby(pattern, { + absolute: false, + dot: true, + unique: true, + ...options, + ignore: [...ignorePattern, '**/__MACOSX/**', '**/*.DS_Store'], + }); +}; + +/** + * A monorepo (mono repository) is a single repository that stores all of your code and assets for every project. + * @param cwd normally it always process.cwd() + */ +export const isMonorepo = async (cwd: string = process.cwd()) => { + const monoPackageCwd = join(cwd, 'packages'); + if (existsSync(monoPackageCwd)) { + const packageJson = await fileWalk(join(monoPackageCwd, '*/package.json'), { + cwd, + }); + return packageJson.length > 0; + } + return false; +}; diff --git a/tests/next-standalone.spec.ts b/tests/next-standalone.spec.ts index 00eed43..11193ee 100644 --- a/tests/next-standalone.spec.ts +++ b/tests/next-standalone.spec.ts @@ -67,9 +67,9 @@ describe('Next Standalone', () => { }); it('should copy only the necessary files with specificed correct parameters', async () => { - const fromBase = process.cwd(); - const copyToBase = process.cwd(); - await nextStandalone(['--fromBase', fromBase, '--copyToBase', copyToBase]); + const repoCwd = process.cwd(); + const projectCwd = process.cwd(); + await nextStandalone(['--repoCwd', repoCwd, '--projectCwd', projectCwd]); const fileList = [ 'bin/hyper-env.mjs', @@ -92,12 +92,7 @@ describe('Next Standalone', () => { }); it('should correct handle copy .env files for workdir', async () => { - await nextStandalone([ - '--fromBase', - fixtureCwd, - '--copyToBase', - fixtureCwd, - ]); + await nextStandalone(['--repoCwd', fixtureCwd, '--projectCwd', fixtureCwd]); for (const envFile of Object.keys(envFiles)) { expect(fsPromise.copyFile).toHaveBeenCalledWith( join(fixtureCwd, envFile), @@ -107,11 +102,11 @@ describe('Next Standalone', () => { }); it('should correct handle argv dummy standard parameters', async () => { - const fromBase = '/fromBase'; - const copyToBase = '/copyToBase'; - await nextStandalone(['--fromBase', fromBase, '--copyToBase', copyToBase]); + const repoCwd = '/fromBase'; + const projectCwd = '/copyToBase'; + await nextStandalone(['--repoCwd', repoCwd, '--projectCwd', projectCwd]); [ - [binFile, `${copyToBase}/.next${process.cwd()}/bin/hyper-env.mjs`], + [binFile, `${projectCwd}/.next${process.cwd()}/bin/hyper-env.mjs`], ].forEach(([from, to]) => { expect(fsPromise.copyFile).toHaveBeenCalledWith(from, to); }); @@ -119,11 +114,11 @@ describe('Next Standalone', () => { }); it('should correct handle argv dummy standard parameters with alias', async () => { - const fromBase = '/fromBase'; - const copyToBase = '/copyToBase'; - await nextStandalone(['-f', fromBase, '-c', copyToBase]); + const repoCwd = '/fromBase'; + const projectCwd = '/copyToBase'; + await nextStandalone(['-r', repoCwd, '-p', projectCwd]); [ - [binFile, `${copyToBase}/.next${process.cwd()}/bin/hyper-env.mjs`], + [binFile, `${projectCwd}/.next${process.cwd()}/bin/hyper-env.mjs`], ].forEach(([from, to]) => { expect(fsPromise.copyFile).toHaveBeenCalledWith(from, to); }); diff --git a/yarn.lock b/yarn.lock index 3823c29..9fc80a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -912,7 +912,7 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.8.0, @eslint/js@npm:^9.5.0": +"@eslint/js@npm:9.8.0, @eslint/js@npm:^9.8.0": version: 9.8.0 resolution: "@eslint/js@npm:9.8.0" checksum: 10/1c6ddbcc9f45f0165d9e218c085543536c03b4b650449a6f38f4e2b65b1d6bcd5f24f7feae72fca14d3697073cbdb413f270baef0f744cb0fb9e11ce9c84dbcc @@ -940,34 +940,34 @@ __metadata: languageName: node linkType: hard -"@hyperse/eslint-config-hyperse@npm:^1.0.10": - version: 1.0.10 - resolution: "@hyperse/eslint-config-hyperse@npm:1.0.10" +"@hyperse/eslint-config-hyperse@npm:^1.0.12": + version: 1.0.12 + resolution: "@hyperse/eslint-config-hyperse@npm:1.0.12" dependencies: - "@eslint/js": "npm:^9.5.0" - "@next/eslint-plugin-next": "npm:^14.2.4" + "@eslint/js": "npm:^9.8.0" + "@next/eslint-plugin-next": "npm:^14.2.5" app-root-path: "npm:^3.1.0" eslint-config-prettier: "npm:^9.1.0" eslint-define-config: "npm:^2.1.0" eslint-plugin-jsonc: "npm:^2.16.0" eslint-plugin-mdx: "npm:^3.1.5" - eslint-plugin-prettier: "npm:^5.1.3" - eslint-plugin-react: "npm:^7.34.3" + eslint-plugin-prettier: "npm:^5.2.1" + eslint-plugin-react: "npm:^7.35.0" eslint-plugin-react-hooks: "npm:^4.6.2" eslint-plugin-regexp: "npm:^2.6.0" - eslint-plugin-simple-import-sort: "npm:^12.1.0" - eslint-plugin-sonarjs: "npm:^1.0.3" + eslint-plugin-simple-import-sort: "npm:^12.1.1" + eslint-plugin-sonarjs: "npm:^1.0.4" eslint-plugin-tailwindcss: "npm:^3.17.4" eslint-plugin-vitest: "npm:^0.5.4" - get-tsconfig: "npm:^4.7.5" - globals: "npm:^15.6.0" - prettier: "npm:^3.3.2" - tailwindcss: "npm:^3.4.4" + get-tsconfig: "npm:^4.7.6" + globals: "npm:^15.8.0" + prettier: "npm:^3.3.3" + tailwindcss: "npm:^3.4.7" typescript-eslint: "npm:^8.0.0-alpha.27" peerDependencies: eslint: ">=9.3.0" typescript: ^5.4.3 - checksum: 10/cae4185130bfa799487821f401d0aa01b7cd0182d43b961e3a64c771fd2d234a9aeaf56bcc68760c673b10b320b57ad882f9cbdd91809d0db2ddc885ecc0fc3e + checksum: 10/2ef5dfec6960b0cd762be82937a3d9ef365965099eb7a5f19f2820345dad0ed3f4a170808473c73a7573cbaa7587a8e2354fd763b235b15c591e7d63a3844b18 languageName: node linkType: hard @@ -989,10 +989,10 @@ __metadata: "@changesets/cli": "npm:2.27.7" "@commitlint/cli": "npm:19.3.0" "@commitlint/config-conventional": "npm:19.2.2" - "@hyperse/eslint-config-hyperse": "npm:^1.0.10" + "@hyperse/eslint-config-hyperse": "npm:^1.0.12" "@hyperse/exec-program": "npm:^1.0.10" "@types/minimist": "npm:^1.2.5" - "@types/node": "npm:^20.14.12" + "@types/node": "npm:^22.0.2" "@types/react": "npm:^18.3.3" "@types/react-dom": "npm:^18.3.0" "@vercel/nft": "npm:^0.27.3" @@ -1002,7 +1002,7 @@ __metadata: dotenv-expand: "npm:^11.0.6" eslint: "npm:^9.8.0" globby: "npm:^14.0.2" - husky: "npm:9.1.3" + husky: "npm:9.1.4" lint-staged: "npm:15.2.7" minimist: "npm:^1.2.8" next: "npm:14.2.5" @@ -1011,7 +1011,7 @@ __metadata: react-dom: "npm:^18.3.1" tsup: "npm:^8.2.3" typescript: "npm:^5.5.4" - vitest: "npm:^2.0.4" + vitest: "npm:^2.0.5" bin: hyper-env: ./bin/hyper-env.mjs hyper-next-standalone: ./bin/hyper-next-standalone.mjs @@ -1149,12 +1149,12 @@ __metadata: languageName: node linkType: hard -"@next/eslint-plugin-next@npm:^14.2.4": - version: 14.2.4 - resolution: "@next/eslint-plugin-next@npm:14.2.4" +"@next/eslint-plugin-next@npm:^14.2.5": + version: 14.2.5 + resolution: "@next/eslint-plugin-next@npm:14.2.5" dependencies: glob: "npm:10.3.10" - checksum: 10/44c94d13aea1937d202324ec66a902c473e6c5eafd3033049f95a43510255c8871084e5532d4c0211faf7ffc8c8027109b40a26ee164f0cf169cac28abe27097 + checksum: 10/a058820619c9ce493196ce593c440ce9d3558b93acf7b372453dd425e2c311153d8382c5e6842c6645b02e833f1a5c59bd7ebfba3719922d400196b6e367e9d5 languageName: node linkType: hard @@ -1607,12 +1607,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:^20.0.0, @types/node@npm:^20.14.12": - version: 20.14.12 - resolution: "@types/node@npm:20.14.12" +"@types/node@npm:*, @types/node@npm:^22.0.2": + version: 22.0.2 + resolution: "@types/node@npm:22.0.2" dependencies: - undici-types: "npm:~5.26.4" - checksum: 10/9205bf46ef6a99d99cdde9efeb8218cd15803cc407249c2336557cd630b006380dad68c03ee574934414639f8e450044f45530c92788a8e82078bae45ee40f93 + undici-types: "npm:~6.11.1" + checksum: 10/7f5937f22d5171df6d1764b838b64f03fd2686e0ebee15bb64eb609ee5280cfd8cbbb78efdf163bb49eee11c77de461ef8b85e2781e508d231777390ddf0e8ec languageName: node linkType: hard @@ -1623,6 +1623,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^20.0.0": + version: 20.14.12 + resolution: "@types/node@npm:20.14.12" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10/9205bf46ef6a99d99cdde9efeb8218cd15803cc407249c2336557cd630b006380dad68c03ee574934414639f8e450044f45530c92788a8e82078bae45ee40f93 + languageName: node + linkType: hard + "@types/prop-types@npm:*": version: 15.7.12 resolution: "@types/prop-types@npm:15.7.12" @@ -1875,66 +1884,66 @@ __metadata: languageName: node linkType: hard -"@vitest/expect@npm:2.0.4": - version: 2.0.4 - resolution: "@vitest/expect@npm:2.0.4" +"@vitest/expect@npm:2.0.5": + version: 2.0.5 + resolution: "@vitest/expect@npm:2.0.5" dependencies: - "@vitest/spy": "npm:2.0.4" - "@vitest/utils": "npm:2.0.4" + "@vitest/spy": "npm:2.0.5" + "@vitest/utils": "npm:2.0.5" chai: "npm:^5.1.1" tinyrainbow: "npm:^1.2.0" - checksum: 10/9e77266306a9ee6c982956e79e5086edeaec9f387fb9f8840d749ba9e026b27c01f68987a732b53746cd7fb0fce4a2620dbd0359ca3efe891a8ba89300568111 + checksum: 10/ca9a218f50254b2259fd16166b2d8c9ccc8ee2cc068905e6b3d6281da10967b1590cc7d34b5fa9d429297f97e740450233745583b4cc12272ff11705faf70a37 languageName: node linkType: hard -"@vitest/pretty-format@npm:2.0.4, @vitest/pretty-format@npm:^2.0.4": - version: 2.0.4 - resolution: "@vitest/pretty-format@npm:2.0.4" +"@vitest/pretty-format@npm:2.0.5, @vitest/pretty-format@npm:^2.0.5": + version: 2.0.5 + resolution: "@vitest/pretty-format@npm:2.0.5" dependencies: tinyrainbow: "npm:^1.2.0" - checksum: 10/16223d1c9f8c86cea7a064cf625380e90b20a5c2f95fda6ab3643c16cce1925afa337109ee12dcbf54834a161fd2b68be16179da9fd9fb948de986c33942203b + checksum: 10/70bf452dd0b8525e658795125b3f11110bd6baadfaa38c5bb91ca763bded35ec6dc80e27964ad4e91b91be6544d35e18ea7748c1997693988f975a7283c3e9a0 languageName: node linkType: hard -"@vitest/runner@npm:2.0.4": - version: 2.0.4 - resolution: "@vitest/runner@npm:2.0.4" +"@vitest/runner@npm:2.0.5": + version: 2.0.5 + resolution: "@vitest/runner@npm:2.0.5" dependencies: - "@vitest/utils": "npm:2.0.4" + "@vitest/utils": "npm:2.0.5" pathe: "npm:^1.1.2" - checksum: 10/a94872a08296b72316d1259fa8f12e314a47614b614cba03f1d0ba7f00e82f5d724b740ab17b8f6ddbe281acea278dec212f5050ac557b108df8f50b7aab6cbd + checksum: 10/464449abb84b3c779e1c6d1bedfc9e7469240ba3ccc4b4fa884386d1752d6572b68b9a87440159d433f17f61aca4012ee3bb78a3718d0e2bc64d810e9fc574a5 languageName: node linkType: hard -"@vitest/snapshot@npm:2.0.4": - version: 2.0.4 - resolution: "@vitest/snapshot@npm:2.0.4" +"@vitest/snapshot@npm:2.0.5": + version: 2.0.5 + resolution: "@vitest/snapshot@npm:2.0.5" dependencies: - "@vitest/pretty-format": "npm:2.0.4" + "@vitest/pretty-format": "npm:2.0.5" magic-string: "npm:^0.30.10" pathe: "npm:^1.1.2" - checksum: 10/bbdc491d42a95945589a7006ef40beb199332b28b5832f111bd25e26b24bd78134efdb05b670e65dc82f83c654e1aedc445c26be20bdaa758a6c3cf844bd05b5 + checksum: 10/fb46bc65851d4c8dcbbf86279c4146d5e7c17ad0d1be97132dedd98565d37f70ac8b0bf51ead0c6707786ffb15652535398c14d4304fa2146b0393d3db26fdff languageName: node linkType: hard -"@vitest/spy@npm:2.0.4": - version: 2.0.4 - resolution: "@vitest/spy@npm:2.0.4" +"@vitest/spy@npm:2.0.5": + version: 2.0.5 + resolution: "@vitest/spy@npm:2.0.5" dependencies: tinyspy: "npm:^3.0.0" - checksum: 10/c18d0fc28e40a40f701a116a117d98916ec90f18e1643a37379b18f5fbee841e7c35fcb65202503506b471df761e0907053912d475e159399b887c1be6f91ef1 + checksum: 10/ed19f4c3bb4d3853241e8070979615138e24403ce4c137fa48c903b3af2c8b3ada2cc26aca9c1aa323bb314a457a8130a29acbb18dafd4e42737deefb2abf1ca languageName: node linkType: hard -"@vitest/utils@npm:2.0.4": - version: 2.0.4 - resolution: "@vitest/utils@npm:2.0.4" +"@vitest/utils@npm:2.0.5": + version: 2.0.5 + resolution: "@vitest/utils@npm:2.0.5" dependencies: - "@vitest/pretty-format": "npm:2.0.4" + "@vitest/pretty-format": "npm:2.0.5" estree-walker: "npm:^3.0.3" loupe: "npm:^3.1.1" tinyrainbow: "npm:^1.2.0" - checksum: 10/a17497cd3c12b72b315bda6a6a4addcbc206367f6bcdedb83d5d708ac40cf52fcc48403539d10528e1893348b2f107416e9065b6b5c39329f2512eea8f104578 + checksum: 10/d631d56d29c33bc8de631166b2b6691c470187a345469dfef7048befe6027e1c6ff9552f2ee11c8a247522c325c4a64bfcc73f8f0f0c525da39cb9f190f119f8 languageName: node linkType: hard @@ -2261,18 +2270,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.toreversed@npm:^1.1.2": - version: 1.1.2 - resolution: "array.prototype.toreversed@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10/b4076d687ddc22c191863ce105d320cc4b0e1435bfda9ffeeff681682fe88fa6fe30e0d2ae94fa4b2d7fad901e1954ea4f75c1cab217db4848da84a2b5889192 - languageName: node - linkType: hard - "array.prototype.tosorted@npm:^1.1.4": version: 1.1.4 resolution: "array.prototype.tosorted@npm:1.1.4" @@ -3335,7 +3332,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": version: 1.23.3 resolution: "es-abstract@npm:1.23.3" dependencies: @@ -3750,12 +3747,12 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-prettier@npm:^5.1.3": - version: 5.1.3 - resolution: "eslint-plugin-prettier@npm:5.1.3" +"eslint-plugin-prettier@npm:^5.2.1": + version: 5.2.1 + resolution: "eslint-plugin-prettier@npm:5.2.1" dependencies: prettier-linter-helpers: "npm:^1.0.0" - synckit: "npm:^0.8.6" + synckit: "npm:^0.9.1" peerDependencies: "@types/eslint": ">=8.0.0" eslint: ">=8.0.0" @@ -3766,7 +3763,7 @@ __metadata: optional: true eslint-config-prettier: optional: true - checksum: 10/4f26a30444adc61ed692cdb5a9f7e8d9f5794f0917151051e66755ce032a08c3cc72c8b5d56101412e90f6d77035bd8194ea8731e9c16aacdd5ae345a8dae188 + checksum: 10/10ddf68215237e327af09a47adab4c63f3885fda4fb28c4c42d1fc5f47d8a0cc45df6484799360ff1417a0aa3c77c3aaac49d7e9dfd145557b17e2d7ecc2a27c languageName: node linkType: hard @@ -3779,31 +3776,31 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react@npm:^7.34.3": - version: 7.34.3 - resolution: "eslint-plugin-react@npm:7.34.3" +"eslint-plugin-react@npm:^7.35.0": + version: 7.35.0 + resolution: "eslint-plugin-react@npm:7.35.0" dependencies: array-includes: "npm:^3.1.8" array.prototype.findlast: "npm:^1.2.5" array.prototype.flatmap: "npm:^1.3.2" - array.prototype.toreversed: "npm:^1.1.2" array.prototype.tosorted: "npm:^1.1.4" doctrine: "npm:^2.1.0" es-iterator-helpers: "npm:^1.0.19" estraverse: "npm:^5.3.0" + hasown: "npm:^2.0.2" jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" minimatch: "npm:^3.1.2" object.entries: "npm:^1.1.8" object.fromentries: "npm:^2.0.8" - object.hasown: "npm:^1.1.4" object.values: "npm:^1.2.0" prop-types: "npm:^15.8.1" resolve: "npm:^2.0.0-next.5" semver: "npm:^6.3.1" string.prototype.matchall: "npm:^4.0.11" + string.prototype.repeat: "npm:^1.0.0" peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 10/f160a5b0a376e520b0cd5e2b6111e91966533708842270e460e2f93a45c80f42dc79232a38a6ccb1a397b1d9deba06f6dc819333d9e1af55d392bf52b20d6c9b + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 10/fa0a54f9ea249cf89d92bb5983bf7df741da3709a0ebd6a885a67d05413ed302fd8b64c9dc819b33df8efa6d8b06f5e56b1f6965a9be7cc3e79054da4dbae5ed languageName: node linkType: hard @@ -3824,21 +3821,21 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-simple-import-sort@npm:^12.1.0": - version: 12.1.0 - resolution: "eslint-plugin-simple-import-sort@npm:12.1.0" +"eslint-plugin-simple-import-sort@npm:^12.1.1": + version: 12.1.1 + resolution: "eslint-plugin-simple-import-sort@npm:12.1.1" peerDependencies: eslint: ">=5.0.0" - checksum: 10/c28d46c88c7590e3a5cc49494ba8fd3c46b6cec903236a7e165b9441f27decd67baf63b13526203e505713c217ccfb43935ae600debb8e9d6cc817fbaab5f2e2 + checksum: 10/2a690cea9243fbefa70345687bca8952f5e185fa459b7a8db687a908cc31082435cfee236c619d5245548fa5f89a2f2c4f8499f80512e048d2bedc60e3662d5a languageName: node linkType: hard -"eslint-plugin-sonarjs@npm:^1.0.3": - version: 1.0.3 - resolution: "eslint-plugin-sonarjs@npm:1.0.3" +"eslint-plugin-sonarjs@npm:^1.0.4": + version: 1.0.4 + resolution: "eslint-plugin-sonarjs@npm:1.0.4" peerDependencies: eslint: ^8.0.0 || ^9.0.0 - checksum: 10/39667bb0eea863c4f49971dad85bdc1e38afb14682f68e94a66a7ed64e8479c8e85ae6d83c30bebd77e3588d88ba8f901613cf262aa0c7049df14d7e46caa4c4 + checksum: 10/dcea537bd40b07668646f6458fdc6e77ca6a7295442678b0dc24def8dfe8822ae1eee2646ab0309e942ac2fa16b65940e0edb908bd3d61fab62c0935c115f64d languageName: node linkType: hard @@ -4534,7 +4531,7 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.7.5, get-tsconfig@npm:^4.7.6": +"get-tsconfig@npm:^4.7.6": version: 4.7.6 resolution: "get-tsconfig@npm:4.7.6" dependencies: @@ -4658,10 +4655,10 @@ __metadata: languageName: node linkType: hard -"globals@npm:^15.6.0": - version: 15.6.0 - resolution: "globals@npm:15.6.0" - checksum: 10/9b522b1eff444acaf331b0da7f072d5ef75b1cde02d89b3656039252f01b6bcda7a9ea42128e8644117c0ede9116249b1bcf830458b7dbe19fafd4de916a3dc0 +"globals@npm:^15.8.0": + version: 15.8.0 + resolution: "globals@npm:15.8.0" + checksum: 10/fbca69cc1084c28a5155fea06224f6f0fcd9a371d8b8057db9c1851adc4bf2aad8016dd0db4e161e0ad1da0953e4286b90c826ff9ef5dbfb864493f2bba806df languageName: node linkType: hard @@ -4875,12 +4872,12 @@ __metadata: languageName: node linkType: hard -"husky@npm:9.1.3": - version: 9.1.3 - resolution: "husky@npm:9.1.3" +"husky@npm:9.1.4": + version: 9.1.4 + resolution: "husky@npm:9.1.4" bin: husky: bin.js - checksum: 10/35d7ad85a247fb130659ae60b05bca9461820d261d6ff181b55c3dc6f2ae5da5ae3f3807367b90cc85d3bb915a2de8295aa9950e3cba3309994b7763dfd70cb1 + checksum: 10/c43aa7cbf98246d4f347bc3da807049555b5003af7c6e1658c5cea44a9743b4d0683c72973a4fe02a4ccceb81031a664ecaa7a1a86efe4d37a80a0af17c988ea languageName: node linkType: hard @@ -7038,17 +7035,6 @@ __metadata: languageName: node linkType: hard -"object.hasown@npm:^1.1.4": - version: 1.1.4 - resolution: "object.hasown@npm:1.1.4" - dependencies: - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - checksum: 10/797385577b3ef3c0d19333e03ed34bc7987978ae1ee1245069c9922e17d1128265187f729dc610260d03f8d418af26fcd7919b423793bf0af9099d9f08367d69 - languageName: node - linkType: hard - "object.values@npm:^1.1.6, object.values@npm:^1.2.0": version: 1.2.0 resolution: "object.values@npm:1.2.0" @@ -7639,12 +7625,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.3.2": - version: 3.3.2 - resolution: "prettier@npm:3.3.2" +"prettier@npm:^3.3.3": + version: 3.3.3 + resolution: "prettier@npm:3.3.3" bin: prettier: bin/prettier.cjs - checksum: 10/83214e154afa5aa9b664c2506640212323eb1376b13379b2413dc351b7de0687629dca3f00ff2ec895ebd7e3a2adb7d7e231b6c77606e2358137f2150807405b + checksum: 10/5beac1f30b5b40162532b8e2f7c3a4eb650910a2695e9c8512a62ffdc09dae93190c29db9107fa7f26d1b6c71aad3628ecb9b5de1ecb0911191099be109434d7 languageName: node linkType: hard @@ -8571,6 +8557,16 @@ __metadata: languageName: node linkType: hard +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: "npm:^1.1.3" + es-abstract: "npm:^1.17.5" + checksum: 10/4b1bd91b75fa8fdf0541625184ebe80e445a465ce4253c19c3bccd633898005dadae0f74b85ae72662a53aafb8035bf48f8f5c0755aec09bc106a7f13959d05e + languageName: node + linkType: hard + "string.prototype.trim@npm:^1.2.9": version: 1.2.9 resolution: "string.prototype.trim@npm:1.2.9" @@ -8759,29 +8755,19 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.8.6": - version: 0.8.8 - resolution: "synckit@npm:0.8.8" +"synckit@npm:^0.9.0, synckit@npm:^0.9.1": + version: 0.9.1 + resolution: "synckit@npm:0.9.1" dependencies: "@pkgr/core": "npm:^0.1.0" tslib: "npm:^2.6.2" - checksum: 10/2864a5c3e689ad5b991bebbd8a583c5682c4fa08a4f39986b510b6b5d160c08fc3672444069f8f96ed6a9d12772879c674c1f61e728573eadfa90af40a765b74 + checksum: 10/bff3903976baf8b699b5483228116d70223781a93b17c70e685c277ee960cdfd1a09cb5a741e6a9ec35e2428f14f4664baec41ccc99a598f267608b2a54f529b languageName: node linkType: hard -"synckit@npm:^0.9.0": - version: 0.9.0 - resolution: "synckit@npm:0.9.0" - dependencies: - "@pkgr/core": "npm:^0.1.0" - tslib: "npm:^2.6.2" - checksum: 10/e93f3f5ee43fa71d3bb2a345049642d9034f34fa9528706b5ef26e825335ca5446143c56c2b041810afe26aa6e343583ff08525f5530618a4707375270f87be1 - languageName: node - linkType: hard - -"tailwindcss@npm:^3.4.4": - version: 3.4.4 - resolution: "tailwindcss@npm:3.4.4" +"tailwindcss@npm:^3.4.7": + version: 3.4.7 + resolution: "tailwindcss@npm:3.4.7" dependencies: "@alloc/quick-lru": "npm:^5.2.0" arg: "npm:^5.0.2" @@ -8808,7 +8794,7 @@ __metadata: bin: tailwind: lib/cli.js tailwindcss: lib/cli.js - checksum: 10/ab120014a68517c079fbeecba06c404ac94088a959b5b5e631214af4d87b332b6e4b28d8453f65eac9d94759a030ca581b1330f7d73cbf497883c4e2de083432 + checksum: 10/bda3280905b05bb3e7e95a350e028a58a19336a854ebebe65816c7625ec49ba4d2af7ef82c169407f67cbf150fb6acbe1210e8ade7e0180fa8039e3607077304 languageName: node linkType: hard @@ -9195,6 +9181,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~6.11.1": + version: 6.11.1 + resolution: "undici-types@npm:6.11.1" + checksum: 10/bdee4c3d67626bf45f1502b817b96e328ff9c3c006ecafa3708bc39ba66d6cecc2d5d69d3148667bb833d3fb457c0e715bfeed0b7b6767fa4d3044f5c1036ba9 + languageName: node + linkType: hard + "unicorn-magic@npm:^0.1.0": version: 0.1.0 resolution: "unicorn-magic@npm:0.1.0" @@ -9458,9 +9451,9 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:2.0.4": - version: 2.0.4 - resolution: "vite-node@npm:2.0.4" +"vite-node@npm:2.0.5": + version: 2.0.5 + resolution: "vite-node@npm:2.0.5" dependencies: cac: "npm:^6.7.14" debug: "npm:^4.3.5" @@ -9469,7 +9462,7 @@ __metadata: vite: "npm:^5.0.0" bin: vite-node: vite-node.mjs - checksum: 10/27040a5d614fa315cc735867d7e6778640b2dcfb164e1a18d6a275b991a21e99ac6d720448b1b8de6e6d10b8169e79d0cb022807d537246b816f0260eb5f8b15 + checksum: 10/de259cdf4b9ff82f39ba92ffca99db8a80783efd2764d3553b62cd8c8864488d590114a75bc93a93bf5ba2a2086bea1bee4b0029da9e62c4c0d3bf6c1f364eed languageName: node linkType: hard @@ -9513,17 +9506,17 @@ __metadata: languageName: node linkType: hard -"vitest@npm:^2.0.4": - version: 2.0.4 - resolution: "vitest@npm:2.0.4" +"vitest@npm:^2.0.5": + version: 2.0.5 + resolution: "vitest@npm:2.0.5" dependencies: "@ampproject/remapping": "npm:^2.3.0" - "@vitest/expect": "npm:2.0.4" - "@vitest/pretty-format": "npm:^2.0.4" - "@vitest/runner": "npm:2.0.4" - "@vitest/snapshot": "npm:2.0.4" - "@vitest/spy": "npm:2.0.4" - "@vitest/utils": "npm:2.0.4" + "@vitest/expect": "npm:2.0.5" + "@vitest/pretty-format": "npm:^2.0.5" + "@vitest/runner": "npm:2.0.5" + "@vitest/snapshot": "npm:2.0.5" + "@vitest/spy": "npm:2.0.5" + "@vitest/utils": "npm:2.0.5" chai: "npm:^5.1.1" debug: "npm:^4.3.5" execa: "npm:^8.0.1" @@ -9534,13 +9527,13 @@ __metadata: tinypool: "npm:^1.0.0" tinyrainbow: "npm:^1.2.0" vite: "npm:^5.0.0" - vite-node: "npm:2.0.4" + vite-node: "npm:2.0.5" why-is-node-running: "npm:^2.3.0" peerDependencies: "@edge-runtime/vm": "*" "@types/node": ^18.0.0 || >=20.0.0 - "@vitest/browser": 2.0.4 - "@vitest/ui": 2.0.4 + "@vitest/browser": 2.0.5 + "@vitest/ui": 2.0.5 happy-dom: "*" jsdom: "*" peerDependenciesMeta: @@ -9558,7 +9551,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 10/01a173adbf40273adce5ff0ffd7b538fcc98286b15441651be4a3b9cc48748acf6cedb1f4966b4eff07ed91695847b9352591fd419c2da62181440bc6edf79ee + checksum: 10/abb916e3496a3fa9e9d05ecd806332dc4000aa0e433f0cb1e99f9dd1fa5c06d2c66656874b9860a683cec0f32abe1519599babef02e5c0ca80e9afbcdbddfdbd languageName: node linkType: hard