Files
2023-08-01 13:49:46 +02:00

262 lines
12 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**
* 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.
*/
var _index = require("./index.js");
var _invariant = require("../invariant.js");
var _invariant2 = _interopRequireDefault(_invariant);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Value = function () {
function Value(realm, intrinsicName) {
_classCallCheck(this, Value);
(0, _invariant2.default)(realm, "realm required");
this.$Realm = realm;
this.intrinsicName = intrinsicName;
this.expressionLocation = realm.currentLocation;
}
// Name from original source if existant
_createClass(Value, [{
key: "equals",
value: function equals(x) {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "getHash",
value: function getHash() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "getType",
value: function getType() {
return this.constructor;
}
}, {
key: "implies",
value: function implies(val) {
if (this.equals(val)) return true;
if (!this.mightNotBeFalse()) return true;
if (!val.mightNotBeTrue()) return true;
return false;
}
}, {
key: "isIntrinsic",
value: function isIntrinsic() {
return !!this.intrinsicName;
}
}, {
key: "isPartialObject",
value: function isPartialObject() {
return false;
}
}, {
key: "isSimpleObject",
value: function isSimpleObject() {
return false;
}
}, {
key: "mightBeFalse",
value: function mightBeFalse() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightNotBeFalse",
value: function mightNotBeFalse() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightBeNull",
value: function mightBeNull() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightNotBeNull",
value: function mightNotBeNull() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightBeNumber",
value: function mightBeNumber() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightNotBeNumber",
value: function mightNotBeNumber() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightNotBeObject",
value: function mightNotBeObject() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightBeObject",
value: function mightBeObject() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightBeString",
value: function mightBeString() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightNotBeString",
value: function mightNotBeString() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightBeTrue",
value: function mightBeTrue() {
return this.mightNotBeFalse();
}
}, {
key: "mightNotBeTrue",
value: function mightNotBeTrue() {
return this.mightBeFalse();
}
}, {
key: "mightBeUndefined",
value: function mightBeUndefined() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightNotBeUndefined",
value: function mightNotBeUndefined() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "mightHaveBeenDeleted",
value: function mightHaveBeenDeleted() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "promoteEmptyToUndefined",
value: function promoteEmptyToUndefined() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "throwIfNotConcrete",
value: function throwIfNotConcrete() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "throwIfNotConcreteNumber",
value: function throwIfNotConcreteNumber() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "throwIfNotConcreteString",
value: function throwIfNotConcreteString() {
throw new Error("abstract method; please override");
}
}, {
key: "throwIfNotConcreteBoolean",
value: function throwIfNotConcreteBoolean() {
throw new Error("abstract method; please override");
}
}, {
key: "throwIfNotConcreteSymbol",
value: function throwIfNotConcreteSymbol() {
throw new Error("abstract method; please override");
}
}, {
key: "throwIfNotConcreteObject",
value: function throwIfNotConcreteObject() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "throwIfNotConcretePrimitive",
value: function throwIfNotConcretePrimitive() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "throwIfNotObject",
value: function throwIfNotObject() {
(0, _invariant2.default)(false, "abstract method; please override");
}
}, {
key: "serialize",
value: function serialize() {
var _this = this;
var stack = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();
if (stack.has(this)) {
return stack.get(this);
} else {
var set = function set(val) {
stack.set(_this, val);
return val;
};
return set(this._serialize(set, stack));
}
}
}, {
key: "_serialize",
value: function _serialize(set, stack) {
(0, _invariant2.default)(false, "abstract method; please override");
}
}], [{
key: "getTypeFromName",
value: function getTypeFromName(typeName) {
switch (typeName) {
case "empty":
return _index.EmptyValue;
case "void":
return _index.UndefinedValue;
case "null":
return _index.NullValue;
case "boolean":
return _index.BooleanValue;
case "string":
return _index.StringValue;
case "symbol":
return _index.SymbolValue;
case "number":
return _index.NumberValue;
case "object":
return _index.ObjectValue;
case "array":
return _index.ArrayValue;
case "function":
return _index.FunctionValue;
default:
return undefined;
}
}
}, {
key: "isTypeCompatibleWith",
value: function isTypeCompatibleWith(type, Constructor) {
return type.prototype instanceof Constructor || type.prototype === Constructor.prototype;
}
// The source location of the expression that first produced this value.
}]);
return Value;
}();
exports.default = Value;
//# sourceMappingURL=Value.js.map