Files
pnpm/pnpr/client/tsconfig.json
Zoltan Kochan e495640b20 fix(store): share build-created symlinks through the remote side-effects cache (#16249)
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.
2026-09-27 10:34:58 +02:00

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"
}
]
}