diff --git a/lib/addresses.js b/lib/addresses.js index d1ce2ad..e7a0494 100644 --- a/lib/addresses.js +++ b/lib/addresses.js @@ -11,6 +11,7 @@ function AddressController(node) { this._block = this.node.services.block; this.txController = new TxController(node); this.common = new Common({log: this.node.log}); + this._block = this.node.services.block; } AddressController.prototype.show = function(req, res) { @@ -176,8 +177,7 @@ AddressController.prototype.transformUtxo = function(utxoArg) { }; if (utxoArg.height && utxoArg.height > 0) { utxo.height = utxoArg.height; - var height = this._block.getTip().height; - utxo.confirmations = height - utxoArg.height + 1; + utxo.confirmations = this._block.getTip().height - utxoArg.height + 1; } else { utxo.confirmations = 0; } diff --git a/lib/status.js b/lib/status.js index de01be3..e088b3a 100644 --- a/lib/status.js +++ b/lib/status.js @@ -5,8 +5,8 @@ var Common = require('./common'); function StatusController(node) { this.node = node; this.common = new Common({log: this.node.log}); - this._header = this.node.services.header; this._block = this.node.services.block; + this._header = this.node.services.header; } StatusController.prototype.show = function(req, res) { @@ -88,7 +88,7 @@ StatusController.prototype.getBestBlockHash = function(callback) { }; StatusController.prototype.getDifficulty = function(callback) { - this._p2p.getInfo(function(err, info) { + this.getInfo(function(err, info) { if (err) { return callback(err); } diff --git a/lib/transactions.js b/lib/transactions.js index c9c5313..054598f 100644 --- a/lib/transactions.js +++ b/lib/transactions.js @@ -57,10 +57,8 @@ TxController.prototype.transformTransaction = function(transaction, options, cal $.checkArgument(_.isFunction(callback)); var confirmations = 0; - - if(transaction.__height >= 0) { - var height = this._block.getTip().height; - confirmations = height - transaction.__height + 1; + if(transaction.height >= 0) { + confirmations = this._block.getTip().height - transaction.height + 1; } var transformed = { diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f9be5f2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1207 @@ +{ + "name": "insight-api", + "version": "0.4.3", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "async": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz", + "integrity": "sha1-bJ7csRztTw3S8tQNsNSaEJwIiqs=" + }, + "bitcore-lib": { + "version": "5.0.0-beta.1", + "resolved": "https://registry.npmjs.org/bitcore-lib/-/bitcore-lib-5.0.0-beta.1.tgz", + "integrity": "sha512-y8aCkNJQieCPacLpW9wdg6Un2iAC/5Nt7g/lRHhK6PwrXw7dxXwc7eZOd87oPGn6bAd4jBd8YTCqIqwpf3UQsA==", + "requires": { + "bn.js": "2.0.4", + "bs58": "2.0.0", + "buffer-compare": "1.0.0", + "elliptic": "3.0.3", + "inherits": "2.0.1", + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + }, + "bitcore-message": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bitcore-message/-/bitcore-message-1.0.2.tgz", + "integrity": "sha1-BCvAjGrN9+o5fv85Zo2SZXf1geQ=", + "requires": { + "bitcore-lib": "0.13.19" + }, + "dependencies": { + "bitcore-lib": { + "version": "0.13.19", + "resolved": "https://registry.npmjs.org/bitcore-lib/-/bitcore-lib-0.13.19.tgz", + "integrity": "sha1-SK8em9oQBnwasWJjRyta3SAA89w=", + "requires": { + "bn.js": "2.0.4", + "bs58": "2.0.0", + "buffer-compare": "1.0.0", + "elliptic": "3.0.3", + "inherits": "2.0.1", + "lodash": "3.10.1" + }, + "dependencies": { + "bn.js": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-2.0.4.tgz", + "integrity": "sha1-Igp81nf38b+pNif/QZN3b+eBlIA=" + }, + "bs58": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-2.0.0.tgz", + "integrity": "sha1-crcTvtIjoKxRi72g484/SBfznrU=" + }, + "buffer-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-compare/-/buffer-compare-1.0.0.tgz", + "integrity": "sha1-rKp6lm6Y7un64Usxw5pfFY+zxKI=" + }, + "elliptic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-3.0.3.tgz", + "integrity": "sha1-hlybQgv75VAGuflp+XoNLESWZZU=", + "requires": { + "bn.js": "2.0.4", + "brorand": "1.0.5", + "hash.js": "1.0.3", + "inherits": "2.0.1" + }, + "dependencies": { + "brorand": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz", + "integrity": "sha1-B7VMowKGq9Fxig4qgwgD79yb+gQ=" + }, + "hash.js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", + "integrity": "sha1-EzL/ABVsCg/92CNgE9B7d6BFFXM=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + } + } + }, + "bn.js": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-2.0.4.tgz", + "integrity": "sha1-Igp81nf38b+pNif/QZN3b+eBlIA=" + }, + "body-parser": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", + "integrity": "sha1-11eM9PHRHV9uqATO813Hp/9trmc=", + "requires": { + "bytes": "2.4.0", + "content-type": "1.0.2", + "debug": "2.2.0", + "depd": "1.1.0", + "http-errors": "1.5.0", + "iconv-lite": "0.4.13", + "on-finished": "2.3.0", + "qs": "6.2.0", + "raw-body": "2.1.7", + "type-is": "1.6.13" + }, + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=" + }, + "content-type": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=" + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + }, + "dependencies": { + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "depd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" + }, + "http-errors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "integrity": "sha1-scs9gmD9jiOGytMYkEWUM3LUghE=", + "requires": { + "inherits": "2.0.1", + "setprototypeof": "1.0.1", + "statuses": "1.3.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "setprototypeof": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", + "integrity": "sha1-UgCbJ4iMTcSPWRlJwKgnWDTByn4=" + }, + "statuses": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", + "integrity": "sha1-jlV1jLIOdoLB9Pzo3KswvwHR4Ho=" + } + } + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + }, + "dependencies": { + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + } + } + }, + "qs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", + "integrity": "sha1-O3hIwDwt7OaalSKw+ujEEm10Xzs=" + }, + "raw-body": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.13", + "unpipe": "1.0.0" + }, + "dependencies": { + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + } + } + }, + "type-is": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "integrity": "sha1-boO6e8MM0zp7sLf7AHN6IIW/nQg=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.11" + }, + "dependencies": { + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mime-types": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=", + "requires": { + "mime-db": "1.23.0" + }, + "dependencies": { + "mime-db": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=" + } + } + } + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "bs58": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-2.0.0.tgz", + "integrity": "sha1-crcTvtIjoKxRi72g484/SBfznrU=" + }, + "buffer-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-compare/-/buffer-compare-1.0.0.tgz", + "integrity": "sha1-rKp6lm6Y7un64Usxw5pfFY+zxKI=" + }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "deep-eql": "0.1.3", + "type-detect": "1.0.0" + }, + "dependencies": { + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "requires": { + "type-detect": "0.1.1" + }, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true + } + } + }, + "type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true + } + } + }, + "compression": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.6.2.tgz", + "integrity": "sha1-zOsSHsydCcUtetDDNQ6pPd1AK8M=", + "requires": { + "accepts": "1.3.3", + "bytes": "2.3.0", + "compressible": "2.0.8", + "debug": "2.2.0", + "on-headers": "1.0.1", + "vary": "1.1.0" + }, + "dependencies": { + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "requires": { + "mime-types": "2.1.11", + "negotiator": "0.6.1" + }, + "dependencies": { + "mime-types": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=", + "requires": { + "mime-db": "1.23.0" + }, + "dependencies": { + "mime-db": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=" + } + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + } + } + }, + "bytes": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.3.0.tgz", + "integrity": "sha1-1baAoWW2IBc5rLYRVCqrwtjOsHA=" + }, + "compressible": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.8.tgz", + "integrity": "sha1-cWLmxG07nSAP+0XLTkoPeDJzJQM=", + "requires": { + "mime-db": "1.23.0" + }, + "dependencies": { + "mime-db": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=" + } + } + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + }, + "dependencies": { + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "vary": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", + "integrity": "sha1-4eWv+70WrnaN0mdDlLmtMCJlMUA=" + } + } + }, + "elliptic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-3.0.3.tgz", + "integrity": "sha1-hlybQgv75VAGuflp+XoNLESWZZU=", + "requires": { + "bn.js": "2.0.4", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "inherits": "2.0.1" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=" + }, + "lru-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz", + "integrity": "sha1-E0OVXtry432bnn7nJB4nxLn7cr4=", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.0.0" + }, + "dependencies": { + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "yallist": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz", + "integrity": "sha1-MGxUODXwnuGkyyO3vOmrNByRzdQ=" + } + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" + }, + "mocha": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", + "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", + "dev": true, + "requires": { + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.11", + "growl": "1.9.2", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0", + "to-iso-string": "0.0.2" + }, + "dependencies": { + "commander": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + }, + "dependencies": { + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", + "dev": true + }, + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2.0.1", + "minimatch": "0.3.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + } + } + } + } + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", + "dev": true, + "requires": { + "commander": "0.6.1", + "mkdirp": "0.3.0" + }, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "dev": true + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", + "dev": true + }, + "to-iso-string": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", + "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", + "dev": true + } + } + }, + "morgan": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.7.0.tgz", + "integrity": "sha1-6xDKjlDRq+D409rVwCAdBS2YHGI=", + "requires": { + "basic-auth": "1.0.4", + "debug": "2.2.0", + "depd": "1.1.0", + "on-finished": "2.3.0", + "on-headers": "1.0.1" + }, + "dependencies": { + "basic-auth": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz", + "integrity": "sha1-Awk1sB3nyblKgksp8/zLdQ06UpA=" + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + }, + "dependencies": { + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "depd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + }, + "dependencies": { + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + } + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + } + } + }, + "proxyquire": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.7.3.tgz", + "integrity": "sha1-VP/1syGCnYAq6pAKkouVurRodOY=", + "dev": true, + "requires": { + "fill-keys": "1.0.2", + "module-not-found-error": "1.0.1" + }, + "dependencies": { + "fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "dev": true, + "requires": { + "is-object": "1.0.1", + "merge-descriptors": "1.0.0" + }, + "dependencies": { + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", + "integrity": "sha1-IWnPdTjhsMyH+4jhUC2EdLv3mGQ=", + "dev": true + } + } + }, + "module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + } + } + }, + "request": { + "version": "2.64.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.64.0.tgz", + "integrity": "sha1-lqWCQjzptLXDTpsjLkgBc/FLpgg=", + "requires": { + "aws-sign2": "0.5.0", + "bl": "1.0.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.0", + "forever-agent": "0.6.1", + "form-data": "1.0.0-rc3", + "har-validator": "1.8.0", + "hawk": "3.1.0", + "http-signature": "0.11.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.7", + "node-uuid": "1.4.3", + "oauth-sign": "0.8.0", + "qs": "5.1.0", + "stringstream": "0.0.4", + "tough-cookie": "2.2.0", + "tunnel-agent": "0.4.1" + }, + "dependencies": { + "aws-sign2": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=" + }, + "bl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", + "integrity": "sha1-ramoqJptesYIYvfex9sgeHPgw/U=", + "requires": { + "readable-stream": "2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", + "integrity": "sha1-vsgb6ujPRVFovC5bKzH1vPrtmxs=", + "requires": { + "core-util-is": "1.0.1", + "inherits": "2.0.1", + "isarray": "0.0.1", + "process-nextick-args": "1.0.3", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", + "integrity": "sha1-awcIWu+aPMrG7lO/nT3wwVIaVTg=" + }, + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "process-nextick-args": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz", + "integrity": "sha1-4nLu2CXV6fTqdNjXOx/jEcO+tjA=" + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + } + } + } + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + }, + "dependencies": { + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + } + } + }, + "extend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", + "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "1.0.0-rc3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz", + "integrity": "sha1-01vGLn+8KTeuePlIqqDTjZBgdXc=", + "requires": { + "async": "1.4.2", + "combined-stream": "1.0.5", + "mime-types": "2.1.7" + } + }, + "har-validator": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", + "integrity": "sha1-2DhCsOtMQ1lgrrEIoGejqpTA7rI=", + "requires": { + "bluebird": "2.10.2", + "chalk": "1.1.1", + "commander": "2.8.1", + "is-my-json-valid": "2.12.2" + }, + "dependencies": { + "bluebird": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz", + "integrity": "sha1-AkpVFylTCIV/FPkfEQb8O1VfRGs=" + }, + "chalk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", + "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=", + "requires": { + "ansi-styles": "2.1.0", + "escape-string-regexp": "1.0.3", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.0", + "supports-color": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz", + "integrity": "sha1-mQ90cUaSe1Wakyv5KVkWPWDA0OI=" + }, + "escape-string-regexp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz", + "integrity": "sha1-ni2LJbwlVcMzZyN1DgPwmcJzW7U=" + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=" + } + } + }, + "strip-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "integrity": "sha1-dRC2ZVZ8qRTMtdfgcnY6yWi+NyQ=", + "requires": { + "ansi-regex": "2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=" + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "requires": { + "graceful-readlink": "1.0.1" + }, + "dependencies": { + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + } + } + }, + "is-my-json-valid": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.2.tgz", + "integrity": "sha1-DWWFkxjIRs46E0QC/T+8UEJyzMk=", + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "2.0.0", + "xtend": "4.0.0" + }, + "dependencies": { + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "requires": { + "is-property": "1.0.2" + }, + "dependencies": { + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" + } + } + }, + "jsonpointer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", + "integrity": "sha1-OvHdIP6FRjkQ1GmjheMwF9KgMNk=" + }, + "xtend": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz", + "integrity": "sha1-i8Nv+Hrtvnzp6vC8o2sjVKdDhA8=" + } + } + } + } + }, + "hawk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.0.tgz", + "integrity": "sha1-ihOuGZd+xgdgLz8Ln9Z28Yw4TkQ=", + "requires": { + "boom": "2.9.0", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + }, + "dependencies": { + "boom": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.9.0.tgz", + "integrity": "sha1-pUt/0v7kd9NRv543FoDL6mfxJxU=", + "requires": { + "hoek": "2.16.3" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "requires": { + "boom": "2.9.0" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "requires": { + "hoek": "2.16.3" + } + } + } + }, + "http-signature": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz", + "integrity": "sha1-F5bPZ6ABrVzWhJ3KCZFIXwkIn+Y=", + "requires": { + "asn1": "0.1.11", + "assert-plus": "0.1.5", + "ctype": "0.5.3" + }, + "dependencies": { + "asn1": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=" + }, + "assert-plus": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=" + }, + "ctype": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", + "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=" + } + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "mime-types": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.7.tgz", + "integrity": "sha1-/2A5cOPHMe9vf03zyaD0Y6E8J1U=", + "requires": { + "mime-db": "1.19.0" + }, + "dependencies": { + "mime-db": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.19.0.tgz", + "integrity": "sha1-SWoYGYp86CRFNOJbsQK3T7Qg/VY=" + } + } + }, + "node-uuid": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz", + "integrity": "sha1-MZu3pW58tj8AtcDNeFHNS03fHfk=" + }, + "oauth-sign": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz", + "integrity": "sha1-k4/ch1dlulJxN9iuydF44k3rxVM=" + }, + "qs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", + "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=" + }, + "stringstream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz", + "integrity": "sha1-Dw40I/lClgtWkqwySlfdCTvEGpI=" + }, + "tough-cookie": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.0.tgz", + "integrity": "sha1-1M5mEHXl/dt/IDQdP5kxpvu63eA=" + }, + "tunnel-agent": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz", + "integrity": "sha1-u+7P9NZ5znU9uUYnYaiN/Ow8WrM=" + } + } + }, + "should": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/should/-/should-8.4.0.tgz", + "integrity": "sha1-XmCInT5kS73Tl6MM00+tKPz5C8A=", + "dev": true, + "requires": { + "should-equal": "0.8.0", + "should-format": "0.3.2", + "should-type": "0.2.0" + }, + "dependencies": { + "should-equal": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-0.8.0.tgz", + "integrity": "sha1-o/BXMv9FusG3ukEvhAiFaBlkEpk=", + "dev": true, + "requires": { + "should-type": "0.2.0" + } + }, + "should-format": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.3.2.tgz", + "integrity": "sha1-pZgx4Bot3uFJkRvHFIvlyAMZ4f8=", + "dev": true, + "requires": { + "should-type": "0.2.0" + } + }, + "should-type": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz", + "integrity": "sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=", + "dev": true + } + } + }, + "sinon": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.0.tgz", + "integrity": "sha1-DxZwAs8AKotsMhhKWJltv74LH1g=", + "dev": true, + "requires": { + "formatio": "1.1.1", + "lolex": "1.3.2", + "samsam": "1.1.2", + "util": "0.10.3" + }, + "dependencies": { + "formatio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", + "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", + "dev": true, + "requires": { + "samsam": "1.1.2" + } + }, + "lolex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", + "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", + "dev": true + }, + "samsam": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", + "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + } + } + } + } +} diff --git a/package.json b/package.json index b2d0322..99e01f6 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,7 @@ "dependencies": { "JSONStream": "^1.3.1", "async": "*", - "bcoin": "bcoin-org/bcoin#886008a1822ce1da7fa8395ee7db4bcc1750a28a", - "bitcore-lib": "bitpay/bitcore-lib#transitional", + "bitcore-lib": "5.0.0-beta.1", "bitcore-message": "^1.0.1", "body-parser": "^1.13.3", "compression": "^1.6.1", diff --git a/test/addresses.js b/test/addresses.js index 6f27f84..aba9790 100644 --- a/test/addresses.js +++ b/test/addresses.js @@ -191,6 +191,7 @@ describe('Addresses', function() { }; describe('/addr/:addr', function() { var node = { + services: { address: {} }, getAddressSummary: sinon.stub().callsArgWith(2, null, summary) }; @@ -229,7 +230,7 @@ describe('Addresses', function() { }); it('handle error', function() { - var testnode = {}; + var testnode = { services: { address: { getTip: sinon.stub().returns({ height: 123 }) } } }; testnode.log = {}; testnode.log.error = sinon.stub(); var controller = new AddressController(testnode); @@ -328,11 +329,7 @@ describe('Addresses', function() { ]; var node = { - services: { - bitcoind: { - height: 534230 - } - }, + services: { address: {}, block: { getTip: sinon.stub().returns({ height: 534230 }) } }, getAddressUnspentOutputs: sinon.stub().callsArgWith(2, null, utxos.slice(0, 1)) }; @@ -392,11 +389,7 @@ describe('Addresses', function() { ]; var node = { - services: { - bitcoind: { - height: 534230 - } - }, + services: { address: {}, block: { getTip: sinon.stub().returns({ height: 534230 }) } }, getAddressUnspentOutputs: sinon.stub().callsArgWith(2, null, utxos) }; @@ -550,11 +543,7 @@ describe('Addresses', function() { var node = { getAddressHistory: sinon.stub().callsArgWith(2, null, txinfos2), - services: { - bitcoind: { - height: 534232 - } - }, + services: { address: {}, block: { getTip: sinon.stub().returns({ height: 534232 }) } }, network: 'testnet' }; @@ -687,11 +676,7 @@ describe('Addresses', function() { var node = { getAddressHistory: sinon.stub().callsArgWith(2, null, txinfos2), - services: { - bitcoind: { - height: 534232 - } - }, + services: { block: { getTip: sinon.stub().returns({ height: 534232 }) }, address: {} }, network: 'testnet' }; @@ -716,7 +701,7 @@ describe('Addresses', function() { }); describe('#_getTransformOptions', function() { it('will return false with value of string "0"', function() { - var node = {}; + var node = { services: { address: {}, block: {} } }; var addresses = new AddressController(node); var req = { query: { @@ -733,7 +718,7 @@ describe('Addresses', function() { }); }); it('will return true with value of string "1"', function() { - var node = {}; + var node = { services: { address: {}, block: {} } }; var addresses = new AddressController(node); var req = { query: { @@ -750,7 +735,7 @@ describe('Addresses', function() { }); }); it('will return true with value of number "1"', function() { - var node = {}; + var node = { services: { address: {}, block: {} } }; var addresses = new AddressController(node); var req = { query: { diff --git a/test/index.js b/test/index.js index 964fe6e..63d5dde 100644 --- a/test/index.js +++ b/test/index.js @@ -8,7 +8,9 @@ describe('Index', function() { describe('@constructor', function() { it('will set rate limiter options', function() { var options = {}; - var node = {}; + var node = { services: { block: {} }, + log: sinon.stub() + }; var index = new InsightAPI({ rateLimiterOptions: options, node: node @@ -16,7 +18,9 @@ describe('Index', function() { index.rateLimiterOptions.should.equal(options); }); it('will set disable rate limiter option', function() { - var node = {}; + var node = { services: { block: {} }, + log: sinon.stub() + }; var index = new InsightAPI({ disableRateLimiter: true, node: node @@ -29,7 +33,9 @@ describe('Index', function() { var options = { whitelist: ['127.0.0.1'] }; - var node = {}; + var node = { services: { block: {} }, + log: sinon.stub() + }; var index = new InsightAPI({ rateLimiterOptions: options, node: node @@ -40,7 +46,7 @@ describe('Index', function() { }); describe('#cache', function() { it('will set cache control header', function(done) { - var node = { + var node = { services: { block: {} }, log: sinon.stub() }; var index = new InsightAPI({ @@ -60,9 +66,11 @@ describe('Index', function() { }); }); it('will NOT set cache control header', function(done) { - var node = { + + var node = { services: { block: {} }, log: sinon.stub() }; + var index = new InsightAPI({ enableCache: false, node: node @@ -80,7 +88,7 @@ describe('Index', function() { }); describe('#cacheShort', function() { it('will set SHORT cache control header', function(done) { - var node = { + var node = { services: { block: {} }, log: sinon.stub() }; var index = new InsightAPI({ @@ -101,7 +109,7 @@ describe('Index', function() { }); }); it('will set SHORT DEFAULT cache control header', function(done) { - var node = { + var node = { services: { block: {} }, log: sinon.stub() }; var index = new InsightAPI({ @@ -123,7 +131,7 @@ describe('Index', function() { }); describe('#cacheLong', function() { it('will set LONG cache control header', function(done) { - var node = { + var node = { services: { block: {} }, log: sinon.stub() }; var index = new InsightAPI({ @@ -144,7 +152,8 @@ describe('Index', function() { }); }); it('will set LONG DEFAULT cache control header', function(done) { - var node = { + + var node = { services: { block: {} }, log: sinon.stub() }; var index = new InsightAPI({ @@ -166,7 +175,7 @@ describe('Index', function() { }); describe('#setupRoutes', function() { it('will use rate limiter by default', function() { - var node = {}; + var node = { services: { block: {} } }; var index = new InsightAPI({ node: node }); @@ -189,7 +198,7 @@ describe('Index', function() { middleware.callCount.should.equal(1); }); it('will NOT use rate limiter if disabled', function() { - var node = {}; + var node = { services: { block: {} } }; var index = new InsightAPI({ node: node, disableRateLimiter: true diff --git a/test/status.js b/test/status.js index d65f78e..269bc94 100644 --- a/test/status.js +++ b/test/status.js @@ -30,10 +30,10 @@ describe('Status', function() { var node = { services: { - bitcoind: { - getInfo: sinon.stub().callsArgWith(0, null, info), + header: { getInfo: sinon.stub().callsArgWith(0, null, info) }, + block: { + getTip: sinon.stub().returns({ hash: outSetInfo.bestblock }), getBestBlockHash: sinon.stub().callsArgWith(0, null, outSetInfo.bestblock), - tiphash: outSetInfo.bestblock } } }; @@ -54,6 +54,7 @@ describe('Status', function() { should.exist(data.info.difficulty); should.exist(data.info.testnet); should.exist(data.info.relayfee); + done(); } }; @@ -114,10 +115,11 @@ describe('Status', function() { it('should have correct data', function(done) { var node = { services: { - bitcoind: { - height: 500000, + header: { getInfo: sinon.stub() }, + block: { isSynced: sinon.stub().callsArgWith(0, null, true), - syncPercentage: sinon.stub().callsArgWith(0, null, 99.99) + syncPercentage: sinon.stub().callsArgWith(0, null, 100), + getTip: sinon.stub().returns({ height: 500000, hash: 'aa' }) } } }; @@ -146,7 +148,11 @@ describe('Status', function() { describe('/peer', function() { it('should have correct data', function(done) { - var node = {}; + var node = { + services: { + block: { getTip: sinon.stub().returns({ height: 123 }) } + } + }; var expected = { connected: true, @@ -170,7 +176,14 @@ describe('Status', function() { describe('/version', function() { it('should have correct data', function(done) { - var node = {}; + var node = { + services: { + block: { + getTip: sinon.stub().returns({ height: 123 }) + } + } + }; + var expected = { version: require('../package.json').version }; diff --git a/test/transactions.js b/test/transactions.js index 9370934..dfbe09a 100644 --- a/test/transactions.js +++ b/test/transactions.js @@ -175,12 +175,8 @@ describe('Transactions', function() { }; var node = { + services: { block: { getTip: sinon.stub().returns({ height: 534203 }) } }, getDetailedTransaction: sinon.stub().callsArgWith(1, null, detailedTransaction), - services: { - bitcoind: { - height: 534203 - }, - }, network: 'testnet' }; @@ -352,15 +348,11 @@ describe('Transactions', function() { }; var node = { + services: { block: { getTip: sinon.stub().returns({ height: 534209 }) } }, getBlockOverview: sinon.stub().callsArgWith(1, null, blockOverview), getDetailedTransaction: function(txid, callback) { callback(null, transactionDetails[txid]); }, - services: { - bitcoind: { - height: 534209 - } - }, network: 'testnet' }; @@ -738,12 +730,8 @@ describe('Transactions', function() { txinfos[1].tx.outputs[1].spentHeight = 112; var node = { + services: { block: { getTip: sinon.stub().returns({ height: 534223 }) } }, getAddressHistory: sinon.stub().callsArgWith(2, null, historyResult), - services: { - bitcoind: { - height: 534223 - } - }, network: 'testnet' }; @@ -948,6 +936,7 @@ describe('Transactions', function() { var hex = '01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2303d6250800feb0aae355fe263600000963676d696e6572343208ae5800000000000000ffffffff01c018824a000000001976a91468bedce8982d25c3b6b03f6238cbad00378b8ead88ac00000000'; var node = { + services: { block: { getTip: sinon.stub().returns({ height: 534233 }) } }, getTransaction: sinon.stub().callsArgWith(1, null, bitcore.Transaction().fromBuffer(new Buffer(hex, 'hex'))) }; @@ -988,6 +977,7 @@ describe('Transactions', function() { var tx = bitcore.Transaction().fromBuffer(new Buffer(rawTx, 'hex')); var node = { + services: { block: { getTip: sinon.stub().returns({ height: 534233 }) } }, network: bitcore.Networks.livenet }; @@ -1012,6 +1002,7 @@ describe('Transactions', function() { var tx = bitcore.Transaction().fromBuffer(new Buffer(rawTx, 'hex')); var node = { + services: { block: { getTip: sinon.stub().returns({ height: 534233 }) } }, network: bitcore.Networks.testnet }; @@ -1032,6 +1023,7 @@ describe('Transactions', function() { ]; var node = { + services: { block: { getTip: sinon.stub().returns({ height: 534233 }) } }, network: bitcore.Networks.livenet };