{
  "version": 3,
  "sources": ["../../../../src/packages/lockfile.filtering/filterLockfileByImporters.ts"],
  "sourcesContent": ["import { WANTED_LOCKFILE } from '../constants/index.ts';\nimport { LockfileMissingDependencyError } from '../error/index.ts';\nimport type {\n  LockfileObject,\n  PackageSnapshots,\n} from '../lockfile.types/index.ts';\nimport {\n  lockfileWalker,\n  type LockfileWalkerStep,\n} from '../lockfile.walker/index.ts';\nimport { logger } from '../logger/index.ts';\nimport type { DependenciesField, DepPath, ProjectId } from '../types/index.ts';\nimport { filterImporter } from './filterImporter.ts';\n\nconst lockfileLogger = logger('lockfile');\n\nexport function filterLockfileByImporters(\n  lockfile: LockfileObject,\n  importerIds: ProjectId[],\n  opts: {\n    include: { [dependenciesField in DependenciesField]: boolean };\n    skipped: Set<DepPath>;\n    failOnMissingDependencies: boolean;\n  }\n): LockfileObject {\n  const packages = {} as PackageSnapshots;\n\n  if (typeof lockfile.packages !== 'undefined') {\n    pkgAllDeps(\n      lockfileWalker(lockfile, importerIds, {\n        include: opts.include,\n        skipped: opts.skipped,\n      }).step,\n      packages,\n      {\n        failOnMissingDependencies: opts.failOnMissingDependencies,\n      }\n    );\n  }\n\n  const importers = { ...lockfile.importers };\n\n  for (const importerId of importerIds) {\n    const importer = lockfile.importers?.[importerId];\n\n    if (typeof importer !== 'undefined') {\n      importers[importerId] = filterImporter(importer, opts.include);\n    }\n  }\n\n  return {\n    ...lockfile,\n    importers,\n    packages,\n  };\n}\n\nfunction pkgAllDeps(\n  step: LockfileWalkerStep,\n  pickedPackages: PackageSnapshots,\n  opts: {\n    failOnMissingDependencies: boolean;\n  }\n): void {\n  for (const { pkgSnapshot, depPath, next } of step.dependencies) {\n    pickedPackages[depPath] = pkgSnapshot;\n    pkgAllDeps(next(), pickedPackages, opts);\n  }\n\n  for (const depPath of step.missing) {\n    if (opts.failOnMissingDependencies) {\n      throw new LockfileMissingDependencyError(depPath);\n    }\n\n    lockfileLogger.debug(`No entry for \"${depPath}\" in ${WANTED_LOCKFILE}`);\n  }\n}\n"],
  "mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,sCAAsC;AAK/C;AAAA,EACE;AAAA,OAEK;AACP,SAAS,cAAc;AAEvB,SAAS,sBAAsB;AAE/B,MAAM,iBAAiB,OAAO,UAAU;AAEjC,SAAS,0BACd,UACA,aACA,MAKgB;AAChB,QAAM,WAAW,CAAC;AAElB,MAAI,OAAO,SAAS,aAAa,aAAa;AAC5C;AAAA,MACE,eAAe,UAAU,aAAa;AAAA,QACpC,SAAS,KAAK;AAAA,QACd,SAAS,KAAK;AAAA,MAChB,CAAC,EAAE;AAAA,MACH;AAAA,MACA;AAAA,QACE,2BAA2B,KAAK;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,EAAE,GAAG,SAAS,UAAU;AAE1C,aAAW,cAAc,aAAa;AACpC,UAAM,WAAW,SAAS,YAAY,UAAU;AAEhD,QAAI,OAAO,aAAa,aAAa;AACnC,gBAAU,UAAU,IAAI,eAAe,UAAU,KAAK,OAAO;AAAA,IAC/D;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,WACP,MACA,gBACA,MAGM;AACN,aAAW,EAAE,aAAa,SAAS,KAAK,KAAK,KAAK,cAAc;AAC9D,mBAAe,OAAO,IAAI;AAC1B,eAAW,KAAK,GAAG,gBAAgB,IAAI;AAAA,EACzC;AAEA,aAAW,WAAW,KAAK,SAAS;AAClC,QAAI,KAAK,2BAA2B;AAClC,YAAM,IAAI,+BAA+B,OAAO;AAAA,IAClD;AAEA,mBAAe,MAAM,iBAAiB,OAAO,QAAQ,eAAe,EAAE;AAAA,EACxE;AACF;",
  "names": []
}
