Open
Description
I'd like to compose a decoder, something like:
import * as b32 from 'multiformats/bases/base32'
import * as b36 from 'multiformats/bases/base36'
import * as b58 from 'multiformats/bases/base58'
import * as b64 from 'multiformats/bases/base64'
import { base32 } from 'multiformats/bases/base32'
const bases:Record<string, MultibaseCodec<any>> = {
...b32,
...b36,
...b58,
...b64
}
const baseDecoder = Object
.keys(bases)
.map(key => bases[key].decoder)
.reduce(
(acc, curr) => acc.or(curr), // <--- fails because `.or` is not in the types though it is in the `Decoder` class
base32.decoder
)
It's not clear to me how I'm supposed to do this and not upset the type checker, any pointers?
I tried adding .or
to the MultibaseDecoder
type def but it explodes because elsewhere you need to know if you're being passed a UnibaseDecoder
or a CombobaseDecoder
to create a ComposedDecoder
- I started trying to fix it but it got a little out of hand so I thought I'd ask instead.
Metadata
Metadata
Assignees
Labels
No labels