UNPKG

@pnpm/lockfile-types

Version:
38 lines (37 loc) 2.19 kB
import type { Lockfile, PackageSnapshot, ProjectSnapshot } from '.'; import type { DependenciesMeta } from '@pnpm/types'; export type LockfileFile = Omit<InlineSpecifiersLockfile, 'importers'> & Partial<InlineSpecifiersProjectSnapshot> & Partial<Pick<InlineSpecifiersLockfile, 'importers'>>; export type LockfileFileV9 = Omit<InlineSpecifiersLockfile, 'importers' | 'packages'> & Partial<InlineSpecifiersProjectSnapshot> & Partial<Pick<InlineSpecifiersLockfile, 'importers'>> & { packages?: Record<string, Pick<PackageSnapshot, 'resolution' | 'engines' | 'cpu' | 'os' | 'hasBin' | 'name' | 'version' | 'bundledDependencies' | 'peerDependencies' | 'peerDependenciesMeta' | 'deprecated'>>; snapshots?: Record<string, Pick<PackageSnapshot, 'dependencies' | 'optionalDependencies' | 'patched' | 'optional' | 'transitivePeerDependencies' | 'id'>>; }; /** * Similar to the current Lockfile importers format (lockfile version 5.4 at * time of writing), but specifiers are moved to each ResolvedDependencies block * instead of being declared on its own dictionary. * * This is an experiment to reduce one flavor of merge conflicts in lockfiles. * For more info: https://github.com/pnpm/pnpm/issues/4725. */ export interface InlineSpecifiersLockfile extends Omit<Lockfile, 'lockfileVersion' | 'importers'> { lockfileVersion: string; importers?: Record<string, InlineSpecifiersProjectSnapshot>; } /** * Similar to the current ProjectSnapshot interface, but omits the "specifiers" * field in favor of inlining each specifier next to its version resolution in * dependency blocks. */ export type InlineSpecifiersProjectSnapshot = Omit<ProjectSnapshot, 'dependencies' | 'devDependencies' | 'optionalDependencies' | 'dependenciesMeta' | 'specifiers'> & { dependencies?: InlineSpecifiersResolvedDependencies; devDependencies?: InlineSpecifiersResolvedDependencies; optionalDependencies?: InlineSpecifiersResolvedDependencies; dependenciesMeta?: DependenciesMeta; }; export interface InlineSpecifiersResolvedDependencies { [depName: string]: SpecifierAndResolution; } export interface SpecifierAndResolution { specifier: string; version: string; }