{
  "version": 3,
  "sources": ["../../../../src/packages/manifest-utils/updateProjectManifestObject.ts"],
  "sourcesContent": ["import { packageManifestLogger } from '../core-loggers/index.ts';\nimport {\n  type DependenciesOrPeersField,\n  type DependenciesField,\n  DEPENDENCIES_FIELDS,\n  DEPENDENCIES_OR_PEER_FIELDS,\n  type ProjectManifest,\n} from '../types/index.ts';\n\nexport interface PackageSpecObject {\n  alias: string;\n  nodeExecPath?: string | undefined;\n  peer?: boolean | undefined;\n  pref?: string | undefined;\n  saveType?: DependenciesField | undefined;\n}\n\nexport async function updateProjectManifestObject(\n  prefix: string,\n  packageManifest: ProjectManifest,\n  packageSpecs: PackageSpecObject[]\n): Promise<ProjectManifest> {\n  for (const packageSpec of packageSpecs) {\n    if (packageSpec.saveType) {\n      const spec =\n        packageSpec.pref ?? findSpec(packageSpec.alias, packageManifest);\n\n      if (typeof spec === 'string') {\n        packageManifest[packageSpec.saveType] =\n          packageManifest[packageSpec.saveType] ?? {};\n\n        const t = packageManifest[packageSpec.saveType];\n\n        if (typeof t !== 'undefined') {\n          t[packageSpec.alias] = spec;\n        }\n\n        for (const deptype of DEPENDENCIES_FIELDS) {\n          if (deptype !== packageSpec.saveType) {\n            delete packageManifest[deptype]?.[packageSpec.alias];\n          }\n        }\n\n        if (packageSpec.peer === true) {\n          packageManifest.peerDependencies =\n            packageManifest.peerDependencies ?? {};\n          packageManifest.peerDependencies[packageSpec.alias] = spec;\n        }\n      }\n    } else if (typeof packageSpec.pref === 'string') {\n      const usedDepType =\n        guessDependencyType(packageSpec.alias, packageManifest) ??\n        'dependencies';\n\n      if (usedDepType !== 'peerDependencies') {\n        packageManifest[usedDepType] = packageManifest[usedDepType] ?? {};\n\n        packageManifest[usedDepType][packageSpec.alias] = packageSpec.pref;\n      }\n    }\n\n    if (typeof packageSpec.nodeExecPath === 'string') {\n      if (packageManifest.dependenciesMeta == null) {\n        packageManifest.dependenciesMeta = {};\n      }\n\n      packageManifest.dependenciesMeta[packageSpec.alias] = {\n        node: packageSpec.nodeExecPath,\n      };\n    }\n  }\n\n  packageManifestLogger.debug({\n    prefix,\n    updated: packageManifest,\n  });\n  return packageManifest;\n}\n\nfunction findSpec(\n  alias: string,\n  manifest: ProjectManifest\n): string | undefined {\n  const foundDepType = guessDependencyType(alias, manifest);\n\n  return foundDepType && manifest[foundDepType]?.[alias];\n}\n\nexport function guessDependencyType(\n  alias: string,\n  manifest: ProjectManifest\n): DependenciesOrPeersField | undefined {\n  return DEPENDENCIES_OR_PEER_FIELDS.find(\n    (depField: DependenciesOrPeersField) => {\n      return (\n        manifest[depField]?.[alias] === '' ||\n        Boolean(manifest[depField]?.[alias])\n      );\n    }\n  );\n}\n"],
  "mappings": "AAAA,SAAS,6BAA6B;AACtC;AAAA,EAGE;AAAA,EACA;AAAA,OAEK;AAUP,eAAsB,4BACpB,QACA,iBACA,cAC0B;AAC1B,aAAW,eAAe,cAAc;AACtC,QAAI,YAAY,UAAU;AACxB,YAAM,OACJ,YAAY,QAAQ,SAAS,YAAY,OAAO,eAAe;AAEjE,UAAI,OAAO,SAAS,UAAU;AAC5B,wBAAgB,YAAY,QAAQ,IAClC,gBAAgB,YAAY,QAAQ,KAAK,CAAC;AAE5C,cAAM,IAAI,gBAAgB,YAAY,QAAQ;AAE9C,YAAI,OAAO,MAAM,aAAa;AAC5B,YAAE,YAAY,KAAK,IAAI;AAAA,QACzB;AAEA,mBAAW,WAAW,qBAAqB;AACzC,cAAI,YAAY,YAAY,UAAU;AACpC,mBAAO,gBAAgB,OAAO,IAAI,YAAY,KAAK;AAAA,UACrD;AAAA,QACF;AAEA,YAAI,YAAY,SAAS,MAAM;AAC7B,0BAAgB,mBACd,gBAAgB,oBAAoB,CAAC;AACvC,0BAAgB,iBAAiB,YAAY,KAAK,IAAI;AAAA,QACxD;AAAA,MACF;AAAA,IACF,WAAW,OAAO,YAAY,SAAS,UAAU;AAC/C,YAAM,cACJ,oBAAoB,YAAY,OAAO,eAAe,KACtD;AAEF,UAAI,gBAAgB,oBAAoB;AACtC,wBAAgB,WAAW,IAAI,gBAAgB,WAAW,KAAK,CAAC;AAEhE,wBAAgB,WAAW,EAAE,YAAY,KAAK,IAAI,YAAY;AAAA,MAChE;AAAA,IACF;AAEA,QAAI,OAAO,YAAY,iBAAiB,UAAU;AAChD,UAAI,gBAAgB,oBAAoB,MAAM;AAC5C,wBAAgB,mBAAmB,CAAC;AAAA,MACtC;AAEA,sBAAgB,iBAAiB,YAAY,KAAK,IAAI;AAAA,QACpD,MAAM,YAAY;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAEA,wBAAsB,MAAM;AAAA,IAC1B;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AACD,SAAO;AACT;AAEA,SAAS,SACP,OACA,UACoB;AACpB,QAAM,eAAe,oBAAoB,OAAO,QAAQ;AAExD,SAAO,gBAAgB,SAAS,YAAY,IAAI,KAAK;AACvD;AAEO,SAAS,oBACd,OACA,UACsC;AACtC,SAAO,4BAA4B;AAAA,IACjC,CAAC,aAAuC;AACtC,aACE,SAAS,QAAQ,IAAI,KAAK,MAAM,MAChC,QAAQ,SAAS,QAAQ,IAAI,KAAK,CAAC;AAAA,IAEvC;AAAA,EACF;AACF;",
  "names": []
}
