From aa62c2082741ec400e4fe4685cc411c55cfebe45 Mon Sep 17 00:00:00 2001 From: Aditya Date: Sat, 27 Jun 2026 13:29:50 +0530 Subject: [PATCH] build(deps): move @emnapi WASM fallbacks to devDependencies for deterministic lockfile across OS --- AUDIT_LOG.md | 10 ++++++++++ package-lock.json | 22 +++++++++------------- package.json | 6 ++---- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/AUDIT_LOG.md b/AUDIT_LOG.md index e91724f..cf13c4b 100644 --- a/AUDIT_LOG.md +++ b/AUDIT_LOG.md @@ -2,6 +2,16 @@ This log tracks all significant changes, updates, and versions in the PaperCache project. +## 2026-06-27 (Lockfile Sync) +**Change:** build(deps): move @emnapi WASM fallbacks to devDependencies for deterministic lockfile resolution across OS targets + +**Details/Why:** +When `@emnapi/core` and `@emnapi/runtime` were listed under `optionalDependencies` in `package.json`, running `npm install` on macOS arm64 stripped their resolution metadata from `package-lock.json` (since npm deemed WASM fallback bindings inapplicable to macOS native architecture). However, sub-dependencies like `@rolldown/binding-wasm32-wasi` still referenced them, causing `npm ci` on Linux and Windows runners to crash with `Missing: @emnapi/core@1.11.1 from lock file`. Moved `@emnapi/core` and `@emnapi/runtime` to `devDependencies` to guarantee their resolution entries are preserved in `package-lock.json` across all OS targets. + +**Files changed:** `package.json`, `package-lock.json`, `AUDIT_LOG.md`. + +--- + ## 2026-06-27 (Update) **Change:** fix: resolve TypeScript strict build errors in GraphView and setupTests diff --git a/package-lock.json b/package-lock.json index abdc13c..aa638f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,8 @@ "@types/d3-force": "^3.0.10", "d3-force": "^3.0.0", "expr-eval": "^2.0.2", + "react": "^19.2.6", + "react-dom": "^19.2.6", "react-force-graph-3d": "^1.29.1", "three": "^0.184.0" }, @@ -30,6 +32,8 @@ "@codemirror/search": "^6.7.0", "@codemirror/state": "^6.6.0", "@codemirror/view": "^6.43.0", + "@emnapi/core": "^1.11.1", + "@emnapi/runtime": "^1.11.1", "@eslint/js": "^10.0.1", "@lezer/common": "^1.5.2", "@lezer/highlight": "^1.2.3", @@ -53,17 +57,11 @@ "jsdom": "^29.1.1", "lint-staged": "^17.0.7", "prettier": "^3.8.3", - "react": "^19.2.6", - "react-dom": "^19.2.6", "typescript": "~6.0.2", "typescript-eslint": "^8.59.2", "vite": "^8.0.12", "vitest": "^4.1.7", "zustand": "^5.0.14" - }, - "optionalDependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1" } }, "node_modules/@adobe/css-tools": { @@ -709,8 +707,8 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "dev": true, "license": "MIT", - "optional": true, "peer": true, "dependencies": { "@emnapi/wasi-threads": "1.2.2", @@ -721,8 +719,8 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "dev": true, "license": "MIT", - "optional": true, "peer": true, "dependencies": { "tslib": "^2.4.0" @@ -732,8 +730,8 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { "tslib": "^2.4.0" } @@ -5218,7 +5216,6 @@ "version": "19.2.7", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", - "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -5366,7 +5363,6 @@ "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", - "dev": true, "license": "MIT" }, "node_modules/semver": { @@ -5751,8 +5747,8 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "optional": true + "dev": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", diff --git a/package.json b/package.json index 42f91e3..a317d73 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,8 @@ "@codemirror/search": "^6.7.0", "@codemirror/state": "^6.6.0", "@codemirror/view": "^6.43.0", + "@emnapi/core": "^1.11.1", + "@emnapi/runtime": "^1.11.1", "@eslint/js": "^10.0.1", "@lezer/common": "^1.5.2", "@lezer/highlight": "^1.2.3", @@ -80,9 +82,5 @@ "vite": "^8.0.12", "vitest": "^4.1.7", "zustand": "^5.0.14" - }, - "optionalDependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1" } }