{
  "version": 3,
  "sources": ["../../../../src/packages/read-projects-context/index.ts"],
  "sourcesContent": ["import { promises as fs } from 'node:fs';\nimport util from 'node:util';\nimport path from 'node:path';\n// import { getLockfileImporterId } from '../lockfile.fs/index.ts';\nimport { type Modules, readModulesManifest } from '../modules-yaml/index.ts';\nimport { normalizeRegistries } from '../normalize-registries/index.ts';\nimport type {\n  DepPath,\n  DependenciesField,\n  HoistedDependencies,\n  Registries,\n  ProjectRootDir,\n  ProjectRootDirRealPath,\n  ProjectId,\n  ModulesDir,\n  GlobalPkgDir,\n  LockFileDir,\n  WorkspaceDir,\n} from '../types/index.ts';\nimport realpathMissing from 'realpath-missing';\nimport type { HookOptions, ProjectOptions } from '../get-context/index.ts';\nimport { getLockfileImporterId } from '../lockfile.fs/index.ts';\n\nexport async function readProjectsContext(\n  projects: Array<ProjectOptions & HookOptions & { binsDir: string }>,\n  opts: {\n    lockfileDir?: LockFileDir | undefined;\n    modulesDir: string;\n  }\n): Promise<{\n  currentHoistPattern?: string[] | undefined;\n  currentPublicHoistPattern?: string[] | undefined;\n  hoist?: boolean | undefined;\n  hoistedDependencies: HoistedDependencies;\n  projects: Array<ProjectOptions & HookOptions & { binsDir: string }>;\n  include: Record<DependenciesField, boolean>;\n  modules: Modules | null;\n  pendingBuilds: string[];\n  registries: Registries | null | undefined;\n  rootModulesDir: ModulesDir;\n  skipped: Set<DepPath>;\n  virtualStoreDirMaxLength?: number | undefined;\n}> {\n  const relativeModulesDir = opts.modulesDir || 'node_modules';\n\n  const rootModulesDir: ModulesDir = (await realpathMissing(\n    path.join(opts.lockfileDir ?? '', relativeModulesDir)\n  )) as ModulesDir;\n\n  const modules = await readModulesManifest(rootModulesDir);\n\n  return {\n    currentHoistPattern: modules?.hoistPattern,\n    currentPublicHoistPattern: modules?.publicHoistPattern,\n    hoist: modules == null ? undefined : Boolean(modules.hoistPattern),\n    hoistedDependencies: modules?.hoistedDependencies ?? {},\n    include: modules?.included ?? {\n      dependencies: true,\n      devDependencies: true,\n      optionalDependencies: true,\n    },\n    modules,\n    pendingBuilds: modules?.pendingBuilds ?? [],\n    projects: await Promise.all(\n      projects.map(\n        async (\n          project: ProjectOptions & HookOptions & { binsDir: string }\n        ): Promise<\n          ProjectOptions &\n            HookOptions & {\n              binsDir: string;\n              id: ProjectId;\n            }\n        > => {\n          const modulesDir: ModulesDir = (await realpathMissing(\n            // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n            path.join(project.rootDir, project.modulesDir ?? relativeModulesDir)\n          )) as ModulesDir;\n\n          const importerId = getLockfileImporterId(\n            opts.lockfileDir ?? '',\n            project.rootDir\n          );\n\n          return {\n            ...project,\n            binsDir:\n              project.binsDir ||\n              path.join(project.rootDir, relativeModulesDir, '.bin'),\n            id: importerId,\n            modulesDir,\n            rootDirRealPath:\n              typeof project.rootDirRealPath === 'string'\n                ? project.rootDirRealPath\n                : await realpath(project.rootDir),\n          };\n        }\n      )\n    ),\n    registries:\n      modules?.registries != null\n        ? normalizeRegistries(modules.registries)\n        : undefined,\n    rootModulesDir,\n    skipped: new Set((modules?.skipped ?? []) as DepPath[]),\n    virtualStoreDirMaxLength: modules?.virtualStoreDirMaxLength,\n  };\n}\n\nasync function realpath(\n  path:\n    | ProjectRootDir\n    | ProjectRootDirRealPath\n    | GlobalPkgDir\n    | WorkspaceDir\n    | LockFileDir\n): Promise<ProjectRootDirRealPath> {\n  try {\n    return (await fs.realpath(path)) as ProjectRootDirRealPath;\n  } catch (err: unknown) {\n    if (\n      util.types.isNativeError(err) &&\n      'code' in err &&\n      err.code === 'ENOENT'\n    ) {\n      return path as unknown as ProjectRootDirRealPath;\n    }\n    throw err;\n  }\n}\n"],
  "mappings": "AAAA,SAAS,YAAY,UAAU;AAC/B,OAAO,UAAU;AACjB,OAAO,UAAU;AAEjB,SAAuB,2BAA2B;AAClD,SAAS,2BAA2B;AAcpC,OAAO,qBAAqB;AAE5B,SAAS,6BAA6B;AAEtC,eAAsB,oBACpB,UACA,MAiBC;AACD,QAAM,qBAAqB,KAAK,cAAc;AAE9C,QAAM,iBAA8B,MAAM;AAAA,IACxC,KAAK,KAAK,KAAK,eAAe,IAAI,kBAAkB;AAAA,EACtD;AAEA,QAAM,UAAU,MAAM,oBAAoB,cAAc;AAExD,SAAO;AAAA,IACL,qBAAqB,SAAS;AAAA,IAC9B,2BAA2B,SAAS;AAAA,IACpC,OAAO,WAAW,OAAO,SAAY,QAAQ,QAAQ,YAAY;AAAA,IACjE,qBAAqB,SAAS,uBAAuB,CAAC;AAAA,IACtD,SAAS,SAAS,YAAY;AAAA,MAC5B,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,IACxB;AAAA,IACA;AAAA,IACA,eAAe,SAAS,iBAAiB,CAAC;AAAA,IAC1C,UAAU,MAAM,QAAQ;AAAA,MACtB,SAAS;AAAA,QACP,OACE,YAOG;AACH,gBAAM,aAA0B,MAAM;AAAA;AAAA,YAEpC,KAAK,KAAK,QAAQ,SAAS,QAAQ,cAAc,kBAAkB;AAAA,UACrE;AAEA,gBAAM,aAAa;AAAA,YACjB,KAAK,eAAe;AAAA,YACpB,QAAQ;AAAA,UACV;AAEA,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,SACE,QAAQ,WACR,KAAK,KAAK,QAAQ,SAAS,oBAAoB,MAAM;AAAA,YACvD,IAAI;AAAA,YACJ;AAAA,YACA,iBACE,OAAO,QAAQ,oBAAoB,WAC/B,QAAQ,kBACR,MAAM,SAAS,QAAQ,OAAO;AAAA,UACtC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,YACE,SAAS,cAAc,OACnB,oBAAoB,QAAQ,UAAU,IACtC;AAAA,IACN;AAAA,IACA,SAAS,IAAI,IAAK,SAAS,WAAW,CAAC,CAAe;AAAA,IACtD,0BAA0B,SAAS;AAAA,EACrC;AACF;AAEA,eAAe,SACbA,OAMiC;AACjC,MAAI;AACF,WAAQ,MAAM,GAAG,SAASA,KAAI;AAAA,EAChC,SAAS,KAAc;AACrB,QACE,KAAK,MAAM,cAAc,GAAG,KAC5B,UAAU,OACV,IAAI,SAAS,UACb;AACA,aAAOA;AAAA,IACT;AACA,UAAM;AAAA,EACR;AACF;",
  "names": ["path"]
}
