{
  "version": 3,
  "sources": ["../../../../src/packages/pick-fetcher/index.ts"],
  "sourcesContent": ["import type {\n  // Fetchers,\n  GitFetcher,\n  FetchOptions,\n  FetchFunction,\n  DirectoryFetcher,\n  LocalTarballFetcher,\n  GitHostedTarballFetcher,\n} from '../fetcher-base/index.ts';\nimport type { PackageFiles } from '../cafs-types/index.ts';\nimport type { Resolution } from '../resolver-base/index.ts';\nimport type { DependencyManifest } from '../types/package.ts';\nimport type { TarballFetchers } from '../tarball-fetcher/index.ts';\n\nexport function pickFetcher(\n  fetcherByHostingType: TarballFetchers,\n  resolution: Resolution\n):\n  | FetchFunction<\n      Resolution,\n      FetchOptions,\n      {\n        filesIndex: PackageFiles | Record<string, string>;\n        manifest: DependencyManifest | undefined;\n        requiresBuild: boolean;\n      }\n    >\n  | DirectoryFetcher\n  | GitFetcher\n  | LocalTarballFetcher\n  | GitHostedTarballFetcher {\n  let fetcherType:\n    | 'directory'\n    | 'git'\n    | 'localTarball'\n    | 'gitHostedTarball'\n    | 'remoteTarball'\n    | undefined = 'type' in resolution ? resolution.type : undefined;\n\n  if (!('type' in resolution)) {\n    if (resolution.tarball?.startsWith('file:') === true) {\n      fetcherType = 'localTarball';\n    } else if (isGitHostedPkgUrl(resolution.tarball ?? '')) {\n      fetcherType = 'gitHostedTarball';\n    } else {\n      fetcherType = 'remoteTarball';\n    }\n  }\n\n  if (typeof fetcherType === 'undefined') {\n    throw new Error(\n      `Fetching for dependency type \"${'type' in resolution ? resolution.type : 'undefined'}\" is not supported`\n    );\n  }\n\n  // if (!fetch) {\n  //   throw new Error(\n  //     `Fetching for dependency type \"${resolution.type ?? 'undefined'}\" is not supported`\n  //   );\n  // }\n\n  return fetcherByHostingType[fetcherType as keyof typeof fetcherByHostingType];\n}\n\nexport function isGitHostedPkgUrl(url: string | undefined): boolean {\n  if (typeof url === 'undefined') {\n    return false;\n  }\n\n  return (\n    (url.startsWith('https://codeload.github.com/') ||\n      url.startsWith('https://bitbucket.org/') ||\n      url.startsWith('https://gitlab.com/')) &&\n    url.includes('tar.gz')\n  );\n}\n"],
  "mappings": "AAcO,SAAS,YACd,sBACA,YAc0B;AAC1B,MAAI,cAMY,UAAU,aAAa,WAAW,OAAO;AAEzD,MAAI,EAAE,UAAU,aAAa;AAC3B,QAAI,WAAW,SAAS,WAAW,OAAO,MAAM,MAAM;AACpD,oBAAc;AAAA,IAChB,WAAW,kBAAkB,WAAW,WAAW,EAAE,GAAG;AACtD,oBAAc;AAAA,IAChB,OAAO;AACL,oBAAc;AAAA,IAChB;AAAA,EACF;AAEA,MAAI,OAAO,gBAAgB,aAAa;AACtC,UAAM,IAAI;AAAA,MACR,iCAAiC,UAAU,aAAa,WAAW,OAAO,WAAW;AAAA,IACvF;AAAA,EACF;AAQA,SAAO,qBAAqB,WAAgD;AAC9E;AAEO,SAAS,kBAAkB,KAAkC;AAClE,MAAI,OAAO,QAAQ,aAAa;AAC9B,WAAO;AAAA,EACT;AAEA,UACG,IAAI,WAAW,8BAA8B,KAC5C,IAAI,WAAW,wBAAwB,KACvC,IAAI,WAAW,qBAAqB,MACtC,IAAI,SAAS,QAAQ;AAEzB;",
  "names": []
}
