{
  "version": 3,
  "sources": ["../../../../../src/packages/plugin-commands-installation/import/yarnUtil.ts"],
  "sourcesContent": ["/**\n * https://github.com/snyk/nodejs-lockfile-parser/blob/master/lib/parsers/yarn-utils.ts\n */\nimport type { structUtils } from '@yarnpkg/core';\n\nconst BUILTIN_PLACEHOLDER = 'builtin';\nconst MULTIPLE_KEYS_REGEXP = / *, */;\n\nexport type ParseDescriptor = typeof structUtils.parseDescriptor;\nexport type ParseRange = typeof structUtils.parseRange;\n\nconst keyNormalizer =\n  (parseDescriptor: ParseDescriptor, parseRange: ParseRange) =>\n  (rawDescriptor: string): string[] => {\n    // See https://yarnpkg.com/features/protocols\n    const descriptors: string[] = [rawDescriptor];\n\n    const descriptor = parseDescriptor(rawDescriptor);\n\n    const name = `${descriptor.scope !== null ? `@${descriptor.scope}/` : ''}${\n      descriptor.name\n    }`;\n\n    const range = parseRange(descriptor.range);\n\n    const protocol = range.protocol;\n\n    switch (protocol) {\n      case 'npm:':\n      case 'file:': {\n        descriptors.push(`${name}@${range.selector}`);\n\n        descriptors.push(`${name}@${protocol}${range.selector}`);\n\n        break;\n      }\n\n      case 'git:':\n      case 'git+ssh:':\n      case 'git+http:':\n      case 'git+https:':\n      case 'github:': {\n        if (range.source === null) {\n          descriptors.push(`${name}@${protocol}${range.selector}`);\n        } else {\n          descriptors.push(\n            `${name}@${protocol}${range.source}${\n              range.selector ? `#${range.selector}` : ''\n            }`\n          );\n        }\n\n        break;\n      }\n\n      case 'patch:': {\n        if (\n          range.source !== null &&\n          range.selector.indexOf(BUILTIN_PLACEHOLDER) === 0\n        ) {\n          descriptors.push(range.source);\n        } else {\n          descriptors.push(\n            `${name}@${protocol}${range.source}${\n              range.selector ? `#${range.selector}` : ''\n            }`\n          );\n        }\n\n        break;\n      }\n\n      case null:\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      case undefined: {\n        if (range.source === null) {\n          descriptors.push(`${name}@${range.selector}`);\n        } else {\n          descriptors.push(`${name}@${range.source}#${range.selector}`);\n        }\n\n        break;\n      }\n\n      case 'http:':\n      case 'https:':\n      case 'link:':\n      case 'portal:':\n      case 'exec:':\n      case 'workspace:':\n      case 'virtual:':\n      default: {\n        // For user defined plugins\n        descriptors.push(`${name}@${protocol}${range.selector}`);\n\n        break;\n      }\n    }\n\n    return descriptors;\n  };\n\nexport type YarnLockFileKeyNormalizer = (fullDescriptor: string) => Set<string>;\n\nexport const yarnLockFileKeyNormalizer =\n  (\n    parseDescriptor: ParseDescriptor,\n    parseRange: ParseRange\n  ): YarnLockFileKeyNormalizer =>\n  (fullDescriptor: string) => {\n    const allKeys = fullDescriptor\n      .split(MULTIPLE_KEYS_REGEXP)\n      .map(keyNormalizer(parseDescriptor, parseRange));\n    return new Set<string>(allKeys.flat(5));\n  };\n"],
  "mappings": "AAKA,MAAM,sBAAsB;AAC5B,MAAM,uBAAuB;AAK7B,MAAM,gBACJ,CAAC,iBAAkC,eACnC,CAAC,kBAAoC;AAEnC,QAAM,cAAwB,CAAC,aAAa;AAE5C,QAAM,aAAa,gBAAgB,aAAa;AAEhD,QAAM,OAAO,GAAG,WAAW,UAAU,OAAO,IAAI,WAAW,KAAK,MAAM,EAAE,GACtE,WAAW,IACb;AAEA,QAAM,QAAQ,WAAW,WAAW,KAAK;AAEzC,QAAM,WAAW,MAAM;AAEvB,UAAQ,UAAU;AAAA,IAChB,KAAK;AAAA,IACL,KAAK,SAAS;AACZ,kBAAY,KAAK,GAAG,IAAI,IAAI,MAAM,QAAQ,EAAE;AAE5C,kBAAY,KAAK,GAAG,IAAI,IAAI,QAAQ,GAAG,MAAM,QAAQ,EAAE;AAEvD;AAAA,IACF;AAAA,IAEA,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,WAAW;AACd,UAAI,MAAM,WAAW,MAAM;AACzB,oBAAY,KAAK,GAAG,IAAI,IAAI,QAAQ,GAAG,MAAM,QAAQ,EAAE;AAAA,MACzD,OAAO;AACL,oBAAY;AAAA,UACV,GAAG,IAAI,IAAI,QAAQ,GAAG,MAAM,MAAM,GAChC,MAAM,WAAW,IAAI,MAAM,QAAQ,KAAK,EAC1C;AAAA,QACF;AAAA,MACF;AAEA;AAAA,IACF;AAAA,IAEA,KAAK,UAAU;AACb,UACE,MAAM,WAAW,QACjB,MAAM,SAAS,QAAQ,mBAAmB,MAAM,GAChD;AACA,oBAAY,KAAK,MAAM,MAAM;AAAA,MAC/B,OAAO;AACL,oBAAY;AAAA,UACV,GAAG,IAAI,IAAI,QAAQ,GAAG,MAAM,MAAM,GAChC,MAAM,WAAW,IAAI,MAAM,QAAQ,KAAK,EAC1C;AAAA,QACF;AAAA,MACF;AAEA;AAAA,IACF;AAAA,IAEA,KAAK;AAAA;AAAA,IAEL,KAAK,QAAW;AACd,UAAI,MAAM,WAAW,MAAM;AACzB,oBAAY,KAAK,GAAG,IAAI,IAAI,MAAM,QAAQ,EAAE;AAAA,MAC9C,OAAO;AACL,oBAAY,KAAK,GAAG,IAAI,IAAI,MAAM,MAAM,IAAI,MAAM,QAAQ,EAAE;AAAA,MAC9D;AAEA;AAAA,IACF;AAAA,IAEA,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,SAAS;AAEP,kBAAY,KAAK,GAAG,IAAI,IAAI,QAAQ,GAAG,MAAM,QAAQ,EAAE;AAEvD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAIK,MAAM,4BACX,CACE,iBACA,eAEF,CAAC,mBAA2B;AAC1B,QAAM,UAAU,eACb,MAAM,oBAAoB,EAC1B,IAAI,cAAc,iBAAiB,UAAU,CAAC;AACjD,SAAO,IAAI,IAAY,QAAQ,KAAK,CAAC,CAAC;AACxC;",
  "names": []
}
