All files chain-id.ts

100% Statements 46/46
87.5% Branches 14/16
100% Functions 6/6
100% Lines 40/40

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92195x             1x     2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x           1x   53x 10x   43x 39x 39x 2x     41x       25x 25x 23x   2x       27x 27x 69x 24x     3x         1x     1x       18x 1x   17x       1x                         1x  
import {
    Checksum256,
    Checksum256Type,
    isInstanceOf,
    TypeAlias,
    UInt8,
    Variant,
} from '@wharfkit/antelope'
 
/** Chain ID aliases. */
export enum ChainName {
    UNKNOWN = 0,
    EOS = 1,
    TELOS = 2,
    JUNGLE = 3,
    KYLIN = 4,
    WORBLI = 5,
    BOS = 6,
    MEETONE = 7,
    INSIGHTS = 8,
    BEOS = 9,
    WAX = 10,
    PROTON = 11,
    FIO = 12,
}
 
export type ChainIdType = ChainId | ChainName | Checksum256Type
 
@TypeAlias('chain_id')
export class ChainId extends Checksum256 {
    static from(value: ChainIdType): ChainId {
        if (isInstanceOf(value, this)) {
            return value
        }
        if (typeof value === 'number') {
            value = ChainIdLookup.get(value) as Checksum256Type
            if (!value) {
                throw new Error('Unknown chain id alias')
            }
        }
        return super.from(value) as ChainId
    }
 
    get chainVariant(): ChainIdVariant {
        const name = this.chainName
        if (name !== ChainName.UNKNOWN) {
            return ChainIdVariant.from(['chain_alias', name])
        }
        return ChainIdVariant.from(this)
    }
 
    get chainName(): ChainName {
        const cid = this.hexString
        for (const [n, id] of ChainIdLookup) {
            if (id === cid) {
                return n
            }
        }
        return ChainName.UNKNOWN
    }
}
 
@TypeAlias('chain_alias')
export class ChainAlias extends UInt8 {}
 
@Variant.type('variant_id', [ChainAlias, ChainId])
export class ChainIdVariant extends Variant {
    value!: ChainId | ChainAlias
 
    get chainId(): ChainId {
        if (isInstanceOf(this.value, ChainId)) {
            return this.value
        }
        return ChainId.from(Number(this.value.value))
    }
}
 
const ChainIdLookup = new Map<ChainName, Checksum256Type>([
    [ChainName.EOS, 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906'],
    [ChainName.TELOS, '4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11'],
    [ChainName.JUNGLE, 'e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473'],
    [ChainName.KYLIN, '5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191'],
    [ChainName.WORBLI, '73647cde120091e0a4b85bced2f3cfdb3041e266cbbe95cee59b73235a1b3b6f'],
    [ChainName.BOS, 'd5a3d18fbb3c084e3b1f3fa98c21014b5f3db536cc15d08f9f6479517c6a3d86'],
    [ChainName.MEETONE, 'cfe6486a83bad4962f232d48003b1824ab5665c36778141034d75e57b956e422'],
    [ChainName.INSIGHTS, 'b042025541e25a472bffde2d62edd457b7e70cee943412b1ea0f044f88591664'],
    [ChainName.BEOS, 'b912d19a6abd2b1b05611ae5be473355d64d95aeff0c09bedc8c166cd6468fe4'],
    [ChainName.WAX, '1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4'],
    [ChainName.PROTON, '384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0'],
    [ChainName.FIO, '21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c'],
])