interface PackageManifest { name: string; version: string; devDependencies?: Record; dependencies?: Record; overrides?: Record; // npm manifests are extensible; preserve metadata outside this projection. [key: string]: unknown; } interface LockedPackage { version?: string; dev?: boolean; // Keep unmodified integrity, resolution, platform, and other lock-entry facts. [key: string]: unknown; } interface PackageLock { name: string; version: string; lockfileVersion: number; packages: Record; // Preserve other npm lock metadata rather than dropping unfamiliar fields. [key: string]: unknown; } export function pluginPackageMetadata( manifest: Manifest, lock: PackageLock, ): { packageJson: Omit & { bundleDependencies: string[]; }; shrinkwrap: PackageLock; };