web3-eth-ens
Advanced tools
Comparing version 1.2.7 to 1.2.8-rc.0
{ | ||
"name": "web3-eth-ens", | ||
"version": "1.2.7", | ||
"version": "1.2.8-rc.0", | ||
"description": "ENS support for web3.", | ||
@@ -12,20 +12,21 @@ "repository": "https://github.com/ethereum/web3.js/tree/1.x/packages/web3-eth-ens", | ||
"scripts": { | ||
"dtslint": "dtslint types" | ||
"dtslint": "dtslint --localTs node_modules/typescript/lib types" | ||
}, | ||
"main": "src/index.js", | ||
"dependencies": { | ||
"content-hash": "^2.5.2", | ||
"eth-ens-namehash": "2.0.8", | ||
"underscore": "1.9.1", | ||
"web3-core": "1.2.7", | ||
"web3-core-helpers": "1.2.7", | ||
"web3-core-promievent": "1.2.7", | ||
"web3-eth-abi": "1.2.7", | ||
"web3-eth-contract": "1.2.7", | ||
"web3-utils": "1.2.7" | ||
"web3-core": "1.2.8-rc.0", | ||
"web3-core-helpers": "1.2.8-rc.0", | ||
"web3-core-promievent": "1.2.8-rc.0", | ||
"web3-eth-abi": "1.2.8-rc.0", | ||
"web3-eth-contract": "1.2.8-rc.0", | ||
"web3-utils": "1.2.8-rc.0" | ||
}, | ||
"devDependencies": { | ||
"definitelytyped-header-parser": "^3.9.0", | ||
"dtslint": "^3.4.1" | ||
"dtslint": "^3.4.1", | ||
"typescript": "latest" | ||
}, | ||
"gitHead": "65237be53b5d2ec7d12da12c35d7ddb7af57256f" | ||
"gitHead": "035d11acced0bdd43e500d4defbfdcd1b70768d7" | ||
} |
@@ -35,4 +35,16 @@ /* | ||
}, | ||
// These ids obtained at ensdomains docs: | ||
// https://docs.ens.domains/contract-developer-guide/writing-a-resolver | ||
interfaceIds: { | ||
addr: "0x3b3b57de", | ||
setAddr: "0x3b3b57de", | ||
pubkey: "0xc8690233", | ||
setPubkey: "0xc8690233", | ||
contenthash: "0xbc1c58d1", | ||
setContenthash: "0xbc1c58d1", | ||
content: "0xd8389dc5", | ||
setContent: "0xd8389dc5" | ||
} | ||
}; | ||
module.exports = config; |
@@ -29,2 +29,3 @@ /* | ||
var ResolverMethodHandler = require('./lib/ResolverMethodHandler'); | ||
var contenthash = require('./lib/contentHash'); | ||
@@ -367,3 +368,3 @@ /** | ||
ENS.prototype.getPubkey = function (name, callback) { | ||
return this.resolverMethodHandler.method(name, 'pubkey', [], callback).call(callback); | ||
return this.resolverMethodHandler.method(name, 'pubkey', [], null, callback).call(callback); | ||
}; | ||
@@ -422,2 +423,48 @@ | ||
/** | ||
* Returns the contenthash | ||
* | ||
* @method getContenthash | ||
* | ||
* @param {string} name | ||
* @param {function} callback | ||
* | ||
* @callback callback callback(error, result) | ||
* @returns {PromiEvent<ContentHash>} | ||
*/ | ||
ENS.prototype.getContenthash = function (name, callback) { | ||
return this.resolverMethodHandler.method(name, 'contenthash', [], contenthash.decode).call(callback); | ||
}; | ||
/** | ||
* Set the contenthash | ||
* | ||
* @method setContent | ||
* | ||
* @param {string} name | ||
* @param {string} hash | ||
* @param {function} callback | ||
* @param {TransactionConfig} txConfig | ||
* | ||
* @callback callback callback(error, result) | ||
* @returns {PromiEvent<TransactionReceipt | TransactionRevertInstructionError>} | ||
*/ | ||
ENS.prototype.setContenthash = function (name, hash, txConfig, callback) { | ||
var encoded; | ||
try { | ||
encoded = contenthash.encode(hash); | ||
} catch(err){ | ||
var error = new Error('Could not encode ' + hash + '. See docs for supported hash protocols.'); | ||
if (_.isFunction(callback)) { | ||
callback(error, null); | ||
return; | ||
} | ||
throw error; | ||
} | ||
return this.resolverMethodHandler.method(name, 'setContenthash', [encoded]).send(txConfig, callback); | ||
}; | ||
/** | ||
* Get the multihash | ||
@@ -424,0 +471,0 @@ * |
@@ -25,3 +25,5 @@ /* | ||
var namehash = require('eth-ens-namehash'); | ||
var errors = require('web3-core-helpers').errors; | ||
var _ = require('underscore'); | ||
var interfaceIds = require('../config').interfaceIds; | ||
@@ -45,3 +47,3 @@ /** | ||
*/ | ||
ResolverMethodHandler.prototype.method = function (ensName, methodName, methodArguments, callback) { | ||
ResolverMethodHandler.prototype.method = function (ensName, methodName, methodArguments, outputFormatter, callback) { | ||
return { | ||
@@ -53,3 +55,4 @@ call: this.call.bind({ | ||
callback: callback, | ||
parent: this | ||
parent: this, | ||
outputFormatter: outputFormatter | ||
}), | ||
@@ -75,5 +78,7 @@ send: this.send.bind({ | ||
var preparedArguments = this.parent.prepareArguments(this.ensName, this.methodArguments); | ||
var outputFormatter = this.outputFormatter || null; | ||
this.parent.registry.getResolver(this.ensName).then(function (resolver) { | ||
self.parent.handleCall(promiEvent, resolver.methods[self.methodName], preparedArguments, callback); | ||
this.parent.registry.getResolver(this.ensName).then(async function (resolver) { | ||
await self.parent.checkInterfaceSupport(resolver, self.methodName); | ||
self.parent.handleCall(promiEvent, resolver.methods[self.methodName], preparedArguments, outputFormatter, callback); | ||
}).catch(function(error) { | ||
@@ -105,3 +110,4 @@ if (_.isFunction(callback)) { | ||
this.parent.registry.getResolver(this.ensName).then(function (resolver) { | ||
this.parent.registry.getResolver(this.ensName).then(async function (resolver) { | ||
await self.parent.checkInterfaceSupport(resolver, self.methodName); | ||
self.parent.handleSend(promiEvent, resolver.methods[self.methodName], preparedArguments, sendOptions, callback); | ||
@@ -130,5 +136,9 @@ }).catch(function(error) { | ||
*/ | ||
ResolverMethodHandler.prototype.handleCall = function (promiEvent, method, preparedArguments, callback) { | ||
ResolverMethodHandler.prototype.handleCall = function (promiEvent, method, preparedArguments, outputFormatter, callback) { | ||
method.apply(this, preparedArguments).call() | ||
.then(function (result) { | ||
if (outputFormatter){ | ||
result = outputFormatter(result); | ||
} | ||
if (_.isFunction(callback)) { | ||
@@ -217,2 +227,29 @@ // It's required to pass the receipt to the second argument to be backwards compatible and to have the required consistency | ||
/** | ||
* | ||
* | ||
* @param {Contract} resolver | ||
* @param {string} methodName | ||
* | ||
* @returns {Promise} | ||
*/ | ||
ResolverMethodHandler.prototype.checkInterfaceSupport = async function (resolver, methodName) { | ||
// Skip validation for undocumented interface ids (ex: multihash) | ||
if (!interfaceIds[methodName]) return; | ||
var supported = false; | ||
try { | ||
supported = await resolver | ||
.methods | ||
.supportsInterface(interfaceIds[methodName]) | ||
.call(); | ||
} catch(err) { | ||
console.warn('Could not verify interface of resolver contract at "' + resolver.options.address + '". '); | ||
} | ||
if (!supported){ | ||
throw errors.ResolverMethodMissingError(resolver.options.address, methodName); | ||
} | ||
}; | ||
module.exports = ResolverMethodHandler; |
@@ -353,5 +353,59 @@ "use strict"; | ||
"type": "event" | ||
}, | ||
{ | ||
"anonymous": false, | ||
"inputs": [ | ||
{ | ||
"indexed": true, | ||
"name": "node", | ||
"type": "bytes32" | ||
}, | ||
{ | ||
"indexed": false, | ||
"name": "hash", | ||
"type": "bytes" | ||
} | ||
], | ||
"name": "ContenthashChanged", | ||
"type": "event" | ||
}, | ||
{ | ||
"constant": true, | ||
"inputs": [ | ||
{ | ||
"name": "node", | ||
"type": "bytes32" | ||
} | ||
], | ||
"name": "contenthash", | ||
"outputs": [ | ||
{ | ||
"name": "", | ||
"type": "bytes" | ||
} | ||
], | ||
"payable": false, | ||
"stateMutability": "view", | ||
"type": "function" | ||
}, | ||
{ | ||
"constant": false, | ||
"inputs": [ | ||
{ | ||
"name": "node", | ||
"type": "bytes32" | ||
}, | ||
{ | ||
"name": "hash", | ||
"type": "bytes" | ||
} | ||
], | ||
"name": "setContenthash", | ||
"outputs": [], | ||
"payable": false, | ||
"stateMutability": "nonpayable", | ||
"type": "function" | ||
} | ||
]; | ||
module.exports = RESOLVER; | ||
module.exports = RESOLVER; |
@@ -20,4 +20,2 @@ /* | ||
// Minimum TypeScript Version: 3.0 | ||
import { PromiEvent, TransactionConfig, TransactionReceipt } from 'web3-core'; | ||
@@ -28,2 +26,8 @@ import { TransactionRevertInstructionError } from 'web3-core-helpers'; | ||
export interface ContentHash { | ||
protocolType: 'ipfs' | 'bzz' | 'onion' | 'onion3' | null, | ||
decoded: string | null, | ||
error?: Error | null | ||
} | ||
// TODO: Define as soon as implemented the generic contract | ||
@@ -286,8 +290,8 @@ export class Ens { | ||
name: string, | ||
callback?: (value: any) => void | ||
): Promise<string>; | ||
callback?: (value: ContentHash) => void | ||
): Promise<ContentHash>; | ||
getContenthash( | ||
name: string, | ||
callback?: (error: Error, contenthash: string) => void | ||
): Promise<string>; | ||
callback?: (error: Error, contenthash: ContentHash) => void | ||
): Promise<ContentHash>; | ||
@@ -294,0 +298,0 @@ setContenthash( |
@@ -23,3 +23,3 @@ /* | ||
import { Contract } from 'web3-eth-contract'; | ||
import { Ens } from 'web3-eth-ens'; | ||
import { Ens, ContentHash } from 'web3-eth-ens'; | ||
import { Eth } from 'web3-eth'; | ||
@@ -214,8 +214,8 @@ | ||
// $ExpectType Promise<string> | ||
// $ExpectType Promise<ContentHash> | ||
ens.getContenthash('name'); | ||
// $ExpectType Promise<string> | ||
ens.getContenthash('name', (error: Error, contenthash: string) => {}); | ||
// $ExpectType Promise<string> | ||
ens.getContenthash('name', (value: any) => {}); | ||
// $ExpectType Promise<ContentHash> | ||
ens.getContenthash('name', (error: Error, contenthash: ContentHash) => {}); | ||
// $ExpectType Promise<ContentHash> | ||
ens.getContenthash('name', (value: ContentHash) => {}); | ||
@@ -222,0 +222,0 @@ // $ExpectType PromiEvent<TransactionReceipt | TransactionRevertInstructionError> |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
88015
15
2719
9
2
+ Addedcontent-hash@^2.5.2
+ Added@ethersproject/abi@5.0.0-beta.153(transitive)
+ Added@ethersproject/abstract-provider@5.7.0(transitive)
+ Added@ethersproject/abstract-signer@5.7.0(transitive)
+ Added@ethersproject/address@5.7.0(transitive)
+ Added@ethersproject/base64@5.7.0(transitive)
+ Added@ethersproject/bignumber@5.7.0(transitive)
+ Added@ethersproject/bytes@5.7.0(transitive)
+ Added@ethersproject/constants@5.7.0(transitive)
+ Added@ethersproject/hash@5.7.0(transitive)
+ Added@ethersproject/keccak256@5.7.0(transitive)
+ Added@ethersproject/logger@5.7.0(transitive)
+ Added@ethersproject/networks@5.7.1(transitive)
+ Added@ethersproject/properties@5.7.0(transitive)
+ Added@ethersproject/rlp@5.7.0(transitive)
+ Added@ethersproject/signing-key@5.7.0(transitive)
+ Added@ethersproject/strings@5.7.0(transitive)
+ Added@ethersproject/transactions@5.7.0(transitive)
+ Added@ethersproject/web@5.7.1(transitive)
+ Addedbase-x@3.0.10(transitive)
+ Addedbase64-js@1.5.1(transitive)
+ Addedbn.js@5.2.1(transitive)
+ Addedbuffer@5.7.1(transitive)
+ Addedcids@0.7.5(transitive)
+ Addedclass-is@1.1.0(transitive)
+ Addedcontent-hash@2.5.2(transitive)
+ Addedelliptic@6.5.4(transitive)
+ Addedhash.js@1.1.7(transitive)
+ Addedieee754@1.2.1(transitive)
+ Addedjs-sha3@0.8.0(transitive)
+ Addedmultibase@0.6.10.7.0(transitive)
+ Addedmulticodec@0.5.71.0.4(transitive)
+ Addedmultihashes@0.4.21(transitive)
+ Addedvarint@5.0.2(transitive)
+ Addedweb3-core@1.2.8-rc.0(transitive)
+ Addedweb3-core-helpers@1.2.8-rc.0(transitive)
+ Addedweb3-core-method@1.2.8-rc.0(transitive)
+ Addedweb3-core-promievent@1.2.8-rc.0(transitive)
+ Addedweb3-core-requestmanager@1.2.8-rc.0(transitive)
+ Addedweb3-core-subscriptions@1.2.8-rc.0(transitive)
+ Addedweb3-eth-abi@1.2.8-rc.0(transitive)
+ Addedweb3-eth-contract@1.2.8-rc.0(transitive)
+ Addedweb3-eth-iban@1.2.8-rc.0(transitive)
+ Addedweb3-providers-http@1.2.8-rc.0(transitive)
+ Addedweb3-providers-ipc@1.2.8-rc.0(transitive)
+ Addedweb3-providers-ws@1.2.8-rc.0(transitive)
+ Addedweb3-utils@1.2.8-rc.0(transitive)
- Removed@types/node@10.17.60(transitive)
- Removedaes-js@3.0.0(transitive)
- Removedelliptic@6.3.36.5.7(transitive)
- Removedethers@4.0.0-beta.3(transitive)
- Removedhash.js@1.1.3(transitive)
- Removedscrypt-js@2.0.3(transitive)
- Removedsetimmediate@1.0.4(transitive)
- Removeduuid@2.0.1(transitive)
- Removedweb3-core@1.2.7(transitive)
- Removedweb3-core-helpers@1.2.7(transitive)
- Removedweb3-core-method@1.2.7(transitive)
- Removedweb3-core-promievent@1.2.7(transitive)
- Removedweb3-core-requestmanager@1.2.7(transitive)
- Removedweb3-core-subscriptions@1.2.7(transitive)
- Removedweb3-eth-abi@1.2.7(transitive)
- Removedweb3-eth-contract@1.2.7(transitive)
- Removedweb3-eth-iban@1.2.7(transitive)
- Removedweb3-providers-http@1.2.7(transitive)
- Removedweb3-providers-ipc@1.2.7(transitive)
- Removedweb3-providers-ws@1.2.7(transitive)
- Removedweb3-utils@1.2.7(transitive)
- Removedxmlhttprequest@1.8.0(transitive)
Updatedweb3-core@1.2.8-rc.0
Updatedweb3-core-helpers@1.2.8-rc.0
Updatedweb3-eth-abi@1.2.8-rc.0
Updatedweb3-eth-contract@1.2.8-rc.0
Updatedweb3-utils@1.2.8-rc.0