Skip to content

feat: compact-deployer tool#86

Draft
0xisk wants to merge 12 commits into
mainfrom
feat/compact-deployer
Draft

feat: compact-deployer tool#86
0xisk wants to merge 12 commits into
mainfrom
feat/compact-deployer

Conversation

@0xisk
Copy link
Copy Markdown
Member

@0xisk 0xisk commented May 19, 2026

Types of changes

What types of changes does your code introduce to OpenZeppelin Midnight Contracts?
Put an x in the boxes that apply

  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation Update (if none of the other choices apply)

Fixes #???

PR Checklist

  • I have read the Contributing Guide
  • I have added tests that prove my fix is effective or that my feature works
  • I have added documentation of new methods and any new behavior or changes to existing behavior
  • CI Workflows Are Passing

Further comments

If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc...

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 19, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 07b1db7b-dfa4-474a-a8c3-17dacc931680

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/compact-deployer

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@boostsecurity-io boostsecurity-io Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️  9 New Security Findings

The latest commit contains 9 new security findings.

Findings
Dependency: yarn / brace-expansion@ 2.0.2

SUMMARY

Direct Dependency: brace-expansion
Location : yarn.lock

OCCURRENCE

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-33750 Warning 6.5 0.02% 2.0.3
no no brace-expansion: Zero-step sequence causes process hang and memory exhaustion
Remediation :
  • Please consider upgrading brace-expansion to version 2.0.3 or higher to try to resolve this issue.
Dependency: yarn / ip-address@ 10.0.1

SUMMARY

Direct Dependency: ip-address
Location : yarn.lock

OCCURRENCE

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-42338 Warning -1.0 0.07% 10.1.1
no no ip-address has XSS in Address6 HTML-emitting methods
Remediation :
  • Please consider upgrading ip-address to version 10.1.1 or higher to try to resolve this issue.
Dependency: yarn / minimatch@ 9.0.5

SUMMARY

Direct Dependency: minimatch
Location : yarn.lock

OCCURRENCES

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-26996 Critical 7.5 0.03% 9.0.6
no no minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern
CVE-2026-27903 Critical 7.5 0.04% 9.0.7
no no minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments
CVE-2026-27904 Critical 7.5 0.03% 9.0.7
no no minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions
Remediation :
  • Please consider upgrading minimatch to version 9.0.7 or higher to try to resolve this issue.
Dependency: yarn / picomatch@ 4.0.3

SUMMARY

Direct Dependency: picomatch
Location : yarn.lock

OCCURRENCES

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-33671 Critical 7.5 0.02% 4.0.4
no no Picomatch has a ReDoS vulnerability via extglob quantifiers
CVE-2026-33672 Warning 5.3 0.06% 4.0.4
no no Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching
Remediation :
  • Please consider upgrading picomatch to version 4.0.4 or higher to try to resolve this issue.
Dependency: yarn / postcss@ 8.5.6

SUMMARY

Direct Dependency: postcss
Location : yarn.lock

OCCURRENCE

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-41305 Warning 6.1 0.03% 8.5.10
no no PostCSS has XSS via Unescaped </style> in its CSS Stringify Output
Remediation :
  • Please consider upgrading postcss to version 8.5.10 or higher to try to resolve this issue.
Dependency: yarn / rollup@ 4.52.5

SUMMARY

Direct Dependency: rollup
Location : yarn.lock

OCCURRENCE

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-27606 Critical 9.8 0.40% 4.59.0
no no Rollup 4 has Arbitrary File Write via Path Traversal
Remediation :
  • Please consider upgrading rollup to version 4.59.0 or higher to try to resolve this issue.
Dependency: yarn / tar@ 7.5.3

SUMMARY

Direct Dependency: tar
Location : yarn.lock

OCCURRENCES

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-23950 Critical 8.8 0.01% 7.5.4
no no Race Condition in node-tar Path Reservations via Unicode Ligature Collisions on macOS APFS
CVE-2026-24842 Critical 8.2 0.02% 7.5.7
no no node-tar Vulnerable to Arbitrary File Creation/Overwrite via Hardlink Path Traversal
CVE-2026-26960 Critical 7.1 0.01% 7.5.8
no no Arbitrary File Read/Write via Hardlink Target Escape Through Symlink Chain in node-tar Extraction
CVE-2026-29786 Critical 6.3 0.01% 7.5.10
no no tar has Hardlink Path Traversal via Drive-Relative Linkpath
CVE-2026-31802 Critical 5.5 0.01% 7.5.11
no no node-tar Symlink Path Traversal via Drive-Relative Linkpath
Remediation :
  • Please consider upgrading tar to version 7.5.11 or higher to try to resolve this issue.
Dependency: yarn / undici@ 5.29.0

SUMMARY

Direct Dependency: undici
Location : yarn.lock

OCCURRENCES

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-1525 Warning 6.5 0.02% 6.24.0
no no Undici has an HTTP Request/Response Smuggling issue
CVE-2026-1526 Critical 7.5 0.02% 6.24.0
no no Undici has Unbounded Memory Consumption in WebSocket permessage-deflate Decompression
CVE-2026-1527 Warning 4.6 0.01% 6.24.0
no no Undici has CRLF Injection in undici via upgrade option
CVE-2026-22036 Warning 5.9 0.02% 6.23.0
no no Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion
CVE-2026-2229 Critical 7.5 0.20% 6.24.0
no no Undici has Unhandled Exception in WebSocket Client Due to Invalid server_max_window_bits Validation
Remediation :
  • Please consider upgrading undici to version 6.24.0 or higher to try to resolve this issue.
Dependency: yarn / vite@ 7.1.12

SUMMARY

Direct Dependency: vite
Location : yarn.lock

OCCURRENCES

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-39363 Critical 7.5 6.64% 7.3.2
no no Vite Vulnerable to Arbitrary File Read via Vite Dev Server WebSocket
CVE-2026-39364 Critical 7.5 5.15% 7.3.2
no no Vite: server.fs.deny bypassed with queries
CVE-2026-39365 Warning 5.3 1.25% 7.3.2
no no Vite Vulnerable to Path Traversal in Optimized Deps .map Handling
Remediation :
  • Please consider upgrading vite to version 7.3.2 or higher to try to resolve this issue.

Not a finding? Ignore it by adding a comment on the line with just the word noboost.

Scanner: boostsecurity - Trivy (Filesystem scanning)

Copy link
Copy Markdown

@boostsecurity-io boostsecurity-io Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️  10 New Security Findings

The latest commit contains 10 new security findings.

Findings
Dependency: npm / @substrate/connect@ 0.8.11

SUMMARY

Dependency: @substrate/connect
Transitive through:
  • compact-tools-monorepo

Location : yarn.lock

OCCURRENCE

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CWE-1104 Warning no no Package @substrate/connect has reached its end of life.
Remediation :
  • Please consider upgrading compact-tools-monorepo to versions that require a higher version of the transitive dependency @substrate/connect.
Dependency: npm / glob@ 10.5.0

SUMMARY

Dependency: glob
Transitive through:
  • compact-tools-monorepo

Location : yarn.lock

OCCURRENCE

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CWE-1104 Warning no no Package glob has reached its end of life.
Remediation :
  • Please consider upgrading compact-tools-monorepo to versions that require a higher version of the transitive dependency glob.
Dependency: npm / minimatch@ 9.0.5

SUMMARY

Dependency: minimatch
Transitive through:
  • compact-tools-monorepo

Location : yarn.lock

OCCURRENCES

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-26996 Critical 8.7 0.03% 9.0.6
no no minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern
CVE-2026-27903 Critical 7.5 0.04% 9.0.7
no no minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments
CVE-2026-27904 Critical 7.5 0.03% 9.0.7
no no minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions
Remediation :
  • Please consider upgrading compact-tools-monorepo to versions that require the transitive dependency minimatch @ 9.0.7 or higher.
Dependency: npm / node-domexception@ 1.0.0

SUMMARY

Dependency: node-domexception
Transitive through:
  • compact-tools-monorepo

Location : yarn.lock

OCCURRENCE

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CWE-1104 Warning no no Package node-domexception has reached its end of life.
Remediation :
  • Please consider upgrading compact-tools-monorepo to versions that require a higher version of the transitive dependency node-domexception.
Dependency: npm / picomatch@ 4.0.3

SUMMARY

Dependency: picomatch
Transitive through:
  • compact-tools-monorepo

Location : yarn.lock

OCCURRENCE

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-33671 Critical 7.5 0.02% 4.0.4
no no Picomatch has a ReDoS vulnerability via extglob quantifiers
Remediation :
  • Please consider upgrading compact-tools-monorepo to versions that require the transitive dependency picomatch @ 4.0.4 or higher.
Dependency: npm / rollup@ 4.52.5

SUMMARY

Dependency: rollup
Transitive through:
  • compact-tools-monorepo

Location : yarn.lock

OCCURRENCE

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-27606 Critical 8.8 0.40% 4.59.0
no no Rollup 4 has Arbitrary File Write via Path Traversal
Remediation :
  • Please consider upgrading compact-tools-monorepo to versions that require the transitive dependency rollup @ 4.59.0 or higher.
Dependency: npm / tar@ 7.5.3

SUMMARY

Dependency: tar
Transitive through:
  • compact-tools-monorepo

Location : yarn.lock

OCCURRENCES

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-23950 Critical 8.8 0.01% 7.5.4
no no Race Condition in node-tar Path Reservations via Unicode Ligature Collisions on macOS APFS
CVE-2026-24842 Critical 8.2 0.02% 7.5.7
no no node-tar Vulnerable to Arbitrary File Creation/Overwrite via Hardlink Path Traversal
CVE-2026-26960 Critical 7.1 0.01% 7.5.8
no no Arbitrary File Read/Write via Hardlink Target Escape Through Symlink Chain in node-tar Extraction
CVE-2026-29786 Critical 8.2 0.01% 7.5.10
no no tar has Hardlink Path Traversal via Drive-Relative Linkpath
CVE-2026-31802 Critical 8.2 0.01% 7.5.11
no no node-tar Symlink Path Traversal via Drive-Relative Linkpath
CWE-1104 Warning no no Package tar has reached its end of life.
Remediation :
  • Please consider upgrading compact-tools-monorepo to versions that require the transitive dependency tar @ 7.5.11 or higher.
Dependency: npm / undici@ 5.29.0

SUMMARY

Dependency: undici
Transitive through:
  • compact-tools-monorepo

Location : yarn.lock

OCCURRENCES

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-1526 Critical 7.5 0.02% 6.24.0
no no Undici has Unbounded Memory Consumption in WebSocket permessage-deflate Decompression
CVE-2026-2229 Critical 7.5 0.20% 6.24.0
no no Undici has Unhandled Exception in WebSocket Client Due to Invalid server_max_window_bits Validation
Remediation :
  • Please consider upgrading compact-tools-monorepo to versions that require the transitive dependency undici @ 6.24.0 or higher.
Dependency: npm / uuid@ 10.0.0

SUMMARY

Dependency: uuid
Transitive through:
  • compact-tools-monorepo

Location : yarn.lock

OCCURRENCE

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CWE-1104 Warning no no Package uuid has reached its end of life.
Remediation :
  • Please consider upgrading compact-tools-monorepo to versions that require a higher version of the transitive dependency uuid.
Dependency: npm / vite@ 7.1.12

SUMMARY

Dependency: vite
Transitive through:
  • compact-tools-monorepo

Location : yarn.lock

OCCURRENCES

Vulnerability Severity CVSS EPSS Affected
Versions
Fixed
Versions
Contains
Malware
Critical
Risk
Description
CVE-2026-39363 Critical 8.2 6.64% 7.3.2
no no Vite Vulnerable to Arbitrary File Read via Vite Dev Server WebSocket
CVE-2026-39364 Critical 8.2 5.15% 7.3.2
no no Vite: server.fs.deny bypassed with queries
Remediation :
  • Please consider upgrading compact-tools-monorepo to versions that require the transitive dependency vite @ 7.3.2 or higher.

Not a finding? Ignore it by adding a comment on the line with just the word noboost.

Scanner: boostsecurity - BoostSecurity SCA

0xisk added 10 commits May 19, 2026 14:26
Adds @openzeppelin/compact-deploy — a Forge-style deployer library for
Midnight Compact contracts — and exposes its CLI through the existing
@openzeppelin/compact-cli package.

Library (packages/deploy/):
- runPipeline orchestrator (config → wallet → faucet → providers →
  submit → persist), decomposed into per-step helpers
- Deployments class — head + history JSON ledger with read methods
  (getHead, getHistory, listContracts) and atomic rotation on write
- Keystore class — Web3 Secret Storage v3-compatible with a
  "midnight-1" version marker; scrypt + AES-128-CTR + SHA-256 MAC
- ProofServer class — lifecycle wrapper over the five-step precedence
  chain (CLI > TOML URL > "auto" container > PROOF_SERVER_PORT > default)
- Typed error hierarchy with stable exit codes (DeployError + subclasses)
- src/ layout: loaders/, config/, wallet/, providers/ + top-level
  errors.ts / pipeline.ts / deployments.ts / index.ts

CLI (packages/cli/):
- runDeploy.ts: thin shell over the deploy library (chalk + ora + pino
  UX, --json mode, exit-code-mapped errors); ~250 LOC, zero business logic
- compact-deploy bin entry added alongside compact-builder + compact-compiler
- engines.node bumped 20 → 22 to match the deploy library

Integration tests (tests/integrations/):
- vitest config + wallet pool harness + Counter fixture
- specs cover deploy, dry-run, history rotation, errors, wallet pool

Root:
- @openzeppelin/compact-deploy workspace devDep
- test:integration / env:up / env:down scripts
- resolutions pin for @midnight-ntwrk/ledger-v8 8.0.3
- Replace the four loader functions with classes that own their loaded
  values: SigningKey, ConstructorArgs, InitialPrivateState, Artifact.
  Each exposes `static async load()` + readonly fields; pipeline reads
  `.hex` / `.values` / `?.value` at the call site.
- Add shared LoaderContext + RefResolver helpers under loaders/ to absorb
  path resolution, readFile, dynamic-import error wrapping, and the
  { file } | { module, export } dispatch.
- Promote loadConfig + LoadedConfig to a CompactConfig class with
  `network(name)` / `contract(name)` lookups that throw with the
  available set on miss. resolveTargets collapses; wallet/resolve.ts
  drops its redundant rootDir parameter (derived from config.rootDir).
- Rename Zod-inferred CompactConfig -> CompactConfigData (internal);
  the public name is now the class.
Lets callers manage the proof-server container with `await using` and
AsyncDisposableStack instead of explicit try/finally for teardown.
Dispose errors are warn-logged rather than thrown so a failed teardown
doesn't mask the deploy's primary failure.
AsyncDisposableStack landed in Node 24.0; Node 22 only ships
Symbol.asyncDispose and `await using`. Realigns engines with the
@tsconfig/node24 lib defs already in use across these packages.
…lasses; consolidate seed helpers

Reshapes the deploy entry-point around resource-managed classes:

- `Deployer` (deployer.ts) replaces the procedural `runPipeline`
  function. `Deployer.prepare(opts)` loads config + signing key, starts
  the proof server, builds or adopts a wallet, and loads constructor
  args; the returned instance exposes `.deploy()` and `.dryRun()`. CLI
  flow becomes:

      await using deployer = await Deployer.prepare(opts);
      return dryRun ? await deployer.dryRun() : await deployer.deploy();

  Owned resources are accumulated in an `AsyncDisposableStack` inside
  `prepare`, moved to the instance on success, and disposed in reverse
  order from `[Symbol.asyncDispose]`. Mid-prepare failures unwind
  cleanly via the local `await using` on the stack.

- `WalletHandler` (wallet/handler.ts) replaces the
  `buildDeployerWallet` free function. It wraps a built
  `MidnightWalletProvider` and implements `[Symbol.asyncDispose]`, so
  the Deployer adds it to its stack with a single `stack.use(owned)`
  instead of `stack.defer(...)` with custom try/catch. Mirrors the
  `ProofServer` pattern.

- `wallet/seeds.ts` merges the previous `local-seeds.ts`,
  `normalize.ts`, and `resolve.ts` into one module. None of those owned
  state or a lifecycle, so a class wrapper would be ceremony; a single
  file with three exports is the right unit. Test renamed
  `normalize.test.ts` -> `seeds.test.ts`.

Public API: `runPipeline as deploy` and `PipelineOptions/PipelineResult`
are gone; consumers now use `Deployer`, `DeployerOptions`,
`DeployResult`. `buildDeployerWallet` replaced by `WalletHandler`.
Integration harness and CLI updated.
Mock-based unit tests covering orchestration semantics that integration
tests can't isolate cheaply:

- Deployer (6 tests): dryRun returns dryRun:true and never calls
  deployContract; deploy submits the tx and returns the populated
  success result; injected walletProvider is adopted without calling
  WalletHandler.build; missing walletProvider builds and starts a
  wallet; Symbol.asyncDispose stops owned wallets but leaves injected
  ones alone; deployContract failures are wrapped in
  DeployTxFailedError.

- WalletHandler (7 tests): mnemonic seed routes through .withMnemonic;
  hex seed routes through .withSeed; additionalFeeOverhead bumps to
  5e17 for the undeployed network and keeps the testkit default
  otherwise; .provider returns the wallet built by
  MidnightWalletProvider.withWallet; Symbol.asyncDispose stops the
  underlying wallet; dispose swallows stop() failures with a warn log.

testkit-js + ledger-v8 + midnight-js are vi.mock'd; CompactConfig,
SigningKey, Deployments run against real tmpdir fixtures. End-to-end
network flow remains covered by tests/integrations/.
Renames the npm package from `@openzeppelin/compact-deploy` to
`@openzeppelin/compact-deployer`. Updates workspace deps in root +
compact-cli, all `from '@openzeppelin/compact-deploy'` imports across
the CLI, integration harness and specs, the JSDoc/README references,
and the regenerated yarn.lock.

The `compact-deploy` binary name and the `packages/deploy/` directory
layout are intentionally left unchanged.
…oyer

Aligns the workspace folder layout with the @openzeppelin/compact-deployer
package name. Git tracks every file as a rename so blame is preserved.
No path references needed updating — the yarn workspaces glob is
`packages/*`, and no script or tsconfig hardcoded `packages/deploy`.
…... style

Convention sweep across all unit + integration test files. No test
behaviour changes — only the strings passed to `it(...)` (and the
`it.each(...)` template in walletPool.spec.ts). All 50 unit tests still
pass.
Five specs are reorganised by feature theme to make the suite scale:

  specs/
    deploy/
      deploy.spec.ts
      dryRun.spec.ts
      historyRotation.spec.ts
    errors/
      errors.spec.ts
    wallet/
      walletPool.spec.ts

No behaviour change — only relative-import depth bumps from `../_harness`
to `../../_harness`. The existing `specs/**/*.spec.ts` glob in vitest.config
already picks up nested directories.
@0xisk 0xisk force-pushed the feat/compact-deployer branch from 958d227 to 26aa42b Compare May 19, 2026 12:29
@0xisk 0xisk added the enhancement New feature or request label May 19, 2026
@0xisk 0xisk self-assigned this May 19, 2026
@0xisk 0xisk added this to the v1.0.0 milestone May 19, 2026
0xisk added 2 commits May 19, 2026 14:40
…ignore-all

Biome ci was failing with 23 errors + 1 warning across the deployer
package and integration harness — mostly `useImportType` and
`organizeImports` autofixes. `yarn lint:fix` resolved 19 of them; the
remaining 4 were:

- `packages/cli/src/runDeploy.ts` × 3 — `lint/suspicious/noConsole`.
  organizeImports had moved the `@openzeppelin/compact-deployer` import
  ahead of the `biome-ignore-all noConsole` directive, so the directive
  no longer applied to the file. Moved the directive to line 2 (right
  after the shebang, before all imports).
- `packages/deployer/src/deployer.ts` — dead `SeedResolution` type
  import after the seeds-module merge consolidated the type alias.

Lint:ci now clean; 50 unit tests still pass.
…ions

Addresses the BoostSecurity findings on PR #86. Eight of the originally
flagged packages auto-upgraded when yarn.lock regenerated post-rebase
(brace-expansion, ip-address, minimatch, picomatch, postcss, rollup,
tar, vite). The remaining three are forced via root resolutions:

  - undici  ^6.24.0  (was 5.29.0 via testcontainers)
    Fixes CVE-2026-1525/1526/1527/22036/2229 — HTTP smuggling,
    WebSocket memory exhaustion, CRLF injection, decompression DoS.
    Major bump but testcontainers' usage stays within the v6 API.

  - glob    ^11.0.0  (was 10.5.0 via archiver-utils, cacache)
    Replaces the EOL v10 line.

  - uuid    ^13.0.0  (was 10.0.0 via dockerode)
    Replaces the EOL v10 line.

Two findings left unaddressed:

  - @substrate/connect@0.8.11 (EOL warning). Pinned exactly by
    `@polkadot/rpc-provider@16.5.6` (constraint is `0.8.11`, not a
    range), so resolutions can't override it without breaking that
    transitive. Would need to wait for @PolkaDot to publish a release
    that drops the EOL dep.

  - node-domexception@1.0.0 (EOL warning). Pulled by `fetch-blob@3.2.0`.
    Modern Node has a native DOMException; the package only matters
    until fetch-blob/undici upstream drops the polyfill import. No
    safe override exists.

Both are warning-level (EOL classification, no active CVE). Build +
50 unit tests + CLI typecheck still pass after resolutions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant