@foreverrbum/ethsign
Version:
This package will allow you to electronically sign documents within your application
1,149 lines (956 loc) • 50.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.validateSignature = exports.network = exports.loadSignatureSignedByNetwork = exports.loadDocumentsSignedByNetwork = exports.loadData = exports.loadContracts = exports.loadContractSignatureDetails = exports.loadContractDetails = exports.loadAllSignatureSignedData = exports.loadAllDocumentsSignedData = exports.loadAllContractHistoryData = exports.loadAllAddressCount = exports.getSignatureValidityQuery = exports.getSignatureSignedQuery = exports.getSignatureExistenceQuery = exports.getDocumentSignedQuery = exports.getDeploymentId = exports.getContractsGivenAddressQuery = exports.getContractSignatureData = exports.getContractHistoryQuery = exports.getContractDetailsGivenDocKeyQuery = exports.getChainIndexStatus = exports.getBlockIndexStatusQuery = exports.getAllContractDataHistoryData = exports.getAddressQuery = exports.fetchChainData = exports.USER_JOINED_QUERY = exports.SIGNATURE_SIGNED_QUERY = exports.ENDPOINT_PREFIX = exports.API_VERSION = void 0;
var _dashboard = require("./dashboard");
var _download = require("./download");
var _moment = _interopRequireDefault(require("moment"));
var _utils = require("../components/dataVis/utils");
var _block = require("./block");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
var ENDPOINT_PREFIX = 'https://api.thegraph.com/subgraphs/name/ethsign/ethsign-3-';
exports.ENDPOINT_PREFIX = ENDPOINT_PREFIX;
var API_VERSION = '';
exports.API_VERSION = API_VERSION;
var USER_JOINED_QUERY = "User joined query";
exports.USER_JOINED_QUERY = USER_JOINED_QUERY;
var SIGNATURE_SIGNED_QUERY = 'Signature signed query';
exports.SIGNATURE_SIGNED_QUERY = SIGNATURE_SIGNED_QUERY;
var getNetworkEndpoint = function getNetworkEndpoint(chainId) {
var endpoint = ENDPOINT_PREFIX;
switch (chainId) {
case 1:
endpoint += 'ethereum'; //'mainnet';
break;
case 3:
endpoint += 'ropsten';
break;
case 56:
endpoint += 'bsc';
break;
case 43114:
endpoint += 'avalanche';
break;
case 137:
endpoint += 'polygon';
break;
case 1287:
endpoint += 'moonbeam';
break;
case 250:
endpoint += 'fantom';
break;
default:
throw new Error("Unsupported Network for GraphQL Query with Chain ID " + chainId);
}
endpoint += API_VERSION;
return endpoint;
};
var getDeploymentId = function getDeploymentId(chainId) {
switch (chainId) {
case 1:
return 'QmaoPWdPLK815q2ygFbWTE339HRQfpvPVzAbg5Yjj72o4B';
case 3:
return 'QmUu2yAmfD6EwUP27PFwNkzjXGVnfxZkXkf21XfgN1X3Sm';
case 56:
return 'QmQxmQcWvpsw8V3BPEqGAQe3NRqvVaJREpyAYzBw7gA3mk';
case 43114:
return 'QmapYZcJu7GWNUg3Uf2vck37PRDPPmiZv3qZDQzs5x35v6';
case 137:
return 'QmecH6azJ2x5aSns8NRJVuQyGdgw9F94SiDK3wm3zw6Wi2';
case 250:
return 'QmdLz9Wd1dUaFVTT7tFQ8JwMPzLK1RjBuk4iohVqCcwUzZ';
default:
throw new Error("Unsupported Network for GraphQL Query with Chain ID " + chainId);
}
};
exports.getDeploymentId = getDeploymentId;
var getContractHistoryQuery = function getContractHistoryQuery(contractId) {
return "\n {\n events(where: {contract: \"".concat(contractId, "\"}, orderBy: blockNumber, orderDirection: asc, first: 1000) {\n blockNumber\n timestamp\n type\n provider\n storage_id0\n storage_id1\n involvedParty\n number\n }\n }\n ");
};
exports.getContractHistoryQuery = getContractHistoryQuery;
var getBlockIndexStatusQuery = function getBlockIndexStatusQuery(chainId) {
return "\n {\n indexingStatuses(subgraphs: [\"".concat(getDeploymentId(chainId), "\"]) {\n chains {\n chainHeadBlock {\n number\n }\n earliestBlock {\n number\n }\n latestBlock {\n number\n }\n }\n }\n }\n ");
};
exports.getBlockIndexStatusQuery = getBlockIndexStatusQuery;
var getSignatureValidityQuery = function getSignatureValidityQuery(docKey, signerAddress) {
return "\n {\n contracts(where: {id: \"".concat(docKey, "\"}) {\n name\n currentSignedSignersList(where: {id: \"").concat(signerAddress, "\"}) {\n id\n }\n }\n events(where: {contract: \"").concat(docKey, "\", type: LogSignedDocument, involvedParty: \"").concat(signerAddress, "\"}) {\n timestamp\n }\n }\n ");
};
exports.getSignatureValidityQuery = getSignatureValidityQuery;
var getSignatureExistenceQuery = function getSignatureExistenceQuery(docKey, signerAddress) {
return "\n {\n contracts(where: {id: \"".concat(docKey, "\"}) {\n name\n currentSignersList(where: {id: \"").concat(signerAddress, "\"}) {\n id\n }\n }\n }\n ");
};
exports.getSignatureExistenceQuery = getSignatureExistenceQuery;
var getContractsGivenAddressQuery = function getContractsGivenAddressQuery(address) {
return "\n {\n users(where: {id: \"".concat(address, "\"}) {\n contracts(orderBy: birth, orderDirection: desc) {\n type\n signed\n contract {\n id\n status\n }\n }\n }\n }\n ");
};
exports.getContractsGivenAddressQuery = getContractsGivenAddressQuery;
var getContractDetailsGivenDocKeyQuery = function getContractDetailsGivenDocKeyQuery(documentKey) {
return "\n {\n contracts(where: { id: \"".concat(documentKey, "\" }) {\n initiator {\n id\n }\n name\n birth\n expiration\n docStorage {\n provider\n storage_id0\n storage_id1\n }\n metaStorage {\n provider\n storage_id0\n storage_id1\n }\n totalSigners\n currentSigners\n currentSignedSigners\n currentSignedSignersList {\n id\n }\n status\n events {\n type\n }\n commentStorageList {\n commentAuthor\n provider\n storage_id0\n storage_id1\n }\n }\n }\n ");
};
exports.getContractDetailsGivenDocKeyQuery = getContractDetailsGivenDocKeyQuery;
var getAllContractDataHistoryData = function getAllContractDataHistoryData() {
return "\n {\n infos(first: 1) {\n totalDocumentsSigned\n totalSignaturesSigned\n }\n } \n ";
};
exports.getAllContractDataHistoryData = getAllContractDataHistoryData;
var getDocumentSignedQuery = function getDocumentSignedQuery() {
var first = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100;
var skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
return "\n {\n contracts(where: {consensusTimestamp_lt: ".concat((0, _moment.default)().format('X'), "}, first: ").concat(first, ", skip: ").concat(skip, ") {\n name\n id\n consensusTimestamp\n }\n }\n ");
};
exports.getDocumentSignedQuery = getDocumentSignedQuery;
var getSignatureSignedQuery = function getSignatureSignedQuery() {
var first = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100;
var skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
return "\n {\n events(where: {timestamp_lt: ".concat((0, _moment.default)().format('x'), ", type: LogSignedDocument}, first: ").concat(first, ", skip: ").concat(skip, ") {\n type\n timestamp\n involvedParty\n }\n }\n ");
};
exports.getSignatureSignedQuery = getSignatureSignedQuery;
var getAddressQuery = function getAddressQuery() {
var first = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100;
var skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
return "\n {\n users(where: {joinedTimestamp_lt: ".concat((0, _moment.default)().format('X'), "}, first: ").concat(first, ", skip: ").concat(skip, ") {\n id\n joinedTimestamp\n }\n } \n ");
};
exports.getAddressQuery = getAddressQuery;
var getContractSignatureData = function getContractSignatureData(documentKey) {
return "\n {\n contracts(where: {id: \"".concat(documentKey, "\"}) {\n initiator {\n id\n }\n id\n name\n birth\n signatureInfo {\n signer {\n id\n }\n signatureFieldsSigned\n }\n }\n }\n ");
};
exports.getContractSignatureData = getContractSignatureData;
var loadData = /*#__PURE__*/function () {
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(chainId, documentKey) {
var endpoint, res;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
endpoint = getNetworkEndpoint(chainId); // Check to see if it's a valid chainId
if (!(endpoint.length == 0)) {
_context.next = 3;
break;
}
return _context.abrupt("return", []);
case 3:
_context.next = 5;
return fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: getContractHistoryQuery(documentKey)
})
}).then(function (res) {
return res.json();
}).then(function (result) {
if (!result.data.events) {
res = {};
return;
}
var newData = [];
var initiator = null;
result === null || result === void 0 ? void 0 : result.data.events.forEach(function (item) {
var type = item.type,
timestamp = item.timestamp,
involvedParty = item.involvedParty,
blockNumber = item.blockNumber,
provider = item.provider,
storage_id0 = item.storage_id0,
storage_id1 = item.storage_id1,
number = item.number;
switch (type) {
case "LogNewDocument":
initiator = involvedParty;
newData.push({
type: type,
timestamp: timestamp,
blockNumber: blockNumber,
initiator: involvedParty,
actionString: 0
});
break;
case "LogChangedDocumentStorage":
newData.push({
type: type,
timestamp: timestamp,
blockNumber: blockNumber,
provider: provider,
storage_id0: storage_id0,
storage_id1: storage_id1,
actionString: 1
});
break;
case "LogAddedNewSignerForDocument":
newData.push({
type: type,
timestamp: timestamp,
blockNumber: blockNumber,
initiator: involvedParty,
actionString: 2
});
break;
case "LogSetNumberOfSignatureFields":
newData.push({
type: type,
timestamp: timestamp,
blockNumber: blockNumber,
initiator: initiator,
signer: involvedParty,
number: number,
actionString: 3
});
break;
case "LogSignedDocument":
newData.push({
type: type,
timestamp: timestamp,
blockNumber: blockNumber,
initiator: involvedParty,
actionString: 4
});
break;
}
});
res = newData;
});
case 5:
return _context.abrupt("return", res);
case 6:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return function loadData(_x, _x2) {
return _ref.apply(this, arguments);
};
}();
exports.loadData = loadData;
var loadContractDetails = /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(chainId, documentKey, provider, address, signal) {
var endpoint, res;
return regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
endpoint = getNetworkEndpoint(chainId); // Check to see if it's a valid chainId
if (!(endpoint.length == 0)) {
_context3.next = 3;
break;
}
return _context3.abrupt("return", []);
case 3:
res = {};
_context3.next = 6;
return fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
signal: signal,
body: JSON.stringify({
query: getContractDetailsGivenDocKeyQuery(documentKey)
})
}).then(function (res) {
return res.json();
}).then( /*#__PURE__*/function () {
var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(result) {
var _result$data, _result$data$contract;
var created_at, expire_at, expiration_block, estimateDate, status, userHasSigned, _iterator, _step, signer, docStorageProvider, docStorage_id0, docStorage_id1, metaStorage_id0, metaStorage_id1, docHash, metaHash, withPassword, commentData, commentStorageList, storageProvider, _yield$loadContractSi, signatureData, signers, _result$data$contract2, totalSigners, currentSigners;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
if ((result === null || result === void 0 ? void 0 : (_result$data = result.data) === null || _result$data === void 0 ? void 0 : (_result$data$contract = _result$data.contracts) === null || _result$data$contract === void 0 ? void 0 : _result$data$contract.length) > 0) {
_context2.next = 3;
break;
}
res = null;
return _context2.abrupt("return");
case 3:
created_at = null;
if (!provider) {
_context2.next = 8;
break;
}
_context2.next = 7;
return provider.getBlock(parseInt(result === null || result === void 0 ? void 0 : result.data.contracts[0].birth));
case 7:
created_at = _context2.sent;
case 8:
expire_at = null, expiration_block = parseInt(result === null || result === void 0 ? void 0 : result.data.contracts[0].expiration);
if (!(parseInt(result === null || result === void 0 ? void 0 : result.data.contracts[0].expiration) !== 0)) {
_context2.next = 24;
break;
}
estimateDate = null;
if (!provider) {
_context2.next = 21;
break;
}
_context2.t0 = _block.getTimestampOfFutureBlock;
_context2.t1 = parseInt(result === null || result === void 0 ? void 0 : result.data.contracts[0].expiration);
_context2.next = 16;
return (0, _dashboard.getCurrentBlockNumber)(provider);
case 16:
_context2.t2 = _context2.sent;
_context2.t3 = provider;
_context2.next = 20;
return (0, _context2.t0)(_context2.t1, _context2.t2, _context2.t3);
case 20:
estimateDate = _context2.sent;
case 21:
expire_at = estimateDate ? (0, _moment.default)(estimateDate).unix() : null;
_context2.next = 25;
break;
case 24:
expiration_block = 'Never';
case 25:
/*
* Statuses:
* 0: 'PDF Not Uploaded'
* 1: 'More Signers Needed'
* 2: 'Pending Signatures'
* 3: 'All Signed'
* 4: 'Waiting For Others'
*/
status = parseInt(result === null || result === void 0 ? void 0 : result.data.contracts[0].status);
if (status == 2) {
userHasSigned = false;
_iterator = _createForOfIteratorHelper(result === null || result === void 0 ? void 0 : result.data.contracts[0].currentSignedSignersList);
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
signer = _step.value;
if (signer.id === (address === null || address === void 0 ? void 0 : address.toLowerCase())) {
userHasSigned = true;
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
if (userHasSigned) {
status = 4;
}
}
docStorageProvider = result === null || result === void 0 ? void 0 : result.data.contracts[0].docStorage.provider;
docStorage_id0 = result === null || result === void 0 ? void 0 : result.data.contracts[0].docStorage.storage_id0;
docStorage_id1 = result === null || result === void 0 ? void 0 : result.data.contracts[0].docStorage.storage_id1; // const metaStorageProvider = result?.data.contracts[0].metaStorage.provider
// const metaStorageProvider = result?.data.contracts[0].metaStorage.provider
metaStorage_id0 = result === null || result === void 0 ? void 0 : result.data.contracts[0].metaStorage.storage_id0;
metaStorage_id1 = result === null || result === void 0 ? void 0 : result.data.contracts[0].metaStorage.storage_id1;
docHash = (0, _dashboard.getIpfsHashFromBytes32)(docStorage_id0) + (0, _dashboard.getIpfsHashFromBytes32)(docStorage_id1);
metaHash = (0, _dashboard.getIpfsHashFromBytes32)(metaStorage_id0) + (0, _dashboard.getIpfsHashFromBytes32)(metaStorage_id1);
_context2.next = 36;
return (0, _download.isFileWithPassword)(docHash);
case 36:
withPassword = _context2.sent;
commentData = [];
commentStorageList = result === null || result === void 0 ? void 0 : result.data.contracts[0].commentStorageList;
if (commentStorageList) {
commentStorageList.map(function (data) {
var commentHash = (0, _dashboard.getIpfsHashFromBytes32)(data.storage_id0) + (0, _dashboard.getIpfsHashFromBytes32)(data.storage_id1);
if (commentHash != '') {
commentData.push({
address: data.commentAuthor.toLowerCase(),
provider: (0, _dashboard.safeToAscii)(data.provider),
commentHash: commentHash
});
}
});
} // with the assumption that all files (doc, meta, comments) are stored at the same storageprovider
// with the assumption that all files (doc, meta, comments) are stored at the same storageprovider
storageProvider = (0, _dashboard.safeToAscii)(docStorageProvider);
_context2.next = 43;
return loadContractSignatureDetails(chainId, documentKey, signal);
case 43:
_yield$loadContractSi = _context2.sent;
signatureData = _yield$loadContractSi.signatureData;
signers = _yield$loadContractSi.signers;
_result$data$contract2 = result === null || result === void 0 ? void 0 : result.data.contracts[0], totalSigners = _result$data$contract2.totalSigners, currentSigners = _result$data$contract2.currentSigners;
if (totalSigners != currentSigners) {
status = 1;
} // initiator = _.signers.filter()
// initiator = _.signers.filter()
res.documentKey = documentKey;
res.initiator = result === null || result === void 0 ? void 0 : result.data.contracts[0].initiator.id.toLowerCase();
res.name = (0, _dashboard.safeToAscii)(result === null || result === void 0 ? void 0 : result.data.contracts[0].name).replace(/\0.*$/g, '');
res.creation = {
block: parseInt(result === null || result === void 0 ? void 0 : result.data.contracts[0].birth),
date: created_at.timestamp
};
res.expiration = {
block: expiration_block,
date: expire_at ? expire_at : null
};
res.status = status;
res.ipfsHash = docHash;
res.metaHash = metaHash;
res.storageProvider = storageProvider;
res.commentData = commentData;
res.withPassword = withPassword;
res.signers = signers;
res.signatureData = signatureData;
case 61:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return function (_x8) {
return _ref3.apply(this, arguments);
};
}()).catch(function (err) {
console.log(err);
});
case 6:
return _context3.abrupt("return", res);
case 7:
case "end":
return _context3.stop();
}
}
}, _callee3);
}));
return function loadContractDetails(_x3, _x4, _x5, _x6, _x7) {
return _ref2.apply(this, arguments);
};
}();
exports.loadContractDetails = loadContractDetails;
var loadContractSignatureDetails = /*#__PURE__*/function () {
var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(chainId, documentKey, signal) {
var endpoint, signatureData, signers;
return regeneratorRuntime.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
endpoint = getNetworkEndpoint(chainId); // Check to see if it's a valid chainId
if (!(endpoint.length == 0)) {
_context5.next = 3;
break;
}
return _context5.abrupt("return", {
signatureData: [],
signers: []
});
case 3:
signatureData = [];
signers = [];
_context5.next = 7;
return fetch(endpoint, {
method: 'POST',
signal: signal,
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: getContractSignatureData(documentKey)
})
}).then(function (res) {
return res.json();
}).then( /*#__PURE__*/function () {
var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(result) {
var _result$data$contract3, _result$data$contract4;
return regeneratorRuntime.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
if ((result === null || result === void 0 ? void 0 : (_result$data$contract3 = result.data.contracts[0]) === null || _result$data$contract3 === void 0 ? void 0 : (_result$data$contract4 = _result$data$contract3.signatureInfo) === null || _result$data$contract4 === void 0 ? void 0 : _result$data$contract4.length) > 0) {
result === null || result === void 0 ? void 0 : result.data.contracts[0].signatureInfo.map(function (sigInfo) {
var signed = sigInfo.signatureFieldsSigned.filter(function (field) {
return field == true;
});
var numSignedFields = signed.length;
var numTotalFields = sigInfo.signatureFieldsSigned.length;
signatureData.push({
signer: sigInfo.signer.id.toLowerCase(),
signed: signed.length,
notSigned: numTotalFields - numSignedFields,
fieldSigned: sigInfo.signatureFieldsSigned
});
signers.push({
address: sigInfo.signer.id.toLowerCase(),
avatar: null,
alias: null,
fullySigned: numSignedFields == numTotalFields
});
});
}
case 1:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));
return function (_x12) {
return _ref5.apply(this, arguments);
};
}()).catch(function (err) {
console.log(err);
});
case 7:
return _context5.abrupt("return", {
signatureData: signatureData,
signers: signers
});
case 8:
case "end":
return _context5.stop();
}
}
}, _callee5);
}));
return function loadContractSignatureDetails(_x9, _x10, _x11) {
return _ref4.apply(this, arguments);
};
}();
exports.loadContractSignatureDetails = loadContractSignatureDetails;
var loadContracts = /*#__PURE__*/function () {
var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(chainId, address, signal) {
var endpoint, data;
return regeneratorRuntime.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
endpoint = getNetworkEndpoint(chainId); // Check to see if it's a valid chainId
if (!(endpoint.length == 0)) {
_context7.next = 3;
break;
}
return _context7.abrupt("return", []);
case 3:
data = [];
_context7.next = 6;
return fetch(endpoint, {
method: 'POST',
signal: signal,
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: getContractsGivenAddressQuery(address.toLowerCase())
})
}).then(function (res) {
return res.json();
}).then( /*#__PURE__*/function () {
var _ref7 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(result) {
var _result$data2;
var _iterator2, _step2, c;
return regeneratorRuntime.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
if (result !== null && result !== void 0 && (_result$data2 = result.data) !== null && _result$data2 !== void 0 && _result$data2.users[0]) {
data = result.data.users[0].contracts;
_iterator2 = _createForOfIteratorHelper(data);
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
c = _step2.value;
c.ethAccount = address.toLowerCase();
} // mine_data = result.data.users[0].createdByMe;
// archived_data = result.data.users[0].archived;
// shared_data = result.data.users[0].sharedWithMe;
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
} // mine_data = result.data.users[0].createdByMe;
// archived_data = result.data.users[0].archived;
// shared_data = result.data.users[0].sharedWithMe;
}
case 1:
case "end":
return _context6.stop();
}
}
}, _callee6);
}));
return function (_x16) {
return _ref7.apply(this, arguments);
};
}()).catch(function (err) {
console.log(err);
});
case 6:
return _context7.abrupt("return", data);
case 7:
case "end":
return _context7.stop();
}
}
}, _callee7);
}));
return function loadContracts(_x13, _x14, _x15) {
return _ref6.apply(this, arguments);
};
}();
exports.loadContracts = loadContracts;
var getChainIndexStatus = /*#__PURE__*/function () {
var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(chainId) {
var endpoint, data, blocksBehind;
return regeneratorRuntime.wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
endpoint = 'https://api.thegraph.com/index-node/graphql';
data = [];
blocksBehind = 0;
_context9.next = 5;
return fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: getBlockIndexStatusQuery(chainId)
})
}).then(function (res) {
return res.json();
}).then( /*#__PURE__*/function () {
var _ref9 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(result) {
var _result$data3;
return regeneratorRuntime.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
if (result !== null && result !== void 0 && (_result$data3 = result.data) !== null && _result$data3 !== void 0 && _result$data3.indexingStatuses[0]) {
data = result.data.indexingStatuses[0].chains[0];
blocksBehind = data.chainHeadBlock.number - data.latestBlock.number;
}
case 1:
case "end":
return _context8.stop();
}
}
}, _callee8);
}));
return function (_x18) {
return _ref9.apply(this, arguments);
};
}());
case 5:
return _context9.abrupt("return", blocksBehind);
case 6:
case "end":
return _context9.stop();
}
}
}, _callee9);
}));
return function getChainIndexStatus(_x17) {
return _ref8.apply(this, arguments);
};
}();
exports.getChainIndexStatus = getChainIndexStatus;
var validateSignature = /*#__PURE__*/function () {
var _ref10 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(chainId, docKey, signerAddress) {
var endpoint, ret;
return regeneratorRuntime.wrap(function _callee11$(_context11) {
while (1) {
switch (_context11.prev = _context11.next) {
case 0:
// STATUS:
// 0 - Does not exist
// 1 - Signature Verified
// 2 - Signature Pending
endpoint = getNetworkEndpoint(chainId); // Check to see if it's a valid chainId
if (!(endpoint.length == 0)) {
_context11.next = 3;
break;
}
return _context11.abrupt("return", {
status: 0,
networkId: chainId,
doc: null,
signerDetails: null
});
case 3:
ret = null;
_context11.next = 6;
return fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: getSignatureValidityQuery(docKey, signerAddress.toLowerCase())
})
}).then(function (res) {
return res.json();
}).then( /*#__PURE__*/function () {
var _ref11 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(result) {
var _result$data4, _result$data4$contrac, _result$data5, _result$data5$events;
return regeneratorRuntime.wrap(function _callee10$(_context10) {
while (1) {
switch (_context10.prev = _context10.next) {
case 0:
if (!(((_result$data4 = result.data) === null || _result$data4 === void 0 ? void 0 : (_result$data4$contrac = _result$data4.contracts) === null || _result$data4$contrac === void 0 ? void 0 : _result$data4$contrac.length) > 0 && ((_result$data5 = result.data) === null || _result$data5 === void 0 ? void 0 : (_result$data5$events = _result$data5.events) === null || _result$data5$events === void 0 ? void 0 : _result$data5$events.length) > 0)) {
_context10.next = 4;
break;
}
// Valid signature
ret = {
status: 1,
networkId: chainId,
doc: {
name: (0, _dashboard.safeToAscii)(result.data.contracts[0].name).replace(/\0.*$/g, ''),
key: docKey
},
signerDetails: {
address: signerAddress,
timestamp: result.data.events[0].timestamp
}
};
_context10.next = 6;
break;
case 4:
_context10.next = 6;
return fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: getSignatureExistenceQuery(docKey, signerAddress.toLowerCase())
})
}).then(function (res) {
return res.json();
}).then(function (result) {
var _result$data6, _result$data6$contrac, _result$data7, _result$data7$contrac;
if (((_result$data6 = result.data) === null || _result$data6 === void 0 ? void 0 : (_result$data6$contrac = _result$data6.contracts) === null || _result$data6$contrac === void 0 ? void 0 : _result$data6$contrac.length) > 0 && ((_result$data7 = result.data) === null || _result$data7 === void 0 ? void 0 : (_result$data7$contrac = _result$data7.contracts[0].currentSignersList) === null || _result$data7$contrac === void 0 ? void 0 : _result$data7$contrac.length) > 0) {
ret = {
status: 2,
networkId: chainId,
doc: {
name: (0, _dashboard.safeToAscii)(result.data.contracts[0].name).replace(/\0.*$/g, ''),
key: docKey
},
signerDetails: {
address: signerAddress,
timestamp: null
}
};
} else {
ret = {
status: 0,
networkId: chainId,
doc: null,
signerDetails: null
};
}
});
case 6:
case "end":
return _context10.stop();
}
}
}, _callee10);
}));
return function (_x22) {
return _ref11.apply(this, arguments);
};
}());
case 6:
return _context11.abrupt("return", ret);
case 7:
case "end":
return _context11.stop();
}
}
}, _callee11);
}));
return function validateSignature(_x19, _x20, _x21) {
return _ref10.apply(this, arguments);
};
}(); // the network should be ['mainnet', 'ropsten', 'bsc', 'avalanche', 'polygon', 'moonbeam','fantom'] , but in the 'moonbeam' have some bug, we can not get the right data
exports.validateSignature = validateSignature;
var network = ['ethereum', 'ropsten', 'bsc', 'avalanche', 'polygon', 'fantom'];
exports.network = network;
var loadAllContractHistoryData = /*#__PURE__*/function () {
var _ref12 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12() {
return regeneratorRuntime.wrap(function _callee12$(_context12) {
while (1) {
switch (_context12.prev = _context12.next) {
case 0:
_context12.next = 2;
return (0, _utils.getChainData)(ENDPOINT_PREFIX, "", getAllContractDataHistoryData());
case 2:
return _context12.abrupt("return", _context12.sent);
case 3:
case "end":
return _context12.stop();
}
}
}, _callee12);
}));
return function loadAllContractHistoryData() {
return _ref12.apply(this, arguments);
};
}();
exports.loadAllContractHistoryData = loadAllContractHistoryData;
var loadAllDocumentsSignedData = /*#__PURE__*/function () {
var _ref13 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee13() {
var documentsSignedNumOnEachChain,
_args13 = arguments;
return regeneratorRuntime.wrap(function _callee13$(_context13) {
while (1) {
switch (_context13.prev = _context13.next) {
case 0:
documentsSignedNumOnEachChain = _args13.length > 0 && _args13[0] !== undefined ? _args13[0] : [];
_context13.t0 = _utils.mergeDocumentsData;
_context13.next = 4;
return (0, _utils.getChainDataWithSigNum)(documentsSignedNumOnEachChain, getDocumentSignedQuery, USER_JOINED_QUERY);
case 4:
_context13.t1 = _context13.sent;
return _context13.abrupt("return", (0, _context13.t0)(_context13.t1));
case 6:
case "end":
return _context13.stop();
}
}
}, _callee13);
}));
return function loadAllDocumentsSignedData() {
return _ref13.apply(this, arguments);
};
}();
exports.loadAllDocumentsSignedData = loadAllDocumentsSignedData;
var loadAllSignatureSignedData = /*#__PURE__*/function () {
var _ref14 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee14(signaturesSignedNumOnEachChain) {
return regeneratorRuntime.wrap(function _callee14$(_context14) {
while (1) {
switch (_context14.prev = _context14.next) {
case 0:
_context14.t0 = _utils.mergeSignatureData;
_context14.next = 3;
return (0, _utils.getChainDataWithSigNum)(signaturesSignedNumOnEachChain, getSignatureSignedQuery, USER_JOINED_QUERY);
case 3:
_context14.t1 = _context14.sent;
return _context14.abrupt("return", (0, _context14.t0)(_context14.t1));
case 5:
case "end":
return _context14.stop();
}
}
}, _callee14);
}));
return function loadAllSignatureSignedData(_x23) {
return _ref14.apply(this, arguments);
};
}();
exports.loadAllSignatureSignedData = loadAllSignatureSignedData;
var loadAllAddressCount = /*#__PURE__*/function () {
var _ref15 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee15() {
return regeneratorRuntime.wrap(function _callee15$(_context15) {
while (1) {
switch (_context15.prev = _context15.next) {
case 0:
_context15.t0 = _utils.merAddressData;
_context15.next = 3;
return (0, _utils.getChainDataWithoutSigNum)(network, getAddressQuery, USER_JOINED_QUERY);
case 3:
_context15.t1 = _context15.sent;
return _context15.abrupt("return", (0, _context15.t0)(_context15.t1));
case 5:
case "end":
return _context15.stop();
}
}
}, _callee15);
}));
return function loadAllAddressCount() {
return _ref15.apply(this, arguments);
};
}();
exports.loadAllAddressCount = loadAllAddressCount;
var loadDocumentsSignedByNetwork = /*#__PURE__*/function () {
var _ref16 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee16(networkName) {
return regeneratorRuntime.wrap(function _callee16$(_context16) {
while (1) {
switch (_context16.prev = _context16.next) {
case 0:
_context16.t0 = _utils.mergeSingleChainDocumentData;
_context16.next = 3;
return (0, _utils.getSingleChainDataWithouNum)(networkName, getDocumentSignedQuery, USER_JOINED_QUERY);
case 3:
_context16.t1 = _context16.sent;
return _context16.abrupt("return", (0, _context16.t0)(_context16.t1));
case 5:
case "end":
return _context16.stop();
}
}
}, _callee16);
}));
return function loadDocumentsSignedByNetwork(_x24) {
return _ref16.apply(this, arguments);
};
}();
exports.loadDocumentsSignedByNetwork = loadDocumentsSignedByNetwork;
var loadSignatureSignedByNetwork = /*#__PURE__*/function () {
var _ref17 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee17(networkName) {
return regeneratorRuntime.wrap(function _callee17$(_context17) {
while (1) {
switch (_context17.prev = _context17.next) {
case 0:
_context17.t0 = _utils.mergeSingleChainSignatureData;
_context17.next = 3;
return (0, _utils.getSingleChainDataWithouNum)(networkName, getSignatureSignedQuery, USER_JOINED_QUERY);
case 3:
_context17.t1 = _context17.sent;
return _context17.abrupt("return", (0, _context17.t0)(_context17.t1));
case 5:
case "end":
return _context17.stop();
}
}
}, _callee17);
}));
return function loadSignatureSignedByNetwork(_x25) {
return _ref17.apply(this, arguments);
};
}();
exports.loadSignatureSignedByNetwork = loadSignatureSignedByNetwork;
var fetchChainData = /*#__PURE__*/function () {
var _ref18 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee18(endpoint, networkName, query) {
return regeneratorRuntime.wrap(function _callee18$(_context18) {
while (1) {
switch (_context18.prev = _context18.next) {
case 0:
_context18.next = 2;
return fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: query
})
}).then(function (res) {
return res.json();
}).then(function (_ref19) {
var data = _ref19.data;
return {
networkName: networkName,
data: data
};
});
case 2:
return _context18.abrupt("return", _context18.sent);
case 3:
case "end":
return _context18.stop();
}
}
}, _callee18);
}));
return function fetchChainData(_x26, _x27, _x28) {
return _ref18.app