{"version":3,"sources":["jsdelivr-header.js","/npm/hackerpub@1.1.2/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,IAAI,IAAM,QAAQ,OACd,KAAO,QAAQ,QACf,OAAS,QAAQ,UACjB,QAAU,QAAQ,WAClB,QAAU,QAAQ,WAClB,KAAO,+BAEX,SAAS,UAAW,EAAS,GAC3B,IAAI,EAAI,MAAM,GACV,EAAM,QAAQ,MAElB,OAAO,UAAU,CACf,SAAgB,GACd,GAAG,EAAK,OAAQ,SAAU,CAAE,KAAM,EAAE,SAAU,GAAI,EAAE,UAAY,EAClE,EACA,SAAgB,EAAK,EAAM,GACzB,GAAG,EAAK,MAAO,UAAW,CAAC,EAAG,EAChC,EACA,SAAc,EAAK,EAAM,GACvB,IAAI,EAAO,CACT,MAAO,EAAE,MACT,IAAK,EAAE,IACP,KAAM,EAAE,KACR,KAAM,OAAO,EAAM,QACnB,KAAM,OAAO,EAAM,SAErB,GAAG,EAAK,OAAQ,KAAM,EAAM,EAC9B,EACA,SAAe,EAAK,EAAM,GACxB,IAAI,EAAI,QAAQ,KAAK,GACjB,EAAW,EAAE,aACd,QAUH,WACE,OAAO,EAAE,MAAM,KAAK,UAAY,EAAE,GACpC,IAXG,QAAQ,WACR,OACA,KAAK,KACL,QASH,WACE,IAAI,EAAO,EAAE,MAAM,KAAK,QACpB,EAAW,EAAO,IAAI,QAAQ,KAAM,GAAQ,KAC5C,EAAS,IAAI,QAAQ,KAAM,aAC/B,OAAoC,IAA7B,EAAS,QAAQ,EAC1B,IAbG,KAAK,QAGR,EAAK,KAAM,EAAK,EAFD,EAAW,IAAI,QAAQ,KAAM,GAAY,KAa1D,GACC,EACL,CAEA,SAAS,OAAQ,EAAM,GACrB,OAAO,QAAQ,KAAK,EAAb,CAAmB,KAAK,OAAO,YAAa,IAAQ,KAC7D,CAEA,SAAS,MAAO,GACd,IAAK,EACH,MAAO,CAAC,EAGV,IAAI,EAAI,CAAC,EAQT,OANA,EAAI,YACJ,EAAI,YACJ,EAAI,SACJ,EAAI,OACJ,EAAI,QAEG,EAEP,SAAS,EAAK,GACZ,EAAE,GAA+B,iBAAjB,EAAQ,GAAoB,EAAQ,GAAO,EAC7D,CACF,CAEA,SAAS,GAAI,EAAK,EAAQ,EAAU,EAAM,GACxC,QAAQ,CACN,IAAK,KAAO,EACZ,OAAQ,EACR,IAAK,EACL,KAAM,EACN,oBAAoB,GACnB,EACL,CAEA,OAAO,QAAU","file":"/npm/hackerpub@1.1.2/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/hackerpub@1.1.2/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","'use strict';\n\nvar url = require('url');\nvar util = require('util');\nvar contra = require('contra');\nvar request = require('request');\nvar cheerio = require('cheerio');\nvar base = 'https://news.ycombinator.com';\n\nfunction hackerpub (options, done) {\n  var o = parse(options);\n  var jar = request.jar();\n\n  contra.waterfall([\n    function login (next) {\n      go(jar, 'POST', '/login', { acct: o.username, pw: o.password }, next);\n    },\n    function token (res, body, next) {\n      go(jar, 'GET', '/submit', {}, next);\n    },\n    function act (res, body, next) {\n      var data = {\n        title: o.title,\n        url: o.url,\n        text: o.text,\n        fnid: secret(body, 'fnid'),\n        fnop: secret(body, 'fnop')\n      };\n      go(jar, 'POST', '/r', data, next);\n    },\n    function grab (res, body, next) {\n      var $ = cheerio.load(body);\n      var relative = $('.athing a')\n        .filter(byUrl)\n        .parents('.athing')\n        .next()\n        .find('a')\n        .filter(byItem)\n        .attr('href');\n      var absolute = relative ? url.resolve(base, relative) : null;\n\n      next(null, res, body, absolute);\n\n      function byUrl () {\n        return $(this).attr('href') === o.url;\n      }\n      function byItem () {\n        var href = $(this).attr('href');\n        var absolute = href ? url.resolve(base, href) : null;\n        var needle = url.resolve(base, '/item?id=');\n        return absolute.indexOf(needle) === 0;\n      }\n    }\n  ], done);\n}\n\nfunction secret (html, field) {\n  return cheerio.load(html)(util.format('[name=%s]', field)).val();\n}\n\nfunction parse (options) {\n  if (!options) {\n    return {};\n  }\n\n  var o = {};\n\n  mov('username');\n  mov('password');\n  mov('title');\n  mov('url');\n  mov('text');\n\n  return o;\n\n  function mov (key) {\n    o[key] = typeof options[key] === 'string' ? options[key] : '';\n  }\n}\n\nfunction go (jar, method, pathname, data, done) {\n  request({\n    url: base + pathname,\n    method: method,\n    jar: jar,\n    form: data,\n    followAllRedirects: true\n  }, done);\n}\n\nmodule.exports = hackerpub;\n"]}