pnpm 12.5.1 → 12.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,199 @@
1
1
  # pnpm
2
2
 
3
+ ## 12.6.0
4
+
5
+ pnpm 12.6.0 ships with automatic dependency deduplication, relocatable node_modules, package.yaml manifest editing, and --save-types support.
6
+
7
+ ### Minor Changes
8
+
9
+ - `autoDedupe` deduplicates compatible dependency versions during installation [#7258](https://github.com/pnpm/pnpm/issues/7258). Enable it in `pnpm-workspace.yaml` or use `pnpm install --auto-dedupe` or `pnpm add --auto-dedupe`. Frozen installs leave the lockfile unchanged.
10
+
11
+ - `pnpm install`, `pnpm run`, and `pnpm exec` on macOS and Linux now reuse a `node_modules` directory and bin shims that moved or were copied together with their project [#6937](https://github.com/pnpm/pnpm/issues/6937). The first command after the move checks the tree and records its new location, so project commands in `node_modules/.bin` keep working.
12
+
13
+ - `pnpm add --save-types` saves available `@types/*` packages in `devDependencies` alongside registry dependencies [#3868](https://github.com/pnpm/pnpm/issues/3868). Packages that declare bundled TypeScript types are skipped. Set `saveTypes: true` in `pnpm-workspace.yaml` to enable this by default.
14
+
15
+ - `package.yaml` manifests can now be updated by `pnpm add`, `pnpm update`, `pnpm remove`, `pnpm pkg`, `pnpm link`, `pnpm set-script`, and `pnpm version` [#2008](https://github.com/pnpm/pnpm/issues/2008). Existing comments and key order are preserved.
16
+
17
+ - Catalog entries can now use the `file:` and `link:` protocols [#8642](https://github.com/pnpm/pnpm/issues/8642). A relative path or bare path in an entry, such as `./tarballs/foo.tgz`, is measured from the directory holding `pnpm-workspace.yaml`.
18
+
19
+ - `pnpm tasks status` lists running and waiting tasks in each concurrency group, and waiting tasks now take available slots in arrival order with higher `priority` tasks going first [#15208](https://github.com/pnpm/pnpm/issues/15208). If workspaces use different limits for the same group, a later task can take a free slot that earlier tasks cannot use. A package script named `tasks` takes precedence; use `pnpm pm tasks status` when that script exists.
20
+
21
+ - `pnpm cache prune` deletes registry metadata cache directories that this version of pnpm can no longer read [#15046](https://github.com/pnpm/pnpm/issues/15046). `pnpm cache prune --dry-run` lists what it would delete without removing anything.
22
+
23
+ - `macosBackup.excludeModulesDir` and `macosBackup.excludeStoreDir` on macOS can now exclude newly created modules, virtual-store, and package-store directories from Time Machine [#6440](https://github.com/pnpm/pnpm/issues/6440). Set either to `true` in global configuration or using the `PNPM_CONFIG_MACOS_BACKUP_EXCLUDE_MODULES_DIR` and `PNPM_CONFIG_MACOS_BACKUP_EXCLUDE_STORE_DIR` environment variables.
24
+
25
+ - `pnpm add --tilde` is now an alias for `--save-prefix=~` [#12863](https://github.com/pnpm/pnpm/issues/12863). The Yarn `-T` shorthand is not supported.
26
+
27
+ - `progress` setting and `--no-progress` option now turn off dependency and download progress lines [#14065](https://github.com/pnpm/pnpm/issues/14065). Warnings, lifecycle output, and the dependency summary are still printed.
28
+
29
+ ### Patch Changes
30
+
31
+ #### Security
32
+
33
+ - POSIX bin shims now take `cygpath` and `wslpath` from the system default path on Cygwin, MSYS2, and WSL2 so a dependency cannot redirect another package's shim [#14866](https://github.com/pnpm/pnpm/issues/14866).
34
+
35
+ - `pnpm install` warnings no longer carry the text of a package's deprecation notice, naming only the deprecated package and version [#15099](https://github.com/pnpm/pnpm/issues/15099). A deprecation warning names the newest non-deprecated version when one exists, and control characters and line separators are stripped from package identifiers and warnings.
36
+
37
+ - `pnpm install` and other commands that report configuration warnings now warn when environment variables in project `.npmrc` credentials are ignored [#15051](https://github.com/pnpm/pnpm/issues/15051).
38
+
39
+ #### Installing packages
40
+
41
+ - `pnpm install --frozen-lockfile` now succeeds when an optional dependency was unresolvable and skipped by the install that wrote the lockfile [#3960](https://github.com/pnpm/pnpm/issues/3960).
42
+
43
+ - `pnpm install --frozen-lockfile` no longer installs dependencies of projects removed from `pnpm-workspace.yaml` [#15248](https://github.com/pnpm/pnpm/issues/15248). Missing local tarballs used only by those projects no longer fail the install.
44
+
45
+ - `pnpm ci` now empties `node_modules` before installing in a project that declares a `clean` script [#15276](https://github.com/pnpm/pnpm/issues/15276).
46
+
47
+ - `pnpm install --force` now re-imports every package into the virtual store [#15030](https://github.com/pnpm/pnpm/issues/15030) and removes obsolete dependency links inside virtual-store packages when their dependencies change [#15039](https://github.com/pnpm/pnpm/issues/15039).
48
+
49
+ - `preinstall` script for the root project now runs before dependencies are resolved and linked [#3760](https://github.com/pnpm/pnpm/issues/3760).
50
+
51
+ - `pnpm install` now runs `pnpm:devPreinstall` when the root project uses `package.yaml` [#15168](https://github.com/pnpm/pnpm/issues/15168).
52
+
53
+ - `pnpm install` now enforces the root project's `engines.node` range when `engineStrict` is enabled [#3016](https://github.com/pnpm/pnpm/issues/3016).
54
+
55
+ - `pnpm install` now uses the running Node.js when `devEngines.runtime` declares a range without `onFail: download` [#15230](https://github.com/pnpm/pnpm/issues/15230).
56
+
57
+ - `pnpm install` no longer hangs when a git dependency is fetched over SSH and ssh prompts for a passphrase or host key confirmation, running ssh in batch mode instead [#2227](https://github.com/pnpm/pnpm/issues/2227).
58
+
59
+ - `pnpm install` now installs git-hosted dependencies without preparing them when their builds are explicitly denied by `allowBuilds` [#10522](https://github.com/pnpm/pnpm/issues/10522).
60
+
61
+ - `pnpm install` now reuses an in-flight tarball download when another resolution of the same archive still needs its `package.json` [#15037](https://github.com/pnpm/pnpm/issues/15037).
62
+
63
+ - `pnpm install --prod` no longer downloads registry packages that only a devDependency reaches [#881](https://github.com/pnpm/pnpm/issues/881).
64
+
65
+ - `pnpm install --no-runtime --frozen-lockfile` with `nodeLinker: hoisted` no longer fails on repeated runs with a broken lockfile [#15212](https://github.com/pnpm/pnpm/issues/15212).
66
+
67
+ #### Resolving and linking dependencies
68
+
69
+ - `pnpm install` and `pnpm update` now resolve a dependency range to the newest matching version that is not deprecated [#15128](https://github.com/pnpm/pnpm/issues/15128).
70
+
71
+ - `pnpm add <pkg>` without a version now uses the catalog entry when the workspace already catalogs that package [#14865](https://github.com/pnpm/pnpm/issues/14865).
72
+
73
+ - `pnpm install` now links workspace dependencies declared with plain version ranges when `excludeLinksFromLockfile` and `linkWorkspacePackages` are enabled [#15133](https://github.com/pnpm/pnpm/issues/15133).
74
+
75
+ - `pnpm install` now resolves local tarball dependencies whose absolute `file:` paths contain `..` consistently and skips reinstallation on repeat installs [#15190](https://github.com/pnpm/pnpm/issues/15190).
76
+
77
+ - `pnpm install` now installs dependencies when a custom resolver returns a local or git-hosted tarball without a manifest [#15016](https://github.com/pnpm/pnpm/issues/15016).
78
+
79
+ - `pnpm.overrides` entries written as a bare path, such as `./local-dep`, are now measured from the directory holding `pnpm-workspace.yaml` [#11131](https://github.com/pnpm/pnpm/issues/11131).
80
+
81
+ - `pnpm update --no-save` no longer bypasses version-scoped overrides when a dependency selector specifies a version [#14923](https://github.com/pnpm/pnpm/issues/14923).
82
+
83
+ - `pnpm peers check` and strict peer dependency checks no longer reject compatible versions from named registries [#15225](https://github.com/pnpm/pnpm/issues/15225).
84
+
85
+ - `pnpm outdated` and `pnpm update --interactive --latest` now include named-registry dependencies such as `work:2.1.0` and preserve their registry prefix [#15226](https://github.com/pnpm/pnpm/issues/15226).
86
+
87
+ - Workspace projects selected by `hoistPattern` or `publicHoistPattern` are now hoisted on every install [#3642](https://github.com/pnpm/pnpm/issues/3642).
88
+
89
+ - Workspace packages with SemVer build metadata are no longer skipped when they match the requested range and have the same version precedence as the registry package [#2812](https://github.com/pnpm/pnpm/issues/2812).
90
+
91
+ - Sped up `pnpm dedupe` and `pnpm install` in projects with many convergence overrides by checking overrides concurrently [#15175](https://github.com/pnpm/pnpm/issues/15175).
92
+
93
+ - `minimumReleaseAge` is no longer skipped for packages served by registries returning matching ETags for abbreviated and full package metadata [#14925](https://github.com/pnpm/pnpm/issues/14925).
94
+
95
+ #### Running scripts and tasks
96
+
97
+ - `pnpm run` signal handling no longer delivers a redundant second `SIGINT` to child scripts on `Ctrl+C` in a terminal, and properly forwards termination signals when running non-interactively without a terminal [#7374](https://github.com/pnpm/pnpm/issues/7374).
98
+
99
+ - `pnpm run` and `pnpm exec` in workspaces with `sharedWorkspaceLockfile: false` now verify dependencies in the selected projects rather than expecting a root workspace state [#15272](https://github.com/pnpm/pnpm/issues/15272).
100
+
101
+ - `pnpm test` now forwards `--filter` arguments to the test script when the option follows the shortcut [#15217](https://github.com/pnpm/pnpm/issues/15217).
102
+
103
+ - Recursive runs now start scripts matched by a `/pattern/` selector in parallel within `workspaceConcurrency` [#14933](https://github.com/pnpm/pnpm/issues/14933).
104
+
105
+ - `pnpm deploy`, `pnpm rebuild`, `pnpm rb`, and `pnpm setup` now prefer a `package.json` script of the same name [#14976](https://github.com/pnpm/pnpm/issues/14976).
106
+
107
+ - `modulesDir` custom directory names now support executable lookup and CommonJS plugin resolution across `pnpm run`, `pnpm exec`, `pnpm version` hooks, and lifecycle scripts [#3604](https://github.com/pnpm/pnpm/issues/3604).
108
+
109
+ - `pnpm install-test` now accepts `--no-bail` directly and in recursive runs [#3777](https://github.com/pnpm/pnpm/issues/3777).
110
+
111
+ #### Workspace and project configuration
112
+
113
+ - `pnpm` commands run in a project not included in the workspace now act on that project alone [#3561](https://github.com/pnpm/pnpm/issues/3561).
114
+
115
+ - `pnpm-workspace.yaml` edits now preserve scalar YAML anchors and aliases [#8245](https://github.com/pnpm/pnpm/issues/8245).
116
+
117
+ - `pnpm-workspace.yaml` now expands environment variable placeholders with fallback syntax in enum-valued settings such as `nodeLinker` [#14914](https://github.com/pnpm/pnpm/issues/14914).
118
+
119
+ - `pnpmfile` configuration now loads a `.js` file as CommonJS or an ES module, following the nearest `package.json` [#15141](https://github.com/pnpm/pnpm/issues/15141).
120
+
121
+ - `updateConfig` hook settings are now honored by `pnpm peers check`, `why`, `list`, `ll`, `licenses`, `audit`, `sbom`, `fetch`, `patch`, `patch-commit`, `patch-remove`, `approve-builds`, and `runtime` [#15047](https://github.com/pnpm/pnpm/issues/15047), [#15049](https://github.com/pnpm/pnpm/issues/15049).
122
+
123
+ - `readPackage` hook changes or removal now take added dependencies out of `pnpm-lock.yaml` and update dependencies when an existing lockfile is present [#3735](https://github.com/pnpm/pnpm/issues/3735), [#15136](https://github.com/pnpm/pnpm/issues/15136).
124
+
125
+ - `package.yaml` projects now record their pinned pnpm under `packageManagerDependencies` in `pnpm-lock.yaml` [#15167](https://github.com/pnpm/pnpm/issues/15167).
126
+
127
+ - `packageManagerDependencies` pinning `@pnpm/exe` beside `pnpm` is no longer rewritten in `pnpm-lock.yaml` [#14926](https://github.com/pnpm/pnpm/issues/14926).
128
+
129
+ - `pnpm` now preserves CRLF line endings when modifying project manifests [#3529](https://github.com/pnpm/pnpm/issues/3529).
130
+
131
+ - `loglevel` setting is now honored when configured in `pnpm-workspace.yaml`, global configuration, or `PNPM_CONFIG_LOGLEVEL` [#3122](https://github.com/pnpm/pnpm/issues/3122).
132
+
133
+ - `storeDir` values loaded from global configuration or `PNPM_CONFIG_STORE_DIR` now expand a leading `~/` to the user's home directory [#6560](https://github.com/pnpm/pnpm/issues/6560).
134
+
135
+ - `--shared-workspace-lockfile` now produces a warning when passed on the command line outside a workspace [#1617](https://github.com/pnpm/pnpm/issues/1617).
136
+
137
+ #### Windows
138
+
139
+ - `pnpm install` on Windows now runs dependency build scripts from long global virtual store paths and normalizes scoped package paths in lifecycle script `PATH` entries [#15111](https://github.com/pnpm/pnpm/issues/15111).
140
+
141
+ - `pnpm install` across projects sharing a global virtual store on Windows no longer fails with `Access is denied`, file-exists errors, or transient sharing violations [#15114](https://github.com/pnpm/pnpm/issues/15114), [#15176](https://github.com/pnpm/pnpm/issues/15176), [#15171](https://github.com/pnpm/pnpm/issues/15171).
142
+
143
+ - `pn`, `pnpx`, `pnx`, and `pnpm` now run when Git Bash, MSYS2, or Cygwin launches them through a Windows path [#14884](https://github.com/pnpm/pnpm/issues/14884).
144
+
145
+ - `pnpm dlx` now reuses cached packages when Windows creates directory junctions for its cache links [#15171](https://github.com/pnpm/pnpm/issues/15171).
146
+
147
+ - `pnpm pipeline --watch` now resolves Windows short paths so multiple path representations share the build cache [#15105](https://github.com/pnpm/pnpm/issues/15105).
148
+
149
+ #### CLI commands and output
150
+
151
+ - `pnpm remove` now runs the project's own `preuninstall`, `uninstall`, and `postuninstall` scripts [#3276](https://github.com/pnpm/pnpm/issues/3276).
152
+
153
+ - `pnpm remove -r` now fails before modifying manifests if any requested dependency is absent from all selected projects [#2319](https://github.com/pnpm/pnpm/issues/2319).
154
+
155
+ - `pnpm update --peer` now updates ranges in `peerDependencies` [#8081](https://github.com/pnpm/pnpm/issues/8081).
156
+
157
+ - `pnpm update` now moves `devEngines.runtime` and `engines.runtime` version ranges to the resolved Node.js version [#14988](https://github.com/pnpm/pnpm/issues/14988).
158
+
159
+ - `pnpm update -g` no longer reinstalls unchanged packages [#12002](https://github.com/pnpm/pnpm/issues/12002).
160
+
161
+ - `pnpm add -g`, `pnpm update -g`, and `pnpm remove -g` now recover a global package group whose `node_modules` directory was deleted [#15093](https://github.com/pnpm/pnpm/issues/15093).
162
+
163
+ - `pnpm add -g` now installs local tarballs when `PNPM_HOME` contains `..` path segments [#15118](https://github.com/pnpm/pnpm/issues/15118).
164
+
165
+ - `pnpm version` now reads `tagVersionPrefix` from `pnpm-workspace.yaml`, global config, or `PNPM_CONFIG_TAG_VERSION_PREFIX` when creating and reading Git tags [#15044](https://github.com/pnpm/pnpm/issues/15044).
166
+
167
+ - `pnpm publish` now allows a detached Git HEAD in CI environments [#5894](https://github.com/pnpm/pnpm/issues/5894).
168
+
169
+ - `pnpm store prune` now removes unreferenced files and packages from the content-addressable store [#3635](https://github.com/pnpm/pnpm/issues/3635), as well as expired or superseded `pnpm dlx` cache data [#15171](https://github.com/pnpm/pnpm/issues/15171).
170
+
171
+ - `pnpm cache list-registries` now prints decoded registry URLs [#15046](https://github.com/pnpm/pnpm/issues/15046).
172
+
173
+ - `pnpm deploy` no longer triggers an install when running scripts in a read-only deployed filesystem [#11617](https://github.com/pnpm/pnpm/issues/11617).
174
+
175
+ - `pnpm -r list --json` now outputs a single JSON array when `sharedWorkspaceLockfile` is `false`, and `--long` and `--parseable` read each project's own modules directory [#15011](https://github.com/pnpm/pnpm/issues/15011).
176
+
177
+ - `pnpm sbom` now validates SPDX identifiers and expressions before emitting them as CycloneDX license IDs or expressions, falling back to a license name for non-SPDX values such as `UNLICENSED` [#14786](https://github.com/pnpm/pnpm/issues/14786).
178
+
179
+ - `pnpm change check` now validates pending change intents in `.changeset/` [#15183](https://github.com/pnpm/pnpm/issues/15183).
180
+
181
+ - `pnpm --filter` and `pnpm -F` shell completion now suggests workspace package names [#15216](https://github.com/pnpm/pnpm/issues/15216). Completion candidates containing control or invisible formatting characters are omitted so package and script names cannot inject terminal escape sequences.
182
+
183
+ - `pnpm run` and `pnpm run-script` shell completion now suggests package scripts [#15034](https://github.com/pnpm/pnpm/issues/15034).
184
+
185
+ - `pnpm --version` no longer creates a temporary file in the project directory during store detection [#15264](https://github.com/pnpm/pnpm/issues/15264).
186
+
187
+ - `pnpm setup` now describes displayed configuration changes as "The following configuration changes were made" [#15100](https://github.com/pnpm/pnpm/issues/15100).
188
+
189
+ - `minimumReleaseAge` approval prompts in `pnpm install` and `pnpm update -g` now count and display each package version once [#15083](https://github.com/pnpm/pnpm/issues/15083), [#15091](https://github.com/pnpm/pnpm/issues/15091).
190
+
191
+ - `.npmrc` authentication warnings now report when an empty environment variable removes an auth token and name the affected key [#4806](https://github.com/pnpm/pnpm/issues/4806).
192
+
193
+ - The install summary now names the version each dependency resolved to when `node-linker` is `hoisted` [#15161](https://github.com/pnpm/pnpm/issues/15161).
194
+
195
+ - `pnpm install` now re-links a package's global virtual store slot after `allowBuilds` changes [#15117](https://github.com/pnpm/pnpm/issues/15117).
196
+
3
197
  ## 12.5.1
4
198
 
5
199
  ### Patch Changes
@@ -1,9 +1,9 @@
1
1
  {
2
- "lastValidatedTimestamp": 1789765288371,
2
+ "lastValidatedTimestamp": 1790093961133,
3
3
  "projects": {
4
4
  "/home/runner/_work/pnpm/pnpm/pnpm/npm/pnpm/temp-deploy": {
5
5
  "name": "pacquet",
6
- "version": "12.5.1"
6
+ "version": "12.6.0"
7
7
  }
8
8
  },
9
9
  "pnpmfiles": [],
@@ -23,10 +23,10 @@
23
23
  "default": {
24
24
  "@babel/core": "^7.29.7",
25
25
  "@babel/plugin-transform-explicit-resource-management": "^7.29.7",
26
- "@commitlint/cli": "^21.2.2",
27
- "@commitlint/config-conventional": "^21.2.2",
28
- "@commitlint/prompt-cli": "^21.2.2",
29
- "@cyclonedx/cyclonedx-library": "10.2.0",
26
+ "@commitlint/cli": "^21.2.3",
27
+ "@commitlint/config-conventional": "^21.2.3",
28
+ "@commitlint/prompt-cli": "^21.2.3",
29
+ "@cyclonedx/cyclonedx-library": "10.3.0",
30
30
  "@eslint/js": "^10.0.1",
31
31
  "@inquirer/prompts": "^8.7.2",
32
32
  "@jest/globals": "30.4.1",
@@ -40,7 +40,6 @@
40
40
  "@pnpm/logger": "^1100.0.0",
41
41
  "@pnpm/meta-updater": "2.0.6",
42
42
  "@pnpm/nopt": "^0.3.1",
43
- "@pnpm/npm-lifecycle": "^1100.1.0",
44
43
  "@pnpm/npm-package-arg": "^2.0.0",
45
44
  "@pnpm/os.env.path-extender": "^3.0.1",
46
45
  "@pnpm/patch-package": "0.0.1",
@@ -79,6 +78,7 @@
79
78
  "@types/ramda": "0.32.0",
80
79
  "@types/retry": "^0.12.5",
81
80
  "@types/semver": "7.8.0",
81
+ "@types/spdx-expression-parse": "4.0.0",
82
82
  "@types/ssri": "^7.1.5",
83
83
  "@types/tar-stream": "^3.1.4",
84
84
  "@types/touch": "^3.1.5",
@@ -91,9 +91,11 @@
91
91
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
92
92
  "@yarnpkg/core": "4.9.1",
93
93
  "@yarnpkg/extensions": "2.0.7",
94
+ "@yarnpkg/fslib": "^3.1.5",
94
95
  "@yarnpkg/lockfile": "^1.1.0",
95
96
  "@yarnpkg/nm": "4.1.1",
96
97
  "@yarnpkg/pnp": "^4.1.7",
98
+ "@yarnpkg/shell": "4.1.3",
97
99
  "@zkochan/retry": "^0.2.0",
98
100
  "@zkochan/rimraf": "^4.0.0",
99
101
  "@zkochan/table": "^2.0.1",
@@ -107,7 +109,7 @@
107
109
  "boxen": "npm:@zkochan/boxen@5.1.2",
108
110
  "c8": "^12.0.0",
109
111
  "camelcase": "^9.0.0",
110
- "camelcase-keys": "^10.0.2",
112
+ "camelcase-keys": "^10.0.3",
111
113
  "can-link": "^3.0.0",
112
114
  "can-write-to-dir": "^2.0.0",
113
115
  "chalk": "^6.0.0",
@@ -125,10 +127,10 @@
125
127
  "didyoumean2": "^7.0.4",
126
128
  "dint": "^5.1.0",
127
129
  "dir-is-case-sensitive": "^3.0.0",
128
- "empathic": "^2.0.1",
130
+ "empathic": "^2.1.0",
129
131
  "esbuild": "^0.28.2",
130
132
  "escape-string-regexp": "^5.0.0",
131
- "eslint": "^10.10.0",
133
+ "eslint": "^10.11.0",
132
134
  "eslint-plugin-import-x": "^4.17.1",
133
135
  "eslint-plugin-jest": "^29.16.6",
134
136
  "eslint-plugin-n": "^18.3.0",
@@ -168,10 +170,10 @@
168
170
  "lodash.kebabcase": "^4.1.1",
169
171
  "lodash.throttle": "4.1.1",
170
172
  "loud-rejection": "^2.2.0",
171
- "lru-cache": "^11.5.2",
173
+ "lru-cache": "^11.5.3",
172
174
  "make-empty-dir": "^4.0.0",
173
175
  "mdast-util-to-string": "^4.0.0",
174
- "memfs": "^4.78.0",
176
+ "memfs": "^4.78.1",
175
177
  "memoize": "^11.0.0",
176
178
  "micromatch": "^4.0.8",
177
179
  "msgpackr": "2.1.0",
@@ -189,7 +191,7 @@
189
191
  "p-defer": "^4.0.1",
190
192
  "p-every": "^2.0.0",
191
193
  "p-filter": "^4.1.0",
192
- "p-limit": "^7.3.2",
194
+ "p-limit": "^7.3.3",
193
195
  "p-queue": "^9.3.3",
194
196
  "parse-json": "^8.3.0",
195
197
  "parse-npm-tarball-url": "^5.0.0",
@@ -228,6 +230,7 @@
228
230
  "shx": "^0.4.0",
229
231
  "socks": "^2.8.10",
230
232
  "sort-keys": "^6.0.1",
233
+ "spdx-expression-parse": "5.0.0",
231
234
  "split-cmd": "^1.1.0",
232
235
  "split2": "^4.2.0",
233
236
  "ssri": "13.0.1",
@@ -236,7 +239,7 @@
236
239
  "string-width": "^8.2.2",
237
240
  "strip-bom": "^5.0.0",
238
241
  "strip-comments-strings": "1.2.0",
239
- "symlink-dir": "^10.0.1",
242
+ "symlink-dir": "^10.0.3",
240
243
  "tar": "^7.5.22",
241
244
  "tar-stream": "^3.2.1",
242
245
  "tempy": "3.0.0",
@@ -247,6 +250,7 @@
247
250
  "ts-jest-resolver": "2.0.1",
248
251
  "typescript": "6.0.3",
249
252
  "typescript-eslint": "^8.70.0",
253
+ "uid-number": "0.0.6",
250
254
  "undici": "^7.29.0",
251
255
  "unified": "^11.0.5",
252
256
  "validate-npm-package-name": "7.0.2",
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "./dist/node_modules/node-gyp/gyp/gyp"
10
10
  ]
11
11
  },
12
- "version": "12.5.1",
12
+ "version": "12.6.0",
13
13
  "description": "Fast, disk space efficient package manager",
14
14
  "keywords": [
15
15
  "pnpm",
@@ -46,20 +46,20 @@
46
46
  "THIRD-PARTY-NOTICES.md"
47
47
  ],
48
48
  "optionalDependencies": {
49
- "@pnpm/exe.win32-x64": "12.5.1",
50
- "@pnpm/exe.win32-arm64": "12.5.1",
51
- "@pnpm/exe.darwin-x64": "12.5.1",
52
- "@pnpm/exe.darwin-arm64": "12.5.1",
53
- "@pnpm/exe.linux-x64": "12.5.1",
54
- "@pnpm/exe.linux-arm64": "12.5.1",
55
- "@pnpm/exe.linux-riscv64": "12.5.1",
56
- "@pnpm/exe.linux-ppc64": "12.5.1",
57
- "@pnpm/exe.linux-s390x": "12.5.1",
58
- "@pnpm/exe.linux-x64-musl": "12.5.1",
59
- "@pnpm/exe.linux-arm64-musl": "12.5.1",
60
- "@pnpm/exe.freebsd-x64": "12.5.1",
61
- "@pnpm/exe.android-arm64": "12.5.1",
62
- "@pnpm/exe.android-x64": "12.5.1"
49
+ "@pnpm/exe.win32-x64": "12.6.0",
50
+ "@pnpm/exe.win32-arm64": "12.6.0",
51
+ "@pnpm/exe.darwin-x64": "12.6.0",
52
+ "@pnpm/exe.darwin-arm64": "12.6.0",
53
+ "@pnpm/exe.linux-x64": "12.6.0",
54
+ "@pnpm/exe.linux-arm64": "12.6.0",
55
+ "@pnpm/exe.linux-riscv64": "12.6.0",
56
+ "@pnpm/exe.linux-ppc64": "12.6.0",
57
+ "@pnpm/exe.linux-s390x": "12.6.0",
58
+ "@pnpm/exe.linux-x64-musl": "12.6.0",
59
+ "@pnpm/exe.linux-arm64-musl": "12.6.0",
60
+ "@pnpm/exe.freebsd-x64": "12.6.0",
61
+ "@pnpm/exe.android-arm64": "12.6.0",
62
+ "@pnpm/exe.android-x64": "12.6.0"
63
63
  },
64
64
  "scripts": {
65
65
  "preinstall": "node install.js",
package/pn CHANGED
@@ -9,6 +9,21 @@
9
9
  # hang the script. Directories come from `${self%/*}` and `readlink` runs through
10
10
  # `command -p`, so the caller's `PATH` decides nothing here.
11
11
  self=$0
12
+ # MSYS and Cygwin can launch this with a native Windows path, which has no slash
13
+ # for `${self%/*}` to strip. Only a drive letter or a UNC prefix marks one; a
14
+ # backslash anywhere else is an ordinary character in a Unix file name, so the
15
+ # path is left alone. The separators are swapped in the shell rather than through
16
+ # `echo`, which mangles a `\t` or `\b` in a path under dash.
17
+ case $self in
18
+ [A-Za-z]:\\*|\\\\*)
19
+ while :; do
20
+ case $self in
21
+ *\\*) self=${self%%\\*}/${self#*\\} ;;
22
+ *) break ;;
23
+ esac
24
+ done
25
+ ;;
26
+ esac
12
27
  # `${self%/*}` needs a slash to strip. A bare name came from a `PATH` lookup and
13
28
  # stands for a file in the current directory.
14
29
  case $self in
package/pnpm CHANGED
@@ -29,6 +29,21 @@ fi
29
29
  # and directories come from `${self%/*}`, which runs nothing at all. The caller's
30
30
  # PATH therefore decides only which `node` runs, which is what it is for.
31
31
  self=$0
32
+ # MSYS and Cygwin can launch this with a native Windows path, which has no slash
33
+ # for `${self%/*}` to strip. Only a drive letter or a UNC prefix marks one; a
34
+ # backslash anywhere else is an ordinary character in a Unix file name, so the
35
+ # path is left alone. The separators are swapped in the shell rather than through
36
+ # `echo`, which mangles a `\t` or `\b` in a path under dash.
37
+ case $self in
38
+ [A-Za-z]:\\*|\\\\*)
39
+ while :; do
40
+ case $self in
41
+ *\\*) self=${self%%\\*}/${self#*\\} ;;
42
+ *) break ;;
43
+ esac
44
+ done
45
+ ;;
46
+ esac
32
47
  # `${self%/*}` needs a slash to strip. A bare name came from a PATH lookup and
33
48
  # stands for a file in the current directory.
34
49
  case $self in
package/pnpx CHANGED
@@ -9,6 +9,21 @@
9
9
  # hang the script. Directories come from `${self%/*}` and `readlink` runs through
10
10
  # `command -p`, so the caller's `PATH` decides nothing here.
11
11
  self=$0
12
+ # MSYS and Cygwin can launch this with a native Windows path, which has no slash
13
+ # for `${self%/*}` to strip. Only a drive letter or a UNC prefix marks one; a
14
+ # backslash anywhere else is an ordinary character in a Unix file name, so the
15
+ # path is left alone. The separators are swapped in the shell rather than through
16
+ # `echo`, which mangles a `\t` or `\b` in a path under dash.
17
+ case $self in
18
+ [A-Za-z]:\\*|\\\\*)
19
+ while :; do
20
+ case $self in
21
+ *\\*) self=${self%%\\*}/${self#*\\} ;;
22
+ *) break ;;
23
+ esac
24
+ done
25
+ ;;
26
+ esac
12
27
  # `${self%/*}` needs a slash to strip. A bare name came from a `PATH` lookup and
13
28
  # stands for a file in the current directory.
14
29
  case $self in
package/pnx CHANGED
@@ -9,6 +9,21 @@
9
9
  # hang the script. Directories come from `${self%/*}` and `readlink` runs through
10
10
  # `command -p`, so the caller's `PATH` decides nothing here.
11
11
  self=$0
12
+ # MSYS and Cygwin can launch this with a native Windows path, which has no slash
13
+ # for `${self%/*}` to strip. Only a drive letter or a UNC prefix marks one; a
14
+ # backslash anywhere else is an ordinary character in a Unix file name, so the
15
+ # path is left alone. The separators are swapped in the shell rather than through
16
+ # `echo`, which mangles a `\t` or `\b` in a path under dash.
17
+ case $self in
18
+ [A-Za-z]:\\*|\\\\*)
19
+ while :; do
20
+ case $self in
21
+ *\\*) self=${self%%\\*}/${self#*\\} ;;
22
+ *) break ;;
23
+ esac
24
+ done
25
+ ;;
26
+ esac
12
27
  # `${self%/*}` needs a slash to strip. A bare name came from a `PATH` lookup and
13
28
  # stands for a file in the current directory.
14
29
  case $self in