using Jint.Native.Object;
namespace Jint.Native;
///
/// https://tc39.es/ecma262/#sec-properties-of-weak-ref-instances
///
internal sealed class JsWeakRef : ObjectInstance
{
private readonly WeakReference _weakRefTarget;
public JsWeakRef(Engine engine, JsValue target) : base(engine)
{
_weakRefTarget = new WeakReference(target);
}
public JsValue WeakRefDeref()
{
if (_weakRefTarget.TryGetTarget(out var target))
{
_engine.AddToKeptObjects(target);
return target;
}
return Undefined;
}
}