"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