{
  "version": 3,
  "sources": ["../../../../src/packages/resolve-dependencies/getWantedDependencies.ts"],
  "sourcesContent": ["import { filterDependenciesByType } from '../manifest-utils/index.ts';\nimport type {\n  Dependencies,\n  DependenciesMeta,\n  IncludedDependencies,\n  ProjectManifest,\n} from '../types/index.ts';\nimport { whichVersionIsPinned } from '../which-version-is-pinned/index.ts';\nimport { WorkspaceSpec } from '../workspace.spec-parser/index.ts';\n\nexport type PinnedVersion = 'major' | 'minor' | 'patch' | 'none';\n\nexport type WantedDependency = {\n  alias?: string | undefined;\n  pref?: string | undefined; // package reference\n  dev?: boolean | undefined;\n  optional?: boolean | undefined;\n  raw?: string | undefined;\n  pinnedVersion?: PinnedVersion | undefined;\n  nodeExecPath?: string | undefined;\n  updateSpec?: boolean | undefined;\n};\n\nexport function getWantedDependencies(\n  pkg: ProjectManifest,\n  opts?:\n    | {\n        autoInstallPeers?: boolean | undefined;\n        includeDirect?: IncludedDependencies | undefined;\n        nodeExecPath?: string | undefined;\n        updateWorkspaceDependencies?: boolean | undefined;\n      }\n    | undefined\n): WantedDependency[] {\n  let depsToInstall = filterDependenciesByType(\n    pkg,\n    opts?.includeDirect ?? {\n      dependencies: true,\n      devDependencies: true,\n      optionalDependencies: true,\n    }\n  );\n\n  if (opts?.autoInstallPeers === true) {\n    depsToInstall = {\n      ...pkg.peerDependencies,\n      ...depsToInstall,\n    };\n  }\n\n  return getWantedDependenciesFromGivenSet(depsToInstall, {\n    dependencies: pkg.dependencies ?? {},\n    devDependencies: pkg.devDependencies ?? {},\n    optionalDependencies: pkg.optionalDependencies ?? {},\n    dependenciesMeta: pkg.dependenciesMeta ?? {},\n    peerDependencies: pkg.peerDependencies ?? {},\n    updatePref:\n      opts?.updateWorkspaceDependencies === true\n        ? updateWorkspacePref\n        : (pref) => pref,\n  });\n}\n\nfunction updateWorkspacePref(pref: string): string {\n  const spec = WorkspaceSpec.parse(pref);\n\n  if (!spec) {\n    return pref;\n  }\n\n  spec.version = '*';\n\n  return spec.toString();\n}\n\nfunction getWantedDependenciesFromGivenSet(\n  deps: Dependencies,\n  opts: {\n    dependencies: Dependencies;\n    devDependencies: Dependencies;\n    optionalDependencies: Dependencies;\n    peerDependencies: Dependencies;\n    dependenciesMeta: DependenciesMeta;\n    nodeExecPath?: string;\n    updatePref: (pref: string) => string;\n  }\n): WantedDependency[] {\n  if (typeof deps === 'undefined') {\n    return [];\n  }\n\n  return Object.entries(deps).map(\n    ([alias, pref]: [string, string]): WantedDependency & {\n      injected: boolean;\n    } => {\n      const updatedPref = opts.updatePref(pref);\n\n      let depType: 'optional' | 'prod' | 'dev' | undefined;\n\n      if (opts.optionalDependencies[alias] != null) {\n        depType = 'optional';\n      } else if (opts.dependencies[alias] != null) {\n        depType = 'prod';\n      } else if (opts.devDependencies[alias] != null) {\n        depType = 'dev';\n      } else if (opts.peerDependencies[alias] != null) {\n        depType = 'prod';\n      }\n\n      return {\n        alias,\n        dev: depType === 'dev',\n        injected: opts.dependenciesMeta[alias]?.injected ?? false,\n        optional: depType === 'optional',\n        nodeExecPath: opts.nodeExecPath ?? opts.dependenciesMeta[alias]?.node,\n        pinnedVersion: whichVersionIsPinned(pref),\n        pref: updatedPref,\n        raw: `${alias}@${pref}`,\n      };\n    }\n  );\n}\n"],
  "mappings": "AAAA,SAAS,gCAAgC;AAOzC,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAevB,SAAS,sBACd,KACA,MAQoB;AACpB,MAAI,gBAAgB;AAAA,IAClB;AAAA,IACA,MAAM,iBAAiB;AAAA,MACrB,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,IACxB;AAAA,EACF;AAEA,MAAI,MAAM,qBAAqB,MAAM;AACnC,oBAAgB;AAAA,MACd,GAAG,IAAI;AAAA,MACP,GAAG;AAAA,IACL;AAAA,EACF;AAEA,SAAO,kCAAkC,eAAe;AAAA,IACtD,cAAc,IAAI,gBAAgB,CAAC;AAAA,IACnC,iBAAiB,IAAI,mBAAmB,CAAC;AAAA,IACzC,sBAAsB,IAAI,wBAAwB,CAAC;AAAA,IACnD,kBAAkB,IAAI,oBAAoB,CAAC;AAAA,IAC3C,kBAAkB,IAAI,oBAAoB,CAAC;AAAA,IAC3C,YACE,MAAM,gCAAgC,OAClC,sBACA,CAAC,SAAS;AAAA,EAClB,CAAC;AACH;AAEA,SAAS,oBAAoB,MAAsB;AACjD,QAAM,OAAO,cAAc,MAAM,IAAI;AAErC,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,OAAK,UAAU;AAEf,SAAO,KAAK,SAAS;AACvB;AAEA,SAAS,kCACP,MACA,MASoB;AACpB,MAAI,OAAO,SAAS,aAAa;AAC/B,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,OAAO,QAAQ,IAAI,EAAE;AAAA,IAC1B,CAAC,CAAC,OAAO,IAAI,MAER;AACH,YAAM,cAAc,KAAK,WAAW,IAAI;AAExC,UAAI;AAEJ,UAAI,KAAK,qBAAqB,KAAK,KAAK,MAAM;AAC5C,kBAAU;AAAA,MACZ,WAAW,KAAK,aAAa,KAAK,KAAK,MAAM;AAC3C,kBAAU;AAAA,MACZ,WAAW,KAAK,gBAAgB,KAAK,KAAK,MAAM;AAC9C,kBAAU;AAAA,MACZ,WAAW,KAAK,iBAAiB,KAAK,KAAK,MAAM;AAC/C,kBAAU;AAAA,MACZ;AAEA,aAAO;AAAA,QACL;AAAA,QACA,KAAK,YAAY;AAAA,QACjB,UAAU,KAAK,iBAAiB,KAAK,GAAG,YAAY;AAAA,QACpD,UAAU,YAAY;AAAA,QACtB,cAAc,KAAK,gBAAgB,KAAK,iBAAiB,KAAK,GAAG;AAAA,QACjE,eAAe,qBAAqB,IAAI;AAAA,QACxC,MAAM;AAAA,QACN,KAAK,GAAG,KAAK,IAAI,IAAI;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACF;",
  "names": []
}
