fix(override): relative file in workspace (#8055)

close #8053

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
This commit is contained in:
Khải
2024-05-11 04:31:33 +07:00
committed by GitHub
parent 524990fd95
commit b1d7f8c6cf
23 changed files with 247 additions and 85 deletions

View File

@@ -0,0 +1,6 @@
---
"@pnpm/hooks.read-package-hook": patch
"pnpm": patch
---
Overrides with `link:` now preserves absolute path.

View File

@@ -0,0 +1,6 @@
---
"@pnpm/hooks.read-package-hook": patch
"pnpm": patch
---
Fix incorrect path when resolving relative `file:` overrides for workspace package.

View File

@@ -44,7 +44,7 @@
"@pnpm/constants": "workspace:*",
"@pnpm/lockfile-types": "workspace:*",
"@pnpm/modules-yaml": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/types": "workspace:*",
"is-windows": "^1.0.2",
"isexe": "2.0.0",

View File

@@ -40,7 +40,7 @@
"test": "pnpm pretest && pnpm run compile && jest"
},
"dependencies": {
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/store.cafs": "workspace:*",
"path-exists": "^4.0.0"
},

View File

@@ -35,7 +35,7 @@
"@pnpm/filter-workspace-packages": "workspace:*",
"@pnpm/plugin-commands-rebuild": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/test-fixtures": "workspace:*",
"@pnpm/test-ipc-server": "workspace:*",
"@types/ramda": "0.29.12",

View File

@@ -34,7 +34,7 @@
"@pnpm/filter-workspace-packages": "workspace:*",
"@pnpm/plugin-commands-script-runners": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/test-ipc-server": "workspace:*",
"@types/is-windows": "^1.0.2",
"@types/ramda": "0.29.12",

View File

@@ -15,19 +15,9 @@ export function createVersionsOverrider (
const [versionOverrides, genericVersionOverrides] = partition(({ parentPkg }) => parentPkg != null,
parsedOverrides
.map((override) => {
let linkTarget: string | undefined
if (override.newPref.startsWith('link:')) {
const pkgPath = override.newPref.substring(5)
linkTarget = path.isAbsolute(pkgPath) ? pkgPath : path.join(rootDir, pkgPath)
}
let linkFileTarget: string | undefined
if (override.newPref.startsWith('file:')) {
linkFileTarget = override.newPref.substring(5)
}
return {
...override,
linkTarget,
linkFileTarget,
localTarget: createLocalTarget(override, rootDir),
}
})
) as [VersionOverrideWithParent[], VersionOverride[]]
@@ -52,9 +42,31 @@ function tryParseOverrides (overrides: Record<string, string>): VersionOverrideB
}
}
interface LocalTarget {
protocol: LocalProtocol
absolutePath: string
specifiedViaRelativePath: boolean
}
type LocalProtocol = 'link:' | 'file:'
function createLocalTarget (override: VersionOverrideBase, rootDir: string): LocalTarget | undefined {
let protocol: LocalProtocol | undefined
if (override.newPref.startsWith('file:')) {
protocol = 'file:'
} else if (override.newPref.startsWith('link:')) {
protocol = 'link:'
} else {
return undefined
}
const pkgPath = override.newPref.substring(protocol.length)
const specifiedViaRelativePath = !path.isAbsolute(pkgPath)
const absolutePath = specifiedViaRelativePath ? path.join(rootDir, pkgPath) : pkgPath
return { absolutePath, specifiedViaRelativePath, protocol }
}
interface VersionOverride extends VersionOverrideBase {
linkTarget?: string
linkFileTarget?: string
localTarget?: LocalTarget
}
interface VersionOverrideWithParent extends VersionOverride {
@@ -97,22 +109,20 @@ function overrideDeps (
)
if (!versionOverride) continue
if (versionOverride.linkTarget && dir) {
deps[versionOverride.targetPkg.name] = `link:${normalizePath(
path.relative(dir, versionOverride.linkTarget)
)}`
continue
}
if (versionOverride.linkFileTarget) {
deps[
versionOverride.targetPkg.name
] = `file:${versionOverride.linkFileTarget}`
if (versionOverride.localTarget) {
deps[versionOverride.targetPkg.name] = `${versionOverride.localTarget.protocol}${resolveLocalOverride(versionOverride.localTarget, dir)}`
continue
}
deps[versionOverride.targetPkg.name] = versionOverride.newPref
}
}
function resolveLocalOverride ({ specifiedViaRelativePath, absolutePath }: LocalTarget, pkgDir?: string): string {
return specifiedViaRelativePath && pkgDir
? normalizePath(path.relative(pkgDir, absolutePath))
: absolutePath
}
function pickMostSpecificVersionOverride (versionOverrides: VersionOverride[]): VersionOverride | undefined {
return versionOverrides.sort((a, b) => isIntersectingRange(b.targetPkg.pref ?? '', a.targetPkg.pref ?? '') ? -1 : 1)[0]
}

View File

@@ -1,6 +1,5 @@
import path from 'path'
import { createVersionsOverrider } from '../lib/createVersionsOverrider'
import normalizePath from 'normalize-path'
test('createVersionsOverrider() matches sub-ranges', () => {
const overrider = createVersionsOverrider({
@@ -165,7 +164,7 @@ test('createVersionsOverrider() overrides dependencies with absolute links', ()
name: 'foo',
version: '1.2.0',
dependencies: {
qar: `link:${normalizePath(path.relative(path.resolve('pkg'), qarAbsolutePath))}`,
qar: `link:${qarAbsolutePath}`,
},
})
})
@@ -275,17 +274,18 @@ test('createVersionsOverrider() should work for scoped parent and scoped child',
})
})
test('createVersionsOverrider() overrides dependencies with file with relative path', () => {
test('createVersionsOverrider() overrides dependencies with file with relative path for root package', () => {
const rootDir = process.cwd()
const overrider = createVersionsOverrider({
qar: 'file:../qar',
}, process.cwd())
}, rootDir)
expect(overrider({
name: 'foo',
version: '1.2.0',
dependencies: {
qar: '3.0.0',
},
}, path.resolve('pkg'))).toStrictEqual({
}, rootDir)).toStrictEqual({
name: 'foo',
version: '1.2.0',
dependencies: {
@@ -294,6 +294,26 @@ test('createVersionsOverrider() overrides dependencies with file with relative p
})
})
test('createVersionsOverrider() overrides dependencies with file with relative path for workspace package', () => {
const rootDir = process.cwd()
const overrider = createVersionsOverrider({
qar: 'file:../qar',
}, rootDir)
expect(overrider({
name: 'foo',
version: '1.2.0',
dependencies: {
qar: '3.0.0',
},
}, path.join(rootDir, 'packages', 'pkg'))).toStrictEqual({
name: 'foo',
version: '1.2.0',
dependencies: {
qar: 'file:../../../qar',
},
})
})
test('createVersionsOverrider() overrides dependencies with file specified with absolute path', () => {
const absolutePath = path.join(__dirname, 'qar')
const overrider = createVersionsOverrider({

View File

@@ -39,7 +39,7 @@
"@commitlint/prompt-cli": "^17.8.1",
"@pnpm/eslint-config": "workspace:*",
"@pnpm/meta-updater": "1.0.0",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/tsconfig": "workspace:*",
"@pnpm/worker": "workspace:*",
"@types/jest": "^29.5.12",

View File

@@ -34,7 +34,7 @@
"@pnpm/filter-workspace-packages": "workspace:*",
"@pnpm/plugin-commands-patching": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/test-fixtures": "workspace:*",
"@types/normalize-path": "^3.0.2",
"@types/ramda": "0.29.12",

View File

@@ -83,7 +83,7 @@
"@pnpm/lockfile-types": "workspace:*",
"@pnpm/package-store": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/store-path": "workspace:*",
"@pnpm/store.cafs": "workspace:*",
"@pnpm/test-fixtures": "workspace:*",

View File

@@ -1,7 +1,13 @@
import path from 'path'
import fs from 'fs'
import { sync as readYamlFile } from 'read-yaml-file'
import { PnpmError } from '@pnpm/error'
import { prepareEmpty } from '@pnpm/prepare'
import { prepareEmpty, preparePackages } from '@pnpm/prepare'
import { addDistTag } from '@pnpm/registry-mock'
import { addDependenciesToPackage, mutateModulesInSingleProject } from '@pnpm/core'
import { WANTED_LOCKFILE } from '@pnpm/constants'
import { type MutatedProject, type ProjectOptions, addDependenciesToPackage, mutateModulesInSingleProject, mutateModules } from '@pnpm/core'
import { type LockfileFileV9 } from '@pnpm/lockfile-types'
import { type ProjectManifest } from '@pnpm/types'
import {
testDefaults,
} from '../utils'
@@ -132,3 +138,117 @@ test('explicitly specifying a version at install will ignore overrides', async (
expect(manifest.dependencies?.['@pnpm.e2e/bar']).toBe(EXACT_VERSION)
})
test('overrides with local file and link specs', async () => {
interface LocationAndManifest {
location: string
package: ProjectManifest
}
const root: LocationAndManifest = {
location: '.',
package: {
name: 'root',
},
}
const direct: LocationAndManifest = {
location: 'packages/direct',
package: {
name: 'direct',
dependencies: {
'relative-file-pkg': '*',
'absolute-file-pkg': '*',
'relative-link-pkg': '*',
'absolute-link-pkg': '*',
},
},
}
const indirect: LocationAndManifest = {
location: 'packages/indirect',
package: {
name: 'indirect',
dependencies: {
'@pnpm.e2e/depends-on-pkg-abcd': '1.0.0',
},
},
}
const pkg: LocationAndManifest = {
location: 'overrides/pkg',
package: {
name: 'pkg',
version: '0.0.0',
},
}
preparePackages([
root,
direct,
indirect,
pkg,
])
const importers = [root, direct, indirect].map(({ location }): MutatedProject => ({
mutation: 'install',
rootDir: path.resolve(location),
}))
const allProjects = [root, direct, indirect].map((input): ProjectOptions => ({
buildIndex: 0,
manifest: input.package,
rootDir: path.resolve(input.location),
}))
await mutateModules(importers, {
...testDefaults({ allProjects }),
overrides: {
'relative-file-pkg': 'file:./overrides/pkg',
'absolute-file-pkg': `file:${path.resolve('overrides/pkg')}`,
'relative-link-pkg': 'link:./overrides/pkg',
'absolute-link-pkg': `link:${path.resolve('overrides/pkg')}`,
'@pnpm.e2e/pkg-a': 'file:./overrides/pkg',
'@pnpm.e2e/pkg-b': `file:${path.resolve('overrides/pkg')}`,
'@pnpm.e2e/pkg-c': 'link:./overrides/pkg',
'@pnpm.e2e/pkg-d': `link:${path.resolve('overrides/pkg')}`,
},
})
const lockfile = readYamlFile<LockfileFileV9>(WANTED_LOCKFILE)
expect(lockfile.importers?.['packages/direct']).toStrictEqual({
dependencies: {
'relative-file-pkg': {
specifier: 'file:../../overrides/pkg',
version: 'pkg@file:overrides/pkg',
},
'absolute-file-pkg': {
specifier: `file:${path.resolve('overrides/pkg')}`,
version: 'pkg@file:overrides/pkg',
},
'relative-link-pkg': {
specifier: 'link:../../overrides/pkg',
version: 'link:../../overrides/pkg',
},
'absolute-link-pkg': {
specifier: `link:${path.resolve('overrides/pkg')}`,
version: 'link:../../overrides/pkg',
},
},
})
expect(lockfile.snapshots?.['@pnpm.e2e/depends-on-pkg-abcd@1.0.0']).toStrictEqual({
dependencies: {
'@pnpm.e2e/pkg-a': 'pkg@file:overrides/pkg',
'@pnpm.e2e/pkg-b': 'pkg@file:overrides/pkg',
'@pnpm.e2e/pkg-c': 'link:overrides/pkg',
'@pnpm.e2e/pkg-d': 'link:overrides/pkg',
},
})
const directPrefix = 'packages/direct/node_modules'
expect(fs.realpathSync(path.join(directPrefix, 'absolute-file-pkg'))).toBe(path.resolve('node_modules/.pnpm/pkg@file+overrides+pkg/node_modules/pkg'))
expect(fs.realpathSync(path.join(directPrefix, 'relative-file-pkg'))).toBe(path.resolve('node_modules/.pnpm/pkg@file+overrides+pkg/node_modules/pkg'))
expect(fs.realpathSync(path.join(directPrefix, 'absolute-link-pkg'))).toBe(path.resolve('overrides/pkg'))
expect(fs.realpathSync(path.join(directPrefix, 'relative-link-pkg'))).toBe(path.resolve('overrides/pkg'))
const indirectPrefix = 'node_modules/.pnpm/@pnpm.e2e+depends-on-pkg-abcd@1.0.0/node_modules'
expect(fs.realpathSync(path.join(indirectPrefix, '@pnpm.e2e/pkg-a'))).toBe(path.resolve('node_modules/.pnpm/pkg@file+overrides+pkg/node_modules/pkg'))
expect(fs.realpathSync(path.join(indirectPrefix, '@pnpm.e2e/pkg-b'))).toBe(path.resolve('node_modules/.pnpm/pkg@file+overrides+pkg/node_modules/pkg'))
expect(fs.realpathSync(path.join(indirectPrefix, '@pnpm.e2e/pkg-c'))).toBe(path.resolve('overrides/pkg'))
expect(fs.realpathSync(path.join(indirectPrefix, '@pnpm.e2e/pkg-d'))).toBe(path.resolve('overrides/pkg'))
})

View File

@@ -23,7 +23,7 @@
"@pnpm/package-store": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/read-projects-context": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/store-path": "workspace:*",
"@pnpm/store.cafs": "workspace:*",
"@pnpm/test-fixtures": "workspace:*",

View File

@@ -61,7 +61,7 @@
"@pnpm/client": "workspace:*",
"@pnpm/create-cafs-store": "workspace:*",
"@pnpm/package-requester": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/test-fixtures": "workspace:*",
"@types/normalize-path": "^3.0.2",
"@types/ramda": "0.29.12",

View File

@@ -34,7 +34,7 @@
"@pnpm/modules-yaml": "workspace:*",
"@pnpm/plugin-commands-installation": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/test-fixtures": "workspace:*",
"@pnpm/test-ipc-server": "workspace:*",
"@types/proxyquire": "^1.3.31",

76
pnpm-lock.yaml generated
View File

@@ -72,8 +72,8 @@ importers:
specifier: 1.0.0
version: 1.0.0
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/tsconfig':
specifier: workspace:*
version: link:__utils__/tsconfig
@@ -190,8 +190,8 @@ importers:
specifier: workspace:*
version: link:../../pkg-manager/modules-yaml
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/types':
specifier: workspace:*
version: link:../../packages/types
@@ -224,8 +224,8 @@ importers:
__utils__/assert-store:
dependencies:
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/store.cafs':
specifier: workspace:*
version: link:../../store/cafs
@@ -1337,8 +1337,8 @@ importers:
specifier: workspace:*
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -1464,8 +1464,8 @@ importers:
specifier: workspace:*
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-ipc-server':
specifier: workspace:*
version: link:../../__utils__/test-ipc-server
@@ -2988,8 +2988,8 @@ importers:
specifier: workspace:*
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -3254,8 +3254,8 @@ importers:
specifier: workspace:*
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/store-path':
specifier: workspace:*
version: link:../../store/store-path
@@ -3536,8 +3536,8 @@ importers:
specifier: workspace:*
version: link:../read-projects-context
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/store-path':
specifier: workspace:*
version: link:../../store/store-path
@@ -3893,8 +3893,8 @@ importers:
specifier: workspace:*
version: 'link:'
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -4086,8 +4086,8 @@ importers:
specifier: workspace:*
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -4655,8 +4655,8 @@ importers:
specifier: workspace:*
version: link:../pkg-manifest/read-project-manifest
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/run-npm':
specifier: workspace:*
version: link:../exec/run-npm
@@ -4915,8 +4915,8 @@ importers:
specifier: workspace:*
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
releasing/plugin-commands-publishing:
dependencies:
@@ -5015,8 +5015,8 @@ importers:
specifier: workspace:*
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-ipc-server':
specifier: workspace:*
version: link:../../__utils__/test-ipc-server
@@ -5587,8 +5587,8 @@ importers:
specifier: workspace:*
version: link:../../pkg-manifest/read-package-json
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -5651,8 +5651,8 @@ importers:
specifier: workspace:*
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@types/ramda':
specifier: 0.29.12
version: 0.29.12
@@ -5742,8 +5742,8 @@ importers:
specifier: workspace:*
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@pnpm/test-fixtures':
specifier: workspace:*
version: link:../../__utils__/test-fixtures
@@ -6077,8 +6077,8 @@ importers:
specifier: workspace:*
version: link:../../__utils__/prepare
'@pnpm/registry-mock':
specifier: 3.30.0
version: 3.30.0(encoding@0.1.13)(typanion@3.14.0)
specifier: 3.31.0
version: 3.31.0(encoding@0.1.13)(typanion@3.14.0)
'@types/archy':
specifier: 0.0.33
version: 0.0.33
@@ -7645,8 +7645,8 @@ packages:
resolution: {integrity: sha512-MDXuQpYFbabSXzAnqP7VIQqBx5Z1fzOhzB/3YmIXJ+tE7Wue//IR3itMSYlWeaFLo1G5PCJklM2zBdvggRw1nw==}
engines: {node: '>=16.14'}
'@pnpm/registry-mock@3.30.0':
resolution: {integrity: sha512-uUyFwjY7SsnuJLp/LRGDV5A2ZZ4Sj4IyOifkY8XHqSqaJ1rrt3klDPmVVSt8fj4HNJmsaEFaUtxd0fpYr+cpTg==}
'@pnpm/registry-mock@3.31.0':
resolution: {integrity: sha512-GASXxiEiZiffsmgtFFC3ItF3YS+DZD1aB/GRAVu6eRAwJuo2mTlwLjZSIEbLVBWGMC66ugxS/BoG1zBGOITcoA==}
engines: {node: '>=10.13'}
hasBin: true
@@ -14429,7 +14429,7 @@ snapshots:
sort-keys: 4.2.0
strip-bom: 4.0.0
'@pnpm/registry-mock@3.30.0(encoding@0.1.13)(typanion@3.14.0)':
'@pnpm/registry-mock@3.31.0(encoding@0.1.13)(typanion@3.14.0)':
dependencies:
anonymous-npm-registry-client: 0.2.0
execa: 5.1.1
@@ -20467,7 +20467,7 @@ snapshots:
wide-align@1.1.5:
dependencies:
string-width: 1.0.2
string-width: 4.2.3
optional: true
widest-line@3.1.0:

View File

@@ -65,7 +65,7 @@
"@pnpm/prepare": "workspace:*",
"@pnpm/read-package-json": "workspace:*",
"@pnpm/read-project-manifest": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/run-npm": "workspace:*",
"@pnpm/tabtab": "^0.5.2",
"@pnpm/test-fixtures": "workspace:*",

View File

@@ -39,7 +39,7 @@
"@pnpm/lockfile-types": "workspace:*",
"@pnpm/plugin-commands-deploy": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "3.30.0"
"@pnpm/registry-mock": "3.31.0"
},
"dependencies": {
"@pnpm/cli-utils": "workspace:*",

View File

@@ -35,7 +35,7 @@
"@pnpm/filter-workspace-packages": "workspace:*",
"@pnpm/plugin-commands-publishing": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/test-ipc-server": "workspace:*",
"@types/cross-spawn": "^6.0.6",
"@types/is-windows": "^1.0.2",

View File

@@ -36,7 +36,7 @@
"@pnpm/plugin-commands-licenses": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/read-package-json": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/test-fixtures": "workspace:*",
"@types/ramda": "0.29.12",
"@types/semver": "7.5.3",

View File

@@ -34,7 +34,7 @@
"@pnpm/plugin-commands-installation": "workspace:*",
"@pnpm/plugin-commands-listing": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@types/ramda": "0.29.12",
"execa": "npm:safe-execa@0.1.2",
"strip-ansi": "^6.0.1",

View File

@@ -35,7 +35,7 @@
"@pnpm/plugin-commands-installation": "workspace:*",
"@pnpm/plugin-commands-outdated": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@pnpm/test-fixtures": "workspace:*",
"@types/ramda": "0.29.12",
"@types/zkochan__table": "npm:@types/table@6.0.0"

View File

@@ -35,7 +35,7 @@
"@pnpm/lockfile-file": "workspace:*",
"@pnpm/plugin-commands-store": "workspace:*",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "3.30.0",
"@pnpm/registry-mock": "3.31.0",
"@types/archy": "0.0.33",
"@types/ramda": "0.29.12",
"@types/ssri": "^7.1.5",