@snapshot-labs/snapshot.js 0.14.5 → 0.14.6

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.
@@ -1,4 +1,4 @@
1
- import fetch from 'cross-fetch';
1
+ import crossFetch from 'cross-fetch';
2
2
  import { Contract as Contract$1 } from '@ethersproject/contracts';
3
3
  import { isAddress, getAddress } from '@ethersproject/address';
4
4
  import { parseUnits } from '@ethersproject/units';
@@ -52,227 +52,6 @@ function __awaiter(thisArg, _arguments, P, generator) {
52
52
  });
53
53
  }
54
54
 
55
- const spaceTypes = {
56
- Space: [
57
- { name: 'from', type: 'address' },
58
- { name: 'space', type: 'string' },
59
- { name: 'timestamp', type: 'uint64' },
60
- { name: 'settings', type: 'string' }
61
- ]
62
- };
63
- const proposalTypes = {
64
- Proposal: [
65
- { name: 'from', type: 'string' },
66
- { name: 'space', type: 'string' },
67
- { name: 'timestamp', type: 'uint64' },
68
- { name: 'type', type: 'string' },
69
- { name: 'title', type: 'string' },
70
- { name: 'body', type: 'string' },
71
- { name: 'discussion', type: 'string' },
72
- { name: 'choices', type: 'string[]' },
73
- { name: 'labels', type: 'string[]' },
74
- { name: 'start', type: 'uint64' },
75
- { name: 'end', type: 'uint64' },
76
- { name: 'snapshot', type: 'uint64' },
77
- { name: 'plugins', type: 'string' },
78
- { name: 'privacy', type: 'string' },
79
- { name: 'app', type: 'string' }
80
- ]
81
- };
82
- const updateProposalTypes = {
83
- UpdateProposal: [
84
- { name: 'proposal', type: 'string' },
85
- { name: 'from', type: 'string' },
86
- { name: 'space', type: 'string' },
87
- { name: 'timestamp', type: 'uint64' },
88
- { name: 'type', type: 'string' },
89
- { name: 'title', type: 'string' },
90
- { name: 'body', type: 'string' },
91
- { name: 'discussion', type: 'string' },
92
- { name: 'choices', type: 'string[]' },
93
- { name: 'labels', type: 'string[]' },
94
- { name: 'plugins', type: 'string' },
95
- { name: 'privacy', type: 'string' }
96
- ]
97
- };
98
- const flagProposalTypes = {
99
- FlagProposal: [
100
- { name: 'from', type: 'string' },
101
- { name: 'space', type: 'string' },
102
- { name: 'proposal', type: 'string' },
103
- { name: 'timestamp', type: 'uint64' }
104
- ]
105
- };
106
- const cancelProposalTypes = {
107
- CancelProposal: [
108
- { name: 'from', type: 'string' },
109
- { name: 'space', type: 'string' },
110
- { name: 'timestamp', type: 'uint64' },
111
- { name: 'proposal', type: 'string' }
112
- ]
113
- };
114
- const cancelProposal2Types = {
115
- CancelProposal: [
116
- { name: 'from', type: 'string' },
117
- { name: 'space', type: 'string' },
118
- { name: 'timestamp', type: 'uint64' },
119
- { name: 'proposal', type: 'bytes32' }
120
- ]
121
- };
122
- const voteTypes = {
123
- Vote: [
124
- { name: 'from', type: 'string' },
125
- { name: 'space', type: 'string' },
126
- { name: 'timestamp', type: 'uint64' },
127
- { name: 'proposal', type: 'string' },
128
- { name: 'choice', type: 'uint32' },
129
- { name: 'reason', type: 'string' },
130
- { name: 'app', type: 'string' },
131
- { name: 'metadata', type: 'string' }
132
- ]
133
- };
134
- const voteArrayTypes = {
135
- Vote: [
136
- { name: 'from', type: 'string' },
137
- { name: 'space', type: 'string' },
138
- { name: 'timestamp', type: 'uint64' },
139
- { name: 'proposal', type: 'string' },
140
- { name: 'choice', type: 'uint32[]' },
141
- { name: 'reason', type: 'string' },
142
- { name: 'app', type: 'string' },
143
- { name: 'metadata', type: 'string' }
144
- ]
145
- };
146
- const voteStringTypes = {
147
- Vote: [
148
- { name: 'from', type: 'string' },
149
- { name: 'space', type: 'string' },
150
- { name: 'timestamp', type: 'uint64' },
151
- { name: 'proposal', type: 'string' },
152
- { name: 'choice', type: 'string' },
153
- { name: 'reason', type: 'string' },
154
- { name: 'app', type: 'string' },
155
- { name: 'metadata', type: 'string' }
156
- ]
157
- };
158
- const vote2Types = {
159
- Vote: [
160
- { name: 'from', type: 'string' },
161
- { name: 'space', type: 'string' },
162
- { name: 'timestamp', type: 'uint64' },
163
- { name: 'proposal', type: 'bytes32' },
164
- { name: 'choice', type: 'uint32' },
165
- { name: 'reason', type: 'string' },
166
- { name: 'app', type: 'string' },
167
- { name: 'metadata', type: 'string' }
168
- ]
169
- };
170
- const voteArray2Types = {
171
- Vote: [
172
- { name: 'from', type: 'string' },
173
- { name: 'space', type: 'string' },
174
- { name: 'timestamp', type: 'uint64' },
175
- { name: 'proposal', type: 'bytes32' },
176
- { name: 'choice', type: 'uint32[]' },
177
- { name: 'reason', type: 'string' },
178
- { name: 'app', type: 'string' },
179
- { name: 'metadata', type: 'string' }
180
- ]
181
- };
182
- const voteString2Types = {
183
- Vote: [
184
- { name: 'from', type: 'string' },
185
- { name: 'space', type: 'string' },
186
- { name: 'timestamp', type: 'uint64' },
187
- { name: 'proposal', type: 'bytes32' },
188
- { name: 'choice', type: 'string' },
189
- { name: 'reason', type: 'string' },
190
- { name: 'app', type: 'string' },
191
- { name: 'metadata', type: 'string' }
192
- ]
193
- };
194
- const followTypes = {
195
- Follow: [
196
- { name: 'from', type: 'address' },
197
- { name: 'network', type: 'string' },
198
- { name: 'space', type: 'string' },
199
- { name: 'timestamp', type: 'uint64' }
200
- ]
201
- };
202
- const unfollowTypes = {
203
- Unfollow: [
204
- { name: 'from', type: 'address' },
205
- { name: 'network', type: 'string' },
206
- { name: 'space', type: 'string' },
207
- { name: 'timestamp', type: 'uint64' }
208
- ]
209
- };
210
- const subscribeTypes = {
211
- Subscribe: [
212
- { name: 'from', type: 'address' },
213
- { name: 'space', type: 'string' },
214
- { name: 'timestamp', type: 'uint64' }
215
- ]
216
- };
217
- const unsubscribeTypes = {
218
- Unsubscribe: [
219
- { name: 'from', type: 'address' },
220
- { name: 'space', type: 'string' },
221
- { name: 'timestamp', type: 'uint64' }
222
- ]
223
- };
224
- const profileTypes = {
225
- Profile: [
226
- { name: 'from', type: 'address' },
227
- { name: 'timestamp', type: 'uint64' },
228
- { name: 'profile', type: 'string' }
229
- ]
230
- };
231
- const statementTypes = {
232
- Statement: [
233
- { name: 'from', type: 'address' },
234
- { name: 'timestamp', type: 'uint64' },
235
- { name: 'space', type: 'string' },
236
- { name: 'about', type: 'string' },
237
- { name: 'statement', type: 'string' },
238
- { name: 'discourse', type: 'string' },
239
- { name: 'status', type: 'string' },
240
- { name: 'network', type: 'string' }
241
- ]
242
- };
243
- const aliasTypes = {
244
- Alias: [
245
- { name: 'from', type: 'address' },
246
- { name: 'alias', type: 'address' },
247
- { name: 'timestamp', type: 'uint64' }
248
- ]
249
- };
250
- const deleteSpaceType = {
251
- DeleteSpace: [
252
- { name: 'from', type: 'address' },
253
- { name: 'space', type: 'string' },
254
- { name: 'timestamp', type: 'uint64' }
255
- ]
256
- };
257
-
258
- var mainnet = {
259
- hub: "https://hub.snapshot.org",
260
- sequencer: "https://seq.snapshot.org"
261
- };
262
- var testnet = {
263
- hub: "https://testnet.hub.snapshot.org",
264
- sequencer: "https://testnet.seq.snapshot.org"
265
- };
266
- var local = {
267
- hub: "http://localhost:3000",
268
- sequencer: "http://localhost:3001"
269
- };
270
- var constants = {
271
- mainnet: mainnet,
272
- testnet: testnet,
273
- local: local
274
- };
275
-
276
55
  let cache = {};
277
56
  let expirationTime = 0;
278
57
  function getSnapshots(network_1, snapshot_1, provider_1, networks_1) {
@@ -3704,10 +3483,67 @@ function getUrl(uri, gateway = gateways[0]) {
3704
3483
  return uri.replace('ipns://', `${ipfsGateway}/ipns/`);
3705
3484
  return uri;
3706
3485
  }
3486
+ /**
3487
+ * Enhanced fetch with timeout support - drop-in replacement for native fetch
3488
+ *
3489
+ * @param url - The URL to fetch
3490
+ * @param options - Fetch options with optional timeout
3491
+ * @param options.timeout - Request timeout in milliseconds (default: 30000ms). Set to 0 to disable timeout.
3492
+ *
3493
+ * @returns Promise that resolves to the Response object
3494
+ *
3495
+ * @throws {Error} Throws timeout error if request exceeds the specified timeout duration
3496
+ *
3497
+ * @example
3498
+ * ```typescript
3499
+ * // Uses default 30s timeout
3500
+ * const response = await fetch('https://api.example.com/data');
3501
+ *
3502
+ * // Custom 5s timeout
3503
+ * const response = await fetch('https://api.example.com/data', { timeout: 5000 });
3504
+ *
3505
+ * // Disable timeout
3506
+ * const response = await fetch('https://api.example.com/data', { timeout: 0 });
3507
+ *
3508
+ * // With additional fetch options
3509
+ * const response = await fetch('https://api.example.com/data', {
3510
+ * timeout: 10000,
3511
+ * method: 'POST',
3512
+ * headers: { 'Content-Type': 'application/json' },
3513
+ * body: JSON.stringify({ key: 'value' })
3514
+ * });
3515
+ * ```
3516
+ */
3517
+ function fetch(url_1) {
3518
+ return __awaiter(this, arguments, void 0, function* (url, options = {}) {
3519
+ const { timeout = 30000 } = options, fetchOptions = __rest(options, ["timeout"]);
3520
+ if (timeout > 0) {
3521
+ const controller = new AbortController();
3522
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
3523
+ try {
3524
+ const response = yield crossFetch(url, Object.assign(Object.assign({}, fetchOptions), { signal: controller.signal }));
3525
+ return response;
3526
+ }
3527
+ catch (error) {
3528
+ if (error instanceof Error && error.name === 'AbortError') {
3529
+ throw new Error(`Request timeout after ${timeout}ms`);
3530
+ }
3531
+ throw error;
3532
+ }
3533
+ finally {
3534
+ clearTimeout(timeoutId);
3535
+ }
3536
+ }
3537
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3538
+ const cleanFetchOptions = __rest(fetchOptions, ["signal"]);
3539
+ return crossFetch(url, cleanFetchOptions);
3540
+ });
3541
+ }
3707
3542
  function getJSON(uri_1) {
3708
3543
  return __awaiter(this, arguments, void 0, function* (uri, options = {}) {
3709
3544
  const url = getUrl(uri, options.gateways);
3710
- return fetch(url).then((res) => res.json());
3545
+ const response = yield fetch(url, options);
3546
+ return response.json();
3711
3547
  });
3712
3548
  }
3713
3549
  function ipfsGet(gateway_1, ipfsHash_1) {
@@ -4082,6 +3918,7 @@ function inputError(message) {
4082
3918
  var utils = {
4083
3919
  call,
4084
3920
  multicall: multicall$2,
3921
+ fetch,
4085
3922
  subgraphRequest,
4086
3923
  ipfsGet,
4087
3924
  getUrl,
@@ -4113,6 +3950,227 @@ var utils = {
4113
3950
  SNAPSHOT_SUBGRAPH_URL
4114
3951
  };
4115
3952
 
3953
+ const spaceTypes = {
3954
+ Space: [
3955
+ { name: 'from', type: 'address' },
3956
+ { name: 'space', type: 'string' },
3957
+ { name: 'timestamp', type: 'uint64' },
3958
+ { name: 'settings', type: 'string' }
3959
+ ]
3960
+ };
3961
+ const proposalTypes = {
3962
+ Proposal: [
3963
+ { name: 'from', type: 'string' },
3964
+ { name: 'space', type: 'string' },
3965
+ { name: 'timestamp', type: 'uint64' },
3966
+ { name: 'type', type: 'string' },
3967
+ { name: 'title', type: 'string' },
3968
+ { name: 'body', type: 'string' },
3969
+ { name: 'discussion', type: 'string' },
3970
+ { name: 'choices', type: 'string[]' },
3971
+ { name: 'labels', type: 'string[]' },
3972
+ { name: 'start', type: 'uint64' },
3973
+ { name: 'end', type: 'uint64' },
3974
+ { name: 'snapshot', type: 'uint64' },
3975
+ { name: 'plugins', type: 'string' },
3976
+ { name: 'privacy', type: 'string' },
3977
+ { name: 'app', type: 'string' }
3978
+ ]
3979
+ };
3980
+ const updateProposalTypes = {
3981
+ UpdateProposal: [
3982
+ { name: 'proposal', type: 'string' },
3983
+ { name: 'from', type: 'string' },
3984
+ { name: 'space', type: 'string' },
3985
+ { name: 'timestamp', type: 'uint64' },
3986
+ { name: 'type', type: 'string' },
3987
+ { name: 'title', type: 'string' },
3988
+ { name: 'body', type: 'string' },
3989
+ { name: 'discussion', type: 'string' },
3990
+ { name: 'choices', type: 'string[]' },
3991
+ { name: 'labels', type: 'string[]' },
3992
+ { name: 'plugins', type: 'string' },
3993
+ { name: 'privacy', type: 'string' }
3994
+ ]
3995
+ };
3996
+ const flagProposalTypes = {
3997
+ FlagProposal: [
3998
+ { name: 'from', type: 'string' },
3999
+ { name: 'space', type: 'string' },
4000
+ { name: 'proposal', type: 'string' },
4001
+ { name: 'timestamp', type: 'uint64' }
4002
+ ]
4003
+ };
4004
+ const cancelProposalTypes = {
4005
+ CancelProposal: [
4006
+ { name: 'from', type: 'string' },
4007
+ { name: 'space', type: 'string' },
4008
+ { name: 'timestamp', type: 'uint64' },
4009
+ { name: 'proposal', type: 'string' }
4010
+ ]
4011
+ };
4012
+ const cancelProposal2Types = {
4013
+ CancelProposal: [
4014
+ { name: 'from', type: 'string' },
4015
+ { name: 'space', type: 'string' },
4016
+ { name: 'timestamp', type: 'uint64' },
4017
+ { name: 'proposal', type: 'bytes32' }
4018
+ ]
4019
+ };
4020
+ const voteTypes = {
4021
+ Vote: [
4022
+ { name: 'from', type: 'string' },
4023
+ { name: 'space', type: 'string' },
4024
+ { name: 'timestamp', type: 'uint64' },
4025
+ { name: 'proposal', type: 'string' },
4026
+ { name: 'choice', type: 'uint32' },
4027
+ { name: 'reason', type: 'string' },
4028
+ { name: 'app', type: 'string' },
4029
+ { name: 'metadata', type: 'string' }
4030
+ ]
4031
+ };
4032
+ const voteArrayTypes = {
4033
+ Vote: [
4034
+ { name: 'from', type: 'string' },
4035
+ { name: 'space', type: 'string' },
4036
+ { name: 'timestamp', type: 'uint64' },
4037
+ { name: 'proposal', type: 'string' },
4038
+ { name: 'choice', type: 'uint32[]' },
4039
+ { name: 'reason', type: 'string' },
4040
+ { name: 'app', type: 'string' },
4041
+ { name: 'metadata', type: 'string' }
4042
+ ]
4043
+ };
4044
+ const voteStringTypes = {
4045
+ Vote: [
4046
+ { name: 'from', type: 'string' },
4047
+ { name: 'space', type: 'string' },
4048
+ { name: 'timestamp', type: 'uint64' },
4049
+ { name: 'proposal', type: 'string' },
4050
+ { name: 'choice', type: 'string' },
4051
+ { name: 'reason', type: 'string' },
4052
+ { name: 'app', type: 'string' },
4053
+ { name: 'metadata', type: 'string' }
4054
+ ]
4055
+ };
4056
+ const vote2Types = {
4057
+ Vote: [
4058
+ { name: 'from', type: 'string' },
4059
+ { name: 'space', type: 'string' },
4060
+ { name: 'timestamp', type: 'uint64' },
4061
+ { name: 'proposal', type: 'bytes32' },
4062
+ { name: 'choice', type: 'uint32' },
4063
+ { name: 'reason', type: 'string' },
4064
+ { name: 'app', type: 'string' },
4065
+ { name: 'metadata', type: 'string' }
4066
+ ]
4067
+ };
4068
+ const voteArray2Types = {
4069
+ Vote: [
4070
+ { name: 'from', type: 'string' },
4071
+ { name: 'space', type: 'string' },
4072
+ { name: 'timestamp', type: 'uint64' },
4073
+ { name: 'proposal', type: 'bytes32' },
4074
+ { name: 'choice', type: 'uint32[]' },
4075
+ { name: 'reason', type: 'string' },
4076
+ { name: 'app', type: 'string' },
4077
+ { name: 'metadata', type: 'string' }
4078
+ ]
4079
+ };
4080
+ const voteString2Types = {
4081
+ Vote: [
4082
+ { name: 'from', type: 'string' },
4083
+ { name: 'space', type: 'string' },
4084
+ { name: 'timestamp', type: 'uint64' },
4085
+ { name: 'proposal', type: 'bytes32' },
4086
+ { name: 'choice', type: 'string' },
4087
+ { name: 'reason', type: 'string' },
4088
+ { name: 'app', type: 'string' },
4089
+ { name: 'metadata', type: 'string' }
4090
+ ]
4091
+ };
4092
+ const followTypes = {
4093
+ Follow: [
4094
+ { name: 'from', type: 'address' },
4095
+ { name: 'network', type: 'string' },
4096
+ { name: 'space', type: 'string' },
4097
+ { name: 'timestamp', type: 'uint64' }
4098
+ ]
4099
+ };
4100
+ const unfollowTypes = {
4101
+ Unfollow: [
4102
+ { name: 'from', type: 'address' },
4103
+ { name: 'network', type: 'string' },
4104
+ { name: 'space', type: 'string' },
4105
+ { name: 'timestamp', type: 'uint64' }
4106
+ ]
4107
+ };
4108
+ const subscribeTypes = {
4109
+ Subscribe: [
4110
+ { name: 'from', type: 'address' },
4111
+ { name: 'space', type: 'string' },
4112
+ { name: 'timestamp', type: 'uint64' }
4113
+ ]
4114
+ };
4115
+ const unsubscribeTypes = {
4116
+ Unsubscribe: [
4117
+ { name: 'from', type: 'address' },
4118
+ { name: 'space', type: 'string' },
4119
+ { name: 'timestamp', type: 'uint64' }
4120
+ ]
4121
+ };
4122
+ const profileTypes = {
4123
+ Profile: [
4124
+ { name: 'from', type: 'address' },
4125
+ { name: 'timestamp', type: 'uint64' },
4126
+ { name: 'profile', type: 'string' }
4127
+ ]
4128
+ };
4129
+ const statementTypes = {
4130
+ Statement: [
4131
+ { name: 'from', type: 'address' },
4132
+ { name: 'timestamp', type: 'uint64' },
4133
+ { name: 'space', type: 'string' },
4134
+ { name: 'about', type: 'string' },
4135
+ { name: 'statement', type: 'string' },
4136
+ { name: 'discourse', type: 'string' },
4137
+ { name: 'status', type: 'string' },
4138
+ { name: 'network', type: 'string' }
4139
+ ]
4140
+ };
4141
+ const aliasTypes = {
4142
+ Alias: [
4143
+ { name: 'from', type: 'address' },
4144
+ { name: 'alias', type: 'address' },
4145
+ { name: 'timestamp', type: 'uint64' }
4146
+ ]
4147
+ };
4148
+ const deleteSpaceType = {
4149
+ DeleteSpace: [
4150
+ { name: 'from', type: 'address' },
4151
+ { name: 'space', type: 'string' },
4152
+ { name: 'timestamp', type: 'uint64' }
4153
+ ]
4154
+ };
4155
+
4156
+ var mainnet = {
4157
+ hub: "https://hub.snapshot.org",
4158
+ sequencer: "https://seq.snapshot.org"
4159
+ };
4160
+ var testnet = {
4161
+ hub: "https://testnet.hub.snapshot.org",
4162
+ sequencer: "https://testnet.seq.snapshot.org"
4163
+ };
4164
+ var local = {
4165
+ hub: "http://localhost:3000",
4166
+ sequencer: "http://localhost:3001"
4167
+ };
4168
+ var constants = {
4169
+ mainnet: mainnet,
4170
+ testnet: testnet,
4171
+ local: local
4172
+ };
4173
+
4116
4174
  const NAME = 'snapshot';
4117
4175
  const VERSION = '0.1.4';
4118
4176
  const domain = {