diff --git a/.changeset/big-planes-smell.md b/.changeset/big-planes-smell.md new file mode 100644 index 0000000000..bbabc00914 --- /dev/null +++ b/.changeset/big-planes-smell.md @@ -0,0 +1,12 @@ +--- +"@pnpm/plugin-commands-installation": minor +"@pnpm/resolve-dependencies": minor +"@pnpm/package-requester": patch +"@pnpm/store-controller-types": minor +"@pnpm/resolver-base": minor +"@pnpm/npm-resolver": minor +"@pnpm/core": minor +"pnpm": patch +--- + +Running `pnpm update -r --latest` will no longer downgrade prerelease dependencies [#7436](https://github.com/pnpm/pnpm/issues/7436). diff --git a/__utils__/assert-project/package.json b/__utils__/assert-project/package.json index 0430abc349..b77ca994dd 100644 --- a/__utils__/assert-project/package.json +++ b/__utils__/assert-project/package.json @@ -44,7 +44,7 @@ "@pnpm/constants": "workspace:*", "@pnpm/lockfile-types": "workspace:*", "@pnpm/modules-yaml": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/types": "workspace:*", "is-windows": "^1.0.2", "isexe": "2.0.0", diff --git a/__utils__/assert-store/package.json b/__utils__/assert-store/package.json index 8509d45293..4a75e625f8 100644 --- a/__utils__/assert-store/package.json +++ b/__utils__/assert-store/package.json @@ -40,7 +40,7 @@ "test": "pnpm pretest && pnpm run compile && jest" }, "dependencies": { - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/store.cafs": "workspace:*", "path-exists": "^4.0.0" }, diff --git a/exec/plugin-commands-rebuild/package.json b/exec/plugin-commands-rebuild/package.json index 787be98c38..79d97595af 100644 --- a/exec/plugin-commands-rebuild/package.json +++ b/exec/plugin-commands-rebuild/package.json @@ -35,7 +35,7 @@ "@pnpm/filter-workspace-packages": "workspace:*", "@pnpm/plugin-commands-rebuild": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/test-fixtures": "workspace:*", "@pnpm/test-ipc-server": "workspace:*", "@types/ramda": "0.28.20", diff --git a/exec/plugin-commands-script-runners/package.json b/exec/plugin-commands-script-runners/package.json index ed121945a7..8230ca4021 100644 --- a/exec/plugin-commands-script-runners/package.json +++ b/exec/plugin-commands-script-runners/package.json @@ -34,7 +34,7 @@ "@pnpm/filter-workspace-packages": "workspace:*", "@pnpm/plugin-commands-script-runners": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/test-ipc-server": "workspace:*", "@types/is-windows": "^1.0.2", "@types/ramda": "0.28.20", diff --git a/package.json b/package.json index de2aee46b5..2226aed757 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@commitlint/prompt-cli": "^17.8.1", "@pnpm/eslint-config": "workspace:*", "@pnpm/meta-updater": "1.0.0", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/tsconfig": "workspace:*", "@pnpm/worker": "workspace:*", "@types/jest": "^29.5.8", diff --git a/patching/plugin-commands-patching/package.json b/patching/plugin-commands-patching/package.json index 4d9ad04c88..de17ba3b9a 100644 --- a/patching/plugin-commands-patching/package.json +++ b/patching/plugin-commands-patching/package.json @@ -34,7 +34,7 @@ "@pnpm/filter-workspace-packages": "workspace:*", "@pnpm/plugin-commands-patching": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/test-fixtures": "workspace:*", "@types/normalize-path": "^3.0.2", "@types/ramda": "0.28.20", diff --git a/pkg-manager/core/package.json b/pkg-manager/core/package.json index e0a6dedf71..6caa506a6b 100644 --- a/pkg-manager/core/package.json +++ b/pkg-manager/core/package.json @@ -82,7 +82,7 @@ "@pnpm/lockfile-types": "workspace:*", "@pnpm/package-store": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/store-path": "workspace:*", "@pnpm/store.cafs": "workspace:*", "@pnpm/test-fixtures": "workspace:*", diff --git a/pkg-manager/core/src/install/extendInstallOptions.ts b/pkg-manager/core/src/install/extendInstallOptions.ts index a431c5208b..f0ce83493a 100644 --- a/pkg-manager/core/src/install/extendInstallOptions.ts +++ b/pkg-manager/core/src/install/extendInstallOptions.ts @@ -91,6 +91,7 @@ export interface StrictInstallOptions { unsafePerm: boolean registries: Registries tag: string + updateToLatest?: boolean overrides: Record ownLifecycleHooksStdio: 'inherit' | 'pipe' workspacePackages: WorkspacePackages diff --git a/pkg-manager/core/src/install/index.ts b/pkg-manager/core/src/install/index.ts index 03e3af43ad..e1f22718e4 100644 --- a/pkg-manager/core/src/install/index.ts +++ b/pkg-manager/core/src/install/index.ts @@ -1032,6 +1032,7 @@ const _installInContext: InstallFunction = async (projects, ctx, opts) => { saveWorkspaceProtocol: opts.saveWorkspaceProtocol, storeController: opts.storeController, tag: opts.tag, + updateToLatest: opts.updateToLatest, virtualStoreDir: ctx.virtualStoreDir, wantedLockfile: ctx.wantedLockfile, workspacePackages: opts.workspacePackages, diff --git a/pkg-manager/headless/package.json b/pkg-manager/headless/package.json index 71956e0b89..ef00fbf577 100644 --- a/pkg-manager/headless/package.json +++ b/pkg-manager/headless/package.json @@ -23,7 +23,7 @@ "@pnpm/package-store": "workspace:*", "@pnpm/prepare": "workspace:*", "@pnpm/read-projects-context": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/store-path": "workspace:*", "@pnpm/store.cafs": "workspace:*", "@pnpm/test-fixtures": "workspace:*", diff --git a/pkg-manager/package-requester/package.json b/pkg-manager/package-requester/package.json index d51d331e34..7d01b6792d 100644 --- a/pkg-manager/package-requester/package.json +++ b/pkg-manager/package-requester/package.json @@ -61,7 +61,7 @@ "@pnpm/client": "workspace:*", "@pnpm/create-cafs-store": "workspace:*", "@pnpm/package-requester": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/test-fixtures": "workspace:*", "@types/normalize-path": "^3.0.2", "@types/ramda": "0.28.20", diff --git a/pkg-manager/package-requester/src/packageRequester.ts b/pkg-manager/package-requester/src/packageRequester.ts index 8c17796529..f7068a74e3 100644 --- a/pkg-manager/package-requester/src/packageRequester.ts +++ b/pkg-manager/package-requester/src/packageRequester.ts @@ -184,6 +184,7 @@ async function resolveAndFetch ( projectDir: options.projectDir, registry: options.registry, workspacePackages: options.workspacePackages, + updateToLatest: options.updateToLatest, }), { priority: options.downloadPriority }) manifest = resolveResult.manifest diff --git a/pkg-manager/plugin-commands-installation/package.json b/pkg-manager/plugin-commands-installation/package.json index 06bf0cfa57..234653b6cd 100644 --- a/pkg-manager/plugin-commands-installation/package.json +++ b/pkg-manager/plugin-commands-installation/package.json @@ -34,7 +34,7 @@ "@pnpm/modules-yaml": "workspace:*", "@pnpm/plugin-commands-installation": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/test-fixtures": "workspace:*", "@pnpm/test-ipc-server": "workspace:*", "@types/proxyquire": "^1.3.31", diff --git a/pkg-manager/plugin-commands-installation/src/installDeps.ts b/pkg-manager/plugin-commands-installation/src/installDeps.ts index 2ec4be7e8e..7c2aa77e42 100644 --- a/pkg-manager/plugin-commands-installation/src/installDeps.ts +++ b/pkg-manager/plugin-commands-installation/src/installDeps.ts @@ -6,6 +6,7 @@ import { import { type Config, getOptionsFromRootManifest } from '@pnpm/config' import { PnpmError } from '@pnpm/error' import { filterPkgsBySelectorObjects } from '@pnpm/filter-workspace-packages' +import { filterDependenciesByType } from '@pnpm/manifest-utils' import { arrayOfWorkspacePackagesToMap, findWorkspacePackages } from '@pnpm/workspace.find-packages' import { type Lockfile } from '@pnpm/lockfile-types' import { rebuildProjects } from '@pnpm/plugin-commands-rebuild' @@ -25,7 +26,6 @@ import { getPinnedVersion } from './getPinnedVersion' import { getSaveType } from './getSaveType' import { getNodeExecPath } from './nodeExecPath' import { recursive, createMatcher, matchDependencies, makeIgnorePatterns, type UpdateDepsMatcher } from './recursive' -import { updateToLatestSpecsFromManifest, createLatestSpecs } from './updateToLatestSpecsFromManifest' import { createWorkspaceSpecs, updateToWorkspacePackagesFromManifest } from './updateWorkspaceDependencies' const OVERWRITE_UPDATE_OPTIONS = { @@ -105,6 +105,7 @@ export type InstallDepsOptions = Pick void update?: boolean + updateToLatest?: boolean updateMatching?: (pkgName: string) => boolean updatePackageManifest?: boolean useBetaCli?: boolean @@ -265,12 +266,8 @@ when running add/update with the --workspace option') } } - if (opts.update && opts.latest) { - if (!params || (params.length === 0)) { - params = updateToLatestSpecsFromManifest(manifest, includeDirect) - } else { - params = createLatestSpecs(params, manifest) - } + if (opts.update && opts.latest && (!params || (params.length === 0))) { + params = Object.keys(filterDependenciesByType(manifest, includeDirect)) } if (opts.workspace) { if (!params || (params.length === 0)) { diff --git a/pkg-manager/plugin-commands-installation/src/recursive.ts b/pkg-manager/plugin-commands-installation/src/recursive.ts index bf77d8eb18..fabcd4d31c 100755 --- a/pkg-manager/plugin-commands-installation/src/recursive.ts +++ b/pkg-manager/plugin-commands-installation/src/recursive.ts @@ -36,7 +36,6 @@ import mem from 'mem' import pFilter from 'p-filter' import pLimit from 'p-limit' import { createWorkspaceSpecs, updateToWorkspacePackagesFromManifest } from './updateWorkspaceDependencies' -import { updateToLatestSpecsFromManifest, createLatestSpecs } from './updateToLatestSpecsFromManifest' import { getSaveType } from './getSaveType' import { getPinnedVersion } from './getPinnedVersion' import { type PreferredVersions } from '@pnpm/resolver-base' @@ -197,16 +196,8 @@ export async function recursive ( return } } - if (updateToLatest) { - if (!params || (params.length === 0)) { - currentInput = updateToLatestSpecsFromManifest(manifest, includeDirect) - } else { - currentInput = createLatestSpecs(currentInput, manifest) - if (currentInput.length === 0) { - installOpts.pruneLockfileImporters = false - return - } - } + if (updateToLatest && (!params || (params.length === 0))) { + currentInput = Object.keys(filterDependenciesByType(manifest, includeDirect)) } if (opts.workspace) { if (!currentInput || (currentInput.length === 0)) { @@ -319,13 +310,8 @@ export async function recursive ( currentInput = matchDependencies(updateMatch, manifest, includeDirect) if (currentInput.length === 0) return } - if (updateToLatest) { - if (!params || (params.length === 0)) { - currentInput = updateToLatestSpecsFromManifest(manifest, includeDirect) - } else { - currentInput = createLatestSpecs(currentInput, manifest) - if (currentInput.length === 0) return - } + if (updateToLatest && (!params || (params.length === 0))) { + currentInput = Object.keys(filterDependenciesByType(manifest, includeDirect)) } if (opts.workspace) { if (!currentInput || (currentInput.length === 0)) { diff --git a/pkg-manager/plugin-commands-installation/src/update/index.ts b/pkg-manager/plugin-commands-installation/src/update/index.ts index e0123664aa..740dbd74a9 100644 --- a/pkg-manager/plugin-commands-installation/src/update/index.ts +++ b/pkg-manager/plugin-commands-installation/src/update/index.ts @@ -290,6 +290,7 @@ async function update ( includeDirect, include, update: true, + updateToLatest: opts.latest, updateMatching: (dependencies.length > 0) && dependencies.every(dep => !dep.substring(1).includes('@')) && depth > 0 && !opts.latest ? createMatcher(dependencies) : undefined, diff --git a/pkg-manager/plugin-commands-installation/src/updateToLatestSpecsFromManifest.ts b/pkg-manager/plugin-commands-installation/src/updateToLatestSpecsFromManifest.ts deleted file mode 100644 index ee62556725..0000000000 --- a/pkg-manager/plugin-commands-installation/src/updateToLatestSpecsFromManifest.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { filterDependenciesByType, getAllDependenciesFromManifest } from '@pnpm/manifest-utils' -import { type IncludedDependencies, type ProjectManifest } from '@pnpm/types' -import getVerSelType from 'version-selector-type' - -export function updateToLatestSpecsFromManifest (manifest: ProjectManifest, include: IncludedDependencies) { - const allDeps = filterDependenciesByType(manifest, include) - const updateSpecs = [] - for (const [depName, depVersion] of Object.entries(allDeps)) { - if (depVersion.startsWith('npm:')) { - updateSpecs.push(`${depName}@${removeVersionFromSpec(depVersion)}@latest`) - } else { - const selector = getVerSelType(depVersion) - if (selector == null) continue - updateSpecs.push(`${depName}@latest`) - } - } - return updateSpecs -} - -export function createLatestSpecs (specs: string[], manifest: ProjectManifest) { - const allDeps = getAllDependenciesFromManifest(manifest) - return specs - .filter((selector) => selector.includes('@', 1) - ? allDeps[selector.slice(0, selector.indexOf('@', 1))] - : allDeps[selector] - ) - .map((selector) => { - if (selector.includes('@', 1)) { - return selector - } - if (allDeps[selector].startsWith('npm:')) { - return `${selector}@${removeVersionFromSpec(allDeps[selector])}@latest` - } - if (getVerSelType(allDeps[selector]) == null) { - return selector - } - return `${selector}@latest` - }) -} - -function removeVersionFromSpec (spec: string) { - return spec.substring(0, spec.lastIndexOf('@')) -} diff --git a/pkg-manager/plugin-commands-installation/test/updateToLatestSpecsFromManifest.ts b/pkg-manager/plugin-commands-installation/test/updateToLatestSpecsFromManifest.ts deleted file mode 100644 index 850336925a..0000000000 --- a/pkg-manager/plugin-commands-installation/test/updateToLatestSpecsFromManifest.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { updateToLatestSpecsFromManifest, createLatestSpecs } from '../lib/updateToLatestSpecsFromManifest' - -const MANIFEST = { - dependencies: { - '@pnpm.e2e/dep-of-pkg-with-1-dep': 'npm:@pnpm.e2e/pkg-with-1-dep@1.0.0', - }, - devDependencies: { - foo: 'github:pnpm/foo', - }, - optionalDependencies: { - 'is-positive': '^1.0.0', - }, -} - -test('updateToLatestSpecsFromManifest()', () => { - const updateResult1 = expect(updateToLatestSpecsFromManifest(MANIFEST, { - optionalDependencies: true, - dependencies: true, - devDependencies: true, - })) - updateResult1.toHaveLength(2) - updateResult1.toContain('@pnpm.e2e/dep-of-pkg-with-1-dep@npm:@pnpm.e2e/pkg-with-1-dep@latest') - updateResult1.toContain('is-positive@latest') - - const updateResult2 = expect(updateToLatestSpecsFromManifest(MANIFEST, { - optionalDependencies: false, - dependencies: true, - devDependencies: false, - })) - updateResult2.toHaveLength(1) - updateResult2.toStrictEqual(['@pnpm.e2e/dep-of-pkg-with-1-dep@npm:@pnpm.e2e/pkg-with-1-dep@latest']) -}) - -test('createLatestSpecs()', () => { - expect( - createLatestSpecs(['@pnpm.e2e/dep-of-pkg-with-1-dep', 'is-positive@2.0.0', 'foo'], MANIFEST) - ).toStrictEqual(['@pnpm.e2e/dep-of-pkg-with-1-dep@npm:@pnpm.e2e/pkg-with-1-dep@latest', 'is-positive@2.0.0', 'foo']) - - expect( - createLatestSpecs(['@pnpm.e2e/dep-of-pkg-with-1-dep', 'is-positive', 'foo', 'bar'], MANIFEST) - ).toStrictEqual(['@pnpm.e2e/dep-of-pkg-with-1-dep@npm:@pnpm.e2e/pkg-with-1-dep@latest', 'is-positive@latest', 'foo']) -}) diff --git a/pkg-manager/resolve-dependencies/src/getWantedDependencies.ts b/pkg-manager/resolve-dependencies/src/getWantedDependencies.ts index 907b8b2c17..018e071d9e 100644 --- a/pkg-manager/resolve-dependencies/src/getWantedDependencies.ts +++ b/pkg-manager/resolve-dependencies/src/getWantedDependencies.ts @@ -17,6 +17,7 @@ export interface WantedDependency { raw: string pinnedVersion?: PinnedVersion nodeExecPath?: string + updateSpec?: boolean } export function getWantedDependencies ( diff --git a/pkg-manager/resolve-dependencies/src/index.ts b/pkg-manager/resolve-dependencies/src/index.ts index 5cdb6cbe05..9ed784ee85 100644 --- a/pkg-manager/resolve-dependencies/src/index.ts +++ b/pkg-manager/resolve-dependencies/src/index.ts @@ -109,6 +109,8 @@ export async function resolveDependencies ( preferredVersions: opts.preferredVersions, virtualStoreDir: opts.virtualStoreDir, workspacePackages: opts.workspacePackages, + updateToLatest: opts.updateToLatest, + noDependencySelectors: importers.every(({ wantedDependencies }) => wantedDependencies.length === 0), }) const projectsToResolve = await Promise.all(importers.map(async (project) => _toResolveImporter(project))) const { diff --git a/pkg-manager/resolve-dependencies/src/resolveDependencies.ts b/pkg-manager/resolve-dependencies/src/resolveDependencies.ts index 86ff022473..035e20b232 100644 --- a/pkg-manager/resolve-dependencies/src/resolveDependencies.ts +++ b/pkg-manager/resolve-dependencies/src/resolveDependencies.ts @@ -255,6 +255,7 @@ interface ResolvedDependenciesOptions { updateDepth: number prefix: string supportedArchitectures?: SupportedArchitectures + updateToLatest?: boolean } interface PostponedResolutionOpts { @@ -677,6 +678,7 @@ async function resolveDependenciesOfDependency ( updateDepth, updateMatching: options.updateMatching, supportedArchitectures: options.supportedArchitectures, + updateToLatest: options.updateToLatest, } const resolveDependencyResult = await resolveDependency(extendedWantedDep.wantedDependency, ctx, resolveDependencyOpts) @@ -713,6 +715,7 @@ async function resolveDependenciesOfDependency ( prefix: options.prefix, updateMatching: options.updateMatching, supportedArchitectures: options.supportedArchitectures, + updateToLatest: options.updateToLatest, }) return { resolveDependencyResult, @@ -769,6 +772,7 @@ async function resolveChildren ( prefix: string updateMatching?: UpdateMatchingFunction supportedArchitectures?: SupportedArchitectures + updateToLatest?: boolean }, { parentPkgAliases, @@ -1019,6 +1023,7 @@ interface ResolveDependencyOptions { updateDepth: number updateMatching?: UpdateMatchingFunction supportedArchitectures?: SupportedArchitectures + updateToLatest?: boolean } type ResolveDependencyResult = PkgAddress | LinkedDependency | null @@ -1098,6 +1103,7 @@ async function resolveDependency ( err.pkgsStack = nodeIdToParents(options.parentPkg.nodeId, ctx.resolvedPackagesByDepPath) return err }, + updateToLatest: options.updateToLatest, }) } catch (err: any) { // eslint-disable-line if (wantedDependency.optional) { diff --git a/pkg-manager/resolve-dependencies/src/resolveDependencyTree.ts b/pkg-manager/resolve-dependencies/src/resolveDependencyTree.ts index 2b08f2400e..eefa0fb11c 100644 --- a/pkg-manager/resolve-dependencies/src/resolveDependencyTree.ts +++ b/pkg-manager/resolve-dependencies/src/resolveDependencyTree.ts @@ -99,6 +99,7 @@ export interface ResolveDependenciesOptions { wantedLockfile: Lockfile workspacePackages: WorkspacePackages supportedArchitectures?: SupportedArchitectures + updateToLatest?: boolean } export async function resolveDependencyTree ( @@ -166,6 +167,7 @@ export async function resolveDependencyTree ( updateMatching: importer.updateMatching, prefix: importer.rootDir, supportedArchitectures: opts.supportedArchitectures, + updateToLatest: opts.updateToLatest, } return { updatePackageManifest: importer.updatePackageManifest, diff --git a/pkg-manager/resolve-dependencies/src/toResolveImporter.ts b/pkg-manager/resolve-dependencies/src/toResolveImporter.ts index cd50fefa97..a29e54e945 100644 --- a/pkg-manager/resolve-dependencies/src/toResolveImporter.ts +++ b/pkg-manager/resolve-dependencies/src/toResolveImporter.ts @@ -17,6 +17,8 @@ export async function toResolveImporter ( preferredVersions?: PreferredVersions virtualStoreDir: string workspacePackages: WorkspacePackages + updateToLatest?: boolean + noDependencySelectors: boolean }, project: ImporterToResolve ) { @@ -31,6 +33,11 @@ export async function toResolveImporter ( const defaultUpdateDepth = (project.update === true || (project.updateMatching != null)) ? opts.defaultUpdateDepth : -1 const existingDeps = nonLinkedDependencies .filter(({ alias }) => !project.wantedDependencies.some((wantedDep) => wantedDep.alias === alias)) + if (opts.updateToLatest && opts.noDependencySelectors) { + for (const dep of existingDeps) { + dep.updateSpec = true + } + } let wantedDependencies!: Array if (!project.manifest) { wantedDependencies = [ @@ -48,14 +55,18 @@ export async function toResolveImporter ( ...dep, updateDepth: project.updateMatching != null ? defaultUpdateDepth - : (prefIsLocalTarball(dep.pref) ? 0 : -1), + : (prefIsLocalTarball(dep.pref) ? 0 : defaultUpdateDepth), }) wantedDependencies = [ ...project.wantedDependencies.map( defaultUpdateDepth < 0 ? updateLocalTarballs : (dep) => ({ ...dep, updateDepth: defaultUpdateDepth })), - ...existingDeps.map(updateLocalTarballs), + ...existingDeps.map( + opts.noDependencySelectors && project.updateMatching != null + ? updateLocalTarballs + : (dep) => ({ ...dep, updateDepth: -1 }) + ), ] } return { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 700657222b..c737dcfe9d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,8 +71,8 @@ importers: specifier: 1.0.0 version: 1.0.0 '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/tsconfig': specifier: workspace:* version: link:__utils__/tsconfig @@ -189,8 +189,8 @@ importers: specifier: workspace:* version: link:../../pkg-manager/modules-yaml '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/types': specifier: workspace:* version: link:../../packages/types @@ -226,8 +226,8 @@ importers: __utils__/assert-store: dependencies: '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/store.cafs': specifier: workspace:* version: link:../../store/cafs @@ -1285,8 +1285,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -1406,8 +1406,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/test-ipc-server': specifier: workspace:* version: link:../../__utils__/test-ipc-server @@ -2850,8 +2850,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -3110,8 +3110,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/store-path': specifier: workspace:* version: link:../../store/store-path @@ -3392,8 +3392,8 @@ importers: specifier: workspace:* version: link:../read-projects-context '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/store-path': specifier: workspace:* version: link:../../store/store-path @@ -3749,8 +3749,8 @@ importers: specifier: workspace:* version: 'link:' '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -3942,8 +3942,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -4496,8 +4496,8 @@ importers: specifier: workspace:* version: link:../pkg-manifest/read-project-manifest '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/run-npm': specifier: workspace:* version: link:../exec/run-npm @@ -4756,8 +4756,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) releasing/plugin-commands-publishing: dependencies: @@ -4856,8 +4856,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/test-ipc-server': specifier: workspace:* version: link:../../__utils__/test-ipc-server @@ -5419,8 +5419,8 @@ importers: specifier: workspace:* version: link:../../pkg-manifest/read-package-json '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -5486,8 +5486,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@types/ramda': specifier: 0.28.20 version: 0.28.20 @@ -5580,8 +5580,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -5912,8 +5912,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.17.1 - version: 3.17.1(typanion@3.14.0) + specifier: 3.18.0 + version: 3.18.0(typanion@3.14.0) '@types/archy': specifier: 0.0.33 version: 0.0.33 @@ -6647,7 +6647,6 @@ packages: /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -6934,7 +6933,6 @@ packages: /@changesets/cli@2.26.2: resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} - hasBin: true dependencies: '@babel/runtime': 7.23.7 '@changesets/apply-release-plan': 6.1.4 @@ -7084,7 +7082,6 @@ packages: /@commitlint/cli@17.8.1: resolution: {integrity: sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==} engines: {node: '>=v14'} - hasBin: true dependencies: '@commitlint/format': 17.8.1 '@commitlint/lint': 17.8.1 @@ -7199,7 +7196,6 @@ packages: /@commitlint/prompt-cli@17.8.1: resolution: {integrity: sha512-dkjxr0ah2R9P/vsz/s128kNEar/5zjr3TN3LOvA8kBiSrrbfF560gnoxAh+KgQ5sAc8lMrG+z4dVYvzSkXyfDQ==} engines: {node: '>=v14'} - hasBin: true dependencies: '@commitlint/prompt': 17.8.1 execa: 5.1.1 @@ -7804,6 +7800,7 @@ packages: /@gar/promisify@1.1.3: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + requiresBuild: true dev: false /@gwhitney/detect-indent@7.0.1: @@ -8184,7 +8181,6 @@ packages: /@npmcli/move-file@2.0.1: resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This functionality has been moved to @npmcli/fs dependencies: mkdirp: 1.0.4 rimraf: 3.0.2 @@ -8476,7 +8472,6 @@ packages: /@pnpm/meta-updater@1.0.0: resolution: {integrity: sha512-ifhDDFPGgM7OCVqX+XlpvLJzGzQVIjWyBcHTGTOR2q/b2rjxfIl9GDcfETkTjKOe8EotbXwMo2EAmbtXbjJ1Kg==} engines: {node: '>=10.12'} - hasBin: true dependencies: '@pnpm/find-workspace-dir': 6.0.2 '@pnpm/find-workspace-packages': 6.0.9(@pnpm/logger@5.0.0) @@ -8531,7 +8526,6 @@ packages: /@pnpm/nopt@0.2.1: resolution: {integrity: sha512-zkgDE6q3Y6KeZPjqXCk/hRQ2t6iw9JXbdnYZghwpe/HR73e4VmV5JZ5QSFypmSd5Sx4+gjNfAqME5BVAOBCk9g==} engines: {node: '>=6'} - hasBin: true dependencies: abbrev: 1.1.1 @@ -8624,7 +8618,6 @@ packages: /@pnpm/patch-package@0.0.0: resolution: {integrity: sha512-B17ZK4hUAKHDSeSlOg0N+jd+5TuxiSB/2jJcHM0oncf+W5FXslILITpwyIWut4p2P2RCgtSgTF9cSXEX/dGYQA==} engines: {node: '>=14', npm: '>5'} - hasBin: true dependencies: '@yarnpkg/lockfile': 1.1.0 chalk: 4.1.2 @@ -8681,8 +8674,8 @@ packages: strip-bom: 4.0.0 dev: true - /@pnpm/registry-mock@3.17.1(typanion@3.14.0): - resolution: {integrity: sha512-rlqq9VQ8BgLlaV8JIb3V61YUixCN+06u9TxATX6hrfckHZB/QDL//+j8ijGa8U9Fg72mnrBFRlS4hxrm2VDhwg==} + /@pnpm/registry-mock@3.18.0(typanion@3.14.0): + resolution: {integrity: sha512-Zyr2pe9gld5OcuUAF69hzAs2ZBzUy/jwoS0kRgzt4mtvMns5WaPgH4GZmOaJkeIJg7hUYfXd4dCTAjAHqmx1oA==} engines: {node: '>=10.13'} hasBin: true dependencies: @@ -8719,7 +8712,6 @@ packages: /@pnpm/self-installer@2.2.1: resolution: {integrity: sha512-aefLe96wAWghkx6q1PwbVS1Iz1iGE+HKwkTmtzWLFXeGhbknaIdG2voMwaBGIYGCSxm8sDKR1uLO4aRRAYuc+Q==} engines: {node: '>=4'} - hasBin: true dev: false /@pnpm/semver-diff@1.1.0: @@ -8778,7 +8770,6 @@ packages: /@pnpm/which@3.0.1: resolution: {integrity: sha512-4ivtS12Oni9axgGefaq+gTPD+7N0VPCFdxFH8izCaWfnxLQblX3iVxba+25ZoagStlzUs8sQg8OMKlCVhyGWTw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true dependencies: isexe: 2.0.0 dev: false @@ -9623,7 +9614,6 @@ packages: /@yarnpkg/shell@3.2.5(typanion@3.14.0): resolution: {integrity: sha512-QLQNDgUatiXWs47ULRAyliFt4/gQbGwprvgBVRF9OJw0aNY1DO7rnmebB3wDg927uy4Oj1uKVRfGAGAgAVQHWg==} engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - hasBin: true dependencies: '@yarnpkg/fslib': 2.10.3 '@yarnpkg/parsers': 2.6.0 @@ -9685,7 +9675,6 @@ packages: /@zkochan/js-yaml@0.0.6: resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==} - hasBin: true dependencies: argparse: 2.0.1 @@ -9713,13 +9702,11 @@ packages: /@zkochan/which@2.0.3: resolution: {integrity: sha512-C1ReN7vt2/2O0fyTsx5xnbQuxBrmG5NMSbcIkPKCCfCTJgpZBsuRYzFXHj3nVq8vTfK7vxHUmzfCpSHgO7j4rg==} engines: {node: '>= 8'} - hasBin: true dependencies: isexe: 2.0.0 /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true dependencies: jsonparse: 1.3.1 through: 2.3.8 @@ -9756,7 +9743,6 @@ packages: /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} - hasBin: true /adm-zip@0.5.10: resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==} @@ -9978,6 +9964,7 @@ packages: /are-we-there-yet@3.0.1: resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + requiresBuild: true dependencies: delegates: 1.0.0 readable-stream: 3.6.2 @@ -10304,7 +10291,6 @@ packages: /browserslist@4.22.2: resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true dependencies: caniuse-lite: 1.0.30001572 electron-to-chromium: 1.4.616 @@ -10367,7 +10353,6 @@ packages: /c8@7.14.0: resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==} engines: {node: '>=10.12.0'} - hasBin: true dependencies: '@bcoe/v8-coverage': 0.2.3 '@istanbuljs/schema': 0.1.3 @@ -10719,6 +10704,7 @@ packages: /color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true + requiresBuild: true dev: false /colors@0.6.2: @@ -10816,7 +10802,6 @@ packages: /concurrently@8.2.1: resolution: {integrity: sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==} engines: {node: ^14.13.0 || >=16.0.0} - hasBin: true dependencies: chalk: 4.1.2 date-fns: 2.30.0 @@ -10876,7 +10861,6 @@ packages: /conventional-commits-parser@4.0.0: resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} engines: {node: '>=14'} - hasBin: true dependencies: JSONStream: 1.3.5 is-text-path: 1.0.1 @@ -10966,7 +10950,6 @@ packages: /create-jest@29.7.0(@babel/types@7.23.3)(@types/node@18.14.6)(ts-node@10.9.2): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 @@ -10990,7 +10973,6 @@ packages: /cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true dependencies: cross-spawn: 7.0.3 dev: true @@ -11036,7 +11018,6 @@ packages: /cspell-gitignore@7.3.8: resolution: {integrity: sha512-vJzCOUEiw6/MwV/U4Ux3bgSdj9mXB+X5eHL+qzVoyFI7ArlvrkuGTL+iFJThQcS8McM3SGqtvaBNCiKBmAeCkA==} engines: {node: '>=16'} - hasBin: true dependencies: cspell-glob: 7.3.8 find-up: 5.0.0 @@ -11052,7 +11033,6 @@ packages: /cspell-grammar@7.3.8: resolution: {integrity: sha512-nTjAlMAZAVSFhBd9U3MB9l5FfC5JCCr9DTOA2wWxusVOm+36MbSEH90ucLPkhPa9/+0HtbpDhqVMwXCZllRpsg==} engines: {node: '>=16'} - hasBin: true dependencies: '@cspell/cspell-pipe': 7.3.8 '@cspell/cspell-types': 7.3.8 @@ -11110,7 +11090,6 @@ packages: /cspell@7.3.8: resolution: {integrity: sha512-8AkqsBQAMsKYV5XyJLB6rBs5hgspL4+MPOg6mBKG2j5EvQgRVc6dIfAPWDNLpIeW2a3+7K5BIWqKHapKPeiknQ==} engines: {node: '>=16'} - hasBin: true dependencies: '@cspell/cspell-json-reporter': 7.3.8 '@cspell/cspell-pipe': 7.3.8 @@ -11526,7 +11505,6 @@ packages: /envinfo@7.8.1: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} engines: {node: '>=4'} - hasBin: true /err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} @@ -11606,7 +11584,6 @@ packages: /esbuild@0.19.5: resolution: {integrity: sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==} engines: {node: '>=12'} - hasBin: true requiresBuild: true optionalDependencies: '@esbuild/android-arm': 0.19.5 @@ -11866,7 +11843,6 @@ packages: /eslint@8.56.0: resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.10.0 @@ -11925,7 +11901,6 @@ packages: /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} - hasBin: true /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} @@ -12227,7 +12202,6 @@ packages: /findup@0.1.5: resolution: {integrity: sha512-Udxo3C9A6alt2GZ2MNsgnIvX7De0V3VGxeP/x98NSVgSlizcDHdmJza61LI7zJy4OEtSiJyE72s0/+tBl5/ZxA==} engines: {node: '>=0.6'} - hasBin: true dependencies: colors: 0.6.2 commander: 2.1.0 @@ -12430,7 +12404,6 @@ packages: /fuse-native@2.2.6: resolution: {integrity: sha512-Y5wXd7vUsWWWIIHbjluv7jKZgPZaSVA5YWaW3I5fXIJfcGWL6IRUgoBUveQAq+D8cG9cCiGNahv9CeToccCXrw==} - hasBin: true requiresBuild: true dependencies: fuse-shared-library: 1.1.1 @@ -12485,6 +12458,7 @@ packages: /gauge@4.0.4: resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + requiresBuild: true dependencies: aproba: 2.0.0 color-support: 1.1.3 @@ -12591,7 +12565,6 @@ packages: /git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} - hasBin: true dependencies: dargs: 7.0.0 lodash: 4.17.21 @@ -12773,7 +12746,6 @@ packages: /handlebars@4.7.7: resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} engines: {node: '>=0.4.7'} - hasBin: true dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -12789,7 +12761,6 @@ packages: /har-validator@5.1.5: resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} engines: {node: '>=6'} - deprecated: this library is no longer supported dependencies: ajv: 6.12.6 har-schema: 2.0.0 @@ -12964,7 +12935,6 @@ packages: /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} - hasBin: true dev: true /hyperdrive-schemas@2.0.0: @@ -13012,7 +12982,6 @@ packages: /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} - hasBin: true dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 @@ -13183,7 +13152,6 @@ packages: /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true dependencies: ci-info: 3.9.0 dev: true @@ -13212,7 +13180,6 @@ packages: /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} - hasBin: true dev: false /is-extglob@2.1.1: @@ -13919,7 +13886,6 @@ packages: /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 @@ -13930,7 +13896,6 @@ packages: /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} - hasBin: true dev: true /json-buffer@3.0.1: @@ -13957,7 +13922,6 @@ packages: /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} - hasBin: true /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -14052,7 +14016,6 @@ packages: /lcov-result-merger@3.3.0: resolution: {integrity: sha512-Krg9p24jGaIT93RBMA8b5qLHDEiAXTavaTiEdMAZaJS93PsBKIcg/89cw/8rgeSfRuQX+I9x7h73SHFjCZ6cHg==} engines: {node: '>=10'} - hasBin: true dependencies: through2: 2.0.5 vinyl: 2.2.1 @@ -14569,12 +14532,10 @@ packages: /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} - hasBin: true /mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} - hasBin: true /mimic-fn@1.2.0: resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} @@ -14745,7 +14706,6 @@ packages: /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} - hasBin: true /module-not-found-error@1.0.1: resolution: {integrity: sha512-pEk4ECWQXV6z2zjhRZUongnLJNUeGQJ3w6OQ5ctGwD+i5o93qjRQUk2Rt6VdNeu3sEP0AB4LcfvdebpxBRVr4g==} @@ -14807,7 +14767,6 @@ packages: /ndjson@2.0.0: resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==} engines: {node: '>=10'} - hasBin: true dependencies: json-stringify-safe: 5.0.1 minimist: 1.2.8 @@ -14844,7 +14803,6 @@ packages: /nm-prune@5.0.0: resolution: {integrity: sha512-DjLCuKmAP5OEPOn7H/UyigDSj0DeUO6qcrrSo2Y5jPTYbdKXqNpLafEFGoNNhH9v+ChBLlmc5CRN1YVvZIQsOQ==} engines: {node: '>=10'} - hasBin: true dependencies: enquirer: 2.4.1 find-root: 1.1.0 @@ -14898,7 +14856,6 @@ packages: /node-gyp-build@4.7.1: resolution: {integrity: sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==} - hasBin: true requiresBuild: true dev: false optional: true @@ -14927,7 +14884,6 @@ packages: /node-gyp@9.4.1: resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} engines: {node: ^12.13 || ^14.13 || >=16} - hasBin: true dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.1 @@ -14960,14 +14916,12 @@ packages: /nopt@1.0.10: resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} - hasBin: true dependencies: abbrev: 1.1.1 /nopt@6.0.0: resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true dependencies: abbrev: 1.1.1 dev: false @@ -15068,7 +15022,6 @@ packages: /npm-packlist@5.1.3: resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true dependencies: glob: 8.1.0 ignore-walk: 5.0.1 @@ -15195,7 +15148,6 @@ packages: /opt-cli@1.5.1: resolution: {integrity: sha512-iRFQBiQjXZ+LX/8pis04prUhS6FOYcJiZRouofN3rUJEB282b/e0s3jp9vT7aHgXY6TUpgPwu12f0i+qF40Kjw==} - hasBin: true dependencies: commander: 2.9.0 lodash.clone: 4.3.2 @@ -15511,7 +15463,6 @@ packages: /pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} - hasBin: true dev: true /pify@3.0.0: @@ -15527,7 +15478,6 @@ packages: /pino@6.14.0: resolution: {integrity: sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==} - hasBin: true dependencies: fast-redact: 3.3.0 fast-safe-stringify: 2.1.1 @@ -15550,7 +15500,6 @@ packages: /pkg-fetch@3.4.2: resolution: {integrity: sha512-0+uijmzYcnhC0hStDjm/cl2VYdrmVVBpe7Q8k9YBojxmR5tG8mvR9/nooQq3QSXiQqORDVOTY3XqMEqJVIzkHA==} - hasBin: true dependencies: chalk: 4.1.2 fs-extra: 9.1.0 @@ -15601,7 +15550,6 @@ packages: /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} - hasBin: true dependencies: detect-libc: 2.0.2 expand-template: 2.0.3 @@ -15636,7 +15584,6 @@ packages: /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} - hasBin: true dev: true /pretty-bytes@4.0.2: @@ -15788,7 +15735,6 @@ packages: /publish-packed@4.1.2: resolution: {integrity: sha512-jfgaVcWMSIY8Bw2iVVcSo25SFI72x9LwuWsAxrBcm7ZrdbLz2Y8gErhlEX7VZxJZeiCihcR7XAOyjU95MywFVw==} engines: {node: '>=12.10'} - hasBin: true dependencies: all-module-paths: 0.10.7 execa: 5.1.1 @@ -15876,7 +15822,6 @@ packages: /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true dependencies: deep-extend: 0.6.0 ini: 1.3.8 @@ -16083,7 +16028,6 @@ packages: /request@2.88.0: resolution: {integrity: sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==} engines: {node: '>= 4'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 dependencies: aws-sign2: 0.7.0 aws4: 1.12.0 @@ -16109,7 +16053,6 @@ packages: /request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 dependencies: aws-sign2: 0.7.0 aws4: 1.12.0 @@ -16200,7 +16143,6 @@ packages: /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 @@ -16255,13 +16197,11 @@ packages: /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true dependencies: glob: 7.2.3 /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true dependencies: glob: 7.2.3 @@ -16382,7 +16322,6 @@ packages: /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} - hasBin: true dependencies: lru-cache: 6.0.0 @@ -16469,7 +16408,6 @@ packages: /shelljs@0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} engines: {node: '>=4'} - hasBin: true dependencies: glob: 7.2.3 interpret: 1.4.0 @@ -16479,7 +16417,6 @@ packages: /shx@0.3.4: resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} engines: {node: '>=6'} - hasBin: true dependencies: minimist: 1.2.8 shelljs: 0.8.5 @@ -16569,7 +16506,6 @@ packages: /smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} - hasBin: true dependencies: array.prototype.flat: 1.3.2 breakword: 1.0.6 @@ -16712,7 +16648,6 @@ packages: /sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} engines: {node: '>=0.10.0'} - hasBin: true dependencies: asn1: 0.2.6 assert-plus: 1.0.0 @@ -16981,7 +16916,6 @@ packages: /symlink-dir@5.2.1: resolution: {integrity: sha512-HfqqI7BoCx3+482BUfoR1sXAFx5G90KrWImT5/J/a+HZWvzMTTA/hYKh2030WFYn7OwRRUAoMCQvqlwBMnhBUw==} engines: {node: '>=12.10'} - hasBin: true dependencies: better-path-resolve: 1.0.0 rename-overwrite: 5.0.0 @@ -16989,7 +16923,6 @@ packages: /syncpack@8.5.14: resolution: {integrity: sha512-+ESXgFXgLEievTVui2TQ/ejdPSX1hb+EXZYSrZfNOoFT2IvaAzGT9OQfiXYjka7ao3fRru9pRtsFoWTy1vyXCQ==} engines: {node: '>=10'} - hasBin: true dependencies: chalk: 4.1.2 commander: 10.0.0 @@ -17149,7 +17082,6 @@ packages: /touch@3.1.0: resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} - hasBin: true dependencies: nopt: 1.0.10 @@ -17167,7 +17099,6 @@ packages: /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true /treeify@1.1.0: resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} @@ -17331,7 +17262,6 @@ packages: /tty-table@4.2.3: resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==} engines: {node: '>=8.0.0'} - hasBin: true dependencies: chalk: 4.1.2 csv: 5.5.3 @@ -17461,12 +17391,10 @@ packages: /typescript@5.3.3: resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} - hasBin: true /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} - hasBin: true requiresBuild: true optional: true @@ -17525,6 +17453,7 @@ packages: /unique-slug@3.0.0: resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + requiresBuild: true dependencies: imurmurhash: 0.1.4 dev: false @@ -17629,7 +17558,6 @@ packages: /uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true dev: false /v8-compile-cache-lib@3.0.1: @@ -17716,7 +17644,6 @@ packages: /verdaccio@5.20.1(typanion@3.14.0): resolution: {integrity: sha512-zKQXYubQOfl2w09gO9BR7U9ZZkFPPby8tvV+na86/2vGZnY79kNSVnSbK8CM1bpJHTCQ80AGsmIGovg2FgXhdQ==} engines: {node: '>=12.18'} - hasBin: true dependencies: '@verdaccio/config': 6.0.0-6-next.55 '@verdaccio/core': 6.0.0-6-next.55 @@ -17914,7 +17841,6 @@ packages: /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true dependencies: isexe: 2.0.0 dev: true @@ -17922,14 +17848,12 @@ packages: /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} - hasBin: true dependencies: isexe: 2.0.0 /which@3.0.1: resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true dependencies: isexe: 2.0.0 dev: true @@ -17937,7 +17861,6 @@ packages: /which@4.0.0: resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true dependencies: isexe: 3.1.1 @@ -18220,254 +18143,5 @@ packages: dev: false time: - /@babel/core@7.23.3: '2023-11-09T07:04:19.954Z' - /@babel/plugin-proposal-dynamic-import@7.18.6: '2022-06-27T19:49:50.843Z' - /@babel/plugin-transform-modules-commonjs@7.23.3: '2023-11-09T07:04:12.992Z' - /@babel/preset-typescript@7.23.3: '2023-11-09T07:04:16.375Z' - /@babel/types@7.23.3: '2023-11-09T07:04:05.055Z' - /@changesets/cli@2.26.2: '2023-06-27T08:30:52.503Z' - /@commitlint/cli@17.8.1: '2023-10-20T12:09:20.185Z' - /@commitlint/config-conventional@17.8.1: '2023-10-20T12:09:20.694Z' - /@commitlint/prompt-cli@17.8.1: '2023-10-20T12:09:23.467Z' - /@gwhitney/detect-indent@7.0.1: '2022-11-22T14:07:22.341Z' - /@pnpm/builder.policy@1.1.0: '2023-10-07T22:16:55.698Z' - /@pnpm/byline@1.0.0: '2021-10-31T23:25:00.031Z' - /@pnpm/colorize-semver-diff@1.0.1: '2020-10-25T15:50:17.812Z' - /@pnpm/config.env-replace@1.1.0: '2023-04-04T18:59:45.025Z' - /@pnpm/exec@2.0.0: '2020-10-29T23:51:01.271Z' - /@pnpm/log.group@1.0.1: '2023-10-21T01:56:15.610Z' - /@pnpm/logger@5.0.0: '2022-10-14T13:56:04.285Z' - /@pnpm/meta-updater@1.0.0: '2023-08-02T15:08:06.459Z' - /@pnpm/network.agent@0.1.0: '2023-02-18T01:03:06.709Z' - /@pnpm/node-fetch@1.0.0: '2023-04-19T11:13:43.487Z' - /@pnpm/nopt@0.2.1: '2021-06-01T19:45:54.552Z' - /@pnpm/npm-conf@2.2.2: '2023-06-14T04:08:06.108Z' - /@pnpm/npm-lifecycle@2.0.2: '2023-10-27T13:50:01.572Z' - /@pnpm/npm-package-arg@1.0.0: '2022-06-28T12:48:31.287Z' - /@pnpm/os.env.path-extender@0.2.12: '2023-10-21T04:28:56.803Z' - /@pnpm/patch-package@0.0.0: '2023-06-17T11:49:20.604Z' - /@pnpm/ramda@0.28.1: '2022-08-03T13:56:59.597Z' - /@pnpm/registry-mock@3.17.1: '2023-12-14T09:26:44.603Z' - /@pnpm/semver-diff@1.1.0: '2021-11-16T12:40:59.941Z' - /@pnpm/tabtab@0.1.2: '2021-03-05T17:31:19.932Z' - /@pnpm/util.lex-comparator@1.0.0: '2022-11-04T01:03:46.134Z' - /@pnpm/which@3.0.1: '2023-05-14T22:08:27.551Z' - /@reflink/reflink@0.1.16: '2024-01-02T17:41:22.200Z' - /@rushstack/worker-pool@0.4.9: '2023-10-01T03:01:09.960Z' - /@types/adm-zip@0.5.4: '2023-11-06T22:50:19.691Z' - /@types/archy@0.0.33: '2023-09-22T20:01:08.161Z' - /@types/byline@4.2.36: '2023-11-07T00:13:37.410Z' - /@types/cross-spawn@6.0.5: '2023-11-07T01:15:09.537Z' - /@types/fs-extra@9.0.13: '2021-09-21T19:02:27.512Z' - /@types/graceful-fs@4.1.9: '2023-11-07T06:37:38.558Z' - /@types/hosted-git-info@3.0.5: '2023-11-07T07:29:23.149Z' - /@types/ini@1.3.31: '2021-10-07T21:01:49.672Z' - /@types/is-gzip@2.0.0: '2020-08-21T05:11:34.796Z' - /@types/is-windows@1.0.2: '2023-11-07T08:08:49.243Z' - /@types/isexe@2.0.2: '2023-09-26T15:11:19.397Z' - /@types/jest@29.5.8: '2023-11-07T20:19:25.141Z' - /@types/js-yaml@4.0.9: '2023-11-07T20:20:13.264Z' - /@types/lodash.clonedeep@4.5.9: '2023-11-07T09:58:37.962Z' - /@types/lodash.throttle@4.1.7: '2022-04-18T23:23:51.676Z' - /@types/micromatch@4.0.5: '2023-11-07T20:25:51.296Z' - /@types/mz@2.7.7: '2023-11-07T11:33:02.212Z' - /@types/node@18.14.6: '2023-03-03T21:02:59.727Z' - /@types/normalize-package-data@2.4.4: '2023-11-07T12:04:03.711Z' - /@types/normalize-path@3.0.2: '2023-11-07T12:04:09.416Z' - /@types/parse-json@4.0.2: '2023-11-07T12:35:13.182Z' - /@types/proxyquire@1.3.31: '2023-11-07T13:34:37.730Z' - /@types/ramda@0.28.20: '2022-11-11T10:32:59.530Z' - /@types/retry@0.12.5: '2023-11-07T15:32:02.572Z' - /@types/rimraf@3.0.2: '2021-08-18T21:02:03.570Z' - /@types/semver@7.5.3: '2023-09-25T14:19:37.089Z' - /@types/signal-exit@3.0.4: '2023-11-07T16:33:34.502Z' - /@types/sinon@10.0.20: '2023-10-18T15:02:12.573Z' - /@types/ssri@7.1.4: '2023-11-07T17:00:17.324Z' - /@types/table@6.0.0: '2020-09-17T17:56:44.787Z' - /@types/tar-stream@2.2.3: '2023-09-12T12:36:52.726Z' - /@types/tar@6.1.9: '2023-11-10T22:24:50.092Z' - /@types/touch@3.1.5: '2023-11-07T18:04:29.681Z' - /@types/uuid@8.3.4: '2022-01-06T07:32:21.196Z' - /@types/validate-npm-package-name@4.0.2: '2023-11-07T18:40:02.727Z' - /@types/which@2.0.2: '2023-02-14T10:32:38.403Z' - /@types/wrap-ansi@8.0.2: '2023-10-18T19:10:52.205Z' - /@types/write-file-atomic@4.0.3: '2023-11-07T19:26:42.209Z' - /@types/yarnpkg__lockfile@1.1.9: '2023-11-07T19:39:01.690Z' - /@typescript-eslint/eslint-plugin@6.18.1: '2024-01-08T22:37:31.558Z' - /@typescript-eslint/parser@6.18.1: '2024-01-08T22:36:56.059Z' - /@yarnpkg/core@4.0.2: '2023-11-14T09:21:22.875Z' - /@yarnpkg/extensions@2.0.0: '2023-10-22T16:50:53.141Z' - /@yarnpkg/lockfile@1.1.0: '2018-09-10T13:37:58.652Z' - /@yarnpkg/nm@4.0.1: '2023-11-14T09:21:51.399Z' - /@yarnpkg/parsers@3.0.0: '2023-10-22T16:54:15.950Z' - /@yarnpkg/pnp@2.3.2: '2020-11-30T14:45:51.504Z' - /@zkochan/cmd-shim@6.0.0: '2023-03-16T02:26:12.592Z' - /@zkochan/diable@1.0.2: '2020-07-07T02:01:35.635Z' - /@zkochan/hosted-git-info@4.0.2: '2021-09-05T21:33:51.709Z' - /@zkochan/js-yaml@0.0.6: '2022-05-10T14:42:39.813Z' - /@zkochan/retry@0.2.0: '2020-06-06T23:36:55.687Z' - /@zkochan/rimraf@2.1.3: '2023-08-19T10:36:23.394Z' - /@zkochan/table@2.0.1: '2023-03-20T00:49:51.928Z' - /adm-zip@0.5.10: '2022-12-20T11:08:08.848Z' - /ansi-diff@1.1.1: '2018-06-16T13:37:28.365Z' - /archy@1.0.0: '2014-09-14T07:57:58.806Z' - /better-path-resolve@1.0.0: '2019-03-01T23:22:26.750Z' - /bin-links@4.0.3: '2023-10-12T16:22:47.134Z' - /boxen@5.1.2: '2021-09-17T05:31:40.311Z' - /c8@7.14.0: '2023-05-28T16:35:16.590Z' - /camelcase-keys@6.2.2: '2020-04-03T03:51:03.816Z' - /camelcase@6.3.0: '2022-01-01T20:29:34.388Z' - /can-link@2.0.0: '2021-02-11T22:53:11.538Z' - /can-write-to-dir@1.1.1: '2021-04-01T00:51:46.475Z' - /chalk@4.1.2: '2021-07-30T12:02:52.839Z' - /ci-info@3.9.0: '2023-10-04T04:56:10.209Z' - /cli-columns@4.0.0: '2021-09-23T18:51:13.897Z' - /cli-truncate@2.1.0: '2019-12-06T07:47:55.662Z' - /cmd-extension@1.0.2: '2021-09-28T21:08:51.481Z' - /comver-to-semver@1.0.0: '2021-04-04T23:59:39.895Z' - /concurrently@8.2.1: '2023-08-22T07:23:44.734Z' - /cross-env@7.0.3: '2020-12-01T20:25:26.541Z' - /cross-spawn@7.0.3: '2020-05-25T15:35:07.209Z' - /cspell@7.3.8: '2023-10-13T17:12:23.371Z' - /deep-require-cwd@1.0.0: '2017-05-08T20:09:31.558Z' - /delay@5.0.0: '2021-02-01T15:29:35.501Z' - /detect-libc@2.0.2: '2023-07-18T08:38:01.781Z' - /didyoumean2@6.0.1: '2023-09-07T04:09:42.951Z' - /dint@5.1.0: '2021-02-12T01:22:54.214Z' - /dir-is-case-sensitive@2.0.0: '2021-02-11T22:53:28.072Z' - /encode-registry@3.0.1: '2023-09-19T12:19:16.127Z' - /enquirer@2.4.1: '2023-07-28T12:26:30.586Z' - /esbuild@0.19.5: '2023-10-17T05:11:26.283Z' - /escape-string-regexp@4.0.0: '2020-04-23T07:31:25.491Z' - /eslint-config-standard-with-typescript@39.1.1: '2023-10-07T08:26:15.756Z' - /eslint-plugin-import@2.29.0: '2023-10-23T06:44:23.401Z' - /eslint-plugin-n@16.3.1: '2023-11-10T10:09:51.788Z' - /eslint-plugin-node@11.1.0: '2020-03-28T11:46:46.795Z' - /eslint-plugin-promise@6.1.1: '2022-10-19T21:06:14.552Z' - /eslint@8.56.0: '2023-12-15T22:55:11.833Z' - /exists-link@2.0.0: '2017-03-02T20:50:23.918Z' - /fast-deep-equal@3.1.3: '2020-06-08T07:27:28.474Z' - /fast-glob@3.3.2: '2023-11-06T12:41:11.203Z' - /filenamify@4.3.0: '2021-04-26T16:15:18.365Z' - /find-up@5.0.0: '2020-08-11T18:44:24.748Z' - /fs-extra@11.1.1: '2023-03-20T14:56:50.321Z' /fuse-native@2.2.6: '2020-06-03T19:26:36.838Z' - /get-npm-tarball-url@2.1.0: '2023-11-07T13:09:03.185Z' - /get-port@5.1.1: '2020-01-15T08:08:35.951Z' - /ghooks@2.0.4: '2018-04-29T00:47:15.439Z' - /graceful-git@3.1.2: '2021-09-16T00:23:26.185Z' - /husky@8.0.3: '2023-01-03T08:01:18.807Z' - /hyperdrive-schemas@2.0.0: '2020-07-14T11:16:33.671Z' - /ini@4.1.1: '2023-05-16T17:58:46.240Z' - /is-gzip@2.0.0: '2017-08-13T15:56:02.298Z' - /is-inner-link@4.0.0: '2021-02-11T22:54:33.386Z' - /is-port-reachable@3.0.0: '2019-11-12T09:49:42.096Z' - /is-subdir@1.2.0: '2021-01-05T16:52:45.485Z' - /is-windows@1.0.2: '2018-02-14T07:36:43.207Z' - /isexe@2.0.0: '2017-03-23T00:53:16.356Z' - /jest-diff@29.7.0: '2023-09-12T06:43:43.883Z' - /jest@29.7.0: '2023-09-12T06:44:08.561Z' - /json5@2.2.3: '2022-12-31T17:11:32.047Z' - /keyv@4.5.4: '2023-10-07T16:53:54.487Z' - /lcov-result-merger@3.3.0: '2022-06-21T06:32:52.863Z' - /load-json-file@6.2.0: '2019-07-11T08:30:09.981Z' - /lodash.clonedeep@4.5.0: '2016-08-13T17:37:19.945Z' - /lodash.throttle@4.1.1: '2016-08-13T17:45:38.195Z' - /loud-rejection@2.2.0: '2019-09-28T16:02:58.271Z' - /lru-cache@10.0.2: '2023-11-10T15:18:50.180Z' - /make-empty-dir@2.1.0: '2023-08-19T10:36:58.989Z' - /mdast-util-to-string@2.0.0: '2020-11-11T09:15:26.835Z' - /mem@8.1.1: '2021-04-20T15:49:07.407Z' - /micromatch@4.0.5: '2022-03-24T19:31:47.722Z' - /nerf-dart@1.0.0: '2015-08-20T12:22:17.009Z' - /nock@13.3.4: '2023-10-10T23:18:23.819Z' /node-gyp@10.0.1: '2023-11-02T18:13:42.360Z' - /node-object-hash@3.0.0: '2023-04-14T09:55:13.268Z' - /normalize-newline@3.0.0: '2016-09-06T12:35:43.571Z' - /normalize-package-data@5.0.0: '2022-10-14T05:22:41.916Z' - /normalize-path@3.0.0: '2018-04-19T14:54:47.609Z' - /normalize-registry-url@2.0.0: '2021-11-22T21:36:37.421Z' - /npm-packlist@5.1.3: '2022-08-25T19:33:59.963Z' - /p-any@3.0.0: '2020-02-22T14:44:06.005Z' - /p-defer@3.0.0: '2019-06-07T08:11:13.854Z' - /p-every@2.0.0: '2019-03-15T09:22:34.849Z' - /p-filter@2.1.0: '2019-04-04T04:54:11.010Z' - /p-limit@3.1.0: '2020-11-25T07:42:37.364Z' - /p-map-values@1.0.0: '2022-11-19T01:54:52.912Z' - /p-memoize@4.0.1: '2020-09-24T12:12:05.234Z' - /p-queue@6.6.2: '2020-10-11T19:09:45.773Z' - /p-settle@4.1.1: '2020-05-29T08:07:35.109Z' - /parse-json@5.2.0: '2021-01-18T11:15:13.459Z' - /parse-npm-tarball-url@3.0.0: '2019-05-27T23:50:09.183Z' - /path-absolute@1.0.1: '2018-11-28T20:25:53.253Z' - /path-exists@4.0.0: '2019-04-04T03:29:16.887Z' - /path-name@1.0.0: '2016-10-20T18:43:50.780Z' - /path-temp@2.1.0: '2023-07-16T21:25:05.258Z' - /pidtree@0.6.0: '2022-06-05T18:35:44.206Z' - /preferred-pm@3.1.2: '2023-09-05T00:02:00.039Z' - /pretty-bytes@5.6.0: '2021-02-21T14:04:35.036Z' - /pretty-ms@7.0.1: '2020-09-24T09:37:39.213Z' - /process-exists@4.1.0: '2021-07-09T07:06:51.313Z' - /promise-share@1.0.0: '2019-09-13T19:01:32.578Z' - /proxyquire@2.1.3: '2019-08-12T13:54:46.049Z' - /ps-list@7.2.0: '2020-06-17T09:02:36.119Z' - /publish-packed@4.1.2: '2023-12-24T23:27:28.807Z' - /read-ini-file@4.0.0: '2022-12-23T20:19:57.971Z' - /read-yaml-file@2.1.0: '2021-02-11T22:53:46.064Z' - /realpath-missing@1.1.0: '2021-02-11T22:53:50.718Z' - /remark-parse@9.0.0: '2020-10-14T08:48:35.392Z' - /remark-stringify@9.0.1: '2020-12-09T17:54:33.099Z' - /rename-overwrite@5.0.0: '2023-12-24T01:49:00.212Z' - /render-help@1.0.3: '2023-01-29T01:46:41.262Z' - /resolve-link-target@2.0.0: '2021-02-11T22:54:11.438Z' - /rfc4648@1.5.3: '2023-10-27T18:22:37.670Z' - /right-pad@1.0.1: '2016-08-04T20:06:31.415Z' - /rimraf@3.0.2: '2020-02-09T06:18:37.504Z' - /root-link-target@3.1.0: '2021-02-11T22:54:37.968Z' - /run-groups@3.0.1: '2020-06-06T16:33:09.423Z' - /rxjs@7.8.1: '2023-04-26T22:56:33.678Z' - /safe-buffer@5.2.1: '2020-05-10T16:37:30.776Z' - /safe-execa@0.1.2: '2022-07-18T01:09:17.517Z' - /safe-execa@0.1.3: '2023-01-04T13:29:20.746Z' - /safe-promise-defer@1.0.1: '2022-06-18T13:48:40.297Z' - /sanitize-filename@1.6.3: '2019-08-26T02:10:56.988Z' - /semver-range-intersect@0.3.1: '2019-07-20T15:11:40.243Z' - /semver-utils@1.1.4: '2018-10-09T04:14:32.485Z' - /semver@7.5.4: '2023-07-07T21:10:32.589Z' - /shx@0.3.4: '2022-01-10T02:16:53.953Z' - /signal-exit@3.0.7: '2022-02-03T21:05:34.544Z' - /sinon@16.1.3: '2023-10-19T06:07:46.164Z' - /sort-keys@4.2.0: '2020-12-30T07:11:45.350Z' - /split-cmd@1.0.1: '2020-01-22T19:18:26.255Z' - /ssri@10.0.5: '2023-08-14T18:54:54.458Z' - /stacktracey@2.1.8: '2022-01-10T09:22:17.926Z' - /string-length@4.0.2: '2021-03-17T06:47:19.439Z' - /strip-ansi@6.0.1: '2021-09-23T16:34:41.798Z' - /strip-bom@4.0.0: '2019-04-28T04:40:47.887Z' - /strip-comments-strings@1.2.0: '2022-06-12T23:34:53.852Z' - /symlink-dir@5.2.1: '2023-12-24T23:15:15.543Z' - /syncpack@8.5.14: '2023-02-07T19:51:38.723Z' - /tar-stream@2.2.0: '2020-12-29T10:22:57.508Z' - /tar@6.2.0: '2023-09-05T05:33:49.378Z' - /tempy@1.0.1: '2021-03-17T07:03:04.830Z' - /touch@3.1.0: '2017-06-30T23:40:39.606Z' - /tree-kill@1.2.2: '2019-12-11T18:34:21.876Z' - /ts-jest@29.1.1: '2023-06-30T07:49:33.771Z' - /ts-node@10.9.2: '2023-12-08T12:04:46.154Z' - /typescript@5.3.3: '2023-12-06T19:07:51.067Z' - /unified@9.2.2: '2021-07-01T16:39:11.345Z' - /unique-string@2.0.0: '2019-04-29T04:18:06.804Z' - /uuid@9.0.1: '2023-09-12T08:56:35.205Z' - /v8-compile-cache@2.4.0: '2023-08-14T21:38:46.534Z' - /validate-npm-package-name@5.0.0: '2022-10-14T05:22:33.343Z' - /verdaccio@5.20.1: '2023-01-29T15:45:43.205Z' - /version-selector-type@3.0.0: '2020-05-02T19:53:43.038Z' - /which@4.0.0: '2023-08-29T18:39:57.339Z' - /wrap-ansi@7.0.0: '2020-04-22T16:53:23.889Z' - /write-file-atomic@5.0.1: '2023-04-26T19:28:58.689Z' - /write-ini-file@4.0.1: '2022-12-23T20:19:59.977Z' - /write-json-file@4.3.0: '2020-02-07T08:54:49.528Z' - /write-json5-file@3.1.0: '2021-02-11T22:54:24.439Z' - /write-pkg@4.0.0: '2019-04-29T10:37:09.855Z' - /write-yaml-file@5.0.0: '2023-04-27T22:24:56.969Z' - /yaml-tag@1.1.0: '2017-06-06T16:19:00.523Z' diff --git a/pnpm/package.json b/pnpm/package.json index 4d25aec0f3..48cbdb5bc5 100644 --- a/pnpm/package.json +++ b/pnpm/package.json @@ -63,7 +63,7 @@ "@pnpm/prepare": "workspace:*", "@pnpm/read-package-json": "workspace:*", "@pnpm/read-project-manifest": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/run-npm": "workspace:*", "@pnpm/tabtab": "^0.1.2", "@pnpm/test-fixtures": "workspace:*", diff --git a/pnpm/test/update.ts b/pnpm/test/update.ts index d1fe0194fb..dc56391019 100644 --- a/pnpm/test/update.ts +++ b/pnpm/test/update.ts @@ -201,9 +201,9 @@ test('update --latest specific dependency', async function () { addDistTag('@pnpm.e2e/qar', '100.1.0', 'latest'), ]) - await execPnpm(['add', '@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0', '@pnpm.e2e/bar@^100.0.0', '@pnpm.e2e/foo@100.1.0', 'alias@npm:@pnpm.e2e/qar@^100.0.0', 'kevva/is-negative']) + await execPnpm(['add', '@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0', '@pnpm.e2e/bar@^100.0.0', '@pnpm.e2e/foo@100.0.0', 'alias@npm:@pnpm.e2e/qar@^100.0.0', 'kevva/is-negative']) - await execPnpm(['update', '-L', '@pnpm.e2e/bar', '@pnpm.e2e/foo@100.0.0', 'alias', 'is-negative']) + await execPnpm(['update', '-L', '@pnpm.e2e/bar', 'alias', 'is-negative']) const lockfile = await project.readLockfile() expect(lockfile.dependencies['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('100.0.0') @@ -378,7 +378,7 @@ test('recursive update --latest specific dependency on projects that do not shar dependencies: { alias: 'npm:@pnpm.e2e/qar@100.0.0', - '@pnpm.e2e/dep-of-pkg-with-1-dep': '101.0.0', + '@pnpm.e2e/dep-of-pkg-with-1-dep': '100.0.0', '@pnpm.e2e/foo': '^100.0.0', }, }, @@ -395,7 +395,7 @@ test('recursive update --latest specific dependency on projects that do not shar await execPnpm(['-r', 'install']) - await execPnpm(['-r', 'update', '--latest', '@pnpm.e2e/foo', '@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0', 'alias']) + await execPnpm(['-r', 'update', '--latest', '@pnpm.e2e/foo', 'alias']) const manifest1 = await readPackageJsonFromDir(path.resolve('project-1')) expect(manifest1.dependencies).toStrictEqual({ @@ -552,7 +552,7 @@ test('recursive update --latest specific dependency on projects with a shared a dependencies: { alias: 'npm:@pnpm.e2e/qar@100.0.0', - '@pnpm.e2e/dep-of-pkg-with-1-dep': '101.0.0', + '@pnpm.e2e/dep-of-pkg-with-1-dep': '100.0.0', '@pnpm.e2e/foo': '100.0.0', }, }, @@ -570,7 +570,7 @@ test('recursive update --latest specific dependency on projects with a shared a await writeYamlFile('pnpm-workspace.yaml', { packages: ['**', '!store/**'] }) await execPnpm(['recursive', 'install']) - await execPnpm(['recursive', 'update', '--latest', '@pnpm.e2e/foo', '@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0', 'alias']) + await execPnpm(['recursive', 'update', '--latest', '@pnpm.e2e/foo', 'alias']) const manifest1 = await readPackageJsonFromDir(path.resolve('project-1')) expect(manifest1.dependencies).toStrictEqual({ @@ -608,3 +608,210 @@ test('deep update', async function () { await project.storeHas('@pnpm.e2e/dep-of-pkg-with-1-dep', '100.1.0') }) + +test('update to latest without downgrading already defined prerelease (#7436)', async function () { + prepare() + + await addDistTag('@pnpm.e2e/has-prerelease', '2.0.0', 'latest') + await execPnpm(['add', '@pnpm.e2e/has-prerelease@3.0.0-rc.0']) + + const manifest1 = await readPackageJsonFromDir('.') + expect(manifest1).toMatchObject({ + dependencies: { + '@pnpm.e2e/has-prerelease': '3.0.0-rc.0', + }, + }) + + const lockfile1 = await readYamlFile('pnpm-lock.yaml') + expect(lockfile1).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@3.0.0-rc.0']) + expect(lockfile1).not.toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@2.0.0']) + + await execPnpm(['update', '--latest']) + + const manifest2 = await readPackageJsonFromDir('.') + expect(manifest2).toMatchObject({ + dependencies: { + '@pnpm.e2e/has-prerelease': '3.0.0-rc.0', + }, + }) + + const lockfile2 = await readYamlFile('pnpm-lock.yaml') + expect(lockfile2).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@3.0.0-rc.0']) + expect(lockfile2).not.toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@2.0.0']) + + await execPnpm(['update', '-r', '--latest']) + + const manifest3 = await readPackageJsonFromDir('.') + expect(manifest3).toMatchObject({ + dependencies: { + '@pnpm.e2e/has-prerelease': '3.0.0-rc.0', + }, + }) + + const lockfile3 = await readYamlFile('pnpm-lock.yaml') + expect(lockfile3).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@3.0.0-rc.0']) + expect(lockfile3).not.toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@2.0.0']) +}) + +test('update with tag @latest will downgrade prerelease', async function () { + prepare() + + await addDistTag('@pnpm.e2e/has-prerelease', '2.0.0', 'latest') + await execPnpm(['add', '@pnpm.e2e/has-prerelease@3.0.0-rc.0']) + + const manifest1 = await readPackageJsonFromDir('.') + expect(manifest1).toMatchObject({ + dependencies: { + '@pnpm.e2e/has-prerelease': '3.0.0-rc.0', + }, + }) + + const lockfile1 = await readYamlFile('pnpm-lock.yaml') + expect(lockfile1).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@3.0.0-rc.0']) + expect(lockfile1).not.toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@2.0.0']) + + await execPnpm(['update', '@pnpm.e2e/has-prerelease@latest']) + + const manifest2 = await readPackageJsonFromDir('.') + expect(manifest2).toMatchObject({ + dependencies: { + '@pnpm.e2e/has-prerelease': '2.0.0', + }, + }) + + const lockfile2 = await readYamlFile('pnpm-lock.yaml') + expect(lockfile2).not.toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@3.0.0-rc.0']) + expect(lockfile2).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@2.0.0']) +}) + +test('update to latest recursive workspace (outdated, updated, prerelease, outdated)', async function () { + await addDistTag('@pnpm.e2e/has-prerelease', '2.0.0', 'latest') + + preparePackages([ + { + name: 'project-1', + dependencies: { + '@pnpm.e2e/has-prerelease': '1.0.0', + }, + }, + { + name: 'project-2', + dependencies: { + '@pnpm.e2e/has-prerelease': '2.0.0', + }, + }, + { + name: 'project-3', + dependencies: { + '@pnpm.e2e/has-prerelease': '3.0.0-rc.0', + }, + }, + { + name: 'project-4', + dependencies: { + '@pnpm.e2e/has-prerelease': '1.0.0', + }, + }, + ]) + + await writeYamlFile('pnpm-workspace.yaml', { packages: ['**', '!store/**'] }) + await execPnpm(['install', '-r']) + + const lockfile1 = await readYamlFile('pnpm-lock.yaml') + expect(lockfile1).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@1.0.0']) + expect(lockfile1).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@2.0.0']) + expect(lockfile1).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@3.0.0-rc.0']) + + await execPnpm(['update', '-r', '--latest']) + + const manifests = { + 'project-1': await readPackageJsonFromDir('project-1'), + 'project-2': await readPackageJsonFromDir('project-2'), + 'project-3': await readPackageJsonFromDir('project-3'), + 'project-4': await readPackageJsonFromDir('project-4'), + } + expect(manifests).toMatchObject({ + 'project-1': { + name: 'project-1', + dependencies: { + '@pnpm.e2e/has-prerelease': '2.0.0', + }, + }, + 'project-2': { + name: 'project-2', + dependencies: { + '@pnpm.e2e/has-prerelease': '2.0.0', + }, + }, + 'project-3': { + name: 'project-3', + dependencies: { + '@pnpm.e2e/has-prerelease': '3.0.0-rc.0', + }, + }, + 'project-4': { + name: 'project-4', + dependencies: { + '@pnpm.e2e/has-prerelease': '2.0.0', + }, + }, + }) + + const lockfile2 = await readYamlFile('pnpm-lock.yaml') + expect(lockfile2).not.toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@1.0.0']) + expect(lockfile2).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@2.0.0']) + expect(lockfile2).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@3.0.0-rc.0']) +}) + +test('update to latest recursive workspace (prerelease, outdated)', async function () { + await addDistTag('@pnpm.e2e/has-prerelease', '2.0.0', 'latest') + + preparePackages([ + { + name: 'project-1', + dependencies: { + '@pnpm.e2e/has-prerelease': '3.0.0-rc.0', + }, + }, + { + name: 'project-2', + dependencies: { + '@pnpm.e2e/has-prerelease': '1.0.0', + }, + }, + ]) + + await writeYamlFile('pnpm-workspace.yaml', { packages: ['**', '!store/**'] }) + await execPnpm(['install', '-r']) + + const lockfile1 = await readYamlFile('pnpm-lock.yaml') + expect(lockfile1).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@1.0.0']) + expect(lockfile1).not.toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@2.0.0']) + expect(lockfile1).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@3.0.0-rc.0']) + + await execPnpm(['update', '-r', '--latest']) + + const manifests = { + 'project-1': await readPackageJsonFromDir('project-1'), + 'project-2': await readPackageJsonFromDir('project-2'), + } + expect(manifests).toMatchObject({ + 'project-1': { + name: 'project-1', + dependencies: { + '@pnpm.e2e/has-prerelease': '3.0.0-rc.0', + }, + }, + 'project-2': { + name: 'project-2', + dependencies: { + '@pnpm.e2e/has-prerelease': '2.0.0', + }, + }, + }) + + const lockfile2 = await readYamlFile('pnpm-lock.yaml') + expect(lockfile2).not.toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@1.0.0']) + expect(lockfile2).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@2.0.0']) + expect(lockfile2).toHaveProperty(['packages', '/@pnpm.e2e/has-prerelease@3.0.0-rc.0']) +}) diff --git a/releasing/plugin-commands-deploy/package.json b/releasing/plugin-commands-deploy/package.json index c409dc86cf..6ef1248320 100644 --- a/releasing/plugin-commands-deploy/package.json +++ b/releasing/plugin-commands-deploy/package.json @@ -39,7 +39,7 @@ "@pnpm/lockfile-types": "workspace:*", "@pnpm/plugin-commands-deploy": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.17.1" + "@pnpm/registry-mock": "3.18.0" }, "dependencies": { "@pnpm/cli-utils": "workspace:*", diff --git a/releasing/plugin-commands-publishing/package.json b/releasing/plugin-commands-publishing/package.json index 9ed1c8ebcf..832c6c3a8f 100644 --- a/releasing/plugin-commands-publishing/package.json +++ b/releasing/plugin-commands-publishing/package.json @@ -35,7 +35,7 @@ "@pnpm/filter-workspace-packages": "workspace:*", "@pnpm/plugin-commands-publishing": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/test-ipc-server": "workspace:*", "@types/cross-spawn": "^6.0.5", "@types/is-windows": "^1.0.2", diff --git a/resolving/npm-resolver/src/index.ts b/resolving/npm-resolver/src/index.ts index 4b0ee75ca7..50d91172a4 100644 --- a/resolving/npm-resolver/src/index.ts +++ b/resolving/npm-resolver/src/index.ts @@ -114,6 +114,7 @@ export type ResolveFromNpmOptions = { registry: string preferredVersions?: PreferredVersions preferWorkspacePackages?: boolean + updateToLatest?: boolean } & ({ projectDir?: string workspacePackages?: undefined @@ -160,6 +161,7 @@ async function resolveNpm ( dryRun: opts.dryRun === true, preferredVersionSelectors: opts.preferredVersions?.[spec.name], registry: opts.registry, + updateToLatest: opts.updateToLatest, }) } catch (err: any) { // eslint-disable-line if ((workspacePackages != null) && opts.projectDir) { diff --git a/resolving/npm-resolver/src/pickPackage.ts b/resolving/npm-resolver/src/pickPackage.ts index e5a822b03e..2524297ec8 100644 --- a/resolving/npm-resolver/src/pickPackage.ts +++ b/resolving/npm-resolver/src/pickPackage.ts @@ -11,6 +11,7 @@ import loadJsonFile from 'load-json-file' import pLimit from 'p-limit' import { fastPathTemp as pathTemp } from 'path-temp' import pick from 'ramda/src/pick' +import semver from 'semver' import renameOverwrite from 'rename-overwrite' import { toRaw } from './toRaw' import { pickPackageFromMeta, pickVersionByVersionRange, pickLowestVersionByVersionRange } from './pickPackageFromMeta' @@ -85,6 +86,7 @@ export interface PickPackageOptions { pickLowestVersion?: boolean registry: string dryRun: boolean + updateToLatest?: boolean } function pickPackageFromMetaUsingTime ( @@ -112,11 +114,25 @@ export async function pickPackage ( opts: PickPackageOptions ): Promise<{ meta: PackageMeta, pickedPackage: PackageInRegistry | null }> { opts = opts || {} - const _pickPackageFromMeta = + let _pickPackageFromMeta = opts.publishedBy ? pickPackageFromMetaUsingTime : (pickPackageFromMeta.bind(null, opts.pickLowestVersion ? pickLowestVersionByVersionRange : pickVersionByVersionRange)) + if (opts.updateToLatest) { + const _pickPackageBase = _pickPackageFromMeta + _pickPackageFromMeta = (spec, ...rest) => { + const latestStableSpec: RegistryPackageSpec = { ...spec, type: 'tag', fetchSpec: 'latest' } + const latestStable = _pickPackageBase(latestStableSpec, ...rest) + const current = _pickPackageBase(spec, ...rest) + + if (!latestStable) return current + if (!current) return latestStable + if (semver.lt(latestStable.version, current.version)) return current + return latestStable + } + } + validatePackageName(spec.name) const cachedMeta = ctx.metaCache.get(spec.name) @@ -155,7 +171,7 @@ export async function pickPackage ( } } - if (spec.type === 'version') { + if (!opts.updateToLatest && spec.type === 'version') { metaCachedInStore = metaCachedInStore ?? await limit(async () => loadMeta(pkgMirror)) // use the cached meta only if it has the required package version // otherwise it is probably out of date diff --git a/resolving/resolver-base/src/index.ts b/resolving/resolver-base/src/index.ts index a93e949da2..672b943f45 100644 --- a/resolving/resolver-base/src/index.ts +++ b/resolving/resolver-base/src/index.ts @@ -80,6 +80,7 @@ export interface ResolveOptions { preferWorkspacePackages?: boolean registry: string workspacePackages?: WorkspacePackages + updateToLatest?: boolean } export type WantedDependency = { diff --git a/reviewing/plugin-commands-licenses/package.json b/reviewing/plugin-commands-licenses/package.json index d3924890c6..f016e15e9d 100644 --- a/reviewing/plugin-commands-licenses/package.json +++ b/reviewing/plugin-commands-licenses/package.json @@ -36,7 +36,7 @@ "@pnpm/plugin-commands-licenses": "workspace:*", "@pnpm/prepare": "workspace:*", "@pnpm/read-package-json": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/test-fixtures": "workspace:*", "@types/ramda": "0.28.20", "@types/semver": "7.5.3", diff --git a/reviewing/plugin-commands-listing/package.json b/reviewing/plugin-commands-listing/package.json index 564dc935d9..8fe7c1a160 100644 --- a/reviewing/plugin-commands-listing/package.json +++ b/reviewing/plugin-commands-listing/package.json @@ -34,7 +34,7 @@ "@pnpm/plugin-commands-installation": "workspace:*", "@pnpm/plugin-commands-listing": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@types/ramda": "0.28.20", "execa": "npm:safe-execa@0.1.2", "strip-ansi": "^6.0.1", diff --git a/reviewing/plugin-commands-outdated/package.json b/reviewing/plugin-commands-outdated/package.json index c4d430550e..1c42982e1c 100644 --- a/reviewing/plugin-commands-outdated/package.json +++ b/reviewing/plugin-commands-outdated/package.json @@ -35,7 +35,7 @@ "@pnpm/plugin-commands-installation": "workspace:*", "@pnpm/plugin-commands-outdated": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@pnpm/test-fixtures": "workspace:*", "@types/ramda": "0.28.20", "@types/wrap-ansi": "8.0.2", diff --git a/store/plugin-commands-store/package.json b/store/plugin-commands-store/package.json index 2b21c25102..c070b5ac95 100644 --- a/store/plugin-commands-store/package.json +++ b/store/plugin-commands-store/package.json @@ -34,7 +34,7 @@ "@pnpm/lockfile-file": "workspace:*", "@pnpm/plugin-commands-store": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.17.1", + "@pnpm/registry-mock": "3.18.0", "@types/archy": "0.0.33", "@types/ramda": "0.28.20", "@types/ssri": "^7.1.4", diff --git a/store/store-controller-types/src/index.ts b/store/store-controller-types/src/index.ts index d7024e0833..c0055e9ed9 100644 --- a/store/store-controller-types/src/index.ts +++ b/store/store-controller-types/src/index.ts @@ -134,6 +134,7 @@ export interface RequestPackageOptions { forceResolve?: boolean supportedArchitectures?: SupportedArchitectures onFetchError?: OnFetchError + updateToLatest?: boolean } export type BundledManifestFunction = () => Promise