From 5ba60361914fd6cb87bd885c6ba7a993c0cad76f Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 16 Oct 2026 07:02:09 +0000 Subject: [PATCH 1/2] fix(metadata-core): drop the optional vitest peer the runtime entry never reads The `.` entry's built output (dist/index.js, its chunk, dist/index.cjs) imports nothing from vitest; only the test-only `./testing` entry does, and its docblock already tells consumers to bring vitest as a devDependency. The optional `vitest: ^4.0.0` peer led npm 10 into vitest@4.1.12, whose own peer set contradicts itself, and npm 10's resolver crashed (`Cannot read properties of null (reading 'edgesOut')`) on any install that reached this package. Claude-Session: https://claude.ai/code/session_01TQLy3Yq6vF4SDpTXdr3Uwi Co-authored-by: Claude --- packages/metadata-core/package.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packages/metadata-core/package.json b/packages/metadata-core/package.json index 20303fafd87..081ebded175 100644 --- a/packages/metadata-core/package.json +++ b/packages/metadata-core/package.json @@ -45,14 +45,6 @@ "@objectstack/spec": "workspace:*", "zod": "^4.6.5" }, - "peerDependencies": { - "vitest": "^4.0.0" - }, - "peerDependenciesMeta": { - "vitest": { - "optional": true - } - }, "devDependencies": { "@types/node": "^26.6.3", "fast-check": "^4.10.2", From a27899a51c47dd6f214b05603229b03784e6a36f Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 16 Oct 2026 07:12:14 +0000 Subject: [PATCH 2/2] chore(changeset): metadata-core installs on npm 10 without its vitest peer Claude-Session: https://claude.ai/code/session_01TQLy3Yq6vF4SDpTXdr3Uwi Co-authored-by: Claude --- .changeset/23806-metadata-core-vitest-peer.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .changeset/23806-metadata-core-vitest-peer.md diff --git a/.changeset/23806-metadata-core-vitest-peer.md b/.changeset/23806-metadata-core-vitest-peer.md new file mode 100644 index 00000000000..f654b9de11f --- /dev/null +++ b/.changeset/23806-metadata-core-vitest-peer.md @@ -0,0 +1,22 @@ +--- +'@objectstack/metadata-core': patch +--- + +fix(metadata-core): the package installs on npm 10 again, and into projects that use vitest 5, because it no longer declares an optional `vitest` peer + +Clause-②: no + +On npm 10, the npm that Node 22 bundles, `npm install @objectstack/metadata-core` exited 1 with `Cannot read properties of null (reading 'edgesOut')`. So did installing a package that depends on it, such as `@objectstack/objectql`. The cause was this package's optional peer `vitest: ^4.0.0`. It led npm 10 to vitest 4.1.12, whose own peer declarations contradict each other, and npm 10's resolver crashes on that. The same peer also made npm refuse (`ERESOLVE`) to install the package into a project that already uses vitest 5. + +The package's main entry never imports `vitest`. Only the test-only `@objectstack/metadata-core/testing` entry does, so the peer is removed. Nothing the package exports changes. + +If you import `@objectstack/metadata-core/testing`, list `vitest` in your own `devDependencies`, as that entry's documentation already says. This package runs that suite on vitest 4. In a pnpm workspace with hoisting turned off (`hoist=false`), that entry can no longer find `vitest` from inside a workspace package. Declare the peer back in your `pnpm-workspace.yaml`: + +```yaml +packageExtensions: + '@objectstack/metadata-core': + peerDependencies: + vitest: '*' +``` + +`@objectstack/plugin-auth` still fails the same way on npm 10, because its `better-auth` dependency declares its own optional `vitest` peer. Install it with npm 11, or add `"overrides": { "vitest": "~4.0.0" }` to your project's `package.json`.