All files / near-membrane-shared/src WeakMap.ts

100% Statements 12/12
100% Branches 0/0
100% Functions 1/1
100% Lines 12/12

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      14x   14x   14x             14x     11x 11x 11x 11x 11x 11x 11x 11x    
import { ReflectSetPrototypeOf } from './Reflect';
import { SymbolToStringTag } from './Symbol';
 
export const WeakMapCtor = WeakMap;
 
const { prototype: WeakMapProto } = WeakMapCtor;
 
export const { has: WeakMapProtoHas } = WeakMapProto;
 
const {
    delete: WeakMapProtoDelete,
    get: WeakMapProtoGet,
    set: WeakMapProtoSet,
    [SymbolToStringTag]: WeakMapProtoSymbolToStringTag,
} = WeakMapProto as any;
 
export function toSafeWeakMap<T extends WeakMap<any, any>>(weakMap: T): T {
    ReflectSetPrototypeOf(weakMap, null);
    weakMap.delete = WeakMapProtoDelete;
    weakMap.get = WeakMapProtoGet;
    weakMap.has = WeakMapProtoHas;
    weakMap.set = WeakMapProtoSet;
    (weakMap as any)[SymbolToStringTag] = WeakMapProtoSymbolToStringTag;
    ReflectSetPrototypeOf(weakMap, WeakMapProto);
    return weakMap;
}