File size: 1,003 Bytes
96af7c9 |
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 |
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Value = void 0;
const symbols_1 = require("../../symbols");
const safeObjectDefineProperty = Object.defineProperty;
class Value {
constructor(value_, context, customGetValue = undefined) {
this.value_ = value_;
this.context = context;
this.hasToBeCloned = customGetValue !== undefined || (0, symbols_1.hasCloneMethod)(value_);
this.readOnce = false;
if (this.hasToBeCloned) {
safeObjectDefineProperty(this, 'value', { get: customGetValue !== undefined ? customGetValue : this.getValue });
}
else {
this.value = value_;
}
}
getValue() {
if (this.hasToBeCloned) {
if (!this.readOnce) {
this.readOnce = true;
return this.value_;
}
return this.value_[symbols_1.cloneMethod]();
}
return this.value_;
}
}
exports.Value = Value;
|