mirror of
https://github.com/pnpm/pnpm.git
synced 2026-02-08 06:02:34 -05:00
refactor!: changed the format of the side-effects cache key (#8694)
This commit is contained in:
5
.changeset/beige-ghosts-know.md
Normal file
5
.changeset/beige-ghosts-know.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@pnpm/constants": major
|
||||
---
|
||||
|
||||
Changed the format of the side-effects cache key.
|
||||
@@ -78,7 +78,7 @@ test('rebuilds dependencies', async () => {
|
||||
const cacheIntegrityPath = getIndexFilePathInCafs(cafsDir, getIntegrity('@pnpm.e2e/pre-and-postinstall-scripts-example', '1.0.0'), '@pnpm.e2e/pre-and-postinstall-scripts-example@1.0.0')
|
||||
const cacheIntegrity = loadJsonFile.sync<any>(cacheIntegrityPath) // eslint-disable-line @typescript-eslint/no-explicit-any
|
||||
expect(cacheIntegrity!.sideEffects).toBeTruthy()
|
||||
const sideEffectsKey = `${ENGINE_NAME}-${hashObject({ '@pnpm.e2e/hello-world-js-bin@1.0.0': {} })}`
|
||||
const sideEffectsKey = `${ENGINE_NAME};deps=${hashObject({ '@pnpm.e2e/hello-world-js-bin@1.0.0': {} })}`
|
||||
expect(cacheIntegrity).toHaveProperty(['sideEffects', sideEffectsKey, 'added', 'generated-by-postinstall.js'])
|
||||
delete cacheIntegrity!.sideEffects[sideEffectsKey].added['generated-by-postinstall.js']
|
||||
})
|
||||
@@ -102,7 +102,7 @@ test('skipIfHasSideEffectsCache', async () => {
|
||||
const cafsDir = path.join(storeDir, 'v3/files')
|
||||
const cacheIntegrityPath = getIndexFilePathInCafs(cafsDir, getIntegrity('@pnpm.e2e/pre-and-postinstall-scripts-example', '1.0.0'), '@pnpm.e2e/pre-and-postinstall-scripts-example@1.0.0')
|
||||
let cacheIntegrity = loadJsonFile.sync<any>(cacheIntegrityPath) // eslint-disable-line @typescript-eslint/no-explicit-any
|
||||
const sideEffectsKey = `${ENGINE_NAME}-${hashObject({ '@pnpm.e2e/hello-world-js-bin@1.0.0': {} })}`
|
||||
const sideEffectsKey = `${ENGINE_NAME};deps=${hashObject({ '@pnpm.e2e/hello-world-js-bin@1.0.0': {} })}`
|
||||
cacheIntegrity.sideEffects = {
|
||||
[sideEffectsKey]: { added: { foo: 'bar' } },
|
||||
}
|
||||
|
||||
@@ -32,10 +32,10 @@ export function calcDepState<T extends string> (
|
||||
let result = ENGINE_NAME
|
||||
if (opts.isBuilt) {
|
||||
const depStateObj = calcDepStateObj(depPath, depsGraph, cache, new Set())
|
||||
result += `-${hashObjectWithoutSorting(depStateObj)}`
|
||||
result += `;deps=${hashObjectWithoutSorting(depStateObj)}`
|
||||
}
|
||||
if (opts.patchFileHash) {
|
||||
result += `-${opts.patchFileHash}`
|
||||
result += `;patch=${opts.patchFileHash}`
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ const depsGraph = {
|
||||
test('calcDepState()', () => {
|
||||
expect(calcDepState(depsGraph, {}, 'registry/foo@1.0.0', {
|
||||
isBuilt: true,
|
||||
})).toBe(`${ENGINE_NAME}-${hashObject({
|
||||
})).toBe(`${ENGINE_NAME};deps=${hashObject({
|
||||
'bar@1.0.0': { 'foo@1.0.0': {} },
|
||||
})}`)
|
||||
})
|
||||
|
||||
@@ -3,7 +3,7 @@ export const LOCKFILE_MAJOR_VERSION = '9'
|
||||
export const LOCKFILE_VERSION = `${LOCKFILE_MAJOR_VERSION}.0`
|
||||
export const LOCKFILE_VERSION_V6 = '6.0'
|
||||
|
||||
export const ENGINE_NAME = `${process.platform}-${process.arch}-node-${process.version.split('.')[0]}`
|
||||
export const ENGINE_NAME = `${process.platform};${process.arch};node${process.version.split('.')[0].substring(1)}`
|
||||
export const LAYOUT_VERSION = 5
|
||||
|
||||
export const WORKSPACE_MANIFEST_FILENAME = 'pnpm-workspace.yaml'
|
||||
|
||||
@@ -45,7 +45,7 @@ test('patch package', async () => {
|
||||
|
||||
const filesIndexFile = path.join(opts.storeDir, 'files/c7/1ccf199e0fdae37aad13946b937d67bcd35fa111b84d21b3a19439cfdc2812-is-positive@1.0.0.json')
|
||||
const filesIndex = loadJsonFile.sync<PackageFilesIndex>(filesIndexFile)
|
||||
const sideEffectsKey = `${ENGINE_NAME}-${patchFileHash}`
|
||||
const sideEffectsKey = `${ENGINE_NAME};patch=${patchFileHash}`
|
||||
const patchedFileIntegrity = filesIndex.sideEffects?.[sideEffectsKey].added?.['index.js']?.integrity
|
||||
expect(patchedFileIntegrity).toBeTruthy()
|
||||
const originalFileIntegrity = filesIndex.files['index.js'].integrity
|
||||
@@ -212,7 +212,7 @@ test('patch package when scripts are ignored', async () => {
|
||||
|
||||
const filesIndexFile = path.join(opts.storeDir, 'files/c7/1ccf199e0fdae37aad13946b937d67bcd35fa111b84d21b3a19439cfdc2812-is-positive@1.0.0.json')
|
||||
const filesIndex = loadJsonFile.sync<PackageFilesIndex>(filesIndexFile)
|
||||
const sideEffectsKey = `${ENGINE_NAME}-${patchFileHash}`
|
||||
const sideEffectsKey = `${ENGINE_NAME};patch=${patchFileHash}`
|
||||
const patchedFileIntegrity = filesIndex.sideEffects?.[sideEffectsKey].added?.['index.js']?.integrity
|
||||
expect(patchedFileIntegrity).toBeTruthy()
|
||||
const originalFileIntegrity = filesIndex.files['index.js'].integrity
|
||||
@@ -299,7 +299,7 @@ test('patch package when the package is not in onlyBuiltDependencies list', asyn
|
||||
|
||||
const filesIndexFile = path.join(opts.storeDir, 'files/c7/1ccf199e0fdae37aad13946b937d67bcd35fa111b84d21b3a19439cfdc2812-is-positive@1.0.0.json')
|
||||
const filesIndex = loadJsonFile.sync<PackageFilesIndex>(filesIndexFile)
|
||||
const sideEffectsKey = `${ENGINE_NAME}-${patchFileHash}`
|
||||
const sideEffectsKey = `${ENGINE_NAME};patch=${patchFileHash}`
|
||||
const patchedFileIntegrity = filesIndex.sideEffects?.[sideEffectsKey].added?.['index.js']?.integrity
|
||||
expect(patchedFileIntegrity).toBeTruthy()
|
||||
const originalFileIntegrity = filesIndex.files['index.js'].integrity
|
||||
|
||||
@@ -86,7 +86,7 @@ test('using side effects cache', async () => {
|
||||
const filesIndexFile = getIndexFilePathInCafs(cafsDir, getIntegrity('@pnpm.e2e/pre-and-postinstall-scripts-example', '1.0.0'), '@pnpm.e2e/pre-and-postinstall-scripts-example@1.0.0')
|
||||
const filesIndex = loadJsonFile.sync<PackageFilesIndex>(filesIndexFile)
|
||||
expect(filesIndex.sideEffects).toBeTruthy() // files index has side effects
|
||||
const sideEffectsKey = `${ENGINE_NAME}-${hashObject({ '@pnpm.e2e/hello-world-js-bin@1.0.0': {} })}`
|
||||
const sideEffectsKey = `${ENGINE_NAME};deps=${hashObject({ '@pnpm.e2e/hello-world-js-bin@1.0.0': {} })}`
|
||||
expect(filesIndex.sideEffects).toHaveProperty([sideEffectsKey, 'added', 'generated-by-preinstall.js'])
|
||||
expect(filesIndex.sideEffects).toHaveProperty([sideEffectsKey, 'added', 'generated-by-postinstall.js'])
|
||||
delete filesIndex.sideEffects![sideEffectsKey].added?.['generated-by-postinstall.js']
|
||||
@@ -177,7 +177,7 @@ test('a postinstall script does not modify the original sources added to the sto
|
||||
const cafsDir = path.join(opts.storeDir, 'files')
|
||||
const filesIndexFile = getIndexFilePathInCafs(cafsDir, getIntegrity('@pnpm/postinstall-modifies-source', '1.0.0'), '@pnpm/postinstall-modifies-source@1.0.0')
|
||||
const filesIndex = loadJsonFile.sync<PackageFilesIndex>(filesIndexFile)
|
||||
const patchedFileIntegrity = filesIndex.sideEffects?.[`${ENGINE_NAME}-${hashObject({})}`].added?.['empty-file.txt']?.integrity
|
||||
const patchedFileIntegrity = filesIndex.sideEffects?.[`${ENGINE_NAME};deps=${hashObject({})}`].added?.['empty-file.txt']?.integrity
|
||||
expect(patchedFileIntegrity).toBeTruthy()
|
||||
const originalFileIntegrity = filesIndex.files['empty-file.txt'].integrity
|
||||
expect(originalFileIntegrity).toBeTruthy()
|
||||
@@ -201,7 +201,7 @@ test('a corrupted side-effects cache is ignored', async () => {
|
||||
const filesIndexFile = getIndexFilePathInCafs(cafsDir, getIntegrity('@pnpm.e2e/pre-and-postinstall-scripts-example', '1.0.0'), '@pnpm.e2e/pre-and-postinstall-scripts-example@1.0.0')
|
||||
const filesIndex = loadJsonFile.sync<PackageFilesIndex>(filesIndexFile)
|
||||
expect(filesIndex.sideEffects).toBeTruthy() // files index has side effects
|
||||
const sideEffectsKey = `${ENGINE_NAME}-${hashObject({ '@pnpm.e2e/hello-world-js-bin@1.0.0': {} })}`
|
||||
const sideEffectsKey = `${ENGINE_NAME};deps=${hashObject({ '@pnpm.e2e/hello-world-js-bin@1.0.0': {} })}`
|
||||
expect(filesIndex.sideEffects).toHaveProperty([sideEffectsKey, 'added', 'generated-by-preinstall.js'])
|
||||
const sideEffectFileStat = filesIndex.sideEffects![sideEffectsKey].added!['generated-by-preinstall.js']
|
||||
const sideEffectFile = getFilePathByModeInCafs(cafsDir, sideEffectFileStat.integrity, sideEffectFileStat.mode)
|
||||
|
||||
@@ -681,7 +681,7 @@ test.each([['isolated'], ['hoisted']])('using side effects cache with nodeLinker
|
||||
const cacheIntegrityPath = getIndexFilePathInCafs(cafsDir, getIntegrity('@pnpm.e2e/pre-and-postinstall-scripts-example', '1.0.0'), '@pnpm.e2e/pre-and-postinstall-scripts-example@1.0.0')
|
||||
const cacheIntegrity = loadJsonFile.sync<any>(cacheIntegrityPath) // eslint-disable-line @typescript-eslint/no-explicit-any
|
||||
expect(cacheIntegrity!.sideEffects).toBeTruthy()
|
||||
const sideEffectsKey = `${ENGINE_NAME}-${hashObject({ '@pnpm.e2e/hello-world-js-bin@1.0.0': {} })}`
|
||||
const sideEffectsKey = `${ENGINE_NAME};deps=${hashObject({ '@pnpm.e2e/hello-world-js-bin@1.0.0': {} })}`
|
||||
expect(cacheIntegrity).toHaveProperty(['sideEffects', sideEffectsKey, 'added', 'generated-by-postinstall.js'])
|
||||
delete cacheIntegrity!.sideEffects[sideEffectsKey].added['generated-by-postinstall.js']
|
||||
|
||||
|
||||
Reference in New Issue
Block a user