prepack
Version:
Execute a JS bundle, serialize global state and side effects to a snapshot that can be quickly restored.
187 lines (141 loc) • 4.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _index = require("./index.js");
var _invariant = require("../invariant.js");
var _invariant2 = _interopRequireDefault(_invariant);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
class Value {
constructor(realm, intrinsicName) {
(0, _invariant2.default)(realm, "realm required");
this.$Realm = realm;
this.intrinsicName = intrinsicName;
this.expressionLocation = realm.currentLocation;
}
// Name from original source if existant
equals(x) {
(0, _invariant2.default)(false, "abstract method; please override");
}
getHash() {
(0, _invariant2.default)(false, "abstract method; please override");
}
getType() {
return this.constructor;
}
static isTypeCompatibleWith(type, Constructor) {
return type.prototype instanceof Constructor || type.prototype === Constructor.prototype;
}
// The source location of the expression that first produced this value.
implies(val) {
if (this.equals(val)) return true;
if (!this.mightNotBeFalse()) return true;
if (!val.mightNotBeTrue()) return true;
return false;
}
isIntrinsic() {
return !!this.intrinsicName;
}
isPartialObject() {
return false;
}
isSimpleObject() {
return false;
}
mightBeFalse() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightNotBeFalse() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightBeNull() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightNotBeNull() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightBeNumber() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightNotBeNumber() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightNotBeObject() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightBeObject() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightBeString() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightNotBeString() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightBeTrue() {
return this.mightNotBeFalse();
}
mightNotBeTrue() {
return this.mightBeFalse();
}
mightBeUndefined() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightNotBeUndefined() {
(0, _invariant2.default)(false, "abstract method; please override");
}
mightHaveBeenDeleted() {
(0, _invariant2.default)(false, "abstract method; please override");
}
promoteEmptyToUndefined() {
(0, _invariant2.default)(false, "abstract method; please override");
}
throwIfNotConcrete() {
(0, _invariant2.default)(false, "abstract method; please override");
}
throwIfNotConcreteNumber() {
(0, _invariant2.default)(false, "abstract method; please override");
}
throwIfNotConcreteString() {
throw new Error("abstract method; please override");
}
throwIfNotConcreteBoolean() {
throw new Error("abstract method; please override");
}
throwIfNotConcreteSymbol() {
throw new Error("abstract method; please override");
}
throwIfNotConcreteObject() {
(0, _invariant2.default)(false, "abstract method; please override");
}
throwIfNotConcretePrimitive() {
(0, _invariant2.default)(false, "abstract method; please override");
}
throwIfNotObject() {
(0, _invariant2.default)(false, "abstract method; please override");
}
serialize(stack = new Map()) {
if (stack.has(this)) {
return stack.get(this);
} else {
let set = val => {
stack.set(this, val);
return val;
};
return set(this._serialize(set, stack));
}
}
_serialize(set, stack) {
(0, _invariant2.default)(false, "abstract method; please override");
}
}
exports.default = Value;
//# sourceMappingURL=Value.js.map