{
  "version": 3,
  "sources": ["../../../../src/packages/parse-overrides/index.ts"],
  "sourcesContent": ["import { PnpmError } from '../error/index.ts';\nimport { parseWantedDependency } from '../parse-wanted-dependency/index.ts';\nimport {\n  matchCatalogResolveResult,\n  resolveFromCatalog,\n  type CatalogResolutionFound,\n  type CatalogResolutionMisconfiguration,\n} from '../catalogs.resolver/index.ts';\nimport type { Catalogs } from '../catalogs.types/index.ts';\n\n// eslint-disable-next-line optimize-regex/optimize-regex\nconst DELIMITER_REGEX = /[^ |@]>/;\n\nexport type VersionOverride = {\n  selector?: string | undefined;\n  parentPkg: PackageSelector;\n  targetPkg: PackageSelector;\n  newPref: string;\n};\n\nexport type PackageSelector = {\n  name: string;\n  pref?: string | undefined;\n};\n\nexport function parseOverrides(\n  overrides: Record<string, string>,\n  catalogs?: Catalogs | undefined\n): Array<\n  | {\n      parentPkg: PackageSelector;\n      targetPkg: PackageSelector;\n      selector: string;\n      newPref: string;\n    }\n  | {\n      targetPkg: PackageSelector;\n      selector: string;\n      newPref: string;\n    }\n> {\n  const _resolveFromCatalog = resolveFromCatalog.bind(null, catalogs ?? {});\n\n  return Object.entries(overrides).map(\n    ([selector, newPref]: [string, string]):\n      | {\n          parentPkg: PackageSelector;\n          targetPkg: PackageSelector;\n          selector: string;\n          newPref: string;\n        }\n      | {\n          targetPkg: PackageSelector;\n          selector: string;\n          newPref: string;\n        } => {\n      const result = parsePkgAndParentSelector(selector);\n\n      const resolvedCatalog = matchCatalogResolveResult(\n        _resolveFromCatalog({\n          pref: newPref,\n          alias: result.targetPkg.name,\n        }),\n        {\n          found: ({ resolution }: CatalogResolutionFound): string => {\n            return resolution.specifier;\n          },\n          unused: () => {\n            return undefined;\n          },\n          misconfiguration: ({\n            error,\n          }: CatalogResolutionMisconfiguration): never => {\n            throw new PnpmError(\n              'CATALOG_IN_OVERRIDES',\n              `Could not resolve a catalog in the overrides: ${error.message}`\n            );\n          },\n        }\n      );\n\n      return {\n        selector,\n        newPref: resolvedCatalog ?? newPref,\n        ...result,\n      };\n    }\n  );\n}\n\nexport function parsePkgAndParentSelector(selector: string):\n  | {\n      parentPkg: PackageSelector;\n      targetPkg: PackageSelector;\n    }\n  | {\n      targetPkg: PackageSelector;\n    } {\n  let delimiterIndex = selector.search(DELIMITER_REGEX);\n\n  if (delimiterIndex !== -1) {\n    delimiterIndex++;\n\n    const parentSelector = selector.substring(0, delimiterIndex);\n\n    const childSelector = selector.substring(delimiterIndex + 1);\n\n    return {\n      parentPkg: parsePkgSelector(parentSelector),\n      targetPkg: parsePkgSelector(childSelector),\n    };\n  }\n\n  return {\n    targetPkg: parsePkgSelector(selector),\n  };\n}\n\nfunction parsePkgSelector(selector: string): PackageSelector {\n  const wantedDep = parseWantedDependency(selector);\n\n  if (typeof wantedDep.alias === 'undefined') {\n    throw new PnpmError(\n      'INVALID_SELECTOR',\n      `Cannot parse the \"${selector}\" selector`\n    );\n  }\n\n  return {\n    name: wantedDep.alias,\n    pref: wantedDep.pref,\n  };\n}\n"],
  "mappings": "AAAA,SAAS,iBAAiB;AAC1B,SAAS,6BAA6B;AACtC;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAIP,MAAM,kBAAkB;AAcjB,SAAS,eACd,WACA,UAaA;AACA,QAAM,sBAAsB,mBAAmB,KAAK,MAAM,YAAY,CAAC,CAAC;AAExE,SAAO,OAAO,QAAQ,SAAS,EAAE;AAAA,IAC/B,CAAC,CAAC,UAAU,OAAO,MAWV;AACP,YAAM,SAAS,0BAA0B,QAAQ;AAEjD,YAAM,kBAAkB;AAAA,QACtB,oBAAoB;AAAA,UAClB,MAAM;AAAA,UACN,OAAO,OAAO,UAAU;AAAA,QAC1B,CAAC;AAAA,QACD;AAAA,UACE,OAAO,CAAC,EAAE,WAAW,MAAsC;AACzD,mBAAO,WAAW;AAAA,UACpB;AAAA,UACA,QAAQ,MAAM;AACZ,mBAAO;AAAA,UACT;AAAA,UACA,kBAAkB,CAAC;AAAA,YACjB;AAAA,UACF,MAAgD;AAC9C,kBAAM,IAAI;AAAA,cACR;AAAA,cACA,iDAAiD,MAAM,OAAO;AAAA,YAChE;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACL;AAAA,QACA,SAAS,mBAAmB;AAAA,QAC5B,GAAG;AAAA,MACL;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,0BAA0B,UAOpC;AACJ,MAAI,iBAAiB,SAAS,OAAO,eAAe;AAEpD,MAAI,mBAAmB,IAAI;AACzB;AAEA,UAAM,iBAAiB,SAAS,UAAU,GAAG,cAAc;AAE3D,UAAM,gBAAgB,SAAS,UAAU,iBAAiB,CAAC;AAE3D,WAAO;AAAA,MACL,WAAW,iBAAiB,cAAc;AAAA,MAC1C,WAAW,iBAAiB,aAAa;AAAA,IAC3C;AAAA,EACF;AAEA,SAAO;AAAA,IACL,WAAW,iBAAiB,QAAQ;AAAA,EACtC;AACF;AAEA,SAAS,iBAAiB,UAAmC;AAC3D,QAAM,YAAY,sBAAsB,QAAQ;AAEhD,MAAI,OAAO,UAAU,UAAU,aAAa;AAC1C,UAAM,IAAI;AAAA,MACR;AAAA,MACA,qBAAqB,QAAQ;AAAA,IAC/B;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,UAAU;AAAA,IAChB,MAAM,UAAU;AAAA,EAClB;AACF;",
  "names": []
}
