All files / ethers.js/src.ts/_tests utils-debug.ts

6.81% Statements 3/44
100% Branches 0/0
0% Functions 0/3
6.81% Lines 3/44

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                                                            1x                   1x 1x      
function _inspectString(value: any, done: Set<any>): string {
    if (Array.isArray(value)) {
        return "[" + value.map((v) => _inspect(v, done)).join(", ") + "]";
    }

    switch (typeof(value)) {
        case "bigint":
            return value.toString() + "n";
        case "boolean":
        case "number":
        case "string":
            return JSON.stringify(value);
        case "symbol":
            return `[Symbol ${ String(value) }]`
        case "object": {
            if (value == null) { return "null"; }

            const keys = Object.keys(value);
            Object.getOwnPropertyNames(value).forEach((key) => {
                keys.push(key);
            });

            return "{ " + keys.map((key) => {
                return `${ key }=${ _inspect(value[key], done) }`;
            }).join(", ") + " }";
        }
    }

    return `[ unknown type: ${ value } ]`
}
 
function _inspect(value: any, done: Set<any>): string {
    if (done.has(value)) { return "[ Circular ]"; }

    done.add(value);
    const result = _inspectString(value, done);
    done.delete(value);

    return result;
}
 
export function inspect(value: any): string {
    return _inspect(value, new Set());
}