1*8d3f3824SCedric van Puttenimport { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/spawn-async'; 2b939fa09SCedric van Putten 3*8d3f3824SCedric van Puttenimport { PendingSpawnPromise } from './utils/spawn'; 4*8d3f3824SCedric van Putten 5*8d3f3824SCedric van Puttenexport interface PackageManagerOptions extends SpawnOptions { 6*8d3f3824SCedric van Putten /** 7*8d3f3824SCedric van Putten * If the package manager should run in silent mode. 8*8d3f3824SCedric van Putten * Note, this will hide possible error output from executed commands. 9*8d3f3824SCedric van Putten * When running in silent mode, make sure you handle them properly. 10*8d3f3824SCedric van Putten */ 11*8d3f3824SCedric van Putten silent?: boolean; 12*8d3f3824SCedric van Putten 13*8d3f3824SCedric van Putten /** 14*8d3f3824SCedric van Putten * The logging method used to communicate the command which is executed. 15*8d3f3824SCedric van Putten * Without `silent`, this defaults to `console.log`. 16*8d3f3824SCedric van Putten * When `silent` is set to `true`, this defaults to a no-op. 17*8d3f3824SCedric van Putten */ 18*8d3f3824SCedric van Putten log?: (...args: any[]) => void; 19*8d3f3824SCedric van Putten} 20b939fa09SCedric van Putten 21b939fa09SCedric van Puttenexport interface PackageManager { 22*8d3f3824SCedric van Putten /** The options for this package manager */ 23*8d3f3824SCedric van Putten readonly options: PackageManagerOptions; 24*8d3f3824SCedric van Putten 25*8d3f3824SCedric van Putten /** Run any command using the package manager */ 26*8d3f3824SCedric van Putten runAsync(command: string[]): SpawnPromise<SpawnResult>; 27*8d3f3824SCedric van Putten 28*8d3f3824SCedric van Putten /** Get the version of the used package manager */ 29b939fa09SCedric van Putten versionAsync(): Promise<string>; 30*8d3f3824SCedric van Putten /** Get a single configuration property from the package manager */ 31b939fa09SCedric van Putten getConfigAsync(key: string): Promise<string>; 32*8d3f3824SCedric van Putten /** Remove the lock file within the project, if any */ 33b939fa09SCedric van Putten removeLockfileAsync(): Promise<void>; 34*8d3f3824SCedric van Putten /** Get the workspace root package manager, if this project is within a workspace/monorepo */ 35*8d3f3824SCedric van Putten workspaceRoot(): PackageManager | null; 36b939fa09SCedric van Putten 37*8d3f3824SCedric van Putten /** Install all current dependencies using the package manager */ 38*8d3f3824SCedric van Putten installAsync(): 39*8d3f3824SCedric van Putten | Promise<SpawnResult> 40*8d3f3824SCedric van Putten | SpawnPromise<SpawnResult> 41*8d3f3824SCedric van Putten | PendingSpawnPromise<SpawnResult>; 42*8d3f3824SCedric van Putten /** Uninstall all current dependencies by removing the folder containing the packages */ 43*8d3f3824SCedric van Putten uninstallAsync(): Promise<void>; 44b939fa09SCedric van Putten 45*8d3f3824SCedric van Putten /** Add a normal dependency to the project */ 46*8d3f3824SCedric van Putten addAsync(namesOrFlags: string[]): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; 47*8d3f3824SCedric van Putten /** Add a development dependency to the project */ 48*8d3f3824SCedric van Putten addDevAsync(namesOrFlags: string[]): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; 49*8d3f3824SCedric van Putten /** Add a global dependency to the environment */ 50*8d3f3824SCedric van Putten addGlobalAsync( 51*8d3f3824SCedric van Putten namesOrFlags: string[] 52*8d3f3824SCedric van Putten ): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; 53*8d3f3824SCedric van Putten 54*8d3f3824SCedric van Putten /** Remove a normal dependency from the project */ 55*8d3f3824SCedric van Putten removeAsync(namesOrFlags: string[]): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; 56*8d3f3824SCedric van Putten /** Remove a development dependency from the project */ 57*8d3f3824SCedric van Putten removeDevAsync( 58*8d3f3824SCedric van Putten namesOrFlags: string[] 59*8d3f3824SCedric van Putten ): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; 60*8d3f3824SCedric van Putten /** Remove a global dependency from the environments */ 61*8d3f3824SCedric van Putten removeGlobalAsync( 62*8d3f3824SCedric van Putten namesOrFlags: string[] 63*8d3f3824SCedric van Putten ): SpawnPromise<SpawnResult> | PendingSpawnPromise<SpawnResult>; 64b939fa09SCedric van Putten} 65