{"version":3,"file":"repository.mjs","names":[],"sources":["../../src/core/repository.ts"],"sourcesContent":["type PrefixReplacement = readonly [prefix: string, replacement: string];\n\nconst REPOSITORY_SHORTHANDS: readonly PrefixReplacement[] = [\n  [\"github:\", \"https://github.com/\"],\n  [\"gitlab:\", \"https://gitlab.com/\"],\n  [\"bitbucket:\", \"https://bitbucket.org/\"],\n];\n\nconst GIT_TRANSPORTS: readonly PrefixReplacement[] = [\n  [\"git://\", \"https://\"],\n  [\"ssh://git@\", \"https://\"],\n];\n\nfunction extractRepositoryURL(raw: unknown): string {\n  if (typeof raw === \"string\") return raw;\n  if (typeof raw !== \"object\" || raw === null) return \"\";\n\n  const url = (raw as Record<string, unknown>)[\"url\"];\n  return typeof url === \"string\" ? url : \"\";\n}\n\nfunction replacePrefix(value: string, replacements: readonly PrefixReplacement[]): string {\n  for (const [prefix, replacement] of replacements) {\n    if (value.startsWith(prefix)) return replacement + value.slice(prefix.length);\n  }\n  return value;\n}\n\n/**\n * Normalize repository shorthands and Git transports to HTTPS.\n *\n * @param raw - Repository URL string or object with a URL field.\n * @returns {string} The normalized URL, or an empty string.\n */\nexport function normalizeRepositoryURL(raw: unknown): string {\n  let url = extractRepositoryURL(raw).trim();\n  if (!url) return \"\";\n\n  url = replacePrefix(url, REPOSITORY_SHORTHANDS);\n  if (url.startsWith(\"git+\")) url = url.slice(4);\n  url = replacePrefix(url, GIT_TRANSPORTS);\n\n  const sshMatch = url.match(/^git@([^:]+):(.+)$/);\n  if (sshMatch) url = `https://${sshMatch[1]}/${sshMatch[2]}`;\n\n  return url.replace(/\\/$/, \"\").replace(/\\.git$/, \"\");\n}\n"],"mappings":"AAEA,MAAM,wBAAsD;CAC1D,CAAC,WAAW,sBAAsB;CAClC,CAAC,WAAW,sBAAsB;CAClC,CAAC,cAAc,yBAAA;CAChB;AAED,MAAM,iBAA+C,CACnD,CAAC,UAAU,WAAW,EACtB,CAAC,cAAc,WAAW,CAC3B;AAED,SAAS,qBAAqB,KAAsB;AAClD,KAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,KAAI,OAAO,QAAQ,YAAY,QAAQ,KAAM,QAAO;CAEpD,MAAM,MAAO,IAAgC;AAC7C,QAAO,OAAO,QAAQ,WAAW,MAAM;;AAGzC,SAAS,cAAc,OAAe,cAAoD;AACxF,MAAK,MAAM,CAAC,QAAQ,gBAAgB,aAClC,KAAI,MAAM,WAAW,OAAO,CAAE,QAAO,cAAc,MAAM,MAAM,OAAO,OAAO;AAE/E,QAAO;;;;;;;;AAST,SAAgB,uBAAuB,KAAsB;CAC3D,IAAI,MAAM,qBAAqB,IAAI,CAAC,MAAM;AAC1C,KAAI,CAAC,IAAK,QAAO;AAEjB,OAAM,cAAc,KAAK,sBAAsB;AAC/C,KAAI,IAAI,WAAW,OAAO,CAAE,OAAM,IAAI,MAAM,EAAE;AAC9C,OAAM,cAAc,KAAK,eAAe;CAExC,MAAM,WAAW,IAAI,MAAM,qBAAqB;AAChD,KAAI,SAAU,OAAM,WAAW,SAAS,GAAG,GAAG,SAAS;AAEvD,QAAO,IAAI,QAAQ,OAAO,GAAG,CAAC,QAAQ,UAAU,GAAG"}