import { PnpmSettings } from "@pnpm/types"; //#region src/types.d.ts /** * Compatibility target used by the migrator. */ type CompatibilityTarget = 'auto' | 'v10' | 'v11'; /** * Merge strategy for combining pnpm settings. */ type MergeStrategy = 'discard' | 'merge' | 'overwrite'; /** * Options for pnpm settings migration */ interface Options { /** * Whether to remove pnpm settings in `.npmrc` file * * @default true */ cleanNpmrc?: boolean; /** * Whether to remove `pnpm` field in `package.json` * * @default true */ cleanPackageJson?: boolean; /** * pnpm compatibility target. * - `auto`: detect from `packageManager` (fallback to `v10`) * - `v10`: keep legacy v10 settings * - `v11`: normalize to v11-compatible settings * * @default 'auto' */ compatibility?: CompatibilityTarget; /** * Current working directory * * @default process.cwd() */ cwd?: string; /** * Add newlines between each root keys like pnpm does * @default true */ newlineBetween?: boolean; /** * Replace deprecated settings with new ones and remove deprecated keys. * * @default false */ replaceDeprecated?: boolean; /** * Sort keys when write `pnpm-workspace.yaml` * * @default false */ sortKeys?: boolean; /** * Strategy to handle conflicts */ strategy?: MergeStrategy; /** * Whether to migrate `resolutions` filed in `package.json` * * @default true */ yarnResolutions?: boolean; } /** * legacy `pnpm-workspace` types */ type PnpmWorkspaceLegacy = { catalog?: Record; catalogs?: Record>; packages?: string[]; }; /** * `package-json` types * @pg */ interface PackageJson { /** * same as `pnpm.overrides` * * @compatibility npm, bun */ overrides?: Record; /** * Package manager declaration, for example `pnpm@11.0.0` */ packageManager?: string; /** * pnpm settings */ pnpm?: PnpmSettings; /** * same as `pnpm.overrides` * * @compatibility yarn, bun */ resolutions?: Record; } /** * `.npmrc` types * @pg */ type NpmRC = Record; /** * Deprecated `pnpm` settings in `package.json` * @see {@link https://github.com/pnpm/pnpm/blob/main/core/types/CHANGELOG.md#major-changes} */ interface PnpmSettingsDeprecated { /** * @deprecated */ allowNonAppliedPatches?: boolean; /** * @deprecated */ ignoredBuiltDependencies?: string[]; /** * @deprecated */ ignorePatchFailures?: boolean; /** * @deprecated */ neverBuiltDependencies?: string[]; /** * @deprecated */ onlyBuiltDependencies?: string[]; /** * @deprecated */ onlyBuiltDependenciesFile?: string; } /** * `pnpm-workspace` types * @pg */ type PnpmWorkspace = PnpmSettings & PnpmSettingsDeprecated & PnpmWorkspaceLegacy; //#endregion //#region src/core.d.ts /** * Migrate pnpm settings from legacy locations to `pnpm-workspace.yaml`. * * This function collects pnpm configurations from multiple sources and consolidates * them into a single `pnpm-workspace.yaml` file: * - `package.json` pnpm field * - `.npmrc` pnpm-related settings * - `package.json` resolutions (optional, converts to pnpm overrides) * * @param rawOptions - Migration options * @param rawOptions.cwd - Current working directory (default: process.cwd()) * @param rawOptions.cleanNpmrc - Whether to remove pnpm settings from `.npmrc` (default: true) * @param rawOptions.cleanPackageJson - Whether to remove pnpm field from `package.json` (default: true) * @param rawOptions.yarnResolutions - Whether to migrate resolutions field (default: true) * @param rawOptions.sortKeys - Whether to sort keys in output YAML (default: false) * @param rawOptions.newlineBetween - Add newlines between root keys (default: true) * * @returns A promise that resolves when migration is complete * * @throws {Error} When file operations fail or JSON/YAML parsing errors occur * * @example * ```ts * // Migrate with default options * await migratePnpmSettings() * * // Migrate with custom options * await migratePnpmSettings({ * cwd: '/path/to/workspace', * cleanNpmrc: false, * sortKeys: true * }) * ``` */ declare function migratePnpmSettings(rawOptions?: Options): Promise; //#endregion //#region src/options.d.ts /** * Resolve and normalize migration options with defaults. * * This function takes partial options and returns a complete options object * with all properties set to either the provided value or the default value. * * @param options - Partial migration options * * @returns Complete options object with all required properties * * @example * ```ts * // Use all defaults * const opts = resolveOptions() * // { cleanNpmrc: true, cleanPackageJson: true, cwd: '/current/dir', ... } * * // Override specific options * const opts = resolveOptions({ sortKeys: true, cleanNpmrc: false }) * // { cleanNpmrc: false, cleanPackageJson: true, sortKeys: true, ... } * ``` */ declare function resolveOptions(options?: Options): Required; //#endregion export { CompatibilityTarget, MergeStrategy, NpmRC, Options, PackageJson, PnpmSettingsDeprecated, PnpmWorkspace, PnpmWorkspaceLegacy, migratePnpmSettings, resolveOptions };