diff --git a/btcrDidUtils.js b/btcrDidUtils.js index f1a6e03..cbcde39 100644 --- a/btcrDidUtils.js +++ b/btcrDidUtils.js @@ -127,7 +127,7 @@ module.exports = { }; }).call(this,require("buffer").Buffer) -},{"bitcoinjs-lib":26,"buffer":61,"commander":64,"txref-conversion-js":143}],2:[function(require,module,exports){ +},{"bitcoinjs-lib":26,"buffer":60,"commander":63,"txref-conversion-js":143}],2:[function(require,module,exports){ 'use strict'; var txRefConversion = require("txref-conversion-js"); @@ -229,9 +229,7 @@ async function addSupplementalDidDocuments(implicitDdo, txDetails, txref) { async function retrieveEndpointFragments(ddoUrl) { var ddo1 = await txRefConversion.promisifiedRequest({ "url": ddoUrl }); - var ddoJson = JSON.parse(ddo1).didDocument; - var vcJson = JSON.parse(ddo1).claims; - return [ddoJson, vcJson]; + return [ddo1]; } /**r @@ -241,7 +239,7 @@ async function retrieveEndpointFragments(ddoUrl) { * @param txref * @returns {{@context: string, id: string, publicKey: [null], authentication: [null], SatoshiAuditTrail: [null]}} */ -function toImplicitDidDocument(txDetails, txref) { +async function toImplicitDidDocument(txDetails, txref) { if (!txDetails) { throw "Missing txDetails argument"; } @@ -249,9 +247,11 @@ function toImplicitDidDocument(txDetails, txref) { throw "Missing txref argument"; } - var result = { + /*const ddoResult = { "@context": ["https://schema.org/", "https://w3id.org/security/v1"] - }; + };*/ + + var ddoResult = {}; var btcrDid = txref; var fundingScript = txDetails.inputs[0].script; @@ -264,65 +264,53 @@ function toImplicitDidDocument(txDetails, txref) { return f; }); - var ddoJson = { - "@context": "https://w3id.org/btcr/v1", - "id": btcrDid, - "publicKey": [{ - "id": btcrDid + "#keys-1", - "owner": btcrDid, - "type": "EdDsaSAPublicKeySecp256k1", - "publicKeyHex": publicKeyHex.toString() - }], - "authentication": [{ - "type": "EdDsaSAPublicKeySecp256k1Authentication", - "publicKey": "#keys-1" - }], - "SatoshiAuditTrail": [{ - "chain": txDetails.chain, - "blockhash": txDetails.blockHash, - "blockindex": txDetails.blockIndex, - "outputindex": txDetails.utxoIndex, - "blocktime": txDetails.txReceived, - "time": 1499501000, - "timereceived": txDetails.txReceived, - "burn-fee": -0.05 - }] - }; - if (ddoUrl) { - ddoJson.service = [{ - "type": "BTCREndpoint", - "serviceEndpoint": ddoUrl, - "timestamp": txDetails.timereceived // TODO - }]; + var explicitDdoRaw = await retrieveEndpointFragments(ddoUrl); + try { + var explicitDdo = JSON.parse(explicitDdoRaw); + ddoResult['explicitDdo'] = explicitDdo; + } catch (e) { + ddoResult['raw'] = explicitDdoRaw; + ddoResult['error'] = e.toString(); + } + } else { + ddoResult['implicitDdo'] = { + "@context": "https://w3id.org/btcr/v1", + "id": btcrDid, + "publicKey": [{ + "id": btcrDid + "#keys-1", + "owner": btcrDid, + "type": "EcdsaSecp256k1VerificationKey2019", + "publicKeyHex": publicKeyHex.toString() + }], + "authentication": [{ + "type": "EcdsaSecp256k1VerificationKey2019", + "publicKey": "#keys-1" + }], + "SatoshiAuditTrail": [{ + "chain": txDetails.chain, + "blockhash": txDetails.blockHash, + "blockindex": txDetails.blockIndex, + "outputindex": txDetails.utxoIndex, + "blocktime": txDetails.txReceived, + "time": 1499501000, + "timereceived": txDetails.txReceived, + "burn-fee": -0.05 + }] + }; } - return ddoJson; + return ddoResult; } async function toDidDocument(txDetails, txref) { - var implicitDdo = toImplicitDidDocument(txDetails, txref); - var implicitDdoCopy = JSON.parse(JSON.stringify(implicitDdo)); + var ddoResult = await toImplicitDidDocument(txDetails, txref); var result = { "txDetails": txDetails, - "ddophase1": implicitDdo + "ddoResult": ddoResult }; - if (implicitDdo.service && implicitDdo.service.length == 1 && implicitDdo.service[0].serviceEndpoint) { - var endpointJson = await retrieveEndpointFragments(implicitDdo.service[0].serviceEndpoint); - var ddoJson = endpointJson[0]; - var vcJson = endpointJson[1]; - result.vc = vcJson; - result.ddophase2 = ddoJson; - var ddo = await addSupplementalDidDocuments(implicitDdoCopy, txDetails, txref); - result.ddo = ddo; - result.ddophase3 = ddo; - } else { - result.ddo = implicitDdoCopy; - result.ddophase3 = implicitDdoCopy; - } - return result; } @@ -349,21 +337,15 @@ async function resolveFromTxid(txid, chain) { return deterministicDid; } -// xkyt-fzgq-qq87-xnhn -// did:btcr:xyv2-xzyq-qqm5-tyke - -// did:btcr:txtest1:8kyt-fzzq-qqqq-ase0-d8 -// did:btcr:8kyt-fzzq-qqqq-ase0-d8 - /* -resolveFromTxref("did:btcr:8kyt-fzzq-qqqq-ase0-d8").then(dddo => { - console.log(JSON.stringify(dddo, null, 4)); +resolveFromTxref("did:btcr:xyv2-xzpq-q9wa-p7t").then(dddo => { + console.log(JSON.stringify(dddo, null, 4)); }, error => { - console.error(error) + console.error(error) });*/ /* -resolveFromTxid("f8cdaff3ebd9e862ed5885f8975489090595abe1470397f79780ead1c7528107", "testnet").then(dddo => { +resolveFromTxid("11d8023bd6ef3afc621a019d939345d31a5afa65c93dd4aab6af5feb6a55f4f2", "mainnet").then(dddo => { console.log(JSON.stringify(dddo, null, 4)); }, error => { console.error(error) @@ -398,6 +380,8 @@ module.exports = { (function (global){ 'use strict'; +var objectAssign = require('object-assign'); + // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js // original notice: @@ -439,6 +423,8 @@ function isBuffer(b) { } // based on node assert, original notice: +// NB: The URL to the CommonJS spec is kept just for tradition. +// node-assert has evolved a lot since then, both in API and behavior. // http://wiki.commonjs.org/wiki/Unit_Testing/1.0 // @@ -879,6 +865,18 @@ assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { assert.ifError = function(err) { if (err) throw err; }; +// Expose a strict only variant of assert +function strict(value, message) { + if (!value) fail(value, true, message, '==', strict); +} +assert.strict = objectAssign(strict, assert, { + equal: assert.strictEqual, + deepEqual: assert.deepStrictEqual, + notEqual: assert.notStrictEqual, + notDeepEqual: assert.notDeepStrictEqual +}); +assert.strict.strict = assert.strict; + var objectKeys = Object.keys || function (obj) { var keys = []; for (var key in obj) { @@ -888,7 +886,7 @@ var objectKeys = Object.keys || function (obj) { }; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"util/":7}],5:[function(require,module,exports){ +},{"object-assign":100,"util/":7}],5:[function(require,module,exports){ if (typeof Object.create === 'function') { // implementation from standard node.js 'util' module module.exports = function inherits(ctor, superCtor) { @@ -3512,7 +3510,7 @@ BigInteger.prototype.toHex = function(size) { } }).call(this,require("buffer").Buffer) -},{"./bigi":11,"assert":4,"buffer":61}],13:[function(require,module,exports){ +},{"./bigi":11,"assert":4,"buffer":60}],13:[function(require,module,exports){ var BigInteger = require('./bigi') //addons @@ -3521,36 +3519,39 @@ require('./convert') module.exports = BigInteger },{"./bigi":11,"./convert":12}],14:[function(require,module,exports){ module.exports={ - "_from": "bigi@^1.4.0", + "_args": [ + [ + "bigi@1.4.2", + "/Users/kim/projects/btcr-did-tools-js" + ] + ], + "_from": "bigi@1.4.2", "_id": "bigi@1.4.2", "_inBundle": false, "_integrity": "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU=", "_location": "/bigi", "_phantomChildren": {}, "_requested": { - "type": "range", + "type": "version", "registry": true, - "raw": "bigi@^1.4.0", + "raw": "bigi@1.4.2", "name": "bigi", "escapedName": "bigi", - "rawSpec": "^1.4.0", + "rawSpec": "1.4.2", "saveSpec": null, - "fetchSpec": "^1.4.0" + "fetchSpec": "1.4.2" }, "_requiredBy": [ "/bitcoinjs-lib", "/ecurve" ], "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz", - "_shasum": "9c665a95f88b8b08fc05cfd731f561859d725825", - "_spec": "bigi@^1.4.0", - "_where": "/Users/kim/projects/btcr-did-tools-js/node_modules/bitcoinjs-lib", + "_spec": "1.4.2", + "_where": "/Users/kim/projects/btcr-did-tools-js", "bugs": { "url": "https://github.com/cryptocoinjs/bigi/issues" }, - "bundleDependencies": false, "dependencies": {}, - "deprecated": false, "description": "Big integers.", "devDependencies": { "coveralls": "^2.11.2", @@ -3966,7 +3967,7 @@ module.exports = { toOutputScript: toOutputScript } -},{"./networks":27,"./script":28,"./templates":30,"./types":54,"bech32":10,"bs58check":60,"safe-buffer":124,"typeforce":146}],19:[function(require,module,exports){ +},{"./networks":27,"./script":28,"./templates":30,"./types":54,"bech32":10,"bs58check":59,"safe-buffer":124,"typeforce":146}],19:[function(require,module,exports){ var Buffer = require('safe-buffer').Buffer var bcrypto = require('./crypto') var fastMerkleRoot = require('merkle-lib/fastRoot') @@ -4145,7 +4146,7 @@ Block.prototype.checkProofOfWork = function () { module.exports = Block -},{"./crypto":21,"./transaction":52,"./types":54,"merkle-lib/fastRoot":100,"safe-buffer":124,"typeforce":146,"varuint-bitcoin":153}],20:[function(require,module,exports){ +},{"./crypto":21,"./transaction":52,"./types":54,"merkle-lib/fastRoot":99,"safe-buffer":124,"typeforce":146,"varuint-bitcoin":153}],20:[function(require,module,exports){ var pushdata = require('pushdata-bitcoin') var varuint = require('varuint-bitcoin') @@ -4234,7 +4235,7 @@ module.exports = { sha256: sha256 } -},{"create-hash":66}],22:[function(require,module,exports){ +},{"create-hash":65}],22:[function(require,module,exports){ var Buffer = require('safe-buffer').Buffer var createHmac = require('create-hmac') var typeforce = require('typeforce') @@ -4397,7 +4398,7 @@ module.exports = { __curve: secp256k1 } -},{"./ecsignature":24,"./types":54,"bigi":13,"create-hmac":68,"ecurve":72,"safe-buffer":124,"typeforce":146}],23:[function(require,module,exports){ +},{"./ecsignature":24,"./types":54,"bigi":13,"create-hmac":67,"ecurve":71,"safe-buffer":124,"typeforce":146}],23:[function(require,module,exports){ var baddress = require('./address') var bcrypto = require('./crypto') var ecdsa = require('./ecdsa') @@ -4530,7 +4531,7 @@ ECPair.prototype.verify = function (hash, signature) { module.exports = ECPair -},{"./address":18,"./crypto":21,"./ecdsa":22,"./networks":27,"./types":54,"bigi":13,"ecurve":72,"randombytes":109,"typeforce":146,"wif":154}],24:[function(require,module,exports){ +},{"./address":18,"./crypto":21,"./ecdsa":22,"./networks":27,"./types":54,"bigi":13,"ecurve":71,"randombytes":109,"typeforce":146,"wif":154}],24:[function(require,module,exports){ (function (Buffer){ var bip66 = require('bip66') var typeforce = require('typeforce') @@ -4631,7 +4632,7 @@ ECSignature.prototype.toScriptSignature = function (hashType) { module.exports = ECSignature }).call(this,require("buffer").Buffer) -},{"./types":54,"bigi":13,"bip66":15,"buffer":61,"typeforce":146}],25:[function(require,module,exports){ +},{"./types":54,"bigi":13,"bip66":15,"buffer":60,"typeforce":146}],25:[function(require,module,exports){ var Buffer = require('safe-buffer').Buffer var base58check = require('bs58check') var bcrypto = require('./crypto') @@ -4949,7 +4950,7 @@ HDNode.prototype.derivePath = function (path) { module.exports = HDNode -},{"./crypto":21,"./ecpair":23,"./networks":27,"./types":54,"bigi":13,"bs58check":60,"create-hmac":68,"ecurve":72,"safe-buffer":124,"typeforce":146}],26:[function(require,module,exports){ +},{"./crypto":21,"./ecpair":23,"./networks":27,"./types":54,"bigi":13,"bs58check":59,"create-hmac":67,"ecurve":71,"safe-buffer":124,"typeforce":146}],26:[function(require,module,exports){ var script = require('./script') var templates = require('./templates') @@ -6064,7 +6065,7 @@ module.exports = { } }).call(this,{"isBuffer":require("../../../../is-buffer/index.js")}) -},{"../../../../is-buffer/index.js":81,"../../script":28,"../../types":54,"../multisig/":31,"../pubkey/":35,"../pubkeyhash/":38,"typeforce":146}],51:[function(require,module,exports){ +},{"../../../../is-buffer/index.js":80,"../../script":28,"../../types":54,"../multisig/":31,"../pubkey/":35,"../pubkeyhash/":38,"typeforce":146}],51:[function(require,module,exports){ // OP_0 {scriptHash} var bscript = require('../../script') @@ -7432,285 +7433,12 @@ module.exports = types },{}],56:[function(require,module,exports){ arguments[4][55][0].apply(exports,arguments) },{"dup":55}],57:[function(require,module,exports){ -'use strict'; - -var Buffer = require('safe-buffer').Buffer; - -var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.toLowerCase()) { - case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': - return true; - default: - return false; - } -}; - -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - case 'latin1': - case 'binary': - return 'latin1'; - case 'base64': - case 'ascii': - case 'hex': - return enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } - } -}; - -// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -exports.StringDecoder = StringDecoder; -function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); -} - -StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; - -StringDecoder.prototype.end = utf8End; - -// Returns only complete characters in a Buffer -StringDecoder.prototype.text = utf8Text; - -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; - -// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. -function utf8CheckByte(byte) { - if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; - return -1; -} - -// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - return nb; - } - return 0; -} - -// Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'.repeat(p); - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'.repeat(p + 1); - } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'.repeat(p + 2); - } - } - } -} - -// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf, p); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} - -// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a -// partial character, the character's bytes are buffered until the required -// number of bytes are available. -function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); -} - -// For UTF-8, a replacement character for each buffered byte of a (partial) -// character needs to be added to the output. -function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed); - return r; -} - -// UTF-16LE typically needs two bytes per character, but even if we have an even -// number of bytes available, we need to check if we end on a leading/high -// surrogate. In that case, we need to wait for the next two bytes in order to -// decode the last character properly. -function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - if (r) { - var c = r.charCodeAt(r.length - 1); - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - return r; - } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} - -// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - return r; -} - -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - return buf.toString('base64', i, buf.length - n); -} - -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; -} - -// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function simpleWrite(buf) { - return buf.toString(this.encoding); -} - -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; -} -},{"safe-buffer":124}],58:[function(require,module,exports){ var basex = require('base-x') var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' module.exports = basex(ALPHABET) -},{"base-x":8}],59:[function(require,module,exports){ +},{"base-x":8}],58:[function(require,module,exports){ 'use strict' var base58 = require('bs58') @@ -7762,7 +7490,7 @@ module.exports = function (checksumFn) { } } -},{"bs58":58,"safe-buffer":124}],60:[function(require,module,exports){ +},{"bs58":57,"safe-buffer":124}],59:[function(require,module,exports){ 'use strict' var createHash = require('create-hash') @@ -7776,7 +7504,8 @@ function sha256x2 (buffer) { module.exports = bs58checkBase(sha256x2) -},{"./base":59,"create-hash":66}],61:[function(require,module,exports){ +},{"./base":58,"create-hash":65}],60:[function(require,module,exports){ +(function (Buffer){ /*! * The buffer module from node.js, for the browser. * @@ -9514,7 +9243,8 @@ function numberIsNaN (obj) { return obj !== obj // eslint-disable-line no-self-compare } -},{"base64-js":9,"ieee754":79}],62:[function(require,module,exports){ +}).call(this,require("buffer").Buffer) +},{"base64-js":9,"buffer":60,"ieee754":78}],61:[function(require,module,exports){ module.exports = { "100": "Continue", "101": "Switching Protocols", @@ -9580,7 +9310,7 @@ module.exports = { "511": "Network Authentication Required" } -},{}],63:[function(require,module,exports){ +},{}],62:[function(require,module,exports){ var Buffer = require('safe-buffer').Buffer var Transform = require('stream').Transform var StringDecoder = require('string_decoder').StringDecoder @@ -9681,7 +9411,7 @@ CipherBase.prototype._toString = function (value, enc, fin) { module.exports = CipherBase -},{"inherits":80,"safe-buffer":124,"stream":133,"string_decoder":57}],64:[function(require,module,exports){ +},{"inherits":79,"safe-buffer":124,"stream":133,"string_decoder":138}],63:[function(require,module,exports){ (function (process){ /** * Module dependencies. @@ -10916,7 +10646,7 @@ function exists(file) { } }).call(this,require('_process')) -},{"_process":103,"child_process":56,"events":76,"fs":56,"path":101,"util":152}],65:[function(require,module,exports){ +},{"_process":103,"child_process":56,"events":75,"fs":56,"path":101,"util":152}],64:[function(require,module,exports){ (function (Buffer){ // Copyright Joyent, Inc. and other Node contributors. // @@ -11027,7 +10757,7 @@ function objectToString(o) { } }).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":81}],66:[function(require,module,exports){ +},{"../../is-buffer/index.js":80}],65:[function(require,module,exports){ 'use strict' var inherits = require('inherits') var MD5 = require('md5.js') @@ -11059,14 +10789,14 @@ module.exports = function createHash (alg) { return new Hash(sha(alg)) } -},{"cipher-base":63,"inherits":80,"md5.js":99,"ripemd160":123,"sha.js":126}],67:[function(require,module,exports){ +},{"cipher-base":62,"inherits":79,"md5.js":98,"ripemd160":123,"sha.js":126}],66:[function(require,module,exports){ var MD5 = require('md5.js') module.exports = function (buffer) { return new MD5().update(buffer).digest() } -},{"md5.js":99}],68:[function(require,module,exports){ +},{"md5.js":98}],67:[function(require,module,exports){ 'use strict' var inherits = require('inherits') var Legacy = require('./legacy') @@ -11130,7 +10860,7 @@ module.exports = function createHmac (alg, key) { return new Hmac(alg, key) } -},{"./legacy":69,"cipher-base":63,"create-hash/md5":67,"inherits":80,"ripemd160":123,"safe-buffer":124,"sha.js":126}],69:[function(require,module,exports){ +},{"./legacy":68,"cipher-base":62,"create-hash/md5":66,"inherits":79,"ripemd160":123,"safe-buffer":124,"sha.js":126}],68:[function(require,module,exports){ 'use strict' var inherits = require('inherits') var Buffer = require('safe-buffer').Buffer @@ -11178,7 +10908,7 @@ Hmac.prototype._final = function () { } module.exports = Hmac -},{"cipher-base":63,"inherits":80,"safe-buffer":124}],70:[function(require,module,exports){ +},{"cipher-base":62,"inherits":79,"safe-buffer":124}],69:[function(require,module,exports){ var assert = require('assert') var BigInteger = require('bigi') @@ -11257,7 +10987,7 @@ Curve.prototype.validate = function (Q) { module.exports = Curve -},{"./point":74,"assert":4,"bigi":13}],71:[function(require,module,exports){ +},{"./point":73,"assert":4,"bigi":13}],70:[function(require,module,exports){ module.exports={ "secp128r1": { "p": "fffffffdffffffffffffffffffffffff", @@ -11324,7 +11054,7 @@ module.exports={ } } -},{}],72:[function(require,module,exports){ +},{}],71:[function(require,module,exports){ var Point = require('./point') var Curve = require('./curve') @@ -11336,7 +11066,7 @@ module.exports = { getCurveByName: getCurveByName } -},{"./curve":70,"./names":73,"./point":74}],73:[function(require,module,exports){ +},{"./curve":69,"./names":72,"./point":73}],72:[function(require,module,exports){ var BigInteger = require('bigi') var curves = require('./curves.json') @@ -11359,7 +11089,7 @@ function getCurveByName (name) { module.exports = getCurveByName -},{"./curve":70,"./curves.json":71,"bigi":13}],74:[function(require,module,exports){ +},{"./curve":69,"./curves.json":70,"bigi":13}],73:[function(require,module,exports){ var assert = require('assert') var Buffer = require('safe-buffer').Buffer var BigInteger = require('bigi') @@ -11605,7 +11335,7 @@ Point.prototype.toString = function () { module.exports = Point -},{"assert":4,"bigi":13,"safe-buffer":124}],75:[function(require,module,exports){ +},{"assert":4,"bigi":13,"safe-buffer":124}],74:[function(require,module,exports){ (function (process,global,setImmediate){ /*! * @overview es6-promise - a tiny implementation of Promises/A+. @@ -12581,7 +12311,7 @@ module.exports = Point }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) -},{"_process":103,"timers":139}],76:[function(require,module,exports){ +},{"_process":103,"timers":139}],75:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -12603,8 +12333,16 @@ module.exports = Point // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. +var objectCreate = Object.create || objectCreatePolyfill +var objectKeys = Object.keys || objectKeysPolyfill +var bind = Function.prototype.bind || functionBindPolyfill + function EventEmitter() { - this._events = this._events || {}; + if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) { + this._events = objectCreate(null); + this._eventsCount = 0; + } + this._maxListeners = this._maxListeners || undefined; } module.exports = EventEmitter; @@ -12617,275 +12355,488 @@ EventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are // added to it. This is a useful default which helps finding memory leaks. -EventEmitter.defaultMaxListeners = 10; +var defaultMaxListeners = 10; + +var hasDefineProperty; +try { + var o = {}; + if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 }); + hasDefineProperty = o.x === 0; +} catch (err) { hasDefineProperty = false } +if (hasDefineProperty) { + Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + // check whether the input is a positive number (whose value is zero or + // greater and not a NaN). + if (typeof arg !== 'number' || arg < 0 || arg !== arg) + throw new TypeError('"defaultMaxListeners" must be a positive number'); + defaultMaxListeners = arg; + } + }); +} else { + EventEmitter.defaultMaxListeners = defaultMaxListeners; +} // Obviously not all Emitters should be limited to 10. This function allows // that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function(n) { - if (!isNumber(n) || n < 0 || isNaN(n)) - throw TypeError('n must be a positive number'); +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || isNaN(n)) + throw new TypeError('"n" argument must be a positive number'); this._maxListeners = n; return this; }; -EventEmitter.prototype.emit = function(type) { - var er, handler, len, args, i, listeners; +function $getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} - if (!this._events) - this._events = {}; +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return $getMaxListeners(this); +}; + +// These standalone emit* functions are used to optimize calling of event +// handlers for fast cases because emit() itself often has a variable number of +// arguments and can be deoptimized because of that. These functions always have +// the same number of arguments and thus do not get deoptimized, so the code +// inside them can execute faster. +function emitNone(handler, isFn, self) { + if (isFn) + handler.call(self); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self); + } +} +function emitOne(handler, isFn, self, arg1) { + if (isFn) + handler.call(self, arg1); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1); + } +} +function emitTwo(handler, isFn, self, arg1, arg2) { + if (isFn) + handler.call(self, arg1, arg2); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1, arg2); + } +} +function emitThree(handler, isFn, self, arg1, arg2, arg3) { + if (isFn) + handler.call(self, arg1, arg2, arg3); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1, arg2, arg3); + } +} + +function emitMany(handler, isFn, self, args) { + if (isFn) + handler.apply(self, args); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].apply(self, args); + } +} + +EventEmitter.prototype.emit = function emit(type) { + var er, handler, len, args, i, events; + var doError = (type === 'error'); + + events = this._events; + if (events) + doError = (doError && events.error == null); + else if (!doError) + return false; // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events.error || - (isObject(this._events.error) && !this._events.error.length)) { + if (doError) { + if (arguments.length > 1) er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } else { - // At least give some kind of context to the user - var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); - err.context = er; - throw err; - } + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + // At least give some kind of context to the user + var err = new Error('Unhandled "error" event. (' + er + ')'); + err.context = er; + throw err; } + return false; } - handler = this._events[type]; + handler = events[type]; - if (isUndefined(handler)) + if (!handler) return false; - if (isFunction(handler)) { - switch (arguments.length) { + var isFn = typeof handler === 'function'; + len = arguments.length; + switch (len) { // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; + case 1: + emitNone(handler, isFn, this); + break; + case 2: + emitOne(handler, isFn, this, arguments[1]); + break; + case 3: + emitTwo(handler, isFn, this, arguments[1], arguments[2]); + break; + case 4: + emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]); + break; // slower - default: - args = Array.prototype.slice.call(arguments, 1); - handler.apply(this, args); - } - } else if (isObject(handler)) { - args = Array.prototype.slice.call(arguments, 1); - listeners = handler.slice(); - len = listeners.length; - for (i = 0; i < len; i++) - listeners[i].apply(this, args); + default: + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + emitMany(handler, isFn, this, args); } return true; }; -EventEmitter.prototype.addListener = function(type, listener) { +function _addListener(target, type, listener, prepend) { var m; + var events; + var existing; - if (!isFunction(listener)) - throw TypeError('listener must be a function'); + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); - if (!this._events) - this._events = {}; + events = target._events; + if (!events) { + events = target._events = objectCreate(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (this._events.newListener) - this.emit('newListener', type, - isFunction(listener.listener) ? - listener.listener : listener); + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } - if (!this._events[type]) + if (!existing) { // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - else if (isObject(this._events[type])) - // If we've already got an array, just append. - this._events[type].push(listener); - else - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; - - // Check for listener leak - if (isObject(this._events[type]) && !this._events[type].warned) { - if (!isUndefined(this._maxListeners)) { - m = this._maxListeners; + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; } else { - m = EventEmitter.defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - if (typeof console.trace === 'function') { - // not supported in IE 10 - console.trace(); + // If we've already got an array, just append. + if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + } + + // Check for listener leak + if (!existing.warned) { + m = $getMaxListeners(target); + if (m && m > 0 && existing.length > m) { + existing.warned = true; + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' "' + String(type) + '" listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit.'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + if (typeof console === 'object' && console.warn) { + console.warn('%s: %s', w.name, w.message); + } } } } - return this; + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); }; EventEmitter.prototype.on = EventEmitter.prototype.addListener; -EventEmitter.prototype.once = function(type, listener) { - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - var fired = false; - - function g() { - this.removeListener(type, g); +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; - if (!fired) { - fired = true; - listener.apply(this, arguments); +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + switch (arguments.length) { + case 0: + return this.listener.call(this.target); + case 1: + return this.listener.call(this.target, arguments[0]); + case 2: + return this.listener.call(this.target, arguments[0], arguments[1]); + case 3: + return this.listener.call(this.target, arguments[0], arguments[1], + arguments[2]); + default: + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) + args[i] = arguments[i]; + this.listener.apply(this.target, args); } } +} - g.listener = listener; - this.on(type, g); +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = bind.call(onceWrapper, state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} +EventEmitter.prototype.once = function once(type, listener) { + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + this.on(type, _onceWrap(this, type, listener)); return this; }; -// emits a 'removeListener' event iff the listener was removed -EventEmitter.prototype.removeListener = function(type, listener) { - var list, position, length, i; +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; - if (!isFunction(listener)) - throw TypeError('listener must be a function'); +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + + events = this._events; + if (!events) + return this; + + list = events[type]; + if (!list) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = objectCreate(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; - if (!this._events || !this._events[type]) - return this; + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } - list = this._events[type]; - length = list.length; - position = -1; - - if (list === listener || - (isFunction(list.listener) && list.listener === listener)) { - delete this._events[type]; - if (this._events.removeListener) - this.emit('removeListener', type, listener); - - } else if (isObject(list)) { - for (i = length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - position = i; - break; + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else + spliceOne(list, position); + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener) + this.emit('removeListener', type, originalListener || listener); } - } - if (position < 0) return this; + }; - if (list.length === 1) { - list.length = 0; - delete this._events[type]; - } else { - list.splice(position, 1); - } +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (!events) + return this; + + // not listening for removeListener, no need to emit + if (!events.removeListener) { + if (arguments.length === 0) { + this._events = objectCreate(null); + this._eventsCount = 0; + } else if (events[type]) { + if (--this._eventsCount === 0) + this._events = objectCreate(null); + else + delete events[type]; + } + return this; + } - if (this._events.removeListener) - this.emit('removeListener', type, listener); - } + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = objectKeys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = objectCreate(null); + this._eventsCount = 0; + return this; + } - return this; -}; + listeners = events[type]; -EventEmitter.prototype.removeAllListeners = function(type) { - var key, listeners; + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } - if (!this._events) - return this; + return this; + }; - // not listening for removeListener, no need to emit - if (!this._events.removeListener) { - if (arguments.length === 0) - this._events = {}; - else if (this._events[type]) - delete this._events[type]; - return this; - } +function _listeners(target, type, unwrap) { + var events = target._events; - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - for (key in this._events) { - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = {}; - return this; - } + if (!events) + return []; - listeners = this._events[type]; + var evlistener = events[type]; + if (!evlistener) + return []; - if (isFunction(listeners)) { - this.removeListener(type, listeners); - } else if (listeners) { - // LIFO order - while (listeners.length) - this.removeListener(type, listeners[listeners.length - 1]); - } - delete this._events[type]; + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - return this; + return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); }; -EventEmitter.prototype.listeners = function(type) { - var ret; - if (!this._events || !this._events[type]) - ret = []; - else if (isFunction(this._events[type])) - ret = [this._events[type]]; - else - ret = this._events[type].slice(); - return ret; +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } }; -EventEmitter.prototype.listenerCount = function(type) { - if (this._events) { - var evlistener = this._events[type]; +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; - if (isFunction(evlistener)) + if (events) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { return 1; - else if (evlistener) + } else if (evlistener) { return evlistener.length; + } } + return 0; -}; +} -EventEmitter.listenerCount = function(emitter, type) { - return emitter.listenerCount(type); +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; }; -function isFunction(arg) { - return typeof arg === 'function'; +// About 1.5x faster than the two-arg version of Array#splice(). +function spliceOne(list, index) { + for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) + list[i] = list[k]; + list.pop(); } -function isNumber(arg) { - return typeof arg === 'number'; +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; } -function isObject(arg) { - return typeof arg === 'object' && arg !== null; +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; } -function isUndefined(arg) { - return arg === void 0; +function objectCreatePolyfill(proto) { + var F = function() {}; + F.prototype = proto; + return new F; +} +function objectKeysPolyfill(obj) { + var keys = []; + for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) { + keys.push(k); + } + return k; +} +function functionBindPolyfill(context) { + var fn = this; + return function () { + return fn.apply(context, arguments); + }; } -},{}],77:[function(require,module,exports){ +},{}],76:[function(require,module,exports){ 'use strict' var Buffer = require('safe-buffer').Buffer var Transform = require('stream').Transform @@ -12982,7 +12933,7 @@ HashBase.prototype._digest = function () { module.exports = HashBase -},{"inherits":80,"safe-buffer":124,"stream":133}],78:[function(require,module,exports){ +},{"inherits":79,"safe-buffer":124,"stream":133}],77:[function(require,module,exports){ var http = require('http') var url = require('url') @@ -13015,7 +12966,7 @@ function validateParams (params) { return params } -},{"http":134,"url":148}],79:[function(require,module,exports){ +},{"http":134,"url":148}],78:[function(require,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = (nBytes * 8) - mLen - 1 @@ -13101,9 +13052,9 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { buffer[offset + i - d] |= s * 128 } -},{}],80:[function(require,module,exports){ +},{}],79:[function(require,module,exports){ arguments[4][5][0].apply(exports,arguments) -},{"dup":5}],81:[function(require,module,exports){ +},{"dup":5}],80:[function(require,module,exports){ /*! * Determine if an object is a Buffer * @@ -13126,14 +13077,14 @@ function isSlowBuffer (obj) { return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) } -},{}],82:[function(require,module,exports){ +},{}],81:[function(require,module,exports){ var toString = {}.toString; module.exports = Array.isArray || function (arr) { return toString.call(arr) == '[object Array]'; }; -},{}],83:[function(require,module,exports){ +},{}],82:[function(require,module,exports){ /*! * Copyright (c) 2017-2018 Digital Bazaar, Inc. All rights reserved. */ @@ -13354,7 +13305,7 @@ module.exports = class Helper { } }; -},{"./constants":85,"./util":96}],84:[function(require,module,exports){ +},{"./constants":84,"./util":95}],83:[function(require,module,exports){ (function (process,global){ /* * Copyright (c) 2017 Digital Bazaar, Inc. All rights reserved. @@ -13413,7 +13364,7 @@ module.exports = class Injector { }; }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":103}],85:[function(require,module,exports){ +},{"_process":103}],84:[function(require,module,exports){ /* * Copyright (c) 2017-2018 Digital Bazaar, Inc. All rights reserved. */ @@ -13426,7 +13377,7 @@ module.exports = { SECURITY_PROOF_URL: 'https://w3id.org/security#proof' }; -},{}],86:[function(require,module,exports){ +},{}],85:[function(require,module,exports){ /* * Copyright (c) 2017-2018 Digital Bazaar, Inc. All rights reserved. */ @@ -13439,7 +13390,7 @@ module.exports = { [constants.SECURITY_CONTEXT_V2_URL]: require('./contexts/security-v2') }; -},{"./constants":85,"./contexts/security-v1":87,"./contexts/security-v2":88}],87:[function(require,module,exports){ +},{"./constants":84,"./contexts/security-v1":86,"./contexts/security-v2":87}],86:[function(require,module,exports){ module.exports = { "@context": { "id": "@id", @@ -13490,7 +13441,7 @@ module.exports = { } }; -},{}],88:[function(require,module,exports){ +},{}],87:[function(require,module,exports){ module.exports = { "@context": [{ "@version": 1.1 @@ -13510,7 +13461,7 @@ module.exports = { }] }; -},{}],89:[function(require,module,exports){ +},{}],88:[function(require,module,exports){ (function (process){ /** * An implementation of the Linked Data Signatures specification for JSON-LD. @@ -13869,7 +13820,7 @@ if(_nodejs) { })(typeof window !== 'undefined' ? window : this); }).call(this,require('_process')) -},{"./Helper":83,"./Injector":84,"./constants":85,"./contexts":86,"./suites/EcdsaKoblitzSignature2016":90,"./suites/Ed25519Signature2018":91,"./suites/GraphSignature2012":92,"./suites/LinkedDataSignature":93,"./suites/LinkedDataSignature2015":94,"./suites/RsaSignature2018":95,"./util":96,"_process":103}],90:[function(require,module,exports){ +},{"./Helper":82,"./Injector":83,"./constants":84,"./contexts":85,"./suites/EcdsaKoblitzSignature2016":89,"./suites/Ed25519Signature2018":90,"./suites/GraphSignature2012":91,"./suites/LinkedDataSignature":92,"./suites/LinkedDataSignature2015":93,"./suites/RsaSignature2018":94,"./util":95,"_process":103}],89:[function(require,module,exports){ /* * Copyright (c) 2017-2018 Digital Bazaar, Inc. All rights reserved. */ @@ -13917,7 +13868,7 @@ module.exports = class EcdsaKoblitzSignature2016 } }; -},{"./LinkedDataSignature2015":94}],91:[function(require,module,exports){ +},{"./LinkedDataSignature2015":93}],90:[function(require,module,exports){ (function (Buffer){ /** * Copyright (c) 2018 Digital Bazaar, Inc. All rights reserved. @@ -14068,7 +14019,7 @@ module.exports = class Ed25519Signature2018 extends LinkedDataSignature { }; }).call(this,require("buffer").Buffer) -},{"../util":96,"./LinkedDataSignature":93,"bs58":55,"buffer":61,"chloride":55}],92:[function(require,module,exports){ +},{"../util":95,"./LinkedDataSignature":92,"bs58":55,"buffer":60,"chloride":55}],91:[function(require,module,exports){ /* * Copyright (c) 2017-2018 Digital Bazaar, Inc. All rights reserved. */ @@ -14145,7 +14096,7 @@ module.exports = class GraphSignature2012 extends LinkedDataSignature2015 { } }; -},{"../constants":85,"./LinkedDataSignature2015":94}],93:[function(require,module,exports){ +},{"../constants":84,"./LinkedDataSignature2015":93}],92:[function(require,module,exports){ /* * Copyright (c) 2017-2018 Digital Bazaar, Inc. All rights reserved. */ @@ -14466,7 +14417,7 @@ module.exports = class LinkedDataSignature { } }; -},{"../Helper":83,"../constants":85,"../util":96}],94:[function(require,module,exports){ +},{"../Helper":82,"../constants":84,"../util":95}],93:[function(require,module,exports){ /* * Copyright (c) 2017-2018 Digital Bazaar, Inc. All rights reserved. */ @@ -14617,7 +14568,7 @@ module.exports = class LinkedDataSignature2015 extends LinkedDataSignature { } }; -},{"../constants":85,"../util":96,"./LinkedDataSignature":93}],95:[function(require,module,exports){ +},{"../constants":84,"../util":95,"./LinkedDataSignature":92}],94:[function(require,module,exports){ (function (Buffer){ /** * Copyright (c) 2017-2018 Digital Bazaar, Inc. All rights reserved. @@ -14797,7 +14748,7 @@ module.exports = class RsaSignature2018 extends LinkedDataSignature { }; }).call(this,require("buffer").Buffer) -},{"../util":96,"./LinkedDataSignature":93,"buffer":61,"crypto":55}],96:[function(require,module,exports){ +},{"../util":95,"./LinkedDataSignature":92,"buffer":60,"crypto":55}],95:[function(require,module,exports){ (function (process,setImmediate){ /* * Copyright (c) 2017 Digital Bazaar, Inc. All rights reserved. @@ -14991,9 +14942,9 @@ api.decodeBase64Url = (input, {forge}) => { }; }).call(this,require('_process'),require("timers").setImmediate) -},{"_process":103,"timers":139}],97:[function(require,module,exports){ +},{"_process":103,"timers":139}],96:[function(require,module,exports){ // Ignore module for browserify (see package.json) -},{}],98:[function(require,module,exports){ +},{}],97:[function(require,module,exports){ (function (process,global,setImmediate,__argument0,__argument1,__argument2,__argument3,__dirname){ /** * A JavaScript implementation of the JSON-LD API. @@ -23188,7 +23139,7 @@ return factory; })(); }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonld/js") -},{"_process":103,"crypto":97,"es6-promise":75,"http":97,"jsonld-request":97,"pkginfo":97,"request":97,"timers":139,"util":97,"xmldom":97}],99:[function(require,module,exports){ +},{"_process":103,"crypto":96,"es6-promise":74,"http":96,"jsonld-request":96,"pkginfo":96,"request":96,"timers":139,"util":96,"xmldom":96}],98:[function(require,module,exports){ (function (Buffer){ 'use strict' var inherits = require('inherits') @@ -23337,7 +23288,7 @@ function fnI (a, b, c, d, m, k, s) { module.exports = MD5 }).call(this,require("buffer").Buffer) -},{"buffer":61,"hash-base":77,"inherits":80}],100:[function(require,module,exports){ +},{"buffer":60,"hash-base":76,"inherits":79}],99:[function(require,module,exports){ (function (Buffer){ // constant-space merkle root calculation algorithm module.exports = function fastRoot (values, digestFn) { @@ -23365,7 +23316,99 @@ module.exports = function fastRoot (values, digestFn) { } }).call(this,require("buffer").Buffer) -},{"buffer":61}],101:[function(require,module,exports){ +},{"buffer":60}],100:[function(require,module,exports){ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +'use strict'; +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + +},{}],101:[function(require,module,exports){ (function (process){ // .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1, // backported and transplited with Babel, with backwards-compat fixes @@ -24877,7 +24920,7 @@ Duplex.prototype._destroy = function (err, cb) { pna.nextTick(cb, err); }; -},{"./_stream_readable":113,"./_stream_writable":115,"core-util-is":65,"inherits":80,"process-nextick-args":102}],112:[function(require,module,exports){ +},{"./_stream_readable":113,"./_stream_writable":115,"core-util-is":64,"inherits":79,"process-nextick-args":102}],112:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -24925,7 +24968,7 @@ function PassThrough(options) { PassThrough.prototype._transform = function (chunk, encoding, cb) { cb(null, chunk); }; -},{"./_stream_transform":114,"core-util-is":65,"inherits":80}],113:[function(require,module,exports){ +},{"./_stream_transform":114,"core-util-is":64,"inherits":79}],113:[function(require,module,exports){ (function (process,global){ // Copyright Joyent, Inc. and other Node contributors. // @@ -25947,7 +25990,7 @@ function indexOf(xs, x) { return -1; } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./_stream_duplex":111,"./internal/streams/BufferList":116,"./internal/streams/destroy":117,"./internal/streams/stream":118,"_process":103,"core-util-is":65,"events":76,"inherits":80,"isarray":82,"process-nextick-args":102,"safe-buffer":124,"string_decoder/":138,"util":55}],114:[function(require,module,exports){ +},{"./_stream_duplex":111,"./internal/streams/BufferList":116,"./internal/streams/destroy":117,"./internal/streams/stream":118,"_process":103,"core-util-is":64,"events":75,"inherits":79,"isarray":81,"process-nextick-args":102,"safe-buffer":124,"string_decoder/":138,"util":55}],114:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -26162,7 +26205,7 @@ function done(stream, er, data) { return stream.push(null); } -},{"./_stream_duplex":111,"core-util-is":65,"inherits":80}],115:[function(require,module,exports){ +},{"./_stream_duplex":111,"core-util-is":64,"inherits":79}],115:[function(require,module,exports){ (function (process,global,setImmediate){ // Copyright Joyent, Inc. and other Node contributors. // @@ -26852,7 +26895,7 @@ Writable.prototype._destroy = function (err, cb) { cb(err); }; }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) -},{"./_stream_duplex":111,"./internal/streams/destroy":117,"./internal/streams/stream":118,"_process":103,"core-util-is":65,"inherits":80,"process-nextick-args":102,"safe-buffer":124,"timers":139,"util-deprecate":150}],116:[function(require,module,exports){ +},{"./_stream_duplex":111,"./internal/streams/destroy":117,"./internal/streams/stream":118,"_process":103,"core-util-is":64,"inherits":79,"process-nextick-args":102,"safe-buffer":124,"timers":139,"util-deprecate":150}],116:[function(require,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -27010,7 +27053,7 @@ module.exports = { },{"process-nextick-args":102}],118:[function(require,module,exports){ module.exports = require('events').EventEmitter; -},{"events":76}],119:[function(require,module,exports){ +},{"events":75}],119:[function(require,module,exports){ module.exports = require('./readable').PassThrough },{"./readable":120}],120:[function(require,module,exports){ @@ -27193,7 +27236,7 @@ function fn5 (a, b, c, d, e, m, k, s) { module.exports = RIPEMD160 -},{"buffer":61,"hash-base":77,"inherits":80}],124:[function(require,module,exports){ +},{"buffer":60,"hash-base":76,"inherits":79}],124:[function(require,module,exports){ /* eslint-disable node/no-deprecated-api */ var buffer = require('buffer') var Buffer = buffer.Buffer @@ -27257,7 +27300,7 @@ SafeBuffer.allocUnsafeSlow = function (size) { return buffer.SlowBuffer(size) } -},{"buffer":61}],125:[function(require,module,exports){ +},{"buffer":60}],125:[function(require,module,exports){ var Buffer = require('safe-buffer').Buffer // prototype class for hash functions @@ -27453,7 +27496,7 @@ Sha.prototype._hash = function () { module.exports = Sha -},{"./hash":125,"inherits":80,"safe-buffer":124}],128:[function(require,module,exports){ +},{"./hash":125,"inherits":79,"safe-buffer":124}],128:[function(require,module,exports){ /* * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined * in FIPS PUB 180-1 @@ -27554,7 +27597,7 @@ Sha1.prototype._hash = function () { module.exports = Sha1 -},{"./hash":125,"inherits":80,"safe-buffer":124}],129:[function(require,module,exports){ +},{"./hash":125,"inherits":79,"safe-buffer":124}],129:[function(require,module,exports){ /** * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined * in FIPS 180-2 @@ -27609,7 +27652,7 @@ Sha224.prototype._hash = function () { module.exports = Sha224 -},{"./hash":125,"./sha256":130,"inherits":80,"safe-buffer":124}],130:[function(require,module,exports){ +},{"./hash":125,"./sha256":130,"inherits":79,"safe-buffer":124}],130:[function(require,module,exports){ /** * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined * in FIPS 180-2 @@ -27746,7 +27789,7 @@ Sha256.prototype._hash = function () { module.exports = Sha256 -},{"./hash":125,"inherits":80,"safe-buffer":124}],131:[function(require,module,exports){ +},{"./hash":125,"inherits":79,"safe-buffer":124}],131:[function(require,module,exports){ var inherits = require('inherits') var SHA512 = require('./sha512') var Hash = require('./hash') @@ -27805,7 +27848,7 @@ Sha384.prototype._hash = function () { module.exports = Sha384 -},{"./hash":125,"./sha512":132,"inherits":80,"safe-buffer":124}],132:[function(require,module,exports){ +},{"./hash":125,"./sha512":132,"inherits":79,"safe-buffer":124}],132:[function(require,module,exports){ var inherits = require('inherits') var Hash = require('./hash') var Buffer = require('safe-buffer').Buffer @@ -28067,7 +28110,7 @@ Sha512.prototype._hash = function () { module.exports = Sha512 -},{"./hash":125,"inherits":80,"safe-buffer":124}],133:[function(require,module,exports){ +},{"./hash":125,"inherits":79,"safe-buffer":124}],133:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -28196,7 +28239,7 @@ Stream.prototype.pipe = function(dest, options) { return dest; }; -},{"events":76,"inherits":80,"readable-stream/duplex.js":110,"readable-stream/passthrough.js":119,"readable-stream/readable.js":120,"readable-stream/transform.js":121,"readable-stream/writable.js":122}],134:[function(require,module,exports){ +},{"events":75,"inherits":79,"readable-stream/duplex.js":110,"readable-stream/passthrough.js":119,"readable-stream/readable.js":120,"readable-stream/transform.js":121,"readable-stream/writable.js":122}],134:[function(require,module,exports){ (function (global){ var ClientRequest = require('./lib/request') var response = require('./lib/response') @@ -28284,7 +28327,7 @@ http.METHODS = [ 'UNSUBSCRIBE' ] }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./lib/request":136,"./lib/response":137,"builtin-status-codes":62,"url":148,"xtend":156}],135:[function(require,module,exports){ +},{"./lib/request":136,"./lib/response":137,"builtin-status-codes":61,"url":148,"xtend":156}],135:[function(require,module,exports){ (function (global){ exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream) @@ -28692,7 +28735,7 @@ var unsafeHeaders = [ ] }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) -},{"./capability":135,"./response":137,"_process":103,"buffer":61,"inherits":80,"readable-stream":120,"to-arraybuffer":140}],137:[function(require,module,exports){ +},{"./capability":135,"./response":137,"_process":103,"buffer":60,"inherits":79,"readable-stream":120,"to-arraybuffer":140}],137:[function(require,module,exports){ (function (process,global,Buffer){ var capability = require('./capability') var inherits = require('inherits') @@ -28920,7 +28963,7 @@ IncomingMessage.prototype._onXHRProgress = function () { } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) -},{"./capability":135,"_process":103,"buffer":61,"inherits":80,"readable-stream":120}],138:[function(require,module,exports){ +},{"./capability":135,"_process":103,"buffer":60,"inherits":79,"readable-stream":120}],138:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -29325,7 +29368,7 @@ module.exports = function (buf) { } } -},{"buffer":61}],141:[function(require,module,exports){ +},{"buffer":60}],141:[function(require,module,exports){ // Copyright (c) 2017 Pieter Wuille // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -29769,8 +29812,18 @@ module.exports = { promisifiedRequest: promisifiedRequests.request }; + /* -txrefToTxid("tx1-rk63-uvxf-9pqc-sy") +let result = txrefEncode("mainnet", 0, 0); +console.log(result); + +txidToTxref("016b71d9ec62709656504f1282bb81f7acf998df025e54bd68ea33129d8a425b", + "mainnet") + .then(result => { + console.log(result); + }); + +txrefToTxid("tx1:rk63-uqnf-zscg-527", "mainnet") .then(result => { console.log(result); }, error => { @@ -29966,7 +30019,7 @@ for (var typeName in types) { module.exports = types }).call(this,{"isBuffer":require("../is-buffer/index.js")}) -},{"../is-buffer/index.js":81,"./errors":144,"./native":147}],146:[function(require,module,exports){ +},{"../is-buffer/index.js":80,"./errors":144,"./native":147}],146:[function(require,module,exports){ var ERRORS = require('./errors') var NATIVE = require('./native') @@ -31056,7 +31109,7 @@ function config (name) { arguments[4][6][0].apply(exports,arguments) },{"dup":6}],152:[function(require,module,exports){ arguments[4][7][0].apply(exports,arguments) -},{"./support/isBuffer":151,"_process":103,"dup":7,"inherits":80}],153:[function(require,module,exports){ +},{"./support/isBuffer":151,"_process":103,"dup":7,"inherits":79}],153:[function(require,module,exports){ 'use strict' var Buffer = require('safe-buffer').Buffer @@ -31215,7 +31268,7 @@ module.exports = { } }).call(this,require("buffer").Buffer) -},{"bs58check":60,"buffer":61}],155:[function(require,module,exports){ +},{"bs58check":59,"buffer":60}],155:[function(require,module,exports){ (function (process,Buffer){ /** * Wrapper for built-in http.js to emulate the browser XMLHttpRequest object. @@ -31839,7 +31892,7 @@ exports.XMLHttpRequest = function() { }; }).call(this,require('_process'),require("buffer").Buffer) -},{"_process":103,"buffer":61,"child_process":56,"fs":56,"http":134,"https":78,"url":148}],156:[function(require,module,exports){ +},{"_process":103,"buffer":60,"child_process":56,"fs":56,"http":134,"https":77,"url":148}],156:[function(require,module,exports){ module.exports = extend var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -31956,7 +32009,7 @@ module.exports = { }; }).call(this,require('_process')) -},{"_process":103,"bitcoinjs-lib":26,"jsonld":98,"jsonld-signatures":89}],158:[function(require,module,exports){ +},{"_process":103,"bitcoinjs-lib":26,"jsonld":97,"jsonld-signatures":88}],158:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -32063,6 +32116,13 @@ var publicKeyHexFromWif = function publicKeyHexFromWif(wif, network) { return publicKeyHex; }; +/* +txDetailsFromTxref("did:btcr:xyv2-xzpq-q9wa-p7t").then(dddo => { + console.log(JSON.stringify(dddo, null, 4)); +}, error => { + console.error(error) +});*/ + module.exports = { ensureTxref: ensureTxref, extractPublicKeyHexFromScript: extractPublicKeyHexFromScript, @@ -32073,5 +32133,5 @@ module.exports = { }; }).call(this,require("buffer").Buffer) -},{"bitcoinjs-lib":26,"buffer":61,"txref-conversion-js":143}]},{},[3])(3) +},{"bitcoinjs-lib":26,"buffer":60,"txref-conversion-js":143}]},{},[3])(3) }); diff --git a/ddoResolver.js b/ddoResolver.js index 4677087..6c86f21 100644 --- a/ddoResolver.js +++ b/ddoResolver.js @@ -99,9 +99,7 @@ async function addSupplementalDidDocuments(implicitDdo, txDetails, txref) { async function retrieveEndpointFragments(ddoUrl) { let ddo1 = await txRefConversion.promisifiedRequest({"url": ddoUrl}); - let ddoJson = JSON.parse(ddo1).didDocument; - let vcJson = JSON.parse(ddo1).claims; - return [ddoJson, vcJson]; + return [ddo1]; } @@ -112,7 +110,7 @@ async function retrieveEndpointFragments(ddoUrl) { * @param txref * @returns {{@context: string, id: string, publicKey: [null], authentication: [null], SatoshiAuditTrail: [null]}} */ -function toImplicitDidDocument(txDetails, txref) { +async function toImplicitDidDocument(txDetails, txref) { if (!txDetails) { throw "Missing txDetails argument"; } @@ -120,75 +118,64 @@ function toImplicitDidDocument(txDetails, txref) { throw "Missing txref argument"; } - const result = { + /*const ddoResult = { "@context": ["https://schema.org/", "https://w3id.org/security/v1"] - }; + };*/ + + let ddoResult = {}; let btcrDid = txref; let fundingScript = txDetails.inputs[0].script; let publicKeyHex = util.extractPublicKeyHexFromScript(fundingScript).toString(); let ddoUrl = txDetails.outputs.filter((o) => o.dataString).map(e => e.dataString).find(f => f); - let ddoJson = { - "@context": "https://w3id.org/btcr/v1", - "id": btcrDid, - "publicKey": [{ - "id": btcrDid + "#keys-1", - "owner": btcrDid, - "type": "EdDsaSAPublicKeySecp256k1", - "publicKeyHex": publicKeyHex.toString() - }], - "authentication": [{ - "type": "EdDsaSAPublicKeySecp256k1Authentication", - "publicKey": "#keys-1" - }], - "SatoshiAuditTrail": [{ - "chain": txDetails.chain, - "blockhash": txDetails.blockHash, - "blockindex": txDetails.blockIndex, - "outputindex": txDetails.utxoIndex, - "blocktime": txDetails.txReceived, - "time": 1499501000, - "timereceived": txDetails.txReceived, - "burn-fee": -0.05 - }] - }; - if (ddoUrl) { - ddoJson.service = [{ - "type": "BTCREndpoint", - "serviceEndpoint": ddoUrl, - "timestamp": txDetails.timereceived // TODO - }]; + let explicitDdoRaw = await retrieveEndpointFragments(ddoUrl); + try { + let explicitDdo = JSON.parse(explicitDdoRaw); + ddoResult['explicitDdo'] = explicitDdo; + } catch (e) { + ddoResult['raw'] = explicitDdoRaw; + ddoResult['error'] = e.toString(); + } + } else { + ddoResult['implicitDdo'] = { + "@context": "https://w3id.org/btcr/v1", + "id": btcrDid, + "publicKey": [{ + "id": btcrDid + "#keys-1", + "owner": btcrDid, + "type": "EcdsaSecp256k1VerificationKey2019", + "publicKeyHex": publicKeyHex.toString() + }], + "authentication": [{ + "type": "EcdsaSecp256k1VerificationKey2019", + "publicKey": "#keys-1" + }], + "SatoshiAuditTrail": [{ + "chain": txDetails.chain, + "blockhash": txDetails.blockHash, + "blockindex": txDetails.blockIndex, + "outputindex": txDetails.utxoIndex, + "blocktime": txDetails.txReceived, + "time": 1499501000, + "timereceived": txDetails.txReceived, + "burn-fee": -0.05 + }] + }; } - return ddoJson; + return ddoResult; } async function toDidDocument(txDetails, txref) { - let implicitDdo = toImplicitDidDocument(txDetails, txref); - let implicitDdoCopy = JSON.parse(JSON.stringify(implicitDdo)); + let ddoResult = await toImplicitDidDocument(txDetails, txref); let result = { "txDetails": txDetails, - "ddophase1": implicitDdo + "ddoResult": ddoResult }; - if (implicitDdo.service && implicitDdo.service.length == 1 && implicitDdo.service[0].serviceEndpoint) { - let endpointJson = await retrieveEndpointFragments(implicitDdo.service[0].serviceEndpoint); - let ddoJson = endpointJson[0]; - let vcJson = endpointJson[1]; - result.vc = vcJson - result.ddophase2 = ddoJson; - let ddo = await addSupplementalDidDocuments(implicitDdoCopy, txDetails, txref); - result.ddo = ddo; - result.ddophase3 = ddo; - - } else { - result.ddo = implicitDdoCopy; - result.ddophase3 = implicitDdoCopy; - } - return result; } @@ -213,21 +200,15 @@ async function resolveFromTxid(txid, chain, utxoIndex=0) { return deterministicDid; } -// xkyt-fzgq-qq87-xnhn -// did:btcr:xyv2-xzyq-qqm5-tyke - -// did:btcr:txtest1:8kyt-fzzq-qqqq-ase0-d8 -// did:btcr:8kyt-fzzq-qqqq-ase0-d8 - /* -resolveFromTxref("did:btcr:8kyt-fzzq-qqqq-ase0-d8").then(dddo => { - console.log(JSON.stringify(dddo, null, 4)); +resolveFromTxref("did:btcr:xyv2-xzpq-q9wa-p7t").then(dddo => { + console.log(JSON.stringify(dddo, null, 4)); }, error => { - console.error(error) + console.error(error) });*/ /* -resolveFromTxid("f8cdaff3ebd9e862ed5885f8975489090595abe1470397f79780ead1c7528107", "testnet").then(dddo => { +resolveFromTxid("11d8023bd6ef3afc621a019d939345d31a5afa65c93dd4aab6af5feb6a55f4f2", "mainnet").then(dddo => { console.log(JSON.stringify(dddo, null, 4)); }, error => { console.error(error) diff --git a/package-lock.json b/package-lock.json index 788112b..6ba1775 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "JSONStream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.3.tgz", - "integrity": "sha512-3Sp6WZZ/lXl+nTDoGpGWHEpTnnC6X5fnkolYZR6nwIfzbxxvA8utPWe1gCt7i0m9uVGsSz2IS8K8mJ7HmlduMg==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "requires": { "jsonparse": "^1.2.0", @@ -21,25 +21,37 @@ "dev": true }, "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true }, "acorn-node": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.5.2.tgz", - "integrity": "sha512-krFKvw/d1F17AN3XZbybIUzEY4YEPNiGo05AfP3dBlfVKrMHETKpgjpuZkSF8qDNt9UkQcqj7am8yJLseklCMg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.7.0.tgz", + "integrity": "sha512-XhahLSsCB6X6CJbe+uNu3Mn9sJBNFxtBN9NLgAOQovfS6Kh0lDUtmlclhjn9CvEK7A7YyRU13PXlNcpSiLI9Yw==", "dev": true, "requires": { - "acorn": "^5.7.1", - "acorn-dynamic-import": "^3.0.0", + "acorn": "^6.1.1", + "acorn-dynamic-import": "^4.0.0", + "acorn-walk": "^6.1.1", "xtend": "^4.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + } } }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", + "dev": true + }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -133,11 +145,12 @@ } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -845,11 +858,6 @@ "dev": true, "optional": true }, - "bindings": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.1.tgz", - "integrity": "sha512-i47mqjF9UbjxJhxGf+pZ6kSxrnI3wBLlnGI2ArWJ4r0VrvDS7ZYXkprq/pLaBWYq4GM0r4zdHY+NNRqEMU7uew==" - }, "bip66": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", @@ -887,7 +895,7 @@ }, "bitcore-lib": { "version": "0.13.19", - "resolved": "http://registry.npmjs.org/bitcore-lib/-/bitcore-lib-0.13.19.tgz", + "resolved": "https://registry.npmjs.org/bitcore-lib/-/bitcore-lib-0.13.19.tgz", "integrity": "sha1-SK8em9oQBnwasWJjRyta3SAA89w=", "requires": { "bn.js": "=2.0.4", @@ -931,7 +939,7 @@ }, "hash.js": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", "integrity": "sha1-EzL/ABVsCg/92CNgE9B7d6BFFXM=", "requires": { "inherits": "^2.0.1" @@ -946,7 +954,7 @@ }, "lodash": { "version": "3.10.1", - "resolved": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" } } @@ -1040,9 +1048,9 @@ "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=" }, "browserify": { - "version": "14.5.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-14.5.0.tgz", - "integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==", + "version": "16.2.3", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.2.3.tgz", + "integrity": "sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ==", "dev": true, "requires": { "JSONStream": "^1.0.3", @@ -1052,15 +1060,15 @@ "browserify-zlib": "~0.2.0", "buffer": "^5.0.2", "cached-path-relative": "^1.0.0", - "concat-stream": "~1.5.1", + "concat-stream": "^1.6.0", "console-browserify": "^1.1.0", "constants-browserify": "~1.0.0", "crypto-browserify": "^3.0.0", "defined": "^1.0.0", "deps-sort": "^2.0.0", - "domain-browser": "~1.1.0", + "domain-browser": "^1.2.0", "duplexer2": "~0.1.2", - "events": "~1.1.0", + "events": "^2.0.0", "glob": "^7.1.0", "has": "^1.0.0", "htmlescape": "^1.1.0", @@ -1068,7 +1076,8 @@ "inherits": "~2.0.1", "insert-module-globals": "^7.0.0", "labeled-stream-splicer": "^2.0.0", - "module-deps": "^4.0.8", + "mkdirp": "^0.5.0", + "module-deps": "^6.0.0", "os-browserify": "~0.3.0", "parents": "^1.0.1", "path-browserify": "~0.0.0", @@ -1082,66 +1091,16 @@ "shell-quote": "^1.6.1", "stream-browserify": "^2.0.0", "stream-http": "^2.0.0", - "string_decoder": "~1.0.0", + "string_decoder": "^1.1.1", "subarg": "^1.0.0", "syntax-error": "^1.1.1", "through2": "^2.0.0", "timers-browserify": "^1.0.1", - "tty-browserify": "~0.0.0", + "tty-browserify": "0.0.1", "url": "~0.11.0", "util": "~0.10.1", - "vm-browserify": "~0.0.1", + "vm-browserify": "^1.0.0", "xtend": "^4.0.0" - }, - "dependencies": { - "concat-stream": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", - "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "~2.0.0", - "typedarray": "~0.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "browserify-aes": { @@ -1266,9 +1225,9 @@ "dev": true }, "cached-path-relative": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", - "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", + "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==", "dev": true }, "caseless": { @@ -1308,21 +1267,21 @@ } }, "chloride": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/chloride/-/chloride-2.2.10.tgz", - "integrity": "sha512-CbU1ISGiB2JBV6PDXx7hkl8D94d2TPD1BANUMFbr8rZYKJi8De2d3Hu2XDIOLAhXf+8yhoFOdjtLG6fxz3QByQ==", - "requires": { - "is-electron": "^2.0.0", - "sodium-browserify": "^1.2.4", - "sodium-browserify-tweetnacl": "^0.2.2", - "sodium-chloride": "^1.1.0", + "version": "2.2.14", + "resolved": "https://registry.npmjs.org/chloride/-/chloride-2.2.14.tgz", + "integrity": "sha512-Jp3kpDIO4MlcJCFi4jER9P7k3sAVvIwbe4QJtM9Nkp43e/GQ/98HU1wJS6NdU6cbzfGrKWmMdRB+VNRrCynzfw==", + "requires": { + "is-electron": "^2.2.0", + "sodium-browserify": "^1.2.7", + "sodium-browserify-tweetnacl": "^0.2.5", + "sodium-chloride": "^1.1.2", "sodium-native": "^2.1.6" } }, "chloride-test": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/chloride-test/-/chloride-test-1.2.2.tgz", - "integrity": "sha1-F4aGqF6SeARREulujHkXk/mhCuo=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/chloride-test/-/chloride-test-1.2.4.tgz", + "integrity": "sha512-9vhoi1qXSBPn6//ZxIgSe3M2QhKHzIPZQzmrZgmPADsqW0Jxpe3db1e7aGSRUMXbxAQ04SfypdT8dGaSvIvKDw==", "requires": { "json-buffer": "^2.0.11" } @@ -1495,6 +1454,12 @@ "randomfill": "^1.0.3" } }, + "dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "dev": true + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -1582,13 +1547,22 @@ } }, "detective": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", - "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", "dev": true, "requires": { - "acorn": "^5.2.1", - "defined": "^1.0.0" + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, "diff": { @@ -1608,9 +1582,9 @@ } }, "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, "duplexer2": { @@ -1649,9 +1623,9 @@ } }, "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -1714,9 +1688,9 @@ "dev": true }, "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", + "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", "dev": true }, "evp_bytestokey": { @@ -1876,14 +1850,14 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "dev": true, "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { "abbrev": { @@ -1895,7 +1869,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1904,7 +1879,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "dev": true, "optional": true, @@ -1916,19 +1891,21 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "chownr": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true @@ -1936,17 +1913,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -1955,16 +1935,16 @@ "optional": true }, "debug": { - "version": "2.6.9", + "version": "4.1.1", "bundled": true, "dev": true, "optional": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "dev": true, "optional": true @@ -2013,7 +1993,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.3", "bundled": true, "dev": true, "optional": true, @@ -2033,12 +2013,12 @@ "optional": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.24", "bundled": true, "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { @@ -2063,7 +2043,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2075,6 +2056,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2089,6 +2071,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2096,19 +2079,21 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", + "version": "1.2.1", "bundled": true, "dev": true, "optional": true, @@ -2120,40 +2105,41 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } }, "ms": { - "version": "2.0.0", + "version": "2.1.1", "bundled": true, "dev": true, "optional": true }, "needle": { - "version": "2.2.0", + "version": "2.3.0", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^2.1.2", + "debug": "^4.1.0", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.12.0", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" @@ -2170,13 +2156,13 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.0.6", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.4.1", "bundled": true, "dev": true, "optional": true, @@ -2200,7 +2186,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2212,6 +2199,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2251,12 +2239,12 @@ "optional": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -2286,18 +2274,19 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2312,7 +2301,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.7.0", "bundled": true, "dev": true, "optional": true @@ -2333,6 +2322,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2352,6 +2342,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2363,17 +2354,17 @@ "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.8", "bundled": true, "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, @@ -2384,23 +2375,25 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { - "version": "3.0.2", + "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -2453,6 +2446,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, + "optional": true, "requires": { "is-glob": "^2.0.0" } @@ -2526,9 +2520,9 @@ } }, "hash.js": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", - "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -2588,12 +2582,6 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2699,7 +2687,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "dev": true, + "optional": true }, "is-finite": { "version": "1.0.2", @@ -2715,6 +2704,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, + "optional": true, "requires": { "is-extglob": "^1.0.0" } @@ -2789,7 +2779,7 @@ }, "json-buffer": { "version": "2.0.11", - "resolved": "http://registry.npmjs.org/json-buffer/-/json-buffer-2.0.11.tgz", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-2.0.11.tgz", "integrity": "sha1-PkQf2jCYvo0eMXGtWRvGKjPi1V8=" }, "json-schema": { @@ -2849,7 +2839,7 @@ "resolved": "https://registry.npmjs.org/jsonld-signatures/-/jsonld-signatures-2.3.1.tgz", "integrity": "sha512-Z6P+eO3fiyrXBh3UnjgNqQ9n7p0HKJ7juYgXKYXAwA+qEngmBaLklqaMug9HPHCxG8eZ5AZdI7TixTxNIfZSyQ==", "requires": { - "bitcore-message": "github:CoMakery/bitcore-message#8799cc327029c3d34fc725f05b2cf981363f6ebf", + "bitcore-message": "github:CoMakery/bitcore-message#dist", "bs58": "^4.0.1", "chloride": "^2.2.8", "jsonld": "^1.1.0", @@ -2857,16 +2847,92 @@ "semver": "^5.5.0" }, "dependencies": { + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "jsonld": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.1.0.tgz", - "integrity": "sha512-tx87xNtu2hGabr7mhSyXTI8q+Fz3pl+50B/JislFPwAz8ud0KTTQpNjU74tJIegFAHve9UFYzzj4YVTIrac0Hw==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.6.2.tgz", + "integrity": "sha512-eMzFHqhF2kPMrMUjw8+Lz9IF1QkrxTOIfVndkP/OpuoZs31VdDtfDs8mLa5EOC/ROdemFTQGLdYPZbRtmMe2Yw==", "requires": { - "rdf-canonize": "^0.2.1", - "request": "^2.83.0", - "semver": "^5.5.0", + "rdf-canonize": "^1.0.2", + "request": "^2.88.0", + "semver": "^5.6.0", "xmldom": "0.1.19" } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } } } }, @@ -2892,27 +2958,19 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } }, "labeled-stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz", - "integrity": "sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", "dev": true, "requires": { "inherits": "^2.0.1", - "isarray": "^2.0.4", "stream-splicer": "^2.0.0" - }, - "dependencies": { - "isarray": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz", - "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==", - "dev": true - } } }, "levn": { @@ -2926,22 +2984,22 @@ } }, "libsodium": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.3.tgz", - "integrity": "sha512-ld+deUNqSsZYbAobUs63UyduPq8ICp/Ul/5lbvBIYpuSNWpPRU0PIxbW+xXipVZtuopR6fIz9e0tTnNuPMNeqw==" + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.4.tgz", + "integrity": "sha512-fTU3vUdrxQzhPAAjmTSqKk4LzYbR0OtcYjp1P92AlH50JIxXZFEIXWh1yryCmU6RLGfwS2IzBdZjbmpYf/TlyQ==" }, "libsodium-wrappers": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.3.tgz", - "integrity": "sha512-dw5Jh6TZ5qc5rQVZe3JrSO/J05CE+DmAPnqD7Q2glBUE969xZ6o3fchnUxyPlp6ss3x0MFxmdJntveFN+XTg1g==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.4.tgz", + "integrity": "sha512-axKkW01L0q+urLeE7UMSZKWwk4LrRbi6s5pjKBAvbgDBYnsSaolK1oN/Syilm1dqJFkJQNi6qodwOp8dzSoc9Q==", "requires": { - "libsodium": "0.7.3" + "libsodium": "0.7.4" } }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, "lodash._baseassign": { @@ -3173,67 +3231,26 @@ } }, "module-deps": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", - "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.1.tgz", + "integrity": "sha512-UnEn6Ah36Tu4jFiBbJVUtt0h+iXqxpLqDvPS8nllbw5RZFmNJ1+Mz5BjYnM9ieH80zyxHkARGLnMIHlPK5bu6A==", "dev": true, "requires": { "JSONStream": "^1.0.3", "browser-resolve": "^1.7.0", - "cached-path-relative": "^1.0.0", - "concat-stream": "~1.5.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", "defined": "^1.0.0", - "detective": "^4.0.0", + "detective": "^5.0.2", "duplexer2": "^0.1.2", "inherits": "^2.0.1", "parents": "^1.0.0", "readable-stream": "^2.0.2", - "resolve": "^1.1.3", + "resolve": "^1.4.0", "stream-combiner2": "^1.1.1", "subarg": "^1.0.0", "through2": "^2.0.0", "xtend": "^4.0.0" - }, - "dependencies": { - "concat-stream": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", - "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "~2.0.0", - "typedarray": "~0.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - } - } - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } } }, "ms": { @@ -3242,9 +3259,10 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "optional": true }, "node-forge": { "version": "0.7.6", @@ -3252,9 +3270,9 @@ "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==" }, "node-gyp-build": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.5.1.tgz", - "integrity": "sha512-AKJ4SyHiYvqwy5P9GaAnxi5IG3HSEPHV/1YDMlBA0vEEmi7qxeeSfKlCAau3XFvAPFR9EV6gvD9p2b0s8ghyww==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.9.0.tgz", + "integrity": "sha512-zLcTg6P4AbcHPq465ZMFNXx7XpKKJh+7kkN699NiQWisR2uWYOWNWqRHAmbnmKiL4e9aLSlmy5U7rEMUXV59+A==", "optional": true }, "normalize-path": { @@ -3262,6 +3280,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, + "optional": true, "requires": { "remove-trailing-separator": "^1.0.1" } @@ -3358,9 +3377,9 @@ } }, "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", "dev": true }, "parents": { @@ -3373,16 +3392,17 @@ } }, "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", "dev": true, "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, "parse-glob": { @@ -3422,9 +3442,9 @@ "dev": true }, "pbkdf2": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", - "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -3475,17 +3495,23 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, + "psl": { + "version": "1.1.32", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", + "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==" + }, "public-encrypt": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "punycode": { @@ -3584,14 +3610,19 @@ } }, "rdf-canonize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-0.2.5.tgz", - "integrity": "sha512-ZSOcoziIkics9lZvFRoqRHUWoITLbXeKqXNxTuvchTf9c74/yOzzZCKxS+aTCGQp81fQZhnKUM/NsgyiBS0Mig==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-1.0.3.tgz", + "integrity": "sha512-piLMOB5Q6LJSVx2XzmdpHktYVb8TmVTy8coXJBFtdkcMC96DknZOuzpAYqCWx2ERZX7xEW+mMi8/wDuMJS/95w==", "requires": { - "bindings": "^1.3.0", - "nan": "^2.10.0", - "node-forge": "^0.7.1", - "semver": "^5.4.1" + "node-forge": "^0.8.1", + "semver": "^5.6.0" + }, + "dependencies": { + "node-forge": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", + "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==" + } } }, "read-only-stream": { @@ -3702,13 +3733,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true + "dev": true, + "optional": true }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true + "dev": true, + "optional": true }, "repeat-string": { "version": "1.6.1", @@ -3782,9 +3815,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, "set-immediate-shim": { "version": "1.0.1", @@ -3843,19 +3876,19 @@ "dev": true }, "sodium-browserify": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sodium-browserify/-/sodium-browserify-1.2.4.tgz", - "integrity": "sha512-IYcxKje/uf/c3a7VhZYJLlUxWMcktfbD4AjqHjUD1/VWKjj0Oq5wNbX8wjJOWVO9UhUMqJQiOn2xFbzKWBmy5w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/sodium-browserify/-/sodium-browserify-1.2.7.tgz", + "integrity": "sha512-PGhNO8KravjroRDYvurMPRYi4xMM7zjTW10R77Nq9sjkU314YA2sPeXS6UA5k/rLHaXLaZ6YfLLVz+DdCU5w0g==", "requires": { - "libsodium-wrappers": "^0.7.3", + "libsodium-wrappers": "^0.7.4", "sha.js": "2.4.5", - "sodium-browserify-tweetnacl": "^0.2.3", + "sodium-browserify-tweetnacl": "^0.2.5", "tweetnacl": "^0.14.1" }, "dependencies": { "sha.js": { "version": "2.4.5", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz", "integrity": "sha1-J9Fx78yCoRi5ljn/WBZgJCtQbnw=", "requires": { "inherits": "^2.0.1" @@ -3864,15 +3897,22 @@ } }, "sodium-browserify-tweetnacl": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/sodium-browserify-tweetnacl/-/sodium-browserify-tweetnacl-0.2.3.tgz", - "integrity": "sha1-tVN//LufdOvEQ7i2ohGykej8vI4=", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/sodium-browserify-tweetnacl/-/sodium-browserify-tweetnacl-0.2.6.tgz", + "integrity": "sha512-ZnEI26hdluilpYY28Xc4rc1ALfmEp2TWihkJX6Mdtw0z9RfHfpZJU7P8DoKbN1HcBdU9aJmguFZs7igE8nLJPg==", "requires": { "chloride-test": "^1.1.0", "ed2curve": "^0.1.4", "sha.js": "^2.4.8", - "tweetnacl": "^0.14.1", + "tweetnacl": "^1.0.1", "tweetnacl-auth": "^0.3.0" + }, + "dependencies": { + "tweetnacl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.1.tgz", + "integrity": "sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A==" + } } }, "sodium-chloride": { @@ -3881,9 +3921,9 @@ "integrity": "sha512-8AVzr9VHueXqfzfkzUA0aXe/Q4XG3UTmhlP6Pt+HQc5bbAPIJFo7ZIMh9tvn+99QuiMcyDJdYumegGAczl0N+g==" }, "sodium-native": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-2.2.3.tgz", - "integrity": "sha512-0rQvKwlWW86YmmAhosnJ6/2PR3mdAtfuWW147L4x3/gwfL7XiJ7mf2BPvBwU16vsYQNY1yxOQg9YT/MN6qoZOA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-2.4.2.tgz", + "integrity": "sha512-qwHcUnzFpRSGSm6F49j/h5SnxPFBgSNdDwZkAqjvuAoHQIVBFOXYb+oCUTJV80K5hRqSYCihpbX06vbrtPbilg==", "optional": true, "requires": { "ini": "^1.3.5", @@ -3923,9 +3963,9 @@ } }, "static-eval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.0.tgz", - "integrity": "sha512-6flshd3F1Gwm+Ksxq463LtFd1liC77N/PX1FVVc3OzL3hAmo2fwHFbuArkcfi7s9rTNsLEhcRmXGFZhlgy40uw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", "dev": true, "requires": { "escodegen": "^1.8.1" @@ -3954,9 +3994,9 @@ } }, "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, "requires": { "inherits": "~2.0.1", @@ -3987,9 +4027,9 @@ } }, "stream-splicer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", - "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -4188,17 +4228,33 @@ "dev": true }, "undeclared-identifiers": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.2.tgz", - "integrity": "sha512-13EaeocO4edF/3JKime9rD7oB6QI8llAGhgn5fKOPyfkJbRb6NFv9pYV6dFEmpa4uRjKeBqLZP8GpuzqHlKDMQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", "dev": true, "requires": { "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", "get-assigned-identifiers": "^1.2.0", "simple-concat": "^1.0.0", "xtend": "^4.0.1" } }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -4277,13 +4333,10 @@ "dev": true }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "dev": true }, "wif": { "version": "2.0.6", diff --git a/package.json b/package.json index 7815acb..85b57f5 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "babel-preset-es2015": "^6.24.1", "babelify": "^7.3.0", "brfs": "^1.4.3", - "browserify": "^14.3.0", + "browserify": "^16.2.3", "uglify-js": "^3.0.8" } } diff --git a/util.js b/util.js index 3a78a60..181dae0 100644 --- a/util.js +++ b/util.js @@ -107,6 +107,13 @@ const publicKeyHexFromWif = function (wif, network) { return publicKeyHex; }; +/* +txDetailsFromTxref("did:btcr:xyv2-xzpq-q9wa-p7t").then(dddo => { + console.log(JSON.stringify(dddo, null, 4)); +}, error => { + console.error(error) +});*/ + module.exports = { ensureTxref: ensureTxref, extractPublicKeyHexFromScript: extractPublicKeyHexFromScript,