UNPKG

pncat

Version:

A unified cli tool that enhances package managers catalogs feature.

169 lines (168 loc) 6.34 kB
import { a as DepType, c as CatalogRule, d as SpecifierRule, f as DepFilter, h as ParsedSpec, i as DepFieldOptions, l as SpecifierOptions, m as HookFunction, n as CommandOptions, o as PackageManager, p as DependencyEntry, r as ConfigOptions, s as RangeMode, t as CatalogOptions, u as SpecifierRangeType } from "./core-CuzJ7Vlf.mjs"; import { DEFAULT_CATALOG_RULES } from "./rules.mjs"; //#region src/types/package-json.d.ts type WorkspaceDepType = `${PackageManager}-workspace`; type PackageJsonDepSource = Exclude<DepType, 'pnpm.overrides' | WorkspaceDepType>; interface PnpmConfig { overrides?: Record<string, string>; [key: string]: unknown; } interface PackageJson extends WorkspaceSchema { name?: string; version?: string; description?: string; dependencies?: Record<string, string>; devDependencies?: Record<string, string>; optionalDependencies?: Record<string, string>; peerDependencies?: Record<string, string>; resolutions?: Record<string, string>; pnpm?: PnpmConfig; workspaces?: string[] | { packages?: string[]; nohoist?: string[]; catalog?: Record<string, string>; catalogs?: Record<string, Record<string, string>>; }; engines?: { vscode?: string; }; [key: string]: unknown; } //#endregion //#region src/types/meta.d.ts interface WorkspaceSchema { catalog?: Record<string, string>; catalogs?: Record<string, Record<string, string>>; overrides?: Record<string, string>; [key: string]: unknown; } interface RawDep { name: string; specifier: string; source: DepType; parents?: string[]; catalogable: boolean; catalogName: string; isCatalog: boolean; update?: boolean; } interface BasePackageMeta { name: string; private?: boolean; version?: string; filepath: string; relative: string; deps: RawDep[]; } interface PackageJsonMeta extends BasePackageMeta { type: 'package.json'; raw: PackageJson; } interface PnpmWorkspaceMeta extends BasePackageMeta { type: 'pnpm-workspace.yaml'; raw: WorkspaceSchema; context: unknown; } interface YarnWorkspaceMeta extends Omit<PnpmWorkspaceMeta, 'type'> { type: '.yarnrc.yml'; } interface BunWorkspaceMeta extends BasePackageMeta { type: 'bun-workspace'; raw: PackageJson; } interface VltWorkspaceMeta extends BasePackageMeta { type: 'vlt.json'; raw: WorkspaceSchema; } type WorkspacePackageMeta = PnpmWorkspaceMeta | YarnWorkspaceMeta | BunWorkspaceMeta | VltWorkspaceMeta; type PackageMeta = PackageJsonMeta | WorkspacePackageMeta; //#endregion //#region src/types/catalog.d.ts interface CatalogEntry { catalogName: string; specifier: string; } type CatalogIndex = Map<string, CatalogEntry[]>; interface CatalogHandler { readonly options: CatalogOptions; findWorkspaceFile: () => Promise<string | undefined>; ensureWorkspace: () => Promise<void>; toJSON: () => Promise<WorkspaceSchema>; toString: () => Promise<string>; setPackage: (catalog: 'default' | (string & {}), packageName: string, specifier: string) => Promise<void>; removePackages: (deps: RawDep[]) => Promise<void>; getPackageCatalogs: (name: string) => Promise<string[]>; generateCatalogs: (deps: RawDep[]) => Promise<void>; cleanupCatalogs: () => Promise<void>; clearCatalogs: () => Promise<void>; getWorkspacePath: () => Promise<string>; writeWorkspace: () => Promise<void>; updateWorkspaceOverrides?: () => Promise<void>; } //#endregion //#region src/types/package-manager.d.ts interface PackageManagerConfig { type: WorkspacePackageMeta['type']; depType: DepType; filename: string; locks: string[]; defaultContent: string; } //#endregion //#region src/workspace-manager.d.ts declare class WorkspaceManager { readonly catalog: CatalogHandler; private readonly options; private loaded; private loadTask; private packages; private depNames; constructor(options: CatalogOptions); getOptions(): CatalogOptions; getCwd(): string; getPackages(): PackageMeta[]; listProjectPackages(): PackageJsonMeta[]; listWorkspacePackages(): WorkspacePackageMeta[]; listCatalogTargetPackages(): PackageMeta[]; getDepNames(): string[]; resolveTargetProjectPackagePath(invocationCwd: string): string; loadPackages(): Promise<PackageMeta[]>; getCatalogIndex(): Promise<CatalogIndex>; resolveCatalogDep(dep: RawDep, catalogIndex: CatalogIndex, force?: boolean): RawDep; isCatalogDepReferenced(depName: string, catalogName: string, packages?: PackageMeta[]): boolean; setDepSpecifier(updatedPackages: Map<string, PackageJsonMeta>, pkg: PackageJsonMeta, dep: RawDep, specifier: string): void; removeCatalogDepFromPackages(updatedPackages: Map<string, PackageJsonMeta>, packages: PackageJsonMeta[], depName: string, catalogName: string): boolean; hasEslint(): boolean; hasVSCodeEngine(): boolean; reset(): void; private ensureUpdatedPackage; private buildIndexes; } //#endregion //#region src/types/resolver.d.ts interface ResolverContext { args?: string[]; options: CatalogOptions; workspace: WorkspaceManager; } interface ResolverResult { isDev?: boolean; isPeer?: boolean; isOptional?: boolean; isRevertAll?: boolean; dependencies?: RawDep[]; updatedPackages?: Record<string, PackageJsonMeta>; } //#endregion //#region src/utils/merge.d.ts interface MergeOptions { mergeDefaults?: boolean; arrayMerge?: (target: CatalogRule[], source: CatalogRule[]) => CatalogRule[]; } declare function mergeCatalogRules(options: MergeOptions, ...rules: CatalogRule[][]): CatalogRule[]; declare function mergeCatalogRules(...rules: CatalogRule[][]): CatalogRule[]; //#endregion //#region src/index.d.ts declare function defineConfig(config: Partial<CatalogOptions>): Partial<CatalogOptions>; //#endregion export { BasePackageMeta, BunWorkspaceMeta, CatalogEntry, CatalogHandler, CatalogIndex, CatalogOptions, CatalogRule, CommandOptions, ConfigOptions, DEFAULT_CATALOG_RULES, DepFieldOptions, DepFilter, DepType, DependencyEntry, HookFunction, MergeOptions, PackageJson, PackageJsonDepSource, PackageJsonMeta, PackageManager, PackageManagerConfig, PackageMeta, ParsedSpec, PnpmConfig, PnpmWorkspaceMeta, RangeMode, RawDep, ResolverContext, ResolverResult, SpecifierOptions, SpecifierRangeType, SpecifierRule, VltWorkspaceMeta, WorkspaceDepType, WorkspacePackageMeta, WorkspaceSchema, YarnWorkspaceMeta, defineConfig, mergeCatalogRules };