pncat
Version:
A unified cli tool that enhances package managers catalogs feature.
169 lines (168 loc) • 6.34 kB
text/typescript
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 };