{"version":3,"sources":["jsdelivr-header.js","/npm/piratebay-search@1.0.1/src/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,QAAU,QAAQ,WAClB,UAAY,QAAQ,cAEpB,QAAU,CACd,0BACA,yBACA,2BACA,4BAGI,YAAc,CAClB,QAAW,GACX,SAAY,EACZ,KAAQ,EACR,WAAc,GACd,QAAW,EACX,SAAY,GAGd,SAAS,KAAM,GAAK,MAAC,EAAQ,UAAS,KAAE,EAAO,KAAQ,CAAC,GACtD,OAAO,IAAI,SAAQ,CAAC,EAAS,KAC3B,EAAM,EAAK,CAAC,OAAQ,SAAS,MAAK,IAChC,EAAQ,CAAC,MAAK,GAAI,EAAI,QAAU,KAAO,EAAI,OAAS,KAAI,IAEzD,MAAM,GAEP,YAAW,IAAM,EAAQ,CAAC,MAAK,IAAI,KAAS,EAAI,GAEpD,CAEA,SAAS,WAAW,MAAC,EAAQ,UAAS,KAAE,EAAO,IAAI,KAAE,EAAO,CAAC,8BAA+B,UAAY,CAAC,GACvG,MAAM,EAAgB,EAAK,KAAI,GAAO,KAAK,EAAK,CAAC,QAAO,WACxD,OAAO,QAAQ,IAAI,EACrB,CAEA,eAAe,OAAQ,EAAI,IAAI,MAAC,EAAQ,UAAS,QAAE,EAAU,2BAA0B,KAAE,EAAO,EAAC,SAAE,EAAW,WAAa,CAAC,GAC1H,IAAK,EACH,MAAM,IAAI,MAAM,sDAGlB,IAAK,GAAkB,iBAAN,GAA+B,IAAb,EAAE,OACnC,MAAM,IAAI,MAAM,uDAGlB,QAAa,IAAT,IAAuB,OAAO,UAAU,GAC1C,MAAM,IAAI,MAAM,qCAAqC,cAGvD,IAAK,YAAY,GACf,MAAM,IAAI,MAAM,0DAA0D,OAAO,KAAK,aAAa,KAAK,SAG1G,MAAM,EAAM,GAAG,YAAkB,mBAAmB,MAAM,KAAQ,YAAY,OACxE,QAAY,EAAM,GAClB,QAAa,EAAI,OAEjB,EAAI,QAAQ,KAAK,GAEjB,EAAW,GAiBjB,OAfA,EAAE,+BAA+B,MAAK,WACpC,MAAM,EAAU,CACd,KAAM,EAAE,MAAM,KAAK,aAAa,OAChC,KAAM,EAAE,MAAM,KAAK,aAAa,KAAK,QACrC,MAAO,EAAE,MAAM,SAAS,mBAAmB,OAC3C,MAAO,EAAE,MAAM,SAAS,mBAAmB,OAC3C,YAAa,EAAE,MAAM,KAAK,gBAAgB,OAC1C,KAAM,EAAE,MAAM,KAAK,qBAAqB,KAAK,SAG3C,EAAQ,KAAK,QACf,EAAS,KAAK,EAElB,IAEO,CACT,CAEA,OAAO,QAAU,CACf,gBACA,oBACA","file":"/npm/piratebay-search@1.0.1/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/piratebay-search@1.0.1/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const cheerio = require('cheerio')\nconst nodeFetch = require('node-fetch')\n\nconst proxies = [\n  'https://pirateproxy.cam',\n  'https://piratebay2.org',\n  'https://thehiddenbay.com',\n  'https://thepiratebay.wtf'\n]\n\nconst orderingMap = {\n  'default': 99,\n  'uploaded': 3,\n  'size': 5,\n  'uploadedBy': 11,\n  'seeders': 7,\n  'leechers': 9\n}\n\nfunction isUp (url, {fetch = nodeFetch, wait = 2000} = {}) {\n  return new Promise((resolve, reject) => {\n    fetch(url, {method: 'HEAD'}).then(res => {\n      resolve({url, up: res.status >= 200 && res.status < 400})\n    })\n    .catch(reject)\n\n    setTimeout(() => resolve({url, up: false}), wait)\n  })\n}\n\nfunction checkIsUp ({fetch = nodeFetch, wait = 2000, urls = ['https://thepiratebay.org', ...proxies]} = {}) {\n  const proxyPromises = urls.map(url => isUp(url, {fetch, wait}))\n  return Promise.all(proxyPromises)\n}\n\nasync function search (q = '', {fetch = nodeFetch, baseURL = 'https://thepiratebay.org', page = 0, ordering = 'seeders'} = {}) {\n  if (!fetch) {\n    throw new Error('piratebay-search: No fetch implementation provided')\n  }\n\n  if (!q || typeof q !== 'string' || q.length === 0) {\n    throw new Error('piratebay-search: Please provide valid search query')\n  }\n\n  if (page === undefined || !Number.isInteger(page)) {\n    throw new Error(`piratebay-search: Invalid page of ${page} provided`)\n  }\n\n  if (!orderingMap[ordering]) {\n    throw new Error(`piratebay-search: Invalid ordering provided. Should be ${Object.keys(orderingMap).join(', ')}`)\n  }\n\n  const url = `${baseURL}/search/${encodeURIComponent(q)}/${page}/${orderingMap[ordering]}/0`\n  const res = await fetch(url)\n  const text = await res.text()\n\n  const $ = cheerio.load(text)\n\n  const torrents = []\n\n  $(\"table[id='searchResult'] tr\").each(function () {\n    const torrent = {\n      name: $(this).find('a.detLink').text(),\n      link: $(this).find('a.detLink').attr('href'),\n      seeds: $(this).children('td:nth-child(3)').text(),\n      peers: $(this).children('td:nth-child(4)').text(),\n      description: $(this).find('font.detDesc').text(),\n      file: $(this).find('a[href^=\"magnet\"]').attr('href')\n    }\n\n    if (torrent.name.length) {\n      torrents.push(torrent)\n    }\n  })\n\n  return torrents\n}\n\nmodule.exports = {\n  proxies,\n  checkIsUp,\n  search\n}\n"]}