uniswap-v2-loader 5.0.27 → 6.0.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.
@@ -35,7 +35,7 @@ jobs:
35
35
  run: npm i -g .
36
36
 
37
37
  - name: Test CLI load first 4 pairs from Uniswap V2 using 2 workers
38
- run: uniswap-v2-loader --to=4 --multicall_size=2 --workers=2
38
+ run: uniswap-v2-loader --to=3 --multicall_size=2 --workers=2
39
39
 
40
40
  - name: Run ESM tests
41
41
  run: npm run test-esm
package/README.md CHANGED
@@ -60,11 +60,11 @@ Methods:
60
60
 
61
61
  `config` is an Object (key/value)
62
62
  - `from`
63
- * Start loading from this pair index.
63
+ * Start index (inclusive).
64
64
  * Type: `number`
65
65
  * Default: `0`
66
66
  - `to`
67
- * End index (exclusive). Required for range loading.
67
+ * End index (inclusive).
68
68
  * Type: `number`
69
69
  * Default: `undefined`
70
70
  - `filename`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uniswap-v2-loader",
3
- "version": "5.0.27",
3
+ "version": "6.0.0",
4
4
  "description": "Uniswap v2 protocol loader",
5
5
  "keywords": [
6
6
  "DEFI",
package/src/index.js CHANGED
@@ -39,12 +39,12 @@ const load = (params = {}) => {
39
39
  }, [])
40
40
  : []
41
41
 
42
- if (to >= 0 && pairs.length >= to) {
42
+ if (to >= 0 && to <= pairs.length - 1) {
43
43
  if (progress)
44
- for (var i = from; i < to; i++)
44
+ for (var i = from; i <= to; i++)
45
45
  progress(pairs[i].id, to, pairs[i])
46
46
 
47
- return Promise.resolve(pairs.slice(0, to))
47
+ return Promise.resolve(pairs.slice(from, to + 1))
48
48
  }
49
49
 
50
50
  return (to
@@ -61,17 +61,24 @@ const load = (params = {}) => {
61
61
  })
62
62
  }).then(
63
63
  _ => {
64
- if (_.ok) return _.json().then(_ => Number(_.result))
64
+ if (_.ok) return _.json().then(_ => {
65
+ const total_pools = Number(_.result)
66
+ if (total_pools > 0) {
67
+ const last_id = total_pools - 1
68
+ return last_id
69
+ }
70
+ return 0
71
+ })
65
72
  throw 'fail start'
66
73
  },
67
74
  _ => {
68
75
  throw 'fetch failed'
69
76
  }
70
77
  )
71
- ).then(all_pairs_length => {
78
+ ).then(last_id => {
72
79
  const start_loading_from = pairs.length
73
80
  ? Math.max(from, pairs[pairs.length - 1].id + 1)
74
- : 0
81
+ : from
75
82
 
76
83
  var next_pair_order = pairs.length
77
84
  ? pairs[pairs.length - 1].id + 1
@@ -79,11 +86,11 @@ const load = (params = {}) => {
79
86
 
80
87
  if (progress)
81
88
  for (var i = from; i < start_loading_from; i++)
82
- progress(pairs[i].id, all_pairs_length, pairs[i])
89
+ progress(pairs[i].id, last_id + 1, pairs[i])
83
90
 
84
91
  const onpair = pair => {
85
92
  pairs[pair.id] = pair
86
- if (progress) progress(pair.id, all_pairs_length, pair)
93
+ if (progress && pair.id >= from) progress(pair.id, last_id + 1, pair)
87
94
  var _
88
95
  while (_ = pairs[next_pair_order]) {
89
96
  fs.appendFileSync(filename, `${_.id},${_.pair},${_.token0},${_.token1}\n`)
@@ -93,15 +100,20 @@ const load = (params = {}) => {
93
100
 
94
101
  if (!workers) {
95
102
  const ids = []
96
- for (var i = start_loading_from; i < all_pairs_length; i++)
103
+ for (var i = start_loading_from; i <= last_id; i++)
97
104
  ids.push(i)
98
105
  return require('./loader')({ ids, factory, key, multicall_size, abort_signal }, onpair)
99
- .then(() => pairs)
106
+ .then(() => {
107
+ if (from && to) return pairs.filter(({id}) => id >= from && id <= to)
108
+ if (from) return pairs.filter(({id}) => id >= from)
109
+ if (to) return pairs.filter(({id}) => id <= to)
110
+ return pairs
111
+ })
100
112
  }
101
113
 
102
114
  const missed = Array(workers).fill(null).map(() => [])
103
115
 
104
- for (var i = start_loading_from, iw = 0; i < all_pairs_length; i++)
116
+ for (var i = start_loading_from, iw = 0; i <= last_id; i++)
105
117
  missed[iw++ % workers].push(i)
106
118
 
107
119
  cluster.setupPrimary({ exec: path.join(__dirname, 'loader.js') })
@@ -121,7 +133,12 @@ const load = (params = {}) => {
121
133
  y()
122
134
  })
123
135
  }))
124
- ).then(() => pairs)
136
+ ).then(() => {
137
+ if (from && to) return pairs.filter(({id}) => id >= from && id <= to)
138
+ if (from) return pairs.filter(({id}) => id >= from)
139
+ if (to) return pairs.filter(({id}) => id <= to)
140
+ return pairs
141
+ })
125
142
  })
126
143
  .catch(() => abort_signal?.aborted ? pairs : new Promise(resolve => setTimeout(() => resolve(load(params)), 1000)))
127
144
  }
@@ -139,7 +156,7 @@ module.exports.subscribe = (callback, params = {}) => {
139
156
  const update = pairs =>
140
157
  timeout = setTimeout(
141
158
  () =>
142
- load({...params, pairs, from: pairs.length})
159
+ subscribed && load({...params, pairs, from: pairs.length})
143
160
  .then(pairs => {
144
161
  if (!subscribed) return
145
162
  callback(pairs)