pnpm/pnpm#16238 kept build-created symlinks out of the remote side-effects cache: pnpm v12 did not publish a diff that records one and rejected an artifact that carries one, and both clients' artifact validators refused the mode. The guards protected clients that would restore such an entry as a regular file. No client has shipped the remote cache, so there is no such client, and builds that create links were never shared. Let a remote artifact carry a symlink entry with the shape the local side-effects diff already uses: the mode carries the S_IFLNK file-type bits and the blob is the link target. The shared-artifact protocol owns SYMLINK_MODE, and the store crate re-exports it. The artifact key stays at v1, because no artifact of the old shape exists outside tests. Both clients derive a resolved artifact's overlay the way they derive a persisted store row's, so a link is restored under the same rules or the artifact is quarantined: pnpm v12 through the store crate's side_effects_overlay, pnpm v11 through toSideEffectsFilesMap in @pnpm/store.cafs. The persisted-row blob check accounts for a link's target blob, which the overlay names by the link rather than by path. Each reader tells a recorded link apart from a file inside the loop it already runs over the diff, in both stacks: pnpm v11 feeds a SideEffectsFilesMapBuilder from its verification, path-mapping and artifact-hydration loops, and the Rust overlay builder branches on the mode in its one pass.
44 lines
776 B
JSON
44 lines
776 B
JSON
{
|
|
"extends": "@pnpm/tsconfig",
|
|
"compilerOptions": {
|
|
"outDir": "lib",
|
|
"rootDir": "src"
|
|
},
|
|
"include": [
|
|
"src/**/*.ts",
|
|
"../../__typings__/**/*.d.ts"
|
|
],
|
|
"references": [
|
|
{
|
|
"path": "../../pnpm11/catalogs/types"
|
|
},
|
|
{
|
|
"path": "../../pnpm11/core/error"
|
|
},
|
|
{
|
|
"path": "../../pnpm11/core/types"
|
|
},
|
|
{
|
|
"path": "../../pnpm11/crypto/object-hasher"
|
|
},
|
|
{
|
|
"path": "../../pnpm11/deps/graph-hasher"
|
|
},
|
|
{
|
|
"path": "../../pnpm11/lockfile/fs"
|
|
},
|
|
{
|
|
"path": "../../pnpm11/lockfile/types"
|
|
},
|
|
{
|
|
"path": "../../pnpm11/network/auth-header"
|
|
},
|
|
{
|
|
"path": "../../pnpm11/store/cafs"
|
|
},
|
|
{
|
|
"path": "../../pnpm11/store/controller-types"
|
|
}
|
|
]
|
|
}
|