{
  "version": 3,
  "sources": ["../../../../src/packages/patching.config/groupPatchedDependencies.ts"],
  "sourcesContent": ["import * as dp from '../dependency-path/index.ts';\nimport { PnpmError } from '../error/index.ts';\nimport type {\n  PatchFile,\n  PatchGroup,\n  PatchGroupRecord,\n} from '../patching.types/index.ts';\nimport { validRange } from 'semver';\n\nexport function groupPatchedDependencies(\n  patchedDependencies: Record<string, PatchFile>\n): PatchGroupRecord {\n  const result: PatchGroupRecord = {};\n\n  function getGroup(name: string): PatchGroup {\n    let group: PatchGroup | undefined = result[name];\n\n    if (group) {\n      return group;\n    }\n\n    group = {\n      exact: {},\n      range: [],\n      all: undefined,\n    };\n\n    result[name] = group;\n\n    return group;\n  }\n\n  for (const key in patchedDependencies) {\n    const file = patchedDependencies[key];\n\n    if (typeof file === 'undefined') {\n      continue;\n    }\n\n    const { name, version, nonSemverVersion } = dp.parse(key);\n\n    if (typeof name === 'string' && typeof version === 'string') {\n      getGroup(name).exact[version] = { strict: true, file, key };\n\n      continue;\n    }\n\n    if (typeof name === 'string' && typeof nonSemverVersion !== 'undefined') {\n      if (validRange(nonSemverVersion) === null) {\n        throw new PnpmError(\n          'PATCH_NON_SEMVER_RANGE',\n          `${nonSemverVersion} is not a valid semantic version range.`\n        );\n      }\n\n      if (nonSemverVersion.trim() === '*') {\n        getGroup(name).all = { strict: true, file, key };\n      } else {\n        getGroup(name).range.push({\n          version: nonSemverVersion,\n          patch: { strict: true, file, key },\n        });\n      }\n\n      continue;\n    }\n\n    // Set `strict` to `false` to preserve backward compatibility.\n    getGroup(key).all = { strict: false, file, key };\n  }\n\n  return result;\n}\n"],
  "mappings": "AAAA,YAAY,QAAQ;AACpB,SAAS,iBAAiB;AAM1B,SAAS,kBAAkB;AAEpB,SAAS,yBACd,qBACkB;AAClB,QAAM,SAA2B,CAAC;AAElC,WAAS,SAAS,MAA0B;AAC1C,QAAI,QAAgC,OAAO,IAAI;AAE/C,QAAI,OAAO;AACT,aAAO;AAAA,IACT;AAEA,YAAQ;AAAA,MACN,OAAO,CAAC;AAAA,MACR,OAAO,CAAC;AAAA,MACR,KAAK;AAAA,IACP;AAEA,WAAO,IAAI,IAAI;AAEf,WAAO;AAAA,EACT;AAEA,aAAW,OAAO,qBAAqB;AACrC,UAAM,OAAO,oBAAoB,GAAG;AAEpC,QAAI,OAAO,SAAS,aAAa;AAC/B;AAAA,IACF;AAEA,UAAM,EAAE,MAAM,SAAS,iBAAiB,IAAI,GAAG,MAAM,GAAG;AAExD,QAAI,OAAO,SAAS,YAAY,OAAO,YAAY,UAAU;AAC3D,eAAS,IAAI,EAAE,MAAM,OAAO,IAAI,EAAE,QAAQ,MAAM,MAAM,IAAI;AAE1D;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,YAAY,OAAO,qBAAqB,aAAa;AACvE,UAAI,WAAW,gBAAgB,MAAM,MAAM;AACzC,cAAM,IAAI;AAAA,UACR;AAAA,UACA,GAAG,gBAAgB;AAAA,QACrB;AAAA,MACF;AAEA,UAAI,iBAAiB,KAAK,MAAM,KAAK;AACnC,iBAAS,IAAI,EAAE,MAAM,EAAE,QAAQ,MAAM,MAAM,IAAI;AAAA,MACjD,OAAO;AACL,iBAAS,IAAI,EAAE,MAAM,KAAK;AAAA,UACxB,SAAS;AAAA,UACT,OAAO,EAAE,QAAQ,MAAM,MAAM,IAAI;AAAA,QACnC,CAAC;AAAA,MACH;AAEA;AAAA,IACF;AAGA,aAAS,GAAG,EAAE,MAAM,EAAE,QAAQ,OAAO,MAAM,IAAI;AAAA,EACjD;AAEA,SAAO;AACT;",
  "names": []
}
