{
  "version": 3,
  "sources": ["../../../../src/packages/lockfile.verification/allProjectsAreUpToDate.ts"],
  "sourcesContent": ["import type { Catalogs } from '../catalogs.types/index.ts';\nimport type { ProjectOptions } from '../get-context/index.ts';\nimport type { LockfileObject } from '../lockfile.types/index.ts';\nimport type { WorkspacePackages } from '../resolver-base/index.ts';\nimport {\n  DEPENDENCIES_FIELDS,\n  type DependenciesField,\n  type ProjectId,\n} from '../types/index.ts';\nimport pEvery from 'p-every';\nimport isEmpty from 'ramda/src/isEmpty';\nimport { allCatalogsAreUpToDate } from './allCatalogsAreUpToDate.ts';\nimport { getWorkspacePackagesByDirectory } from './getWorkspacePackagesByDirectory.ts';\nimport { linkedPackagesAreUpToDate } from './linkedPackagesAreUpToDate.ts';\nimport { satisfiesPackageManifest } from './satisfiesPackageManifest.ts';\nimport { localTarballDepsAreUpToDate } from './localTarballDepsAreUpToDate.ts';\n\nexport async function allProjectsAreUpToDate(\n  projects: Array<\n    Pick<ProjectOptions, 'manifest' | 'rootDir'> & { id: ProjectId }\n  >,\n  opts: {\n    catalogs: Catalogs;\n    autoInstallPeers: boolean;\n    excludeLinksFromLockfile: boolean;\n    linkWorkspacePackages: boolean;\n    wantedLockfile: LockfileObject;\n    workspacePackages: WorkspacePackages;\n    lockfileDir: string;\n  }\n): Promise<boolean> {\n  // Projects may declare dependencies using catalog protocol specifiers. If the\n  // catalog config definitions are edited by users, projects using them are out\n  // of date.\n  if (!allCatalogsAreUpToDate(opts.catalogs, opts.wantedLockfile.catalogs)) {\n    return false;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions, @typescript-eslint/no-unnecessary-condition\n  const manifestsByDir = opts.workspacePackages\n    ? getWorkspacePackagesByDirectory(opts.workspacePackages)\n    : {};\n\n  const _satisfiesPackageManifest = satisfiesPackageManifest.bind(null, {\n    autoInstallPeers: opts.autoInstallPeers,\n    excludeLinksFromLockfile: opts.excludeLinksFromLockfile,\n  });\n\n  const _linkedPackagesAreUpToDate = linkedPackagesAreUpToDate.bind(null, {\n    linkWorkspacePackages: opts.linkWorkspacePackages,\n    manifestsByDir,\n    workspacePackages: opts.workspacePackages,\n    lockfilePackages: opts.wantedLockfile.packages,\n    lockfileDir: opts.lockfileDir,\n  });\n\n  const _localTarballDepsAreUpToDate = localTarballDepsAreUpToDate.bind(null, {\n    fileIntegrityCache: new Map<string, Promise<string>>(),\n    lockfilePackages: opts.wantedLockfile.packages,\n    lockfileDir: opts.lockfileDir,\n  });\n\n  return pEvery.default(\n    projects,\n    async (\n      project: Pick<ProjectOptions, 'manifest' | 'rootDir'> & {\n        id: ProjectId;\n      }\n    ): Promise<boolean> => {\n      const importer = opts.wantedLockfile.importers?.[project.id];\n\n      if (importer == null) {\n        return DEPENDENCIES_FIELDS.every(\n          (depType: DependenciesField): boolean => {\n            return (\n              typeof project.manifest?.[depType] === 'undefined' ||\n              isEmpty.default(project.manifest[depType])\n            );\n          }\n        );\n      }\n\n      const projectInfo = {\n        dir: project.rootDir,\n        manifest: project.manifest,\n        snapshot: importer,\n      };\n\n      return (\n        typeof importer !== 'undefined' &&\n        typeof project.manifest !== 'undefined' &&\n        _satisfiesPackageManifest(importer, project.manifest).satisfies &&\n        (await _localTarballDepsAreUpToDate(projectInfo)) &&\n        _linkedPackagesAreUpToDate(projectInfo)\n      );\n    }\n  );\n}\n"],
  "mappings": "AAIA;AAAA,EACE;AAAA,OAGK;AACP,OAAO,YAAY;AACnB,OAAO,aAAa;AACpB,SAAS,8BAA8B;AACvC,SAAS,uCAAuC;AAChD,SAAS,iCAAiC;AAC1C,SAAS,gCAAgC;AACzC,SAAS,mCAAmC;AAE5C,eAAsB,uBACpB,UAGA,MASkB;AAIlB,MAAI,CAAC,uBAAuB,KAAK,UAAU,KAAK,eAAe,QAAQ,GAAG;AACxE,WAAO;AAAA,EACT;AAGA,QAAM,iBAAiB,KAAK,oBACxB,gCAAgC,KAAK,iBAAiB,IACtD,CAAC;AAEL,QAAM,4BAA4B,yBAAyB,KAAK,MAAM;AAAA,IACpE,kBAAkB,KAAK;AAAA,IACvB,0BAA0B,KAAK;AAAA,EACjC,CAAC;AAED,QAAM,6BAA6B,0BAA0B,KAAK,MAAM;AAAA,IACtE,uBAAuB,KAAK;AAAA,IAC5B;AAAA,IACA,mBAAmB,KAAK;AAAA,IACxB,kBAAkB,KAAK,eAAe;AAAA,IACtC,aAAa,KAAK;AAAA,EACpB,CAAC;AAED,QAAM,+BAA+B,4BAA4B,KAAK,MAAM;AAAA,IAC1E,oBAAoB,oBAAI,IAA6B;AAAA,IACrD,kBAAkB,KAAK,eAAe;AAAA,IACtC,aAAa,KAAK;AAAA,EACpB,CAAC;AAED,SAAO,OAAO;AAAA,IACZ;AAAA,IACA,OACE,YAGqB;AACrB,YAAM,WAAW,KAAK,eAAe,YAAY,QAAQ,EAAE;AAE3D,UAAI,YAAY,MAAM;AACpB,eAAO,oBAAoB;AAAA,UACzB,CAAC,YAAwC;AACvC,mBACE,OAAO,QAAQ,WAAW,OAAO,MAAM,eACvC,QAAQ,QAAQ,QAAQ,SAAS,OAAO,CAAC;AAAA,UAE7C;AAAA,QACF;AAAA,MACF;AAEA,YAAM,cAAc;AAAA,QAClB,KAAK,QAAQ;AAAA,QACb,UAAU,QAAQ;AAAA,QAClB,UAAU;AAAA,MACZ;AAEA,aACE,OAAO,aAAa,eACpB,OAAO,QAAQ,aAAa,eAC5B,0BAA0B,UAAU,QAAQ,QAAQ,EAAE,aACrD,MAAM,6BAA6B,WAAW,KAC/C,2BAA2B,WAAW;AAAA,IAE1C;AAAA,EACF;AACF;",
  "names": []
}
