UNPKG

tc39-weakrefs-shim

Version:
34 lines 1.26 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const privates_js_1 = __importDefault(require("../utils/privates.js")); const isObject_js_1 = __importDefault(require("../utils/lodash/isObject.js")); class WeakRefSlots { constructor(targetInfo) { this.targetInfo = targetInfo; } } exports.WeakRefSlots = WeakRefSlots; function createWeakRefClassShim(jobs, getInfo, getTarget, initSlots = target => new WeakRefSlots(getInfo(target))) { const privates = privates_js_1.default(); class WeakRef { constructor(target) { if (!isObject_js_1.default(target)) throw new TypeError(); jobs.keepDuringJob(target); privates.init(this, initSlots(target, this)); } deref() { const slots = privates(this); const target = getTarget(slots.targetInfo); if (target) jobs.keepDuringJob(target); return target; } } return [WeakRef, privates]; } exports.createWeakRefClassShim = createWeakRefClassShim; //# sourceMappingURL=WeakRef.js.map