Skip to content

Commit 2e8cd93

Browse files
committed
chore: bump fadroma, ts 5.6, fix some deno checks
1 parent cb82e85 commit 2e8cd93

File tree

4 files changed

+62
-48
lines changed

4 files changed

+62
-48
lines changed

main.ts

Lines changed: 58 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
1+
//@ts-types='./fadroma/toolbox/cmds/cmds.ts'
12
import Commands from "@hackbg/cmds"
23
import { bold } from "@hackbg/logs"
3-
import EventEmitter from 'node:events'
4-
4+
import type { Console } from "@hackbg/logs"
5+
import process from 'node:process'
6+
//@ts-types='./fadroma/packages/namada/Namada.ts'
7+
import type { Validator } from "@fadroma/namada"
8+
9+
// For examples how to define commands, see:
10+
// https://github.com/hackbg/fadroma/blob/v2/packages/namada/namada.ts
11+
//
12+
// Note that in this module it is preferable to use dynamic imports
13+
// at the top of each command rather than all at the top of the file,
14+
// so that temporary breakage in one code path does not break
15+
// potentially unrelated entrypoints.
516
export default class UndexerCommands extends Commands {
6-
// see https://github.com/hackbg/fadroma/blob/v2/packages/namada/namada.ts
7-
// for examples how to define commands
817

9-
constructor (...args) {
18+
declare log: Console // FIXME
19+
20+
constructor (...args: ConstructorParameters<typeof Commands>) {
1021
super(...args)
1122
this.log.label = ''
1223
}
@@ -84,7 +95,7 @@ export default class UndexerCommands extends Commands {
8495
}, async (height?: number) => {
8596
const t0 = performance.now()
8697
const { default: getRPC } = await import('./src/rpc.js')
87-
const chain = await getRPC(height)
98+
const chain = await getRPC()
8899
// Fetch and decode block
89100
const block = await chain.fetchBlock({ height })
90101
height ??= block.height
@@ -107,9 +118,9 @@ export default class UndexerCommands extends Commands {
107118
args: '[HEIGHT]'
108119
}, async (height?: number) => {
109120
const t0 = performance.now()
110-
const { updateBlock } = await import('./src/block.js')
121+
const { Updater } = await import('./src/updater.js')
111122
const { default: getRPC } = await import('./src/rpc.js')
112-
const chain = await getRPC(height)
123+
const chain = await getRPC()
113124
// Fetch and decode block
114125
const block = await chain.fetchBlock({ height })
115126
height ??= block.height
@@ -127,7 +138,8 @@ export default class UndexerCommands extends Commands {
127138
const { default: db } = await import('./src/db.js')
128139
await db.sync()
129140
this.log.br().log('Saving block', height, 'to database...').br()
130-
await updateBlock({ chain, height, block, })
141+
const updater = new Updater({ log: this.log, chain })
142+
await updater.updateBlock({ height, block, })
131143
this.log.info('Done in', performance.now() - t0, 'msec')
132144
})
133145

@@ -142,7 +154,7 @@ export default class UndexerCommands extends Commands {
142154
epoch,
143155
tendermintMetadata: false,
144156
namadaMetadata: false,
145-
})).map(v=>v.namadaAddress).sort()
157+
})).map((v: Validator)=>v.namadaAddress).sort()
146158
if (epoch) {
147159
this.log.log(`Validators at epoch ${epoch}:`)
148160
} else {
@@ -151,12 +163,12 @@ export default class UndexerCommands extends Commands {
151163
for (const address of addresses) {
152164
this.log.log('Validator:', address)
153165
}
154-
if (epoch) {
155-
this.log.log(addresses.length, `validator(s) at epoch`, epoch)
156-
} else {
157-
this.log.log(addresses.length, 'validator(s) at current epoch.')
158-
}
159-
this.log.br().info("Use the 'validators fetch all' command to get details.")
166+
this.log
167+
.log(addresses.length, epoch
168+
? `validator(s) at epoch ${epoch}`
169+
: `validator(s) at current epoch`)
170+
.br()
171+
.info("Use the 'validators fetch all' command to get details.")
160172
})
161173

162174
validatorsFetchAll = this.command({
@@ -166,11 +178,11 @@ export default class UndexerCommands extends Commands {
166178
const { default: getRPC } = await import('./src/rpc.js')
167179
const chain = await getRPC()
168180
const validators = Object.values(await chain.fetchValidators())
169-
const states = {}
181+
const states: Record<string, number> = {}
170182
for (const validator of validators) {
171183
this.log.br().log(validator)
172-
states[validator.state?.state]??=0
173-
states[validator.state?.state]++
184+
states[(validator as Validator).state?.state]??=0
185+
states[(validator as Validator).state?.state]++
174186
}
175187
this.log.br().info(validators.length, "validators.")
176188
for (const [state, count] of Object.entries(states)) {
@@ -184,17 +196,17 @@ export default class UndexerCommands extends Commands {
184196
}, async () => {
185197
const { default: getRPC } = await import('./src/rpc.js')
186198
const chain = await getRPC()
187-
const { updateValidators } = await import('./src/validator.js')
188-
const validators = await updateValidators(chain)
189-
for (const i in validators) {
199+
const { Updater } = await import('./src/updater.js')
200+
const validators = await new Updater({ chain }).updateAllValidators(chain)
201+
for (const i in validators||[]) {
190202
console.log(`#${Number(i)+1}:`, validators[i])
191203
}
192204
})
193205

194206
validatorsStates = this.command({
195207
name: 'validators states',
196208
info: 'count validators in database by state'
197-
}, async (height: number) => {
209+
}, async () => {
198210
const { callRoute, dbValidatorStates } = await import('./src/routes.js')
199211
const states = await callRoute(dbValidatorStates)
200212
console.log({states})
@@ -203,7 +215,7 @@ export default class UndexerCommands extends Commands {
203215
validatorsQuery = this.command({
204216
name: 'validators query',
205217
info: 'query validators from db'
206-
}, async (height: number) => {
218+
}, async () => {
207219
const { validatorsTop } = await import('./src/query.js')
208220
const validators = (await validatorsTop()).map(x=>x.toJSON());
209221
console.log(validators)
@@ -212,8 +224,8 @@ export default class UndexerCommands extends Commands {
212224
for (const { publicKey } of validators) {
213225
console.log(await new Promise((resolve, reject)=>dbValidatorByHash(
214226
{ query: { publicKey, uptime: 100 } },
215-
{ status: code => ({
216-
send: (data) => (code===200)
227+
{ status: (code: number) => ({
228+
send: (data: unknown) => (code===200)
217229
? resolve(data)
218230
: reject(Object.assign(new Error(`route returned ${code}`), data))
219231
}) } )))
@@ -226,7 +238,7 @@ export default class UndexerCommands extends Commands {
226238
args: 'ADDRESS',
227239
}, async (address: string) => {
228240
const { becomeValidatorCount, becomeValidatorList } = await import('./src/query.js')
229-
let t0 = performance.now()
241+
const t0 = performance.now()
230242
this.log
231243
.log(await becomeValidatorCount({ address }),
232244
'becomeValidator(s) for', bold(address))
@@ -240,7 +252,7 @@ export default class UndexerCommands extends Commands {
240252
args: 'ADDRESS',
241253
}, async (validator: string) => {
242254
const { changeValidatorMetadataCount, changeValidatorMetadataList } = await import('./src/query.js')
243-
let t0 = performance.now()
255+
const t0 = performance.now()
244256
this.log
245257
.log(await changeValidatorMetadataCount({ validator }),
246258
'changeValidatorMetadata(s) for', bold(validator))
@@ -254,7 +266,7 @@ export default class UndexerCommands extends Commands {
254266
args: 'ADDRESS',
255267
}, async (address: string) => {
256268
const { deactivateValidatorCount, deactivateValidatorList } = await import('./src/query.js')
257-
let t0 = performance.now()
269+
const t0 = performance.now()
258270
this.log
259271
.log(await deactivateValidatorCount({ address }),
260272
'deactivateValidator(s) for', bold(address))
@@ -275,12 +287,11 @@ export default class UndexerCommands extends Commands {
275287
proposalCount = this.command({
276288
name: 'proposal count',
277289
info: 'fetch count of proposals from chain'
278-
}, (id: string) =>
279-
import('./src/rpc.js')
280-
.then(({ default: getRPC })=>getRPC())
281-
.then(chain=>chain.fetchProposalCount())
282-
.then((count)=>this.log
283-
.log('Proposals on chain:', count)))
290+
}, () => import('./src/rpc.js')
291+
.then(({ default: getRPC })=>getRPC())
292+
.then(chain=>chain.fetchProposalCount())
293+
.then((count)=>this.log
294+
.log('Proposals on chain:', count)))
284295

285296
proposalFetch = this.command({
286297
name: 'proposal fetch',
@@ -337,8 +348,9 @@ export default class UndexerCommands extends Commands {
337348
info: 'fetch and store proposal from chain'
338349
}, async (id: string) => {
339350
const chain = await import('./src/rpc.js').then(({ default: getRPC })=>getRPC())
340-
const { updateProposal } = await import('./src/proposal.js')
341-
await updateProposal(chain, id)
351+
const { Updater } = await import('./src/updater.js')
352+
const updater = new Updater({ chain })
353+
await updater.updateProposal(id)
342354
})
343355

344356
epoch = this.command({
@@ -352,7 +364,7 @@ export default class UndexerCommands extends Commands {
352364
height: (height === undefined) ? undefined : Number(height)
353365
}))
354366
.then(this.log)
355-
.catch(this.error))
367+
.catch(this.log.error))
356368

357369
transfersBy = this.command({
358370
name: 'transfers by',
@@ -371,7 +383,7 @@ export default class UndexerCommands extends Commands {
371383
args: 'ADDRESS'
372384
}, async (source: string) => {
373385
const { bondCount, bondList } = await import('./src/query.js')
374-
let t0 = performance.now()
386+
const t0 = performance.now()
375387
this.log
376388
.log(await bondCount({ source }), 'bond(s) from', bold(source))
377389
.log(await bondList({ source }))
@@ -384,7 +396,7 @@ export default class UndexerCommands extends Commands {
384396
args: 'ADDRESS'
385397
}, async (validator: string) => {
386398
const { bondCount, bondList } = await import('./src/query.js')
387-
let t0 = performance.now()
399+
const t0 = performance.now()
388400
this.log
389401
.log(await bondCount({ validator }), 'bond(s) to', bold(validator))
390402
.log(await bondList({ validator }))
@@ -397,7 +409,7 @@ export default class UndexerCommands extends Commands {
397409
args: 'ADDRESS'
398410
}, async (source: string) => {
399411
const { unbondCount, unbondList } = await import('./src/query.js')
400-
let t0 = performance.now()
412+
const t0 = performance.now()
401413
this.log
402414
.log(await unbondCount({ source }), 'unbond(s) from', bold(source))
403415
.log(await unbondList({ source }))
@@ -410,7 +422,7 @@ export default class UndexerCommands extends Commands {
410422
args: 'ADDRESS'
411423
}, async (validator: string) => {
412424
const { unbondCount, unbondList } = await import('./src/query.js')
413-
let t0 = performance.now()
425+
const t0 = performance.now()
414426
this.log
415427
.log(await unbondCount({ validator }), 'unbond(s) to', bold(validator))
416428
.log(await unbondList({ validator }))
@@ -428,13 +440,14 @@ export default class UndexerCommands extends Commands {
428440
const txs = await Transaction.findAll({ where, attributes })
429441
const blocks = new Set(txs.map(tx=>tx.get().blockHeight).filter(height=>height>=minHeight))
430442
this.log(blocks.size, 'blocks containing transaction')
431-
const { updateBlock } = await import('./src/block.js')
443+
const { Updater } = await import('./src/updater.js')
432444
const chain = await import('./src/rpc.js').then(({ default: getRPC })=>getRPC())
433445
for (const height of [...new Set(blocks)].sort()) {
434446
while (true) {
435447
this.log('Reindexing block', height)
436448
try {
437-
await updateBlock({ chain, height })
449+
const updater = new Updater({ chain })
450+
await updater.updateBlock({ height, block: undefined })
438451
break
439452
} catch (e) {
440453
console.error(e)
@@ -451,7 +464,7 @@ export default class UndexerCommands extends Commands {
451464
args: 'ADDRESS'
452465
}, async (address: string) => {
453466
const { txWithAddressCount, txWithAddressList } = await import('./src/query.js')
454-
let t0 = performance.now()
467+
const t0 = performance.now()
455468
this.log
456469
.log(await txWithAddressCount({ address }), 'tx(s) with', bold(address))
457470
.log(await txWithAddressList({ address }))

src/rpc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as Namada from "@fadroma/namada";
2-
import { readFile } from "fs/promises";
2+
import { readFile } from "node:fs/promises";
33
import { CHAIN_ID, RPC_URL } from './config.js';
44

55
let rpc

tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"fadroma"
88
],
99
"compilerOptions": {
10-
"noImplicitAny": false
10+
"noImplicitAny": false,
11+
"allowImportingTsExtensions": true
1112
}
1213
}

0 commit comments

Comments
 (0)