import * as npmUtil from "@pagedip/util-npm"; import { PrefixedLogger } from "@pagedip/util-logger"; import { Commit } from "./git"; import { Release, VersionChange } from "./release"; import { Env } from "./env"; export declare namespace Package { interface ResolveCommitOptions { basedir?: string; commitCache?: Map; refCache?: Map; } interface LoadOptions extends ResolveCommitOptions { registryUrl?: string; } interface LoadLernaGraphOptions extends LoadOptions { getRegistryUrl?: (pkg: npmUtil.Package) => string; progress?: (pkg: Lerna.Package, total: number) => any; defaultRelease?: Release; } type Dependencies = Partial>; type DepType = "dependencies" | "devDependencies" | "peerDependencies" | "optionalDependencies"; } export declare class Package { /** package.json data from the file system */ pkg: npmUtil.Package; /** config that dictates how the release behaves for this package */ release: Release; /** full registry information for package */ info?: npmUtil.PackageInfo | undefined; static formats: { [key: string]: string; }; static depKeys: Set; static hasDepsChanged(deps?: Package.Dependencies, prev?: Package.Dependencies, ignore?: Set): boolean; static updateDeps(deps?: Package.Dependencies, packages?: Map): Partial>; static loadLernaGraph(packages: Lerna.Package[], options?: Package.LoadLernaGraphOptions): Promise>; static load(location?: string, options?: Package.LoadOptions): Promise; logger: PrefixedLogger; /** path on the filesystem to this package */ location: string; /** a previous release that is used as the basis for the next release */ anchor?: npmUtil.Package; /** names of all dependencies within the same project as this package, excluding those in devDependencies */ localDependencies: Set; /** published dependencies (local deps have version filled, use this.pkg for true deps) */ dependencies: Package.Dependencies; /** published dev dependencies (local deps have version filled, use this.pkg for true deps) */ devDependencies: Package.Dependencies; /** published peer dependencies (local deps have version filled, use this.pkg for true deps) */ peerDependencies: Package.Dependencies; /** published optional dependencies (local deps have version filled, use this.pkg for true deps) */ optionalDependencies: Package.Dependencies; /** the base commit hash for determining if the package has been modified */ anchorCommit?: string; /** list of commits that apply to this package */ commits: Commit[]; validations: { warnings: Set; errors: Set; }; /** how the version will change with the next release */ version: VersionChange; constructor( /** path to package directory */ location: string | undefined, /** package.json data from the file system */ pkg: npmUtil.Package, /** config that dictates how the release behaves for this package */ release: Release, /** full registry information for package */ info?: npmUtil.PackageInfo | undefined); static isPackage(p: any): p is Package; get __autorelease_package__(): boolean; get name(): string; get canRelease(): boolean; get anchorTags(): string[]; get distTag(): string; get access(): Release.Access; get gitRefs(): string[]; /** * Check the package.json for a specific dependency. Optionally scope by dep type. * @param dep Name of a dependency to check for. * @param types List of dep types (dependencies, devDependencies, etc) to check under. */ hasDependency(dep: string, types?: Iterable): boolean; resolveLocalDependencies(graph: Lerna.PackageGraph): this; resolveDependencies(packages?: Map): void; resolveCommits(options?: Package.ResolveCommitOptions): Promise; resolveVersion(): this; /** * Check if the dependencies have changed between the anchor and the package.json. * @param type The dep type to check for changes (dependencies, peerDependencies, etc) */ hasDepsChanged(type: Package.DepType): boolean; hasDependencyBreakingRelease(packages: Map): boolean; validate(packages?: Map): this; toString(options?: { format?: string; color?: boolean; env?: Env; }): string; persistChangelog(env: Env, filename?: string): Promise; npmCommand(env: Env, cmd: string, args?: Record | string[], options?: npmUtil.NPMSpawnOptions): Promise; npmPublish(env: Env): Promise; publish(env: Env): Promise; switchReleaseDistTag(env: Env): Promise; }