{"version":3,"sources":["jsdelivr-header.js","/npm/push-node@2.1.0/push-node.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACIA,IAAI,MAAQ,QAAS,SACjB,YAAc,QAAS,eACvB,IAAM,CAAC,EAuDX,SAAS,KAAM,EAAM,EAAM,EAAQ,GACjC,IAAK,GAAwB,mBAAX,EACZ,EAAK,EACL,EAAS,CAAC,EAIhB,IAAI,GAAW,EACf,SAAS,EAAY,EAAK,GACnB,IACH,GAAW,EACX,GAAM,EAAI,EAAK,GAAQ,MAE3B,CAGA,IAAK,IAAI,IAAI,WACX,OAAO,EAAY,IAAI,MAAO,2BAIhC,IAAI,EAAO,KACX,EAAO,iBAAmB,IAAI,IAAI,WAGlC,IAAI,EAAU,CACZ,KAAM,eACN,KAAM,IACN,MALF,EAAO,IAAK,EAAM,UAKO,QAAT,EAAiB,IAAK,YAAY,UAAW,GAAU,IACrE,OAAQ,EACR,QAAS,CACP,OAAU,mBACV,aAAc,uDAIL,SAAT,IACF,EAAO,YAAY,UAAW,GAC9B,EAAQ,QAAS,gBAAkB,oCACnC,EAAQ,QAAS,kBAAoB,EAAK,QAG5C,IAAI,EAAM,MAAM,QAAS,GAGzB,EAAI,GAAI,YAAY,SAAU,GAC5B,IAAI,EAAO,GACP,EAAQ,KAEZ,EAAS,GAAI,SAAS,WACpB,EAAQ,IAAI,MAAO,iBACrB,IAEA,EAAS,GAAI,QAAQ,SAAU,GAC7B,GAAQ,CACV,IAEA,EAAS,GAAI,OAAO,WAClB,EAAO,EAAK,OAEZ,IACE,EAAO,KAAK,MAAO,EACrB,CAAE,MAAO,GACP,EAAQ,IAAI,MAAO,mBACrB,CAEI,EAAS,YAAc,OACzB,EAAQ,IAAI,MAAO,cACb,KAAO,EAAS,WACtB,EAAM,KAAO,EACb,EAAM,QAAU,EAChB,EAAM,QAAQ,KAAO,EAAM,QAAQ,KAAK,QAAS,IAAI,IAAI,WAAY,YACrE,EAAM,YAAc,EAAO,EAAK,QAAS,IAAI,IAAI,WAAY,YAAc,GAG7E,EAAY,EAAO,EACrB,GACF,IAGA,EAAI,GAAI,SAAS,SAAU,GACb,IAAI,MAAO,kBACjB,MAAQ,EACd,EAAY,EACd,IAGA,EAAI,IAAK,EACX,CA3IA,IAAI,IAAM,CACR,YAAY,GAKd,IAAI,MAAQ,SAAU,GACpB,KAAM,MAAO,iBAAiB,SAAU,EAAK,GAC3C,GAAI,EAAO,OAAO,EAAI,GAClB,GAAsC,iBAArB,EAAO,UAC1B,EAAI,KAAM,EAAO,WAEjB,EAAI,KAAM,GAEd,GACF,EAGA,IAAI,OAAS,SAAU,EAAM,GAC3B,IACI,EAAG,EADH,EAAM,CAAC,EAEP,EAAO,OAAO,KAAM,GACxB,IAAK,EAAI,EAAG,EAAI,EAAK,OAAQ,IAE3B,EAAK,iBADL,EAAM,EAAM,IACe,KAAO,EAAM,GAE1C,KAAM,OAAQ,gBAAiB,EAAK,EACtC,EAGA,IAAI,cAAgB,SAAU,GAC5B,KAAM,MAAO,iBAAiB,SAAU,EAAK,GACtC,IACH,EAAS,EAAO,eAAiB,GAEnC,EAAI,EAAK,EACX,GACF,EAGA,IAAI,SAAW,SAAU,GACvB,KAAM,MAAO,WAAW,SAAU,EAAK,GAChC,IACH,EAAS,EAAO,MAAQ,GAE1B,EAAI,EAAK,EACX,GACF,EA+FA,OAAO,QAAU,SAAU,GAEzB,OADA,IAAI,IAAI,WAAa,EACd,GACT","file":"/npm/push-node@2.1.0/push-node.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/push-node@2.1.0/push-node.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*\nName:         push-node\nDescription:  Send push notifications with Faast (http://faast.io)\nAuthor:       Franklin van de Meent (https://frankl.in)\nSource:       https://github.com/fvdm/nodejs-push\nFeedback:     https://github.com/fvdm/nodejs-push/issues\nLicense:      Public Domain / Unlicense\n              (https://github.com/fvdm/nodejs-push/raw/master/UNLICENSE)\n*/\n\nvar https = require ('https');\nvar querystring = require ('querystring');\nvar app = {};\n\n\n// ! Defaults\napp.api = {\n  credential: false\n};\n\n\n// ! feeds\napp.feeds = function (cb) {\n  talk ('GET', 'account/feeds', function (err, result) {\n    if (err) { return cb (err); }\n    if (result && typeof result.rss_feeds === 'object') {\n      cb (null, result.rss_feeds);\n    } else {\n      cb (null, []);\n    }\n  });\n};\n\n// ! notify\napp.notify = function (vars, cb) {\n  var set = {};\n  var i, key;\n  var keys = Object.keys (vars);\n  for (i = 0; i < keys.length; i++) {\n    key = keys [i];\n    set ['notification['+ key +']'] = vars [key];\n  }\n  talk ('POST', 'notifications', set, cb);\n};\n\n// ! notifications\napp.notifications = function (cb) {\n  talk ('GET', 'notifications', function (err, result) {\n    if (!err) {\n      result = result.notifications || result;\n    }\n    cb (err, result);\n  });\n};\n\n// ! settings\napp.settings = function (cb) {\n  talk ('GET', 'account', function (err, result) {\n    if (!err) {\n      result = result.user || result;\n    }\n    cb (err, result);\n  });\n};\n\n\n// ! Communication\nfunction talk (type, path, fields, cb) {\n  if (!cb && typeof fields === 'function') {\n    var cb = fields;\n    var fields = {};\n  }\n\n  // prevent multiple callbacks\n  var complete = false;\n  function doCallback (err, data) {\n    if (!complete) {\n      complete = true;\n      cb && cb (err, data || null);\n    }\n  }\n\n  // check credentials\n  if (!app.api.credential) {\n    return doCallback (new Error ('api.credential missing'));\n  }\n\n  // build request\n  var body = null;\n  fields.user_credentials = app.api.credential;\n  path = '/'+ path +'.json';\n\n  var options = {\n    host: 'api.faast.io',\n    port: 443,\n    path: path + (type === 'GET' ? '?'+ querystring.stringify (fields) : ''),\n    method: type,\n    headers: {\n      'Accept': 'application/json',\n      'User-Agent': 'push-node.js (https://github.com/fvdm/nodejs-push)'\n    }\n  };\n\n  if (type === 'POST') {\n    body = querystring.stringify (fields);\n    options.headers ['Content-Type'] = 'application/x-www-form-urlencoded';\n    options.headers ['Content-Length'] = body.length;\n  }\n\n  var req = https.request (options);\n\n  // response\n  req.on ('response', function (response) {\n    var data = '';\n    var error = null;\n\n    response.on ('close', function () {\n      error = new Error ('request closed');\n    });\n\n    response.on ('data', function (chunk) {\n      data += chunk;\n    });\n\n    response.on ('end', function () {\n      data = data.trim ();\n\n      try {\n        data = JSON.parse (data);\n      } catch (e) {\n        error = new Error ('invalid response');\n      }\n\n      if (response.statusCode >= 300) {\n        error = new Error ('API error');\n        error.code = response.statusCode;\n        error.body = data;\n        error.request = options;\n        error.request.path = error.request.path.replace (app.api.credential, '[secure]');\n        error.requestBody = body ? body.replace (app.api.credential, '[secure]') : body;\n      }\n\n      doCallback (error, data);\n    });\n  });\n\n  // error\n  req.on ('error', function (err) {\n    var error = new Error ('request failed');\n    error.error = err;\n    doCallback (err);\n  });\n\n  // done\n  req.end (body);\n}\n\n// ! Setup\nmodule.exports = function (token) {\n  app.api.credential = token;\n  return app;\n};\n"]}