{"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,qBAAqB;CACjC,CAAC,WAAW,qBAAqB;CACjC,CAAC,cAAc,wBAAwB;AACzC;AAEA,MAAM,iBAA+C,CACnD,CAAC,UAAU,UAAU,GACrB,CAAC,cAAc,UAAU,CAC3B;AAEA,SAAS,qBAAqB,KAAsB;CAClD,IAAI,OAAO,QAAQ,UAAU,OAAO;CACpC,IAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM,OAAO;CAEpD,MAAM,MAAO,IAAgC;CAC7C,OAAO,OAAO,QAAQ,WAAW,MAAM;AACzC;AAEA,SAAS,cAAc,OAAe,cAAoD;CACxF,KAAK,MAAM,CAAC,QAAQ,gBAAgB,cAClC,IAAI,MAAM,WAAW,MAAM,GAAG,OAAO,cAAc,MAAM,MAAM,OAAO,MAAM;CAE9E,OAAO;AACT;;;;;;CAQA,MAAA,cAAgB,KAAA,cAA6C;CAC3D,MAAI,WAAM,IAAA,MAAA,oBAA+B;CACzC,IAAI,UAAM,MAAO,WAAA,SAAA,GAAA,GAAA,SAAA;CAEjB,OAAM,IAAA,QAAA,OAAmB,EAAA,CAAA,CAAA,QAAA,UAAqB,EAAA;AAC9C;AAGA,SAAM"}