diff --git a/.claude/commands/checkly-cli-update-dependencies.md b/.claude/commands/checkly-cli-update-dependencies.md index a665333d2..7ab4d86df 100644 --- a/.claude/commands/checkly-cli-update-dependencies.md +++ b/.claude/commands/checkly-cli-update-dependencies.md @@ -4,46 +4,59 @@ Update the monorepo's dependencies (including devDependencies) to the latest versions that remain compatible with our supported Node range. Optionally interpret `$ARGUMENTS` as a scope hint (e.g. specific package names, "dry run" to only report, or "cli only"). With no arguments, survey and update everything eligible across all workspace packages. -The guiding rule: **never raise our minimum supported Node version as a side effect of a dependency bump.** We are on the stable 8.x line; dropping Node 20 would be a breaking (v9) change, so a dependency whose newest version requires a higher Node than our floor must be held back to its latest still-compatible version. +Two guiding rules: + +1. **Never raise our minimum supported Node version as a side effect of a dependency bump.** We are on the stable 8.x line; dropping Node 20 would be a breaking (v9) change, so a dependency whose newest version requires a higher Node than our floor must be held back to its latest still-compatible version. +2. **Respect the release-age embargo.** `pnpm-workspace.yaml` sets `minimumReleaseAge` (currently `2880` minutes = 2 days): pnpm refuses to install any version published within that window (a supply-chain safeguard). So the effective target for every package is the latest version that is **both** floor-compatible **and** older than the embargo. A version that is newer but still inside the embargo is not "held back" permanently — it is simply not eligible yet; note it and re-evaluate on the next run. + +Because of rule 2, the npm registry's `latest` tag (and any tool that reads it directly, including the helper below and raw `pnpm outdated`) can **over-report** — it will name versions the embargo blocks. The authoritative target is whatever `pnpm update` actually resolves, since pnpm enforces the embargo. Never bypass it (e.g. with an explicit `pnpm add pkg@` or the `minimumReleaseAgeExclude` setting) to force a version pnpm refused. All paths below are relative to the repo root unless noted otherwise. -## Phase 0: Determine the Node floor +## Phase 0: Determine the constraints (Node floor + release-age embargo) - [ ] Read `engines.node` from `packages/cli/package.json` and `packages/create-cli/package.json`. They should match. The current value is `^20.19.0 || >=22.12.0`, so the **minimum supported runtime is Node 20.19.0** — this is the version every dependency must remain installable on. - [ ] Set `FLOOR` to that minimum (e.g. `20.19.0`). Do not hardcode it from this doc — read it live, since a future major may change it. +- [ ] Read `minimumReleaseAge` from `pnpm-workspace.yaml` and set `EMBARGO_MIN` to it (e.g. `2880`). Do not hardcode it from this doc — read it live. Any version published more recently than `EMBARGO_MIN` minutes ago is not installable yet. ## Phase 1: Survey what is outdated - [ ] Run `pnpm outdated -r` to list outdated direct dependencies across all workspace packages. -## Phase 2: Choose target versions (compatibility-aware) +## Phase 2: Choose target versions (compatibility- and embargo-aware) -For each outdated package, pick the **latest version whose `engines.node` still satisfies `FLOOR`** — which may be the latest overall, or an older version if the newest major dropped support for our floor. Use this helper to compute it (requires the `semver` already installed under the CLI package): +For each outdated package, pick the **latest version that both satisfies `FLOOR` and clears the release-age embargo**. That may be the registry's latest overall, or something older — because the newest major dropped support for our floor, or because the newest release is still inside the embargo window. Use this helper to compute it (requires the `semver` already installed under the CLI package): ```bash -# Prints the latest non-prerelease version of each package compatible with FLOOR. -FLOOR=20.19.0 # read this from engines.node, do not assume +# Prints the latest non-prerelease version of each package that is BOTH +# floor-compatible AND older than the release-age embargo. +FLOOR=20.19.0 # read from engines.node, do not assume +EMBARGO_MIN=2880 # read minimumReleaseAge from pnpm-workspace.yaml, do not assume SEMVER=$(ls -d node_modules/.pnpm/semver@* | head -1) for p in "PACKAGE_NAME_1" "PACKAGE_NAME_2"; do enc=$(echo "$p" | sed 's#/#%2f#') curl -s "https://registry.npmjs.org/$enc" | \ - SEMVERDIR="$PWD/$SEMVER" PKG="$p" FLOOR="$FLOOR" node -e ' + SEMVERDIR="$PWD/$SEMVER" PKG="$p" FLOOR="$FLOOR" EMBARGO_MIN="$EMBARGO_MIN" node -e ' const semver=require(process.env.SEMVERDIR+"/node_modules/semver"); let d="";process.stdin.on("data",c=>d+=c).on("end",()=>{ - const j=JSON.parse(d), floor=process.env.FLOOR, ok=[]; + const j=JSON.parse(d), floor=process.env.FLOOR; + const cutoff=Date.now()-Number(process.env.EMBARGO_MIN)*60000, ok=[]; for(const [v,m] of Object.entries(j.versions)){ if(semver.prerelease(v)) continue; const e=m.engines&&m.engines.node; - if(!e || semver.satisfies(floor,e)) ok.push(v); + if(e && !semver.satisfies(floor,e)) continue; // fails the Node floor + const t=j.time&&j.time[v]; + if(t && Date.parse(t)>cutoff) continue; // still inside the embargo + ok.push(v); } ok.sort(semver.rcompare); - console.log(process.env.PKG+": latest compatible = "+(ok[0]||"NONE")); + console.log(process.env.PKG+": latest installable = "+(ok[0]||"NONE")); });' done ``` -- [ ] For every outdated package, decide its target version with the helper above. If the latest compatible version is below the latest published version, **note the gap and the reason** (newer major requires Node > our floor). +- [ ] For every outdated package, decide its target version with the helper above. If the target is below the latest published version, **note the gap and which constraint caused it**: newer major requires Node > our floor (held back), or newest release is still inside the embargo (not eligible yet — re-evaluate next run). +- [ ] The helper is a cross-check, not the source of truth. `pnpm update` (Phase 3) enforces both constraints itself, so its resolved versions are authoritative; if they disagree with the helper, trust pnpm and investigate the discrepancy rather than forcing the helper's answer. ### Mandatory exclusions — do NOT update these @@ -58,11 +71,16 @@ If `$ARGUMENTS` explicitly asks to update one of these, stop and confirm with th ```bash pnpm update -r --latest ... ``` -- [ ] For packages where the latest compatible version is **not** the latest published (held-back majors), pin the explicit range instead so `--latest` doesn't overshoot: + `--latest` will not overshoot into an embargoed version: pnpm enforces `minimumReleaseAge`, so it resolves each named package to the newest version that is both floor-compatible and past the embargo. If it appears to skip a version you expected, that version is almost certainly still inside the embargo — confirm the publish date rather than forcing it. +- [ ] For packages where the latest compatible version is **not** the latest published because the newest major raises our Node floor (held-back majors), pin the explicit range instead so `--latest` doesn't overshoot: ```bash pnpm add -w -D "@^" # -w for root devDeps; target the owning package otherwise ``` -- [ ] Confirm the resulting `package.json` ranges and `pnpm-lock.yaml` reflect the intended versions, and that the excluded packages (`@types/node`, `vitest`) are unchanged. +- [ ] `pnpm update --latest` also refreshes unrelated in-range transitive dependencies, which bloats the diff. For a minimal, reviewable change, once the `package.json` ranges are correct, restore the committed lockfile and let a plain install rewrite only what the new ranges require: + ```bash + git checkout HEAD -- pnpm-lock.yaml && pnpm install + ``` +- [ ] Confirm the resulting `package.json` ranges and `pnpm-lock.yaml` reflect the intended versions; that the excluded packages (`@types/node`, `vitest`) are unchanged; that no embargoed version leaked into the lockfile; and that `pnpm install --frozen-lockfile` reports the lockfile is up to date. ## Phase 4: Verify @@ -78,6 +96,6 @@ Run the full local pipeline and confirm each step is green before reporting succ ## Phase 5: Report - [ ] Summarize in a table with these columns: **Package**, **Type** (`dependency` or `devDependency` — list whichever it is in the manifest), **Owning package** (`checkly`, `create-checkly`, or root), **From → To**, and **Notes**. -- [ ] In the same report, call out separately what was **held back** and why (which major dropped our Node floor), and the **intentional exclusions** (`@types/node`, `vitest`). +- [ ] In the same report, call out separately: what was **held back** and why (which major dropped our Node floor); what was **not eligible this week** because its newest release is still inside the release-age embargo (name the version and re-evaluate next run); and the **intentional exclusions** (`@types/node`, `vitest`). - [ ] State the verification results plainly (build/lint/tests pass, no engine warnings). - [ ] Do not commit or open a PR unless asked. If asked, use a `chore(deps):` conventional-commit subject and spell out the held-back/excluded packages in the body and PR description. The PR title should include the current date (e.g. `chore(deps): weekly CLI dependency update (2026-06-15)`). diff --git a/package.json b/package.json index a9d3134c7..a4e3b294c 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "lint-staged": "^16.4.0", "rimraf": "^6.1.3", "simple-git-hooks": "^2.13.1", - "typescript-eslint": "^8.62.0" + "typescript-eslint": "^8.62.1" }, "simple-git-hooks": { "commit-msg": "pnpm exec commitlint --edit", diff --git a/packages/cli/package.json b/packages/cli/package.json index fda21c3d7..4b1370c1f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -109,10 +109,10 @@ }, "homepage": "https://github.com/checkly/checkly-cli#readme", "dependencies": { - "@oclif/core": "^4.11.11", + "@oclif/core": "^4.11.14", "@oclif/plugin-help": "^6.2.53", "@oclif/plugin-warn-if-update-available": "^3.1.68", - "@typescript-eslint/typescript-estree": "^8.62.0", + "@typescript-eslint/typescript-estree": "^8.62.1", "acorn": "^8.17.0", "acorn-walk": "^8.3.5", "archiver": "^8.0.0", @@ -138,7 +138,7 @@ "minimatch": "^10.2.5", "mqtt": "^5.15.1", "open": "^11.0.0", - "p-queue": "^9.3.0", + "p-queue": "^9.3.1", "prompts": "^2.4.2", "proxy-from-env": "^2.1.0", "recast": "^0.23.12", @@ -160,7 +160,7 @@ "config": "^4.4.2", "cross-env": "^10.1.0", "nanoid": "^5.1.16", - "oclif": "^4.23.23", + "oclif": "^4.23.24", "rimraf": "^6.1.3", "tar": "^7.5.19", "typescript": "^6.0.3", diff --git a/packages/create-cli/package.json b/packages/create-cli/package.json index d27713005..6f24c0cd2 100644 --- a/packages/create-cli/package.json +++ b/packages/create-cli/package.json @@ -54,7 +54,7 @@ }, "homepage": "https://github.com/checkly/checkly-cli#readme", "dependencies": { - "@oclif/core": "^4.11.11", + "@oclif/core": "^4.11.14", "@oclif/plugin-help": "^6.2.53", "@oclif/plugin-warn-if-update-available": "^3.1.68", "axios": "^1.18.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78fbe6a1a..981054902 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,14 +36,14 @@ importers: specifier: ^2.13.1 version: 2.13.1 typescript-eslint: - specifier: ^8.62.0 - version: 8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.62.1 + version: 8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) packages/cli: dependencies: '@oclif/core': - specifier: ^4.11.11 - version: 4.11.11 + specifier: ^4.11.14 + version: 4.11.14 '@oclif/plugin-help': specifier: ^6.2.53 version: 6.2.53 @@ -51,8 +51,8 @@ importers: specifier: ^3.1.68 version: 3.1.68 '@typescript-eslint/typescript-estree': - specifier: ^8.62.0 - version: 8.62.0(typescript@6.0.3) + specifier: ^8.62.1 + version: 8.62.1(typescript@6.0.3) acorn: specifier: ^8.17.0 version: 8.17.0 @@ -129,8 +129,8 @@ importers: specifier: ^11.0.0 version: 11.0.0 p-queue: - specifier: ^9.3.0 - version: 9.3.0 + specifier: ^9.3.1 + version: 9.3.1 prompts: specifier: ^2.4.2 version: 2.4.2 @@ -190,8 +190,8 @@ importers: specifier: ^5.1.16 version: 5.1.16 oclif: - specifier: ^4.23.23 - version: 4.23.23(@types/node@22.19.18) + specifier: ^4.23.24 + version: 4.23.24(@types/node@22.19.18) rimraf: specifier: ^6.1.3 version: 6.1.3 @@ -208,8 +208,8 @@ importers: packages/create-cli: dependencies: '@oclif/core': - specifier: ^4.11.11 - version: 4.11.11 + specifier: ^4.11.14 + version: 4.11.14 '@oclif/plugin-help': specifier: ^6.2.53 version: 6.2.53 @@ -863,8 +863,8 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@oclif/core@4.11.11': - resolution: {integrity: sha512-LoGzrvkH9I8dwhxuLafcf90MAp+fYfAiAhpyixaVAWaclIgs+vXeMMQwBG90/wqjdygIKcFAqNnNJrfl3s3X8Q==} + '@oclif/core@4.11.14': + resolution: {integrity: sha512-cZ5Ktd+rT0PO+o7KBH4vRFTgg+xMLf8F41WK39p8MkXEViZA/Qqe+4lzZT6102zgUxMORET1HtF9t5w8CB3tnQ==} engines: {node: '>=18.0.0'} '@oclif/plugin-help@6.2.53': @@ -1159,39 +1159,39 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@typescript-eslint/eslint-plugin@8.62.0': - resolution: {integrity: sha512-o+mpz7EYiMzXoySXiKmzlabIvTVqUuK5yLrAedRPRDA0IpPFMUV1IXt6OqljIxX/kumN6EjUYp41Hqelh6p/Dw==} + '@typescript-eslint/eslint-plugin@8.62.1': + resolution: {integrity: sha512-4EQM77WgVNxj7OkL/5b/D/xZsw00G577+UriYTC7JF5opcF3T2AuoeY7ueLaZgSVjSgCS6yOAJB5bRGLPSJUzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.62.0 + '@typescript-eslint/parser': ^8.62.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.62.0': - resolution: {integrity: sha512-dzHeT2gySzZtLDsuqxU9AkYgIsQoHAHtRBpOqM+Ofzx1Bwrd2RcCjQJ+6iQbsHOIR6NS33bF2W1k3blN1zLDrA==} + '@typescript-eslint/parser@8.62.1': + resolution: {integrity: sha512-sPhE4iHuJDSvoAiec+Ro8JyXw8f0ql13HFR82P99nCm9GwTEKG0KYLvDe6REk8BCXuit6vJAv/Yxg5ABaNS2rA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.62.0': - resolution: {integrity: sha512-wexnCqiTg7BOGtbLDftYpRWlmLq4xfoMd7BKFR6Y75sZS3QmRKLdN3yWLhmIYgqMmP/OXWpj3H8odkb5nGURCQ==} + '@typescript-eslint/project-service@8.62.1': + resolution: {integrity: sha512-yQ3RgY5RkSBpsNS1Bx/JQEcA24FOSdfGktoyprAr5u18390UQdtVcfnEv4nIrIshNnavlVyZBKxQwT1fIAE6cg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.62.0': - resolution: {integrity: sha512-1lX38kNxXIRb8mEc3lbq5mdHq1Pf2+U0nFU65KfT18mtPxxl0fvjuEE92mHuXPuCtElJhOrddOpyMlM3Z0umEA==} + '@typescript-eslint/scope-manager@8.62.1': + resolution: {integrity: sha512-r4d249KbQ1SFdpeStvob8Ih6aPPIzfqllPVOtvhve6ZcpuVcYo5/7zUWckKpHE7StASX4kTKZTLf0WQm/wPkcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.62.0': - resolution: {integrity: sha512-y2GAdB6ykaXUvuspbYnizQc4oDDz0Tz/Yc7iWrXf9mx8vm/L/0vLHCe0tS2boG96Zy+DivnVDQ9ZUEWoHqqx1g==} + '@typescript-eslint/tsconfig-utils@8.62.1': + resolution: {integrity: sha512-xadytJqX9vJVQ2fdQjkcIVigwaOJNWkpjdLt6cEQ+xPnrI1fkp+/jZE/I97k9KUjqtpd25i0HeyZf3T6dutv2g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.62.0': - resolution: {integrity: sha512-+g5O3j0w2ldzC86Pv6fvbO/xhAonbJFIdf/MKQ1d30gndlsVzUOE83ldfSE15Qrl9fhFjK6AovHs5Wpp6vx86w==} + '@typescript-eslint/type-utils@8.62.1': + resolution: {integrity: sha512-aXM5xlqXiTxPibXB93cLAURfT3rlizf7uMXISCXy66Isr/9hISJx3yDsKl0L7lKa51b8JpFuNKby0/O0pEm9jg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -1201,25 +1201,25 @@ packages: resolution: {integrity: sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.62.0': - resolution: {integrity: sha512-KvAclkktORPvM54TgLgA4z9HIV1M8zOgw9ZVNXl9f/8dLYfXYX1wkMXP7qmabpijQRV5bHJLOmoyGQbLMaUYeg==} + '@typescript-eslint/types@8.62.1': + resolution: {integrity: sha512-ooCzJFaf+Hg+uG6fA3NRFGuFjlfNlDhBthbv4ZPU/0elCAFUfnyXUvf/WOpHz/jYwSmvU2GkR2LtyUfy1AxZ1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.62.0': - resolution: {integrity: sha512-+hVbNxtW64pIcZWDPGbyaKF7vp2IBTVY5ma1blwwksrjdsbdqqEKvJWMGbBofei4F6Dovx1M0RJgoFeNu2279A==} + '@typescript-eslint/typescript-estree@8.62.1': + resolution: {integrity: sha512-xMcW9oP9u7fAMXYs9A65CVmtLQe2r//oXINHfi8HV+oiqhih17sbLdhXr4540YWlgpDKQdY854OL5ZrdCiQsAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.62.0': - resolution: {integrity: sha512-82r66fi9zYwZ+mTq3vKgwjbZ1PVk/DJzrXFLpG6RnBbdvH8TEGVHIs9H4d2drhkOzf0syZuD/OZvvlu6GDbP4g==} + '@typescript-eslint/utils@8.62.1': + resolution: {integrity: sha512-sHtbPfuKNZCG+ih8SyjjucqRntSVmp8XgL5u6o9mAhiSn8ds5o/M/XdM0abweme2Tln3szOstOrZ9OXitvPh0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.62.0': - resolution: {integrity: sha512-CY3uyFSRbcQv3nnSv8S0+lDftMVz6P963PoRlxrV7ew/Md564g9ut60PYzdLM5qW4jFn93GBF+Soi90ISAN+GQ==} + '@typescript-eslint/visitor-keys@8.62.1': + resolution: {integrity: sha512-4g3BLxfdTMy8iZG0MaBkadnlRrCJ74cQiFbyEVMrkwIoqdyaXXQM22cotDvrl4x28wgIZ9rEJRoM+mmhSJpJ1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitest/expect@3.2.6': @@ -2447,8 +2447,8 @@ packages: number-allocator@1.0.14: resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==} - oclif@4.23.23: - resolution: {integrity: sha512-xO5p8LbBiZaKw1SGHVzxP6GaGm5KR/TXNbv1geQKfKeNAcNZd473ZZqhHtITTWRyyxXco1Te8bygorZPrCiwFA==} + oclif@4.23.24: + resolution: {integrity: sha512-QbjHsrV5z5PWUIsLXHcPaWyECqOrX7JekXaTvL3WekUf5wl+B3kqZb5JD2dI3ndyDwTfJ8rLFMCIt6B4T6fpeA==} engines: {node: '>=18.0.0'} hasBin: true @@ -2484,8 +2484,8 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-queue@9.3.0: - resolution: {integrity: sha512-7NED7xhQ74Ngp4JP/2e0VZHp7vSWfJfqeiR92jPgxsz6m0Se4P03YoTKa9dDXyZ3r6P616gUXttrB6nnHYKang==} + p-queue@9.3.1: + resolution: {integrity: sha512-POWdiIPmsUPGwb4FeQ4OBg46aqmcInSWe45CKDsGHiOBiVQM9chqfQTuqhuTzcg2Vz9faTI65at0KkVyVEiCHw==} engines: {node: '>=20'} p-timeout@7.0.1: @@ -2923,8 +2923,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.62.0: - resolution: {integrity: sha512-8QxXi+ZACKX0kaqO4gY8kn0RSD9gFfaHDWwjqtEN48aWCBkX4MJaufWN+c3BzlrXLOxfywDL8CaoqUwcRq4j4Q==} + typescript-eslint@8.62.1: + resolution: {integrity: sha512-vymnnM5g0AKQDSAyfP12nMIBvgwgA42syg74kkuZ4x1VuTzwQKwc5h9rGxeShCjny5o+zWAb6OEoz7XLgrIkIw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3828,7 +3828,7 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.5': {} - '@oclif/core@4.11.11': + '@oclif/core@4.11.14': dependencies: ansi-escapes: 4.3.2 ansis: 3.17.0 @@ -3851,12 +3851,12 @@ snapshots: '@oclif/plugin-help@6.2.53': dependencies: - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 '@oclif/plugin-not-found@3.2.88(@types/node@22.19.18)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@22.19.18) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: @@ -3864,7 +3864,7 @@ snapshots: '@oclif/plugin-warn-if-update-available@3.1.68': dependencies: - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 ansis: 3.17.0 debug: 4.4.3(supports-color@8.1.1) http-call: 5.3.0 @@ -4101,14 +4101,14 @@ snapshots: dependencies: '@types/node': 22.19.18 - '@typescript-eslint/eslint-plugin@8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/type-utils': 8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/type-utils': 8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.62.1 eslint: 10.6.0(jiti@2.7.0) ignore: 7.0.5 natural-compare: 1.4.0 @@ -4117,41 +4117,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/parser@8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.62.1 debug: 4.4.3(supports-color@8.1.1) eslint: 10.6.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.62.0(typescript@6.0.3)': + '@typescript-eslint/project-service@8.62.1(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@6.0.3) - '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@6.0.3) + '@typescript-eslint/types': 8.62.1 debug: 4.4.3(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.62.0': + '@typescript-eslint/scope-manager@8.62.1': dependencies: - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/visitor-keys': 8.62.1 - '@typescript-eslint/tsconfig-utils@8.62.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.62.1(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.6.0(jiti@2.7.0) ts-api-utils: 2.5.0(typescript@6.0.3) @@ -4161,14 +4161,14 @@ snapshots: '@typescript-eslint/types@8.59.2': {} - '@typescript-eslint/types@8.62.0': {} + '@typescript-eslint/types@8.62.1': {} - '@typescript-eslint/typescript-estree@8.62.0(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.62.1(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.62.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@6.0.3) - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/project-service': 8.62.1(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@6.0.3) + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/visitor-keys': 8.62.1 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.8.5 @@ -4178,20 +4178,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/utils@8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) eslint: 10.6.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.62.0': + '@typescript-eslint/visitor-keys@8.62.1': dependencies: - '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/types': 8.62.1 eslint-visitor-keys: 5.0.1 '@vitest/expect@3.2.6': @@ -5429,14 +5429,14 @@ snapshots: transitivePeerDependencies: - supports-color - oclif@4.23.23(@types/node@22.19.18): + oclif@4.23.24(@types/node@22.19.18): dependencies: '@aws-sdk/client-cloudfront': 3.1075.0 '@aws-sdk/client-s3': 3.1075.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 '@oclif/plugin-help': 6.2.53 '@oclif/plugin-not-found': 3.2.88(@types/node@22.19.18) '@oclif/plugin-warn-if-update-available': 3.1.68 @@ -5505,7 +5505,7 @@ snapshots: dependencies: p-limit: 3.1.0 - p-queue@9.3.0: + p-queue@9.3.1: dependencies: eventemitter3: 5.0.4 p-timeout: 7.0.1 @@ -5943,12 +5943,12 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3): + typescript-eslint@8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/parser': 8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@6.0.3) eslint: 10.6.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: