From 6a10e5e537bac2cb345891fe509736323dbe6877 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Tue, 3 Dec 2024 14:34:20 +0100 Subject: [PATCH] H-3689: Replace `check-dependency-version-consistency` with yarn constraints (#5769) --- .github/actions/prune-repository/action.yml | 1 - .github/workflows/lint.yml | 6 +- apps/hash-ai-worker-ts/package.json | 5 +- apps/hash-api/package.json | 5 +- apps/hash-integration-worker/package.json | 5 +- apps/hash-realtime/package.json | 5 +- apps/hash-search-loader/package.json | 3 +- .../graph/client/typescript/package.json | 1 - .../typescript/package.json | 1 - package.json | 14 +- yarn.config.cjs | 136 +++++++++++------- yarn.lock | 128 +---------------- 12 files changed, 106 insertions(+), 204 deletions(-) diff --git a/.github/actions/prune-repository/action.yml b/.github/actions/prune-repository/action.yml index f68413e1c86..349b69a5b49 100644 --- a/.github/actions/prune-repository/action.yml +++ b/.github/actions/prune-repository/action.yml @@ -41,7 +41,6 @@ runs: if [[ ! -f "out/$DIRECTORY/Cargo.toml" ]]; then mkdir -p "out/$DIRECTORY/src" echo > "out/$DIRECTORY/src/lib.rs" - echo "cargo-features = [\"edition2024\"]" > "out/$DIRECTORY/Cargo.toml" echo "[package]" >> "out/$DIRECTORY/Cargo.toml" echo "name = \"$(yq '.package.name' -p toml -oy $line)\"" >> "out/$DIRECTORY/Cargo.toml" echo "edition.workspace = true" >> "out/$DIRECTORY/Cargo.toml" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3bde95faa90..bb504c3e6a1 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -215,14 +215,14 @@ jobs: cargo -Zscript run --manifest-path ".github/scripts/rust/sync-turborepo.rs" . | xargs yarn prettier --write >/dev/null git --no-pager diff --exit-code --color '**/package.json' - - name: Run yarn lint:dependency-version-consistency + - name: Run yarn lint:constraints if: ${{ success() || failure() }} run: | - if ! yarn lint:dependency-version-consistency; then + if ! yarn lint:constraints; then echo '' echo '' echo 'ℹ️ ℹ️ ℹ️' - echo 'Try running `yarn fix:dependency-version-consistency` locally to apply autofixes.' + echo 'Try running `yarn fix:constraints` locally to apply autofixes.' echo 'ℹ️ ℹ️ ℹ️' exit 1 fi diff --git a/apps/hash-ai-worker-ts/package.json b/apps/hash-ai-worker-ts/package.json index 680f6d1bf63..550affe75fa 100644 --- a/apps/hash-ai-worker-ts/package.json +++ b/apps/hash-ai-worker-ts/package.json @@ -34,9 +34,9 @@ "lint:tsc": "tsc --noEmit", "sanitize-html": "NODE_ENV=development yarn exe ./scripts/sanitize-html.ts", "sentry:sourcemaps": "sentry-cli sourcemaps inject --org hashintel --project hash-temporal-worker-ai ./dist && sentry-cli sourcemaps upload --org hashintel --project hash-temporal-worker-ai ./dist", - "start": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=2048 node ./dist/main.js", + "start": "NODE_ENV=production NODE_OPTIONS=--max-old-space-size=2048 node ./dist/main.js", "start:healthcheck": "wait-on --timeout 120000 http-get://localhost:4100/health", - "start:test": "cross-env NODE_ENV=test NODE_OPTIONS=--max-old-space-size=2048 node ./dist/main.js", + "start:test": "NODE_ENV=test NODE_OPTIONS=--max-old-space-size=2048 node ./dist/main.js", "start:test:healthcheck": "wait-on --timeout 120000 http-get://localhost:4100/health", "test:unit": "vitest --run --exclude \"**/*.ai.test.ts\"" }, @@ -110,7 +110,6 @@ "@types/papaparse": "5.3.15", "@types/sanitize-html": "2.13.0", "@vitest/coverage-istanbul": "2.1.8", - "cross-env": "7.0.3", "eslint": "8.57.0", "rimraf": "6.0.1", "typescript": "5.6.3", diff --git a/apps/hash-api/package.json b/apps/hash-api/package.json index a7621d31088..2d7f351bf9f 100644 --- a/apps/hash-api/package.json +++ b/apps/hash-api/package.json @@ -14,10 +14,10 @@ "generate-ontology-type-ids": "tsx ./src/generate-ontology-type-ids.ts; yarn prettier --write ../../libs/@local/hash-isomorphic-utils/src/ontology-type-ids.ts", "lint:eslint": "eslint --report-unused-disable-directives .", "lint:tsc": "tsc --noEmit", - "start": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/index.ts", + "start": "NODE_ENV=production NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/index.ts", "start:healthcheck": "wait-on --timeout 300000 http://0.0.0.0:5001", "start:migrate": "NODE_ENV=production tsx ./src/ensure-system-graph-is-initialized.ts", - "start:test": "cross-env NODE_ENV=test NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/index.ts", + "start:test": "NODE_ENV=test NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/index.ts", "start:test:healthcheck": "wait-on --timeout 300000 http://0.0.0.0:5001", "start:test:migrate": "NODE_ENV=test tsx ./src/ensure-system-graph-is-initialized.ts", "test:unit": "vitest --run" @@ -122,7 +122,6 @@ "@types/mime-types": "2.1.4", "@types/nodemailer": "6.4.17", "@vitest/coverage-istanbul": "2.1.8", - "cross-env": "7.0.3", "eslint": "8.57.0", "prettier": "3.4.1", "rimraf": "6.0.1", diff --git a/apps/hash-integration-worker/package.json b/apps/hash-integration-worker/package.json index a209ae415bc..99ff06da3e1 100644 --- a/apps/hash-integration-worker/package.json +++ b/apps/hash-integration-worker/package.json @@ -14,9 +14,9 @@ "lint:eslint": "eslint --report-unused-disable-directives .", "lint:tsc": "tsc --noEmit", "sentry:sourcemaps": "sentry-cli sourcemaps inject --org hashintel --project hash-temporal-worker-integration ./dist && sentry-cli sourcemaps upload --org hashintel --project hash-temporal-worker-integration ./dist", - "start": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/main.ts", + "start": "NODE_ENV=production NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/main.ts", "start:healthcheck": "wait-on --timeout 120000 http-get://localhost:4300/health", - "start:test": "cross-env NODE_ENV=test NODE_OPTIONS=--max-old-space-size=2048 tsx ./dist/main.js", + "start:test": "NODE_ENV=test NODE_OPTIONS=--max-old-space-size=2048 tsx ./dist/main.js", "start:test:healthcheck": "wait-on --timeout 120000 http-get://localhost:4300/health" }, "dependencies": { @@ -44,7 +44,6 @@ "@local/tsconfig": "0.0.0-private", "@sentry/cli": "^2.39.1", "@types/dotenv-flow": "3.3.3", - "cross-env": "7.0.3", "eslint": "8.57.0", "rimraf": "6.0.1", "typescript": "5.6.3", diff --git a/apps/hash-realtime/package.json b/apps/hash-realtime/package.json index 6143c407ab8..cc8ebf36283 100644 --- a/apps/hash-realtime/package.json +++ b/apps/hash-realtime/package.json @@ -11,8 +11,8 @@ "fix:eslint": "eslint --fix .", "lint:eslint": "eslint --report-unused-disable-directives .", "lint:tsc": "tsc --noEmit", - "start": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/index.ts", - "start:test": "cross-env NODE_ENV=test NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/index.ts" + "start": "NODE_ENV=production NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/index.ts", + "start:test": "NODE_ENV=test NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/index.ts" }, "dependencies": { "@local/hash-backend-utils": "0.0.0-private", @@ -26,7 +26,6 @@ "@local/tsconfig": "0.0.0-private", "@types/node": "22.10.0", "@types/set-interval-async": "1.0.3", - "cross-env": "7.0.3", "eslint": "8.57.0", "typescript": "5.6.3" } diff --git a/apps/hash-search-loader/package.json b/apps/hash-search-loader/package.json index 950ed541534..90d3565429f 100644 --- a/apps/hash-search-loader/package.json +++ b/apps/hash-search-loader/package.json @@ -11,7 +11,7 @@ "fix:eslint": "eslint --fix .", "lint:eslint": "eslint --report-unused-disable-directives .", "lint:tsc": "tsc --noEmit", - "start": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/index.ts" + "start": "NODE_ENV=production NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/index.ts" }, "dependencies": { "@apps/hash-api": "0.0.0-private", @@ -25,7 +25,6 @@ "@local/eslint-config": "0.0.0-private", "@local/tsconfig": "0.0.0-private", "@types/node": "22.10.0", - "cross-env": "7.0.3", "eslint": "8.57.0", "typescript": "5.6.3" } diff --git a/libs/@local/graph/client/typescript/package.json b/libs/@local/graph/client/typescript/package.json index a9eb6f892af..05ec6368385 100644 --- a/libs/@local/graph/client/typescript/package.json +++ b/libs/@local/graph/client/typescript/package.json @@ -21,7 +21,6 @@ "@redocly/cli": "1.25.14", "@rust/hash-graph-api": "0.0.0-private", "@types/node": "22.10.0", - "eslint": "8.57.0", "fix-esm-import-path": "1.10.1", "rimraf": "6.0.1", "typescript": "5.6.3" diff --git a/libs/@local/internal-api-client/typescript/package.json b/libs/@local/internal-api-client/typescript/package.json index 2aadfea4c99..b4cf713be05 100644 --- a/libs/@local/internal-api-client/typescript/package.json +++ b/libs/@local/internal-api-client/typescript/package.json @@ -18,7 +18,6 @@ "@local/eslint-config": "0.0.0-private", "@openapitools/openapi-generator-cli": "2.15.3", "@types/node": "22.10.0", - "eslint": "8.57.0", "prettier": "3.4.1", "rimraf": "6.0.1", "typescript": "5.6.3" diff --git a/package.json b/package.json index ed1694d3758..70639bc4f9b 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "generate-ontology-type-ids": "yarn workspace @apps/hash-api generate-ontology-type-ids", "fix": "npm-run-all --continue-on-error \"fix:*\"", "@TODO.1": "Upgrade or remove these blocks and remove the --ignore-package options (also @TODO.2)", - "fix:dependency-version-consistency": "check-dependency-version-consistency --fix . --ignore-dep=@blockprotocol/graph --ignore-dep=@sentry/webpack-plugin --ignore-package=@apps/hashdotdev --ignore-package=@blocks/embed --ignore-package=@blocks/person", + "fix:constraints": "yarn constraints --fix", "fix:eslint": "turbo --continue fix:eslint --", "fix:taplo": "taplo fmt", "fix:markdownlint": "markdownlint --dot --fix .", @@ -44,7 +44,7 @@ "fix:yarn-deduplicate": "yarn dedupe --strategy highest", "lint": "npm-run-all --continue-on-error \"lint:*\"", "@TODO.2": "Upgrade or remove these blocks and remove the --ignore-package options (also @TODO.1)", - "lint:dependency-version-consistency": "check-dependency-version-consistency . --ignore-dep=@blockprotocol/graph --ignore-dep=@sentry/webpack-plugin --ignore-package=@apps/hashdotdev --ignore-package=@blocks/embed --ignore-package=@blocks/person", + "lint:constraints": "yarn constraints", "lint:eslint": "turbo --continue lint:eslint --", "lint:license-in-workspaces": "yarn workspace @local/repo-chores exe scripts/check-license-in-workspaces.ts", "lint:lockfile-lint": "lockfile-lint --path yarn.lock --type yarn --allowed-hosts npm yarn", @@ -69,7 +69,8 @@ "lint-staged": { "**": [ "suppress-exit-code markdownlint --fix", - "suppress-exit-code prettier --write" + "suppress-exit-code prettier --write", + "suppress-exit-code yarn constraints --fix" ] }, "prettier": { @@ -122,22 +123,17 @@ "@sentry/cli": "^2.39.1", "@taplo/cli": "0.7.0", "@yarnpkg/types": "^4.0.0", - "check-dependency-version-consistency": "3.0.3", "concurrently": "7.6.0", - "cross-env": "7.0.3", - "dotenv-flow": "3.3.0", "husky": "8.0.3", "lint-staged": "15.2.10", "lockfile-lint": "4.14.0", "markdownlint-cli": "0.43.0", "npm-run-all2": "7.0.1", - "postinstall-postinstall": "2.1.0", "prettier": "3.4.1", "prettier-plugin-packagejson": "2.5.6", "prettier-plugin-sh": "0.14.0", "suppress-exit-code": "3.2.0", - "turbo": "2.3.3", - "wait-on": "8.0.1" + "turbo": "2.3.3" }, "packageManager": "yarn@4.5.3+sha512.3003a14012e2987072d244c720506549c1aab73ee728208f1b2580a9fd67b92d61ba6b08fe93f6dce68fd771e3af1e59a0afa28dd242dd0940d73b95fedd4e90" } diff --git a/yarn.config.cjs b/yarn.config.cjs index d61b031db8a..4791260fb6b 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -6,6 +6,31 @@ /** @type {import('@yarnpkg/types')} */ const { defineConfig } = require(`@yarnpkg/types`); +const enforcedDevDependencies = { + prettier: { commands: ["prettier"], ident: "prettier" }, + waitOn: { commands: ["wait-on"], ident: "wait-on" }, + rimraf: { commands: ["rimraf"], ident: "rimraf" }, + eslint: { commands: ["eslint"], ident: "eslint" }, + typescript: { commands: ["tsc", "ts-node"], ident: "typescript" }, + crossEnv: { commands: ["cross-env"], ident: "cross-env" }, +}; + +const ignoredDependencies = ["@blockprotocol/graph", "@sentry/webpack-plugin"]; +const ignoredWorkspaces = [ + "@apps/hashdotdev", + "@blocks/embed", + "@blocks/person", +]; + +/** + * + * @param {Dependency} dependency + */ +const shouldIgnoreDependency = (dependency) => + ignoredDependencies.includes(dependency.ident) || + ignoredWorkspaces.includes(dependency.workspace.ident) || + dependency.type === "peerDependencies"; + /** * Enforces consistent dependency versions across all workspaces in the project. * @@ -15,18 +40,37 @@ const { defineConfig } = require(`@yarnpkg/types`); */ function enforceConsistentDependenciesAcrossTheProject({ Yarn }) { for (const dependency of Yarn.dependencies()) { - if (dependency.type === `peerDependencies`) continue; + if (shouldIgnoreDependency(dependency)) { + continue; + } for (const otherDependency of Yarn.dependencies({ ident: dependency.ident, })) { - if (otherDependency.type === `peerDependencies`) continue; + if (shouldIgnoreDependency(otherDependency)) { + continue; + } dependency.update(otherDependency.range); } } } +/** + * Enforces no dual-type dependencies across workspaces. + * + * This function ensures that a dependency is not listed in both "dependencies" + * and "devDependencies" for any workspace. If a dependency is found in both, + * it removes it from "dependencies", keeping it only in "devDependencies". + * + * @param {Context} context - The Yarn constraint context. + */ +function enforceNoDualTypeDependencies({ Yarn }) { + for (const devDependency of Yarn.dependencies({ type: "devDependencies" })) { + devDependency.workspace.unset(`dependency.${devDependency.ident}`); + } +} + /** * Enforces the use of the `workspace:` protocol for all workspace dependencies. * @@ -74,35 +118,14 @@ function enforcePortalProtocolInsteadOfFileProtocol({ Yarn }) { * @param {Context} context - The Yarn constraint context. */ function enforceDevDependenciesAreProperlyDeclared({ Yarn }) { - const rootWorkspace = Yarn.workspace(); - - // get all required versions from @apps/hash-api - const workspace = Yarn.workspace({ ident: "@apps/hash-api" }); - - /** @type {Dependency} */ - const prettier = Yarn.dependency({ - workspace: rootWorkspace, - ident: "prettier", - }); - const waitOn = Yarn.dependency({ - workspace: rootWorkspace, - ident: "wait-on", - }); - /** @type {Dependency} */ - const rimraf = Yarn.dependency({ workspace, ident: "rimraf" }); - /** @type {Dependency} */ - const eslint = Yarn.dependency({ workspace, ident: "eslint" }); - /** @type {Dependency} */ - const typescript = Yarn.dependency({ workspace, ident: "typescript" }); - /** @type {Dependency} */ - const crossEnv = Yarn.dependency({ workspace, ident: "cross-env" }); - - const workspaces = Yarn.workspaces(); - for (const workspace of workspaces) { - if (workspace.ident === rootWorkspace.ident) { - continue; - } - + const dependencies = Object.fromEntries( + Object.entries(enforcedDevDependencies).map(([key, { ident }]) => [ + key, + Yarn.dependency({ ident }), + ]), + ); + + for (const workspace of Yarn.workspaces()) { /** @type {Record | undefined} */ const scripts = workspace.manifest.scripts; @@ -110,31 +133,43 @@ function enforceDevDependenciesAreProperlyDeclared({ Yarn }) { continue; } - // scripts is a key-value object - for (const value of Object.values(scripts)) { - if (value.includes("prettier")) { - workspace.set("devDependencies.prettier", prettier.range); - } - - if (value.includes("wait-on")) { - workspace.set("devDependencies.wait-on", waitOn.range); + const dependsOn = { + prettier: false, + waitOn: false, + rimraf: false, + eslint: false, + typescript: false, + crossEnv: false, + }; + + for (const script of Object.values(scripts)) { + for (const [key, { commands }] of Object.entries( + enforcedDevDependencies, + )) { + const scriptSplit = script.split(" "); + + if (commands.some((command) => scriptSplit.includes(command))) { + dependsOn[key] = true; + } } + } - if (value.includes("rimraf")) { - workspace.set("devDependencies.rimraf", rimraf.range); + for (const [key, value] of Object.entries(dependsOn)) { + if (!value) { + workspace.unset(`devDependencies.${dependencies[key].ident}`); + continue; } - if (value.includes("eslint")) { - workspace.set("devDependencies.eslint", eslint.range); - } + const dependency = dependencies[key]; - if (value.includes("ts-node") || value.includes("tsc")) { - workspace.set("devDependencies.typescript", typescript.range); + if (dependency === null) { + workspace.error( + `missing devDependency ${key}, unable to automatically determine the version`, + ); + continue; } - if (value.includes("cross-env")) { - workspace.set("devDependencies.cross-env", crossEnv.range); - } + workspace.set(`devDependencies.${dependency.ident}`, dependency.range); } } } @@ -142,7 +177,8 @@ function enforceDevDependenciesAreProperlyDeclared({ Yarn }) { module.exports = defineConfig({ async constraints(context) { // enforceWorkspaceDependenciesDeclaredAsSuch(context); - // enforceConsistentDependenciesAcrossTheProject(context); + enforceConsistentDependenciesAcrossTheProject(context); + enforceNoDualTypeDependencies(context); // enforcePortalProtocolInsteadOfFileProtocol(context); enforceDevDependenciesAreProperlyDeclared(context); }, diff --git a/yarn.lock b/yarn.lock index 2b731e75ad6..85a7673193b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -328,7 +328,6 @@ __metadata: ajv-formats: "npm:3.0.1" axios: "npm:1.7.8" cache-manager: "npm:5.7.6" - cross-env: "npm:7.0.3" dedent: "npm:0.7.0" dotenv-flow: "npm:3.3.0" e2b: "npm:0.13.1" @@ -666,7 +665,6 @@ __metadata: "@types/dotenv-flow": "npm:3.3.3" agentkeepalive: "npm:4.5.0" axios: "npm:1.7.8" - cross-env: "npm:7.0.3" dotenv-flow: "npm:3.3.0" eslint: "npm:8.57.0" rimraf: "npm:6.0.1" @@ -685,7 +683,6 @@ __metadata: "@local/tsconfig": "npm:0.0.0-private" "@types/node": "npm:22.10.0" "@types/set-interval-async": "npm:1.0.3" - cross-env: "npm:7.0.3" eslint: "npm:8.57.0" set-interval-async: "npm:2.0.3" slonik: "npm:24.2.0" @@ -704,7 +701,6 @@ __metadata: "@local/hash-isomorphic-utils": "npm:0.0.0-private" "@local/tsconfig": "npm:0.0.0-private" "@types/node": "npm:22.10.0" - cross-env: "npm:7.0.3" eslint: "npm:8.57.0" hot-shots: "npm:8.5.2" tsx: "npm:4.19.2" @@ -8535,7 +8531,6 @@ __metadata: "@rust/hash-graph-api": "npm:0.0.0-private" "@types/node": "npm:22.10.0" axios: "npm:1.7.8" - eslint: "npm:8.57.0" fix-esm-import-path: "npm:1.10.1" rimraf: "npm:6.0.1" typescript: "npm:5.6.3" @@ -8660,7 +8655,6 @@ __metadata: "@openapitools/openapi-generator-cli": "npm:2.15.3" "@types/node": "npm:22.10.0" axios: "npm:1.7.8" - eslint: "npm:8.57.0" prettier: "npm:3.4.1" rimraf: "npm:6.0.1" typescript: "npm:5.6.3" @@ -18980,7 +18974,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:8.17.1, ajv@npm:^8.0.0, ajv@npm:^8.0.1, ajv@npm:^8.11.2, ajv@npm:^8.12.0, ajv@npm:^8.9.0": +"ajv@npm:8.17.1, ajv@npm:^8.0.0, ajv@npm:^8.11.2, ajv@npm:^8.12.0, ajv@npm:^8.9.0": version: 8.17.1 resolution: "ajv@npm:8.17.1" dependencies: @@ -21290,7 +21284,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:5.3.0, chalk@npm:^5.0.1, chalk@npm:^5.2.0, chalk@npm:^5.3.0, chalk@npm:~5.3.0": +"chalk@npm:5.3.0, chalk@npm:^5.2.0, chalk@npm:^5.3.0, chalk@npm:~5.3.0": version: 5.3.0 resolution: "chalk@npm:5.3.0" checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 @@ -21434,23 +21428,6 @@ __metadata: languageName: node linkType: hard -"check-dependency-version-consistency@npm:3.0.3": - version: 3.0.3 - resolution: "check-dependency-version-consistency@npm:3.0.3" - dependencies: - chalk: "npm:^5.0.1" - commander: "npm:^9.0.0" - edit-json-file: "npm:^1.7.0" - globby: "npm:^13.1.1" - semver: "npm:^7.3.5" - table: "npm:^6.7.1" - type-fest: "npm:^2.1.0" - bin: - check-dependency-version-consistency: dist/bin/check-dependency-version-consistency.js - checksum: 10c0/7ff6a2bfd0e3208b095f04788f19b83dc2f8507148047f7f9e8ca7e7cd36ec39e43c4cccd072c1c9b1c05cfd9636a33b37af02f45e560f990f1471a838aadbb7 - languageName: node - linkType: hard - "check-error@npm:^2.1.1": version: 2.1.1 resolution: "check-error@npm:2.1.1" @@ -22161,13 +22138,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^9.0.0": - version: 9.5.0 - resolution: "commander@npm:9.5.0" - checksum: 10c0/5f7784fbda2aaec39e89eb46f06a999e00224b3763dc65976e05929ec486e174fe9aac2655f03ba6a5e83875bd173be5283dc19309b7c65954701c02025b3c1d - languageName: node - linkType: hard - "commist@npm:^3.2.0": version: 3.2.0 resolution: "commist@npm:3.2.0" @@ -24488,19 +24458,6 @@ __metadata: languageName: node linkType: hard -"edit-json-file@npm:^1.7.0": - version: 1.8.0 - resolution: "edit-json-file@npm:1.8.0" - dependencies: - find-value: "npm:^1.0.12" - iterate-object: "npm:^1.3.4" - r-json: "npm:^1.2.10" - set-value: "npm:^4.1.0" - w-json: "npm:^1.3.10" - checksum: 10c0/3dc1e7da2245601bd301310d0a3d40123918eb9468268ad4f7b9aeb347fbf10286da026515be870d01b8e4fb5282254650113a6d501e14815663a94cb705e753 - languageName: node - linkType: hard - "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" @@ -26764,13 +26721,6 @@ __metadata: languageName: node linkType: hard -"find-value@npm:^1.0.12": - version: 1.0.12 - resolution: "find-value@npm:1.0.12" - checksum: 10c0/71fa0c4cd003ca09c3a679c99b899a1d45d60e325f858fd463c484358a3424c7dba9ff965b67764ba3226ffe6642cf458c5be7797fdd68c90fb9c0a9eae4e39c - languageName: node - linkType: hard - "find-yarn-workspace-root2@npm:1.2.16": version: 1.2.16 resolution: "find-yarn-workspace-root2@npm:1.2.16" @@ -28370,22 +28320,17 @@ __metadata: "@sentry/cli": "npm:^2.39.1" "@taplo/cli": "npm:0.7.0" "@yarnpkg/types": "npm:^4.0.0" - check-dependency-version-consistency: "npm:3.0.3" concurrently: "npm:7.6.0" - cross-env: "npm:7.0.3" - dotenv-flow: "npm:3.3.0" husky: "npm:8.0.3" lint-staged: "npm:15.2.10" lockfile-lint: "npm:4.14.0" markdownlint-cli: "npm:0.43.0" npm-run-all2: "npm:7.0.1" - postinstall-postinstall: "npm:2.1.0" prettier: "npm:3.4.1" prettier-plugin-packagejson: "npm:2.5.6" prettier-plugin-sh: "npm:0.14.0" suppress-exit-code: "npm:3.2.0" turbo: "npm:2.3.3" - wait-on: "npm:8.0.1" languageName: unknown linkType: soft @@ -30219,13 +30164,6 @@ __metadata: languageName: node linkType: hard -"is-primitive@npm:^3.0.1": - version: 3.0.1 - resolution: "is-primitive@npm:3.0.1" - checksum: 10c0/2e3b6f029fabbdda467ea51ea4fdd00e6552434108b863a08f296638072c506a7c195089e3e31f83e7fc14bebbd1c5c9f872fe127c9284a7665c8227b47ffdd6 - languageName: node - linkType: hard - "is-promise@npm:^2.2.2": version: 2.2.2 resolution: "is-promise@npm:2.2.2" @@ -30856,13 +30794,6 @@ __metadata: languageName: node linkType: hard -"iterate-object@npm:^1.3.4": - version: 1.3.4 - resolution: "iterate-object@npm:1.3.4" - checksum: 10c0/ff37f08223397ea637af136061ba74590efe5b29be5ca9006ae8168ce2faca67b0b4ebc763317173da65d2ae3ba81c1b51f4ceb80092a7bc668f3798f63db9e2 - languageName: node - linkType: hard - "iterator.prototype@npm:^1.1.3": version: 1.1.3 resolution: "iterator.prototype@npm:1.1.3" @@ -32319,13 +32250,6 @@ __metadata: languageName: node linkType: hard -"lodash.truncate@npm:^4.4.2": - version: 4.4.2 - resolution: "lodash.truncate@npm:4.4.2" - checksum: 10c0/4e870d54e8a6c86c8687e057cec4069d2e941446ccab7f40b4d9555fa5872d917d0b6aa73bece7765500a3123f1723bcdba9ae881b679ef120bba9e1a0b0ed70 - languageName: node - linkType: hard - "lodash.union@npm:^4.6.0": version: 4.6.0 resolution: "lodash.union@npm:4.6.0" @@ -37891,13 +37815,6 @@ __metadata: languageName: node linkType: hard -"postinstall-postinstall@npm:2.1.0": - version: 2.1.0 - resolution: "postinstall-postinstall@npm:2.1.0" - checksum: 10c0/70488447292c712afa7806126824d6fe93362392cbe261ae60166d9119a350713e0dbf4deb2ca91637c1037bc030ed1de78d61d9041bf2504513070f1caacdfd - languageName: node - linkType: hard - "prebuild-install@npm:^7.1.1": version: 7.1.2 resolution: "prebuild-install@npm:7.1.2" @@ -38859,15 +38776,6 @@ __metadata: languageName: node linkType: hard -"r-json@npm:^1.2.10": - version: 1.3.0 - resolution: "r-json@npm:1.3.0" - dependencies: - w-json: "npm:1.3.10" - checksum: 10c0/de54df28ee2642767c821818257da87d68d72f443cdb1db2256afc1dba9701acdebb0afbea9017680daff483464dfe02ba9692a9b1dfea29a14ba3ce0a9e9fcb - languageName: node - linkType: hard - "race-event@npm:^1.3.0": version: 1.3.0 resolution: "race-event@npm:1.3.0" @@ -41389,16 +41297,6 @@ __metadata: languageName: node linkType: hard -"set-value@npm:^4.1.0": - version: 4.1.0 - resolution: "set-value@npm:4.1.0" - dependencies: - is-plain-object: "npm:^2.0.4" - is-primitive: "npm:^3.0.1" - checksum: 10c0/dc186676b6cc0cfcf1656b8acdfe7a68591f0645dd2872250100817fb53e5e9298dc1727a95605ac03f82110e9b3820c90a0a02d84e0fb89f210922b08b37e02 - languageName: node - linkType: hard - "setimmediate@npm:1.0.5, setimmediate@npm:^1.0.5": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" @@ -43279,19 +43177,6 @@ __metadata: languageName: node linkType: hard -"table@npm:^6.7.1": - version: 6.8.2 - resolution: "table@npm:6.8.2" - dependencies: - ajv: "npm:^8.0.1" - lodash.truncate: "npm:^4.4.2" - slice-ansi: "npm:^4.0.0" - string-width: "npm:^4.2.3" - strip-ansi: "npm:^6.0.1" - checksum: 10c0/f8b348af38ee34e419d8ce7306ba00671ce6f20e861ccff22555f491ba264e8416086063ce278a8d81abfa8d23b736ec2cca7ac4029b5472f63daa4b4688b803 - languageName: node - linkType: hard - "tap-parser@npm:16.0.1": version: 16.0.1 resolution: "tap-parser@npm:16.0.1" @@ -44540,7 +44425,7 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^2.1.0, type-fest@npm:^2.12.2, type-fest@npm:^2.19.0, type-fest@npm:^2.3.3, type-fest@npm:~2.19": +"type-fest@npm:^2.12.2, type-fest@npm:^2.19.0, type-fest@npm:^2.3.3, type-fest@npm:~2.19": version: 2.19.0 resolution: "type-fest@npm:2.19.0" checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb @@ -45996,13 +45881,6 @@ __metadata: languageName: node linkType: hard -"w-json@npm:1.3.10, w-json@npm:^1.3.10": - version: 1.3.10 - resolution: "w-json@npm:1.3.10" - checksum: 10c0/441bf7685d8c8d9ff787066d75c66f7a66794a90ea7577d9e94103089427f04117176b40bdf4def505c5f90ee3e65a4f569765754e866f688d68e4521da1fa94 - languageName: node - linkType: hard - "w3c-keyname@npm:^2.2.0": version: 2.2.8 resolution: "w3c-keyname@npm:2.2.8"