tc39-weakrefs-shim
Version:
Shim for TC39 Weakrefs proposal
34 lines • 1.26 kB
JavaScript
;
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