UNPKG

@foreverrbum/ethsign

Version:

This package will allow you to electronically sign documents within your application

1,149 lines (956 loc) 50.1 kB
"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