Fix linter errors
# Conflicts: # lib/contracts/contribution.js # lib/contracts/contributor.js # lib/contracts/proposal.js # lib/kredits.js # lib/utils/pagination.js
This commit is contained in:
parent
e405644b1d
commit
a9093c1c40
@ -2,11 +2,15 @@ const Base = require('./base');
|
|||||||
const EthersUtils = require('ethers').utils;
|
const EthersUtils = require('ethers').utils;
|
||||||
|
|
||||||
class Acl extends Base {
|
class Acl extends Base {
|
||||||
|
hasPermission (fromAddress, contractAddress, roleID, params = null) {
|
||||||
hasPermission(fromAddress, contractAddress, roleID, params = null) {
|
|
||||||
let roleHash = EthersUtils.keccak256(EthersUtils.toUtf8Bytes(roleID));
|
let roleHash = EthersUtils.keccak256(EthersUtils.toUtf8Bytes(roleID));
|
||||||
console.log(roleHash)
|
|
||||||
return this.functions.hasPermission(fromAddress, contractAddress, roleHash, params);
|
return this.functions.hasPermission(
|
||||||
|
fromAddress,
|
||||||
|
contractAddress,
|
||||||
|
roleHash,
|
||||||
|
params
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +1,22 @@
|
|||||||
class Base {
|
class Base {
|
||||||
constructor(contract) {
|
constructor (contract) {
|
||||||
this.contract = contract;
|
this.contract = contract;
|
||||||
}
|
}
|
||||||
|
|
||||||
get functions() {
|
get functions () {
|
||||||
return this.contract.functions;
|
return this.contract.functions;
|
||||||
}
|
}
|
||||||
|
|
||||||
get ipfs() {
|
get ipfs () {
|
||||||
if (!this._ipfsAPI) { throw new Error('IPFS API not configured; please set an ipfs instance'); }
|
if (!this._ipfsAPI) { throw new Error('IPFS API not configured; please set an ipfs instance'); }
|
||||||
return this._ipfsAPI;
|
return this._ipfsAPI;
|
||||||
}
|
}
|
||||||
|
|
||||||
set ipfs(ipfsAPI) {
|
set ipfs (ipfsAPI) {
|
||||||
this._ipfsAPI = ipfsAPI;
|
this._ipfsAPI = ipfsAPI;
|
||||||
}
|
}
|
||||||
|
|
||||||
on(type, callback) {
|
on (type, callback) {
|
||||||
return this.contract.on(type, callback);
|
return this.contract.on(type, callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,14 @@
|
|||||||
const ethers = require('ethers');
|
|
||||||
|
|
||||||
const ContributionSerializer = require('../serializers/contribution');
|
const ContributionSerializer = require('../serializers/contribution');
|
||||||
const Base = require('./base');
|
const Base = require('./base');
|
||||||
|
|
||||||
class Contribution extends Base {
|
class Contribution extends Base {
|
||||||
all() {
|
all () {
|
||||||
return this.functions.contributionsCount()
|
return this.functions.contributionsCount()
|
||||||
.then(async (count) => {
|
.then(async (count) => {
|
||||||
let contributions = [];
|
let contributions = [];
|
||||||
|
|
||||||
for (let id = 1; id <= count; id++) {
|
for (let id = 1; id <= count; id++) {
|
||||||
const contribution = await this.getById(id)
|
const contribution = await this.getById(id);
|
||||||
contributions.push(contribution);
|
contributions.push(contribution);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18,20 +16,19 @@ class Contribution extends Base {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getById(id) {
|
getById (id) {
|
||||||
return this.functions.getContribution(id)
|
return this.functions.getContribution(id)
|
||||||
.then(data => {
|
.then(data => {
|
||||||
return this.ipfs.catAndMerge(data, ContributionSerializer.deserialize);
|
return this.ipfs.catAndMerge(data, ContributionSerializer.deserialize);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getByContributorId(contributorId) {
|
getByContributorId (contributorId) {
|
||||||
return this.functions.getContributorAddressById(contributorId)
|
return this.functions.getContributorAddressById(contributorId)
|
||||||
.then(address => this.getByContributorAddress(address));
|
.then(address => this.getByContributorAddress(address));
|
||||||
}
|
}
|
||||||
|
|
||||||
getByContributorAddress(address) {
|
getByContributorAddress (address) {
|
||||||
return this.functions.balanceOf(address)
|
return this.functions.balanceOf(address)
|
||||||
.then(async (balance) => {
|
.then(async (balance) => {
|
||||||
const count = balance.toNumber();
|
const count = balance.toNumber();
|
||||||
@ -47,7 +44,7 @@ class Contribution extends Base {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async addContribution(contributionAttr, callOptions = {}) {
|
async addContribution (contributionAttr, callOptions = {}) {
|
||||||
const contribution = new ContributionSerializer(contributionAttr);
|
const contribution = new ContributionSerializer(contributionAttr);
|
||||||
|
|
||||||
try { await contribution.validate(); }
|
try { await contribution.validate(); }
|
||||||
|
@ -4,7 +4,7 @@ const ContributorSerializer = require('../serializers/contributor');
|
|||||||
const Base = require('./base');
|
const Base = require('./base');
|
||||||
|
|
||||||
class Contributor extends Base {
|
class Contributor extends Base {
|
||||||
all() {
|
all () {
|
||||||
return this.functions.contributorsCount()
|
return this.functions.contributorsCount()
|
||||||
.then(count => {
|
.then(count => {
|
||||||
let contributors = [];
|
let contributors = [];
|
||||||
@ -17,22 +17,22 @@ class Contributor extends Base {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getById(id) {
|
getById (id) {
|
||||||
return this.functions.getContributorById(id)
|
return this.functions.getContributorById(id)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
return this.ipfs.catAndMerge(data, ContributorSerializer.deserialize);
|
return this.ipfs.catAndMerge(data, ContributorSerializer.deserialize);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
filterByAccount(search) {
|
filterByAccount (search) {
|
||||||
return this._byAccount(search, 'filter');
|
return this._byAccount(search, 'filter');
|
||||||
}
|
}
|
||||||
|
|
||||||
findByAccount(search) {
|
findByAccount (search) {
|
||||||
return this._byAccount(search, 'find');
|
return this._byAccount(search, 'find');
|
||||||
}
|
}
|
||||||
|
|
||||||
_byAccount(search, method = 'filter') {
|
_byAccount (search, method = 'filter') {
|
||||||
return this.all().then((contributors) => {
|
return this.all().then((contributors) => {
|
||||||
const searchEntries = Object.entries(search);
|
const searchEntries = Object.entries(search);
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ class Contributor extends Base {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
add(contributorAttr, callOptions = {}) {
|
add (contributorAttr, callOptions = {}) {
|
||||||
let json = ContributorSerializer.serialize(contributorAttr);
|
let json = ContributorSerializer.serialize(contributorAttr);
|
||||||
// TODO: validate against schema
|
// TODO: validate against schema
|
||||||
|
|
||||||
|
@ -4,5 +4,5 @@ module.exports = {
|
|||||||
Proposal: require('./proposal'),
|
Proposal: require('./proposal'),
|
||||||
Token: require('./token'),
|
Token: require('./token'),
|
||||||
Kernel: require('./kernel'),
|
Kernel: require('./kernel'),
|
||||||
Acl: require('./acl')
|
Acl: require('./acl'),
|
||||||
};
|
};
|
||||||
|
@ -4,19 +4,19 @@ const Base = require('./base');
|
|||||||
const KERNEL_APP_ADDR_NAMESPACE = '0xd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb';
|
const KERNEL_APP_ADDR_NAMESPACE = '0xd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb';
|
||||||
|
|
||||||
class Kernel extends Base {
|
class Kernel extends Base {
|
||||||
constructor(contract) {
|
constructor (contract) {
|
||||||
super(contract);
|
super(contract);
|
||||||
this.apm = 'aragonpm.eth'; // can be overwritten if needed
|
this.apm = 'aragonpm.eth'; // can be overwritten if needed
|
||||||
}
|
}
|
||||||
|
|
||||||
getApp(appName) {
|
getApp (appName) {
|
||||||
if (appName === 'Acl') {
|
if (appName === 'Acl') {
|
||||||
return this.functions.acl();
|
return this.functions.acl();
|
||||||
}
|
}
|
||||||
return this.functions.getApp(KERNEL_APP_ADDR_NAMESPACE, this.appNamehash(appName));
|
return this.functions.getApp(KERNEL_APP_ADDR_NAMESPACE, this.appNamehash(appName));
|
||||||
}
|
}
|
||||||
|
|
||||||
appNamehash(appName) {
|
appNamehash (appName) {
|
||||||
return namehash(`kredits-${appName.toLowerCase()}.${this.apm}`);
|
return namehash(`kredits-${appName.toLowerCase()}.${this.apm}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ const ContributionSerializer = require('../serializers/contribution');
|
|||||||
const Base = require('./base');
|
const Base = require('./base');
|
||||||
|
|
||||||
class Proposal extends Base {
|
class Proposal extends Base {
|
||||||
all() {
|
all () {
|
||||||
return this.functions.proposalsCount()
|
return this.functions.proposalsCount()
|
||||||
.then(count => {
|
.then(count => {
|
||||||
let proposals = [];
|
let proposals = [];
|
||||||
@ -17,14 +17,14 @@ class Proposal extends Base {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getById(id) {
|
getById (id) {
|
||||||
return this.functions.getProposal(id)
|
return this.functions.getProposal(id)
|
||||||
.then(data => {
|
.then(data => {
|
||||||
return this.ipfs.catAndMerge(data, ContributionSerializer.deserialize);
|
return this.ipfs.catAndMerge(data, ContributionSerializer.deserialize);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async addProposal(proposalAttr, callOptions = {}) {
|
async addProposal (proposalAttr, callOptions = {}) {
|
||||||
const contribution = new ContributionSerializer(proposalAttr);
|
const contribution = new ContributionSerializer(proposalAttr);
|
||||||
|
|
||||||
try { await contribution.validate(); }
|
try { await contribution.validate(); }
|
||||||
@ -48,4 +48,4 @@ class Proposal extends Base {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Proposal
|
module.exports = Proposal;
|
||||||
|
@ -9,29 +9,29 @@ const ABIS = {
|
|||||||
Token: require('./abis/Token.json'),
|
Token: require('./abis/Token.json'),
|
||||||
Proposal: require('./abis/Proposal.json'),
|
Proposal: require('./abis/Proposal.json'),
|
||||||
Kernel: require('./abis/Kernel.json'),
|
Kernel: require('./abis/Kernel.json'),
|
||||||
Acl: require('./abis/ACL.json')
|
Acl: require('./abis/ACL.json'),
|
||||||
};
|
};
|
||||||
const APP_CONTRACTS = [
|
const APP_CONTRACTS = [
|
||||||
'Contributor',
|
'Contributor',
|
||||||
'Contribution',
|
'Contribution',
|
||||||
'Token',
|
'Token',
|
||||||
'Proposal',
|
'Proposal',
|
||||||
'Acl'
|
'Acl',
|
||||||
];
|
];
|
||||||
const DaoAddresses = require('./addresses/dao.json');
|
const DaoAddresses = require('./addresses/dao.json');
|
||||||
|
|
||||||
const Contracts = require('./contracts');
|
const Contracts = require('./contracts');
|
||||||
const IPFS = require('./utils/ipfs')
|
const IPFS = require('./utils/ipfs');
|
||||||
|
|
||||||
// Helpers
|
// Helpers
|
||||||
function capitalize(word) {
|
function capitalize (word) {
|
||||||
let [first, ...rest] = word;
|
let [first, ...rest] = word;
|
||||||
return `${first.toUpperCase()}${rest.join('')}`;
|
return `${first.toUpperCase()}${rest.join('')}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Kredits {
|
class Kredits {
|
||||||
|
|
||||||
constructor(provider, signer, options = {}) {
|
constructor (provider, signer, options = {}) {
|
||||||
let { addresses, abis, ipfsConfig } = options;
|
let { addresses, abis, ipfsConfig } = options;
|
||||||
|
|
||||||
this.provider = provider;
|
this.provider = provider;
|
||||||
@ -43,7 +43,7 @@ class Kredits {
|
|||||||
this.contracts = {};
|
this.contracts = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
init(names) {
|
init (names) {
|
||||||
let contractsToLoad = names || APP_CONTRACTS;
|
let contractsToLoad = names || APP_CONTRACTS;
|
||||||
return this.provider.getNetwork().then(network => {
|
return this.provider.getNetwork().then(network => {
|
||||||
this.addresses['Kernel'] = this.addresses['Kernel'] || DaoAddresses[network.chainId.toString()];
|
this.addresses['Kernel'] = this.addresses['Kernel'] || DaoAddresses[network.chainId.toString()];
|
||||||
@ -57,16 +57,16 @@ class Kredits {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return RSVP.all(addressPromises).then(() => { return this });
|
return RSVP.all(addressPromises).then(() => { return this; });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static setup(provider, signer, ipfsConfig = null) {
|
static setup (provider, signer, ipfsConfig = null) {
|
||||||
console.log('Kredits.setup() is deprecated use new Kredits().init() instead');
|
console.log('Kredits.setup() is deprecated use new Kredits().init() instead');
|
||||||
return new Kredits(provider, signer, { ipfsConfig: ipfsConfig }).init();
|
return new Kredits(provider, signer, { ipfsConfig: ipfsConfig }).init();
|
||||||
}
|
}
|
||||||
|
|
||||||
get Kernel() {
|
get Kernel () {
|
||||||
let k = this.contractFor('Kernel');
|
let k = this.contractFor('Kernel');
|
||||||
// in case we want to use a special apm (e.g. development vs. production)
|
// in case we want to use a special apm (e.g. development vs. production)
|
||||||
if (this.options.apm) {
|
if (this.options.apm) {
|
||||||
@ -75,37 +75,37 @@ class Kredits {
|
|||||||
return k;
|
return k;
|
||||||
}
|
}
|
||||||
|
|
||||||
get Contributor() {
|
get Contributor () {
|
||||||
return this.contractFor('Contributor');
|
return this.contractFor('Contributor');
|
||||||
}
|
}
|
||||||
|
|
||||||
get Contributors() {
|
get Contributors () {
|
||||||
console.log('Contributors is deprecated use Contributor instead');
|
console.log('Contributors is deprecated use Contributor instead');
|
||||||
return this.Contributor;
|
return this.Contributor;
|
||||||
}
|
}
|
||||||
|
|
||||||
get Proposal() {
|
get Proposal () {
|
||||||
return this.contractFor('Proposal');
|
return this.contractFor('Proposal');
|
||||||
}
|
}
|
||||||
|
|
||||||
get Operator() {
|
get Operator () {
|
||||||
return this.Proposal;
|
return this.Proposal;
|
||||||
}
|
}
|
||||||
|
|
||||||
get Token() {
|
get Token () {
|
||||||
return this.contractFor('Token');
|
return this.contractFor('Token');
|
||||||
}
|
}
|
||||||
|
|
||||||
get Contribution() {
|
get Contribution () {
|
||||||
return this.contractFor('Contribution');
|
return this.contractFor('Contribution');
|
||||||
}
|
}
|
||||||
|
|
||||||
get Acl() {
|
get Acl () {
|
||||||
return this.contractFor('Acl');
|
return this.contractFor('Acl');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should be private
|
// Should be private
|
||||||
contractFor(name) {
|
contractFor (name) {
|
||||||
if (this.contracts[name]) {
|
if (this.contracts[name]) {
|
||||||
return this.contracts[name];
|
return this.contracts[name];
|
||||||
}
|
}
|
||||||
@ -125,7 +125,7 @@ class Kredits {
|
|||||||
return this.contracts[name];
|
return this.contracts[name];
|
||||||
}
|
}
|
||||||
|
|
||||||
preflightChecks() {
|
preflightChecks () {
|
||||||
return new Preflight(this).check();
|
return new Preflight(this).check();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ const validator = require('../utils/validator');
|
|||||||
*/
|
*/
|
||||||
class Contribution {
|
class Contribution {
|
||||||
|
|
||||||
constructor(attrs) {
|
constructor (attrs) {
|
||||||
Object.keys(attrs).forEach(a => this[a] = attrs[a]);
|
Object.keys(attrs).forEach(a => this[a] = attrs[a]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,24 +26,24 @@ class Contribution {
|
|||||||
kind,
|
kind,
|
||||||
description,
|
description,
|
||||||
url,
|
url,
|
||||||
details
|
details,
|
||||||
} = this;
|
} = this;
|
||||||
|
|
||||||
let data = {
|
let data = {
|
||||||
"@context": "https://schema.kosmos.org",
|
'@context': 'https://schema.kosmos.org',
|
||||||
"@type": "Contribution",
|
'@type': 'Contribution',
|
||||||
"contributor": {
|
'contributor': {
|
||||||
"ipfs": contributorIpfsHash
|
'ipfs': contributorIpfsHash,
|
||||||
},
|
},
|
||||||
date,
|
date,
|
||||||
time,
|
time,
|
||||||
kind,
|
kind,
|
||||||
description,
|
description,
|
||||||
"details": details || {}
|
'details': details || {},
|
||||||
};
|
};
|
||||||
|
|
||||||
if (url) {
|
if (url) {
|
||||||
data["url"] = url;
|
data['url'] = url;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write it pretty to ipfs
|
// Write it pretty to ipfs
|
||||||
|
@ -12,7 +12,7 @@ class Contributor {
|
|||||||
* @method
|
* @method
|
||||||
* @public
|
* @public
|
||||||
*/
|
*/
|
||||||
static deserialize(serialized) {
|
static deserialize (serialized) {
|
||||||
let {
|
let {
|
||||||
name,
|
name,
|
||||||
kind,
|
kind,
|
||||||
@ -49,7 +49,7 @@ class Contributor {
|
|||||||
* @method
|
* @method
|
||||||
* @public
|
* @public
|
||||||
*/
|
*/
|
||||||
static serialize(deserialized) {
|
static serialize (deserialized) {
|
||||||
let {
|
let {
|
||||||
name,
|
name,
|
||||||
kind,
|
kind,
|
||||||
@ -64,7 +64,7 @@ class Contributor {
|
|||||||
"@type": "Contributor",
|
"@type": "Contributor",
|
||||||
kind,
|
kind,
|
||||||
name,
|
name,
|
||||||
"accounts": []
|
"accounts": [],
|
||||||
};
|
};
|
||||||
|
|
||||||
if (url) {
|
if (url) {
|
||||||
@ -76,7 +76,7 @@ class Contributor {
|
|||||||
"site": "github.com",
|
"site": "github.com",
|
||||||
"uid": github_uid,
|
"uid": github_uid,
|
||||||
"username": github_username,
|
"username": github_username,
|
||||||
"url": `https://github.com/${github_username}`
|
"url": `https://github.com/${github_username}`,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ class Contributor {
|
|||||||
data.accounts.push({
|
data.accounts.push({
|
||||||
"site": "wiki.kosmos.org",
|
"site": "wiki.kosmos.org",
|
||||||
"username": wiki_username,
|
"username": wiki_username,
|
||||||
"url": `https://wiki.kosmos.org/User:${wiki_username}`
|
"url": `https://wiki.kosmos.org/User:${wiki_username}`,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,8 +2,7 @@ const ipfsClient = require('ipfs-http-client');
|
|||||||
const multihashes = require('multihashes');
|
const multihashes = require('multihashes');
|
||||||
|
|
||||||
class IPFS {
|
class IPFS {
|
||||||
|
constructor (config) {
|
||||||
constructor(config) {
|
|
||||||
if (!config) {
|
if (!config) {
|
||||||
config = { host: 'localhost', port: '5001', protocol: 'http' };
|
config = { host: 'localhost', port: '5001', protocol: 'http' };
|
||||||
}
|
}
|
||||||
@ -11,7 +10,7 @@ class IPFS {
|
|||||||
this._config = config;
|
this._config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
catAndMerge(data, deserialize) {
|
catAndMerge (data, deserialize) {
|
||||||
// if no hash details are found simply return the data; nothing to merge
|
// if no hash details are found simply return the data; nothing to merge
|
||||||
if (!data.hashSize || data.hashSize === 0) {
|
if (!data.hashSize || data.hashSize === 0) {
|
||||||
return data;
|
return data;
|
||||||
@ -26,7 +25,7 @@ class IPFS {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
add(data) {
|
add (data) {
|
||||||
return this._ipfsAPI
|
return this._ipfsAPI
|
||||||
.add(ipfsClient.Buffer.from(data))
|
.add(ipfsClient.Buffer.from(data))
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
@ -34,7 +33,7 @@ class IPFS {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
cat(hashData) {
|
cat (hashData) {
|
||||||
let ipfsHash = hashData; // default - if it is a string
|
let ipfsHash = hashData; // default - if it is a string
|
||||||
if (hashData.hasOwnProperty('hashSize')) {
|
if (hashData.hasOwnProperty('hashSize')) {
|
||||||
ipfsHash = this.encodeHash(hashData);
|
ipfsHash = this.encodeHash(hashData);
|
||||||
@ -42,21 +41,20 @@ class IPFS {
|
|||||||
return this._ipfsAPI.cat(ipfsHash);
|
return this._ipfsAPI.cat(ipfsHash);
|
||||||
}
|
}
|
||||||
|
|
||||||
decodeHash(ipfsHash) {
|
decodeHash (ipfsHash) {
|
||||||
let multihash = multihashes.decode(multihashes.fromB58String(ipfsHash));
|
let multihash = multihashes.decode(multihashes.fromB58String(ipfsHash));
|
||||||
return {
|
return {
|
||||||
hashDigest: '0x' + multihashes.toHexString(multihash.digest),
|
hashDigest: '0x' + multihashes.toHexString(multihash.digest),
|
||||||
hashSize: multihash.length,
|
hashSize: multihash.length,
|
||||||
hashFunction: multihash.code,
|
hashFunction: multihash.code,
|
||||||
ipfsHash: ipfsHash
|
ipfsHash: ipfsHash,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
encodeHash(hashData) {
|
encodeHash (hashData) {
|
||||||
let digest = ipfsClient.Buffer.from(hashData.hashDigest.slice(2), 'hex');
|
let digest = ipfsClient.Buffer.from(hashData.hashDigest.slice(2), 'hex');
|
||||||
return multihashes.encode(digest, hashData.hashFunction, hashData.hashSize);
|
return multihashes.encode(digest, hashData.hashFunction, hashData.hashSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = IPFS;
|
module.exports = IPFS;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
class Preflight {
|
class Preflight {
|
||||||
constructor(kredits) {
|
constructor (kredits) {
|
||||||
this.kredits = kredits;
|
this.kredits = kredits;
|
||||||
}
|
}
|
||||||
|
|
||||||
check() {
|
check () {
|
||||||
return this.kredits.ipfs._ipfsAPI.id()
|
return this.kredits.ipfs._ipfsAPI.id()
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
throw new Error(`IPFS node not available; config: ${JSON.stringify(this.kredits.ipfs.config)} - ${error.message}`);
|
throw new Error(`IPFS node not available; config: ${JSON.stringify(this.kredits.ipfs.config)} - ${error.message}`);
|
||||||
|
@ -4,12 +4,12 @@ const validator = tv4.freshApi();
|
|||||||
validator.addFormat({
|
validator.addFormat({
|
||||||
'date': function(value) {
|
'date': function(value) {
|
||||||
const dateRegexp = /^[0-9]{4,}-[0-9]{2}-[0-9]{2}$/;
|
const dateRegexp = /^[0-9]{4,}-[0-9]{2}-[0-9]{2}$/;
|
||||||
return dateRegexp.test(value) ? null : "A valid ISO 8601 full-date string is expected";
|
return dateRegexp.test(value) ? null : 'A valid ISO 8601 full-date string is expected';
|
||||||
},
|
},
|
||||||
'time': function(value) {
|
'time': function(value) {
|
||||||
const timeRegexp = /^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(([Zz])|([\+|\-]([01][0-9]|2[0-3]):[0-5][0-9]))$/;
|
const timeRegexp = /^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(([Zz])|([\+|\-]([01][0-9]|2[0-3]):[0-5][0-9]))$/;
|
||||||
return timeRegexp.test(value) ? null : "A valid ISO 8601 full-time string is expected";
|
return timeRegexp.test(value) ? null : 'A valid ISO 8601 full-time string is expected';
|
||||||
}
|
},
|
||||||
})
|
});
|
||||||
|
|
||||||
module.exports = validator;
|
module.exports = validator;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user