{"version":3,"sources":["jsdelivr-header.js","/npm/node-twitcoin@1.0.0/lib/twitcoin.js"],"names":[],"mappings":"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","file":"/npm/node-twitcoin@1.0.0/lib/twitcoin.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/node-twitcoin@1.0.0/lib/twitcoin.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var http = require('http')\n,   https = require('https')\n\nvar api  = require('./commands')\n,   errors = require('./errors')\n\nfunction Client(options) { \n    this.opts = {\n        host:    'localhost'\n     ,  port:    38301\n     ,  method:  'POST'\n     ,  user:    ''\n     ,  pass:    ''\n     ,  headers:  {\n            'Host': 'localhost'\n         ,  'Authorization':  ''\n       }\n     , passphrasecallback: null\n     , https: false\n     , ca: null\n    }\n\n    if (options) {\n        this.set(options)\n    }\n}\n\nClient.prototype = {\n\n    invalid:function(command) {\n        var args = Array.prototype.slice.call(arguments, 1)\n        ,   fn   = args.pop()\n\n        if (typeof fn !== 'function') {\n            fn = console.log\n        }\n\n        return fn(new Error('No such command \"' + command  + '\"'))\n    },\n\n    send:function(command) {\n        var args = Array.prototype.slice.call(arguments, 1)\n         ,  self = this\n         ,  fn\n        \n        if (typeof args[args.length-1] === 'function') {\n            fn = args.pop().bind(this)\n        }else {\n            fn = console.log\n        }\n\n        var rpcData = JSON.stringify({\n            id:      new Date().getTime()\n         ,  method:  command.toLowerCase()\n         ,  params:  args\n        })\n\n        var options = this.opts\n        options.headers['Content-Length'] = rpcData.length\n\n        var request;\n        if (options.https === true){\n          request = https.request;\n        } else{ \n          request = http.request;\n        }\n\n        var req = request(options, function(res) {\n            var data = ''\n            res.setEncoding('utf8')\n            res.on('data', function(chunk) {\n                data += chunk\n            })\n            res.on('end', function() {\n                try {\n                    data = JSON.parse(data)\n                }catch(exception) {\n                    var errMsg = res.statusCode !== 200\n                        ? 'Invalid params ' + res.statusCode\n                        : 'Failed to parse JSON'\n                    errMsg += ' : '+JSON.stringify(data)\n                    return fn(new Error(errMsg))\n                }\n                if (data.error) {\n                    if (data.error.code === errors.RPC_WALLET_UNLOCK_NEEDED &&\n                        options.passphrasecallback) {\n                      return self.unlock(command, args, fn)\n                    } else {\n                      var err = new Error(JSON.stringify(data))\n                      err.code = data.error.code\n                      return fn(err)\n                    }\n                }\n                fn(null, data.result !== null ? data.result : data)\n            })\n        })\n\n        req.on('error', fn)\n        req.end(rpcData)\n        return this\n    },\n\n    exec:function(command) {\n        var func = api.isCommand(command) ? 'send' : 'invalid'\n        return this[func].apply(this, arguments)\n    },\n\n    auth:function(user, pass) {\n        if (user && pass) {\n            var authString = ('Basic ') + new Buffer(user+':'+pass).toString('base64')\n            this.opts.headers['Authorization'] = authString\n        }\n      return this\n    },\n\n    unlock:function(command, args, fn) {\n      var self = this\n\n      var retry = function(err) {\n        if (err) {\n          fn(err)\n        } else {\n          var sendargs = args.slice();\n          sendargs.unshift(command);\n          sendargs.push(fn)\n          self.send.apply(self, sendargs)\n        }\n      }\n\n      this.opts.passphrasecallback(command, args, function(err, passphrase, timeout) {\n        if (err) {\n          fn(err)\n        } else {\n          self.send('walletpassphrase', passphrase, timeout, retry)\n        }\n      })\n    },\n\n    set:function(k, v) {\n        var type = typeof(k);\n\n        if (typeof(k) === 'object') {\n            for (var key in k) {\n                this.set(key, k[key]);\n            };\n            return;\n        };\n\n        var opts = this.opts;\n        var k = k.toLowerCase();\n\n        if (opts.hasOwnProperty(k)) {\n            opts[k] = v\n           if (/^(user|pass)$/.test(k)) {\n                this.auth(opts.user, opts.pass)\n             }else if (k === 'host') {\n                opts.headers['Host'] = v\n            }else if (k === 'passphrasecallback' ||\n                      k === 'https' ||\n                      k === 'ca') {\n                opts[k] = v\n            }\n        }\n\n        return this;\n    },\n\n    get:function(k) {\n        //Special case for booleans\n        if(this.opts[k] === false){\n          return false;\n        }else {\n          if(this.opts[k] !== false){\n            var opt = this.opts[k.toLowerCase()]\n          }\n          return  opt; //new Error('No such option \"'+k+'\" exists');\n        }\n    },\n\n    errors: errors\n\n}\n\napi.commands.forEach(function(command) {\n    var cp  = Client.prototype;\n    var tlc = [command.toLowerCase()];\n\n    cp[command] = cp[tlc] = function() {\n        cp.send.apply(this, tlc.concat(([]).slice.call(arguments)));\n    };\n})\n\nmodule.exports = function(options) {\n    return new Client(options)\n}\n"]}