262 lines
12 KiB
JavaScript
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
|