{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/node-module-collector/types.ts"],"names":[],"mappings":"","sourcesContent":["export type PackageJson = {\n  name: string\n  version: string\n  dependencies?: Record<string, string>\n  devDependencies?: Record<string, string>\n  peerDependencies?: Record<string, string>\n  optionalDependencies?: Record<string, string>\n  workspaces?: string[] | { packages: string[] }\n}\n\nexport interface NodeModuleInfo {\n  name: string\n  version: string\n  dir: string\n  dependencies?: Array<NodeModuleInfo>\n}\n\nexport type ParsedDependencyTree = {\n  readonly name: string\n  readonly version: string\n  readonly path: string\n  readonly workspaces?: string[] | { packages: string[] } // we only use this at root level\n}\n\n// Note: `PnpmDependency` and `NpmDependency` include the output of `JSON.parse(...)` of `pnpm list` and `npm list` respectively\n// This object has a TON of info - a majority, if not all, of each dependency's package.json\n// We extract only what we need when constructing DependencyTree in `extractProductionDependencyTree`\nexport interface PnpmDependency extends Dependency<PnpmDependency, PnpmDependency> {\n  readonly from: string\n  readonly resolved: string\n}\n\nexport interface NpmDependency extends Dependency<NpmDependency, string> {\n  readonly resolved?: string\n  // implicit dependencies, returned only through `npm list`\n  readonly _dependencies?: {\n    [packageName: string]: string\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface TraversedDependency extends Dependency<TraversedDependency, TraversedDependency> {}\n\nexport type Dependency<T, V> = Dependencies<T, V> & ParsedDependencyTree\n\nexport type Dependencies<T, V> = {\n  readonly dependencies?: {\n    [packageName: string]: T\n  }\n  readonly optionalDependencies?: {\n    [packageName: string]: V\n  }\n}\n\nexport interface DependencyGraph {\n  [packageNameAndVersion: string]: {\n    readonly dependencies: string[]\n  }\n}\n"]}