@snapshot-labs/snapshot.js 0.7.3 → 0.8.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
File without changes
@@ -9,20 +9,20 @@ export default class Client {
9
9
  readonly address: string;
10
10
  readonly options: any;
11
11
  constructor(address?: string, options?: {});
12
- sign(web3: Web3Provider | Wallet, address: string, message: any, types: any): Promise<unknown>;
13
- send(envelop: any): Promise<unknown>;
14
- space(web3: Web3Provider | Wallet, address: string, message: Space): Promise<unknown>;
15
- proposal(web3: Web3Provider | Wallet, address: string, message: Proposal): Promise<unknown>;
16
- updateProposal(web3: Web3Provider | Wallet, address: string, message: UpdateProposal): Promise<unknown>;
17
- flagProposal(web3: Web3Provider | Wallet, address: string, message: FlagProposal): Promise<unknown>;
18
- cancelProposal(web3: Web3Provider | Wallet, address: string, message: CancelProposal): Promise<unknown>;
19
- vote(web3: Web3Provider | Wallet, address: string, message: Vote): Promise<unknown>;
20
- follow(web3: Web3Provider | Wallet, address: string, message: Follow): Promise<unknown>;
21
- unfollow(web3: Web3Provider | Wallet, address: string, message: Unfollow): Promise<unknown>;
22
- subscribe(web3: Web3Provider | Wallet, address: string, message: Subscribe): Promise<unknown>;
23
- unsubscribe(web3: Web3Provider | Wallet, address: string, message: Unsubscribe): Promise<unknown>;
24
- profile(web3: Web3Provider | Wallet, address: string, message: Profile): Promise<unknown>;
25
- statement(web3: Web3Provider | Wallet, address: string, message: Statement): Promise<unknown>;
26
- alias(web3: Web3Provider | Wallet, address: string, message: Alias): Promise<unknown>;
27
- deleteSpace(web3: Web3Provider | Wallet, address: string, message: DeleteSpace): Promise<unknown>;
12
+ sign(web3: Web3Provider | Wallet, address: string, message: any, types: any): Promise<any>;
13
+ send(envelop: any): Promise<any>;
14
+ space(web3: Web3Provider | Wallet, address: string, message: Space): Promise<any>;
15
+ proposal(web3: Web3Provider | Wallet, address: string, message: Proposal): Promise<any>;
16
+ updateProposal(web3: Web3Provider | Wallet, address: string, message: UpdateProposal): Promise<any>;
17
+ flagProposal(web3: Web3Provider | Wallet, address: string, message: FlagProposal): Promise<any>;
18
+ cancelProposal(web3: Web3Provider | Wallet, address: string, message: CancelProposal): Promise<any>;
19
+ vote(web3: Web3Provider | Wallet, address: string, message: Vote): Promise<any>;
20
+ follow(web3: Web3Provider | Wallet, address: string, message: Follow): Promise<any>;
21
+ unfollow(web3: Web3Provider | Wallet, address: string, message: Unfollow): Promise<any>;
22
+ subscribe(web3: Web3Provider | Wallet, address: string, message: Subscribe): Promise<any>;
23
+ unsubscribe(web3: Web3Provider | Wallet, address: string, message: Unsubscribe): Promise<any>;
24
+ profile(web3: Web3Provider | Wallet, address: string, message: Profile): Promise<any>;
25
+ statement(web3: Web3Provider | Wallet, address: string, message: Statement): Promise<any>;
26
+ alias(web3: Web3Provider | Wallet, address: string, message: Alias): Promise<any>;
27
+ deleteSpace(web3: Web3Provider | Wallet, address: string, message: DeleteSpace): Promise<any>;
28
28
  }
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fetch = require('cross-fetch');
3
+ var ofetch = require('ofetch');
4
4
  var address = require('@ethersproject/address');
5
5
  var abi = require('@ethersproject/abi');
6
6
  var contracts = require('@ethersproject/contracts');
@@ -16,7 +16,6 @@ var wallet = require('@ethersproject/wallet');
16
16
 
17
17
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
18
 
19
- var fetch__default = /*#__PURE__*/_interopDefaultLegacy(fetch);
20
19
  var Ajv__default = /*#__PURE__*/_interopDefaultLegacy(Ajv);
21
20
  var addFormats__default = /*#__PURE__*/_interopDefaultLegacy(addFormats);
22
21
  var set__default = /*#__PURE__*/_interopDefaultLegacy(set);
@@ -371,29 +370,35 @@ var Client = /** @class */ (function () {
371
370
  });
372
371
  };
373
372
  Client.prototype.send = function (envelop) {
373
+ var _a, _b;
374
374
  return __awaiter(this, void 0, void 0, function () {
375
- var address, init;
376
- return __generator(this, function (_a) {
377
- address = this.address;
378
- if (envelop.sig === '0x' && this.options.relayerURL)
379
- address = this.options.relayerURL;
380
- init = {
381
- method: 'POST',
382
- headers: {
383
- Accept: 'application/json',
384
- 'Content-Type': 'application/json'
385
- },
386
- body: JSON.stringify(envelop)
387
- };
388
- return [2 /*return*/, new Promise(function (resolve, reject) {
389
- fetch__default['default'](address, init)
390
- .then(function (res) {
391
- if (res.ok)
392
- return resolve(res.json());
393
- throw res;
394
- })
395
- .catch(function (e) { return e.json().then(function (json) { return reject(json); }); });
396
- })];
375
+ var address, init, e_1, isSequencerError;
376
+ return __generator(this, function (_c) {
377
+ switch (_c.label) {
378
+ case 0:
379
+ address = this.address;
380
+ if (envelop.sig === '0x' && this.options.relayerURL)
381
+ address = this.options.relayerURL;
382
+ init = {
383
+ method: 'POST',
384
+ headers: {
385
+ Accept: 'application/json',
386
+ 'Content-Type': 'application/json'
387
+ },
388
+ timeout: this.options.timeout || 20e3,
389
+ body: envelop
390
+ };
391
+ _c.label = 1;
392
+ case 1:
393
+ _c.trys.push([1, 3, , 4]);
394
+ return [4 /*yield*/, ofetch.ofetch(address, init)];
395
+ case 2: return [2 /*return*/, _c.sent()];
396
+ case 3:
397
+ e_1 = _c.sent();
398
+ isSequencerError = ((_a = e_1.data) === null || _a === void 0 ? void 0 : _a.hasOwnProperty('error')) && ((_b = e_1.data) === null || _b === void 0 ? void 0 : _b.hasOwnProperty('error_description'));
399
+ return [2 /*return*/, Promise.reject(isSequencerError ? e_1.data : e_1)];
400
+ case 4: return [2 /*return*/];
401
+ }
397
402
  });
398
403
  });
399
404
  };
@@ -4595,32 +4600,50 @@ function multicall(network, provider, abi$1, calls, options) {
4595
4600
  });
4596
4601
  }
4597
4602
  function subgraphRequest(url, query, options) {
4598
- if (options === void 0) { options = {}; }
4603
+ var _a;
4599
4604
  return __awaiter(this, void 0, void 0, function () {
4600
- var res, responseData, data;
4601
- return __generator(this, function (_a) {
4602
- switch (_a.label) {
4603
- case 0: return [4 /*yield*/, fetch__default['default'](url, {
4605
+ var init, body, e_3;
4606
+ return __generator(this, function (_b) {
4607
+ switch (_b.label) {
4608
+ case 0:
4609
+ _b.trys.push([0, 2, , 3]);
4610
+ init = {
4604
4611
  method: 'POST',
4605
4612
  headers: __assign({ Accept: 'application/json', 'Content-Type': 'application/json' }, options === null || options === void 0 ? void 0 : options.headers),
4606
- body: JSON.stringify({ query: jsonToGraphqlQuery.jsonToGraphQLQuery({ query: query }) })
4607
- })];
4613
+ timeout: (options === null || options === void 0 ? void 0 : options.timeout) || 20e3,
4614
+ body: { query: jsonToGraphqlQuery.jsonToGraphQLQuery({ query: query }) }
4615
+ };
4616
+ return [4 /*yield*/, ofetch.ofetch(url, init)];
4608
4617
  case 1:
4609
- res = _a.sent();
4610
- return [4 /*yield*/, res.text()];
4611
- case 2:
4612
- responseData = _a.sent();
4613
- try {
4614
- responseData = JSON.parse(responseData);
4618
+ body = _b.sent();
4619
+ if (typeof body === 'string') {
4620
+ return [2 /*return*/, Promise.reject({
4621
+ errors: [
4622
+ {
4623
+ message: 'Body is not a JSON object',
4624
+ extensions: { code: 'INVALID_JSON' }
4625
+ }
4626
+ ]
4627
+ })];
4615
4628
  }
4616
- catch (e) {
4617
- throw new Error("Errors found in subgraphRequest: URL: " + url + ", Status: " + res.status + ", Response: " + responseData.substring(0, 400));
4618
- }
4619
- if (responseData.errors) {
4620
- throw new Error("Errors found in subgraphRequest: URL: " + url + ", Status: " + res.status + ", Response: " + JSON.stringify(responseData.errors).substring(0, 400));
4629
+ if (body.errors) {
4630
+ return [2 /*return*/, Promise.reject(body)];
4621
4631
  }
4622
- data = responseData.data;
4623
- return [2 /*return*/, data || {}];
4632
+ return [2 /*return*/, body.data];
4633
+ case 2:
4634
+ e_3 = _b.sent();
4635
+ return [2 /*return*/, Promise.reject(((_a = e_3.data) === null || _a === void 0 ? void 0 : _a.errors) ? e_3.data
4636
+ : {
4637
+ errors: [
4638
+ {
4639
+ message: e_3.statusText || e_3.toString(),
4640
+ extensions: {
4641
+ code: e_3.status || 0
4642
+ }
4643
+ }
4644
+ ]
4645
+ })];
4646
+ case 3: return [2 /*return*/];
4624
4647
  }
4625
4648
  });
4626
4649
  });
@@ -4645,20 +4668,39 @@ function getUrl(uri, gateway) {
4645
4668
  function getJSON(uri, options) {
4646
4669
  if (options === void 0) { options = {}; }
4647
4670
  return __awaiter(this, void 0, void 0, function () {
4648
- var url;
4671
+ var url, body;
4649
4672
  return __generator(this, function (_a) {
4650
- url = getUrl(uri, options.gateways);
4651
- return [2 /*return*/, fetch__default['default'](url).then(function (res) { return res.json(); })];
4673
+ switch (_a.label) {
4674
+ case 0:
4675
+ url = getUrl(uri, options.gateways) || '';
4676
+ return [4 /*yield*/, ofetch.ofetch(url, {
4677
+ timeout: options.timeout || 30e3,
4678
+ headers: __assign({ Accept: 'application/json', 'Content-Type': 'application/json' }, options === null || options === void 0 ? void 0 : options.headers)
4679
+ })];
4680
+ case 1:
4681
+ body = _a.sent();
4682
+ return [2 /*return*/, typeof body === 'string' ? JSON.parse(body) : body];
4683
+ }
4652
4684
  });
4653
4685
  });
4654
4686
  }
4655
- function ipfsGet(gateway, ipfsHash, protocolType) {
4687
+ function ipfsGet(gateway, ipfsHash, protocolType, options) {
4656
4688
  if (protocolType === void 0) { protocolType = 'ipfs'; }
4689
+ if (options === void 0) { options = {}; }
4657
4690
  return __awaiter(this, void 0, void 0, function () {
4658
- var url;
4691
+ var url, body;
4659
4692
  return __generator(this, function (_a) {
4660
- url = "https://" + gateway + "/" + protocolType + "/" + ipfsHash;
4661
- return [2 /*return*/, fetch__default['default'](url).then(function (res) { return res.json(); })];
4693
+ switch (_a.label) {
4694
+ case 0:
4695
+ url = "https://" + gateway + "/" + protocolType + "/" + ipfsHash;
4696
+ return [4 /*yield*/, ofetch.ofetch(url, {
4697
+ timeout: options.timeout || 20e3,
4698
+ headers: __assign({ Accept: 'application/json', 'Content-Type': 'application/json' }, options.headers)
4699
+ })];
4700
+ case 1:
4701
+ body = _a.sent();
4702
+ return [2 /*return*/, typeof body === 'string' ? JSON.parse(body) : body];
4703
+ }
4662
4704
  });
4663
4705
  });
4664
4706
  }
@@ -4684,17 +4726,18 @@ function getScores(space, strategies, network, addresses, snapshot, scoreApiUrl,
4684
4726
  if (snapshot === void 0) { snapshot = 'latest'; }
4685
4727
  if (scoreApiUrl === void 0) { scoreApiUrl = 'https://score.snapshot.org'; }
4686
4728
  if (options === void 0) { options = {}; }
4729
+ var _a;
4687
4730
  return __awaiter(this, void 0, void 0, function () {
4688
- var url, params, res, obj, e_3;
4689
- return __generator(this, function (_a) {
4690
- switch (_a.label) {
4731
+ var url, params, body, e_4;
4732
+ return __generator(this, function (_b) {
4733
+ switch (_b.label) {
4691
4734
  case 0:
4692
4735
  url = new URL(scoreApiUrl);
4693
- url.pathname = '/api/scores';
4736
+ url.pathname = options.pathname || '/api/scores';
4694
4737
  scoreApiUrl = url.toString();
4695
- _a.label = 1;
4738
+ _b.label = 1;
4696
4739
  case 1:
4697
- _a.trys.push([1, 4, , 5]);
4740
+ _b.trys.push([1, 3, , 4]);
4698
4741
  params = {
4699
4742
  space: space,
4700
4743
  network: network,
@@ -4702,47 +4745,43 @@ function getScores(space, strategies, network, addresses, snapshot, scoreApiUrl,
4702
4745
  strategies: strategies,
4703
4746
  addresses: addresses
4704
4747
  };
4705
- return [4 /*yield*/, fetch__default['default'](scoreApiUrl, {
4748
+ return [4 /*yield*/, ofetch.ofetch(scoreApiUrl, {
4706
4749
  method: 'POST',
4707
4750
  headers: scoreApiHeaders,
4708
- body: JSON.stringify({ params: params })
4751
+ timeout: options.timeout || 60e3,
4752
+ body: { params: params }
4709
4753
  })];
4710
4754
  case 2:
4711
- res = _a.sent();
4712
- return [4 /*yield*/, res.json()];
4713
- case 3:
4714
- obj = _a.sent();
4715
- if (obj.error) {
4716
- return [2 /*return*/, Promise.reject(obj.error)];
4717
- }
4755
+ body = _b.sent();
4718
4756
  return [2 /*return*/, options.returnValue === 'all'
4719
- ? obj.result
4720
- : obj.result[options.returnValue || 'scores']];
4721
- case 4:
4722
- e_3 = _a.sent();
4723
- if (e_3.errno) {
4724
- return [2 /*return*/, Promise.reject({ code: e_3.errno, message: e_3.toString(), data: '' })];
4725
- }
4726
- return [2 /*return*/, Promise.reject(e_3)];
4727
- case 5: return [2 /*return*/];
4757
+ ? body.result
4758
+ : body.result[options.returnValue || 'scores']];
4759
+ case 3:
4760
+ e_4 = _b.sent();
4761
+ return [2 /*return*/, Promise.reject(((_a = e_4.data) === null || _a === void 0 ? void 0 : _a.error) || {
4762
+ code: e_4.status || 0,
4763
+ message: e_4.statusText || e_4.toString(),
4764
+ data: e_4.data || ''
4765
+ })];
4766
+ case 4: return [2 /*return*/];
4728
4767
  }
4729
4768
  });
4730
4769
  });
4731
4770
  }
4732
4771
  function getVp(address, network, strategies, snapshot, space, delegation, options) {
4772
+ if (options === void 0) { options = {}; }
4773
+ var _a;
4733
4774
  return __awaiter(this, void 0, void 0, function () {
4734
- var init, res, json, e_4;
4735
- return __generator(this, function (_a) {
4736
- switch (_a.label) {
4775
+ var url, init, body, e_5;
4776
+ return __generator(this, function (_b) {
4777
+ switch (_b.label) {
4737
4778
  case 0:
4738
- if (!options)
4739
- options = {};
4740
- if (!options.url)
4741
- options.url = 'https://score.snapshot.org';
4779
+ url = options.url || 'https://score.snapshot.org';
4742
4780
  init = {
4743
4781
  method: 'POST',
4744
4782
  headers: scoreApiHeaders,
4745
- body: JSON.stringify({
4783
+ timeout: options.timeout || 60e3,
4784
+ body: {
4746
4785
  jsonrpc: '2.0',
4747
4786
  method: 'get_vp',
4748
4787
  params: {
@@ -4753,47 +4792,41 @@ function getVp(address, network, strategies, snapshot, space, delegation, option
4753
4792
  space: space,
4754
4793
  delegation: delegation
4755
4794
  }
4756
- })
4795
+ }
4757
4796
  };
4758
- _a.label = 1;
4797
+ _b.label = 1;
4759
4798
  case 1:
4760
- _a.trys.push([1, 4, , 5]);
4761
- return [4 /*yield*/, fetch__default['default'](options.url, init)];
4799
+ _b.trys.push([1, 3, , 4]);
4800
+ return [4 /*yield*/, ofetch.ofetch(url, init)];
4762
4801
  case 2:
4763
- res = _a.sent();
4764
- return [4 /*yield*/, res.json()];
4802
+ body = _b.sent();
4803
+ return [2 /*return*/, body.result];
4765
4804
  case 3:
4766
- json = _a.sent();
4767
- if (json.error)
4768
- return [2 /*return*/, Promise.reject(json.error)];
4769
- if (json.result)
4770
- return [2 /*return*/, json.result];
4771
- return [3 /*break*/, 5];
4772
- case 4:
4773
- e_4 = _a.sent();
4774
- if (e_4.errno) {
4775
- return [2 /*return*/, Promise.reject({ code: e_4.errno, message: e_4.toString(), data: '' })];
4776
- }
4777
- return [2 /*return*/, Promise.reject(e_4)];
4778
- case 5: return [2 /*return*/];
4805
+ e_5 = _b.sent();
4806
+ return [2 /*return*/, Promise.reject(((_a = e_5.data) === null || _a === void 0 ? void 0 : _a.error) || {
4807
+ code: e_5.status || 0,
4808
+ message: e_5.statusText || e_5.toString(),
4809
+ data: e_5.data || ''
4810
+ })];
4811
+ case 4: return [2 /*return*/];
4779
4812
  }
4780
4813
  });
4781
4814
  });
4782
4815
  }
4783
4816
  function validate(validation, author, space, network, snapshot, params, options) {
4817
+ if (options === void 0) { options = {}; }
4818
+ var _a;
4784
4819
  return __awaiter(this, void 0, void 0, function () {
4785
- var init, res, json, e_5;
4786
- return __generator(this, function (_a) {
4787
- switch (_a.label) {
4820
+ var url, init, body, e_6;
4821
+ return __generator(this, function (_b) {
4822
+ switch (_b.label) {
4788
4823
  case 0:
4789
- if (!options)
4790
- options = {};
4791
- if (!options.url)
4792
- options.url = 'https://score.snapshot.org';
4824
+ url = options.url || 'https://score.snapshot.org';
4793
4825
  init = {
4794
4826
  method: 'POST',
4795
4827
  headers: scoreApiHeaders,
4796
- body: JSON.stringify({
4828
+ timeout: options.timeout || 30e3,
4829
+ body: {
4797
4830
  jsonrpc: '2.0',
4798
4831
  method: 'validate',
4799
4832
  params: {
@@ -4804,27 +4837,23 @@ function validate(validation, author, space, network, snapshot, params, options)
4804
4837
  snapshot: snapshot,
4805
4838
  params: params
4806
4839
  }
4807
- })
4840
+ }
4808
4841
  };
4809
- _a.label = 1;
4842
+ _b.label = 1;
4810
4843
  case 1:
4811
- _a.trys.push([1, 4, , 5]);
4812
- return [4 /*yield*/, fetch__default['default'](options.url, init)];
4844
+ _b.trys.push([1, 3, , 4]);
4845
+ return [4 /*yield*/, ofetch.ofetch(url, init)];
4813
4846
  case 2:
4814
- res = _a.sent();
4815
- return [4 /*yield*/, res.json()];
4847
+ body = _b.sent();
4848
+ return [2 /*return*/, body.result];
4816
4849
  case 3:
4817
- json = _a.sent();
4818
- if (json.error)
4819
- return [2 /*return*/, Promise.reject(json.error)];
4820
- return [2 /*return*/, json.result];
4821
- case 4:
4822
- e_5 = _a.sent();
4823
- if (e_5.errno) {
4824
- return [2 /*return*/, Promise.reject({ code: e_5.errno, message: e_5.toString(), data: '' })];
4825
- }
4826
- return [2 /*return*/, Promise.reject(e_5)];
4827
- case 5: return [2 /*return*/];
4850
+ e_6 = _b.sent();
4851
+ return [2 /*return*/, Promise.reject(((_a = e_6.data) === null || _a === void 0 ? void 0 : _a.error) || {
4852
+ code: e_6.status || 0,
4853
+ message: e_6.statusText || e_6.toString(),
4854
+ data: e_6.data || ''
4855
+ })];
4856
+ case 4: return [2 /*return*/];
4828
4857
  }
4829
4858
  });
4830
4859
  });
@@ -4860,7 +4889,7 @@ function getSpaceUri(id, network, options) {
4860
4889
  if (network === void 0) { network = '1'; }
4861
4890
  if (options === void 0) { options = {}; }
4862
4891
  return __awaiter(this, void 0, void 0, function () {
4863
- var e_6;
4892
+ var e_7;
4864
4893
  return __generator(this, function (_a) {
4865
4894
  switch (_a.label) {
4866
4895
  case 0:
@@ -4868,8 +4897,8 @@ function getSpaceUri(id, network, options) {
4868
4897
  return [4 /*yield*/, getEnsTextRecord(id, 'snapshot', network, options)];
4869
4898
  case 1: return [2 /*return*/, _a.sent()];
4870
4899
  case 2:
4871
- e_6 = _a.sent();
4872
- console.log(e_6);
4900
+ e_7 = _a.sent();
4901
+ console.log(e_7);
4873
4902
  return [2 /*return*/, null];
4874
4903
  case 3: return [2 /*return*/];
4875
4904
  }