31 lines
1003 B
JavaScript
31 lines
1003 B
JavaScript
"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;
|