UNPKG

@glimmer/util

Version:

Common utilities used in Glimmer

64 lines (47 loc) 5.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.keys = keys; exports.unwrap = unwrap; exports.expect = expect; exports.unreachable = unreachable; exports.exhausted = exhausted; exports.enumerableSymbol = enumerableSymbol; exports.symbol = exports.tuple = exports.HAS_NATIVE_SYMBOL = exports.HAS_NATIVE_PROXY = void 0; var _intern = _interopRequireDefault(require("./intern")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const HAS_NATIVE_PROXY = typeof Proxy === 'function'; exports.HAS_NATIVE_PROXY = HAS_NATIVE_PROXY; const HAS_NATIVE_SYMBOL = function () { if (typeof Symbol !== 'function') { return false; } // eslint-disable-next-line symbol-description return typeof Symbol() === 'symbol'; }(); exports.HAS_NATIVE_SYMBOL = HAS_NATIVE_SYMBOL; function keys(obj) { return Object.keys(obj); } function unwrap(val) { if (val === null || val === undefined) throw new Error(`Expected value to be present`); return val; } function expect(val, message) { if (val === null || val === undefined) throw new Error(message); return val; } function unreachable(message = 'unreachable') { return new Error(message); } function exhausted(value) { throw new Error(`Exhausted ${value}`); } const tuple = (...args) => args; exports.tuple = tuple; function enumerableSymbol(key) { return (0, _intern.default)(`__${key}${Math.floor(Math.random() * Date.now())}__`); } const symbol = HAS_NATIVE_SYMBOL ? Symbol : enumerableSymbol; exports.symbol = symbol; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3V0aWwvbGliL3BsYXRmb3JtLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQTs7OztBQUlPLE1BQU0sZ0JBQWdCLEdBQUcsT0FBQSxLQUFBLEtBQXpCLFVBQUE7OztBQUVBLE1BQU0saUJBQWlCLEdBQUksWUFBQTtBQUNoQyxNQUFJLE9BQUEsTUFBQSxLQUFKLFVBQUEsRUFBa0M7QUFDaEMsV0FBQSxLQUFBO0FBRjhCLEdBQUEsQ0FLaEM7OztBQUNBLFNBQU8sT0FBTyxNQUFQLEVBQUEsS0FBUCxRQUFBO0FBTkssQ0FBMkIsRUFBM0I7Ozs7QUFTRCxTQUFBLElBQUEsQ0FBQSxHQUFBLEVBQXdCO0FBQzVCLFNBQU8sTUFBTSxDQUFOLElBQUEsQ0FBUCxHQUFPLENBQVA7QUFDRDs7QUFFSyxTQUFBLE1BQUEsQ0FBQSxHQUFBLEVBQWlDO0FBQ3JDLE1BQUksR0FBRyxLQUFILElBQUEsSUFBZ0IsR0FBRyxLQUF2QixTQUFBLEVBQXVDLE1BQU0sSUFBQSxLQUFBLENBQU4sOEJBQU0sQ0FBTjtBQUN2QyxTQUFBLEdBQUE7QUFDRDs7QUFFSyxTQUFBLE1BQUEsQ0FBQSxHQUFBLEVBQUEsT0FBQSxFQUFrRDtBQUN0RCxNQUFJLEdBQUcsS0FBSCxJQUFBLElBQWdCLEdBQUcsS0FBdkIsU0FBQSxFQUF1QyxNQUFNLElBQUEsS0FBQSxDQUFOLE9BQU0sQ0FBTjtBQUN2QyxTQUFBLEdBQUE7QUFDRDs7QUFFSyxTQUFBLFdBQUEsQ0FBc0IsT0FBTyxHQUE3QixhQUFBLEVBQTZDO0FBQ2pELFNBQU8sSUFBQSxLQUFBLENBQVAsT0FBTyxDQUFQO0FBQ0Q7O0FBRUssU0FBQSxTQUFBLENBQUEsS0FBQSxFQUFnQztBQUNwQyxRQUFNLElBQUEsS0FBQSxDQUFVLGFBQWEsS0FBN0IsRUFBTSxDQUFOO0FBQ0Q7O0FBSU0sTUFBTSxLQUFLLEdBQUcsQ0FBa0IsR0FBbEIsSUFBQSxLQUFkLElBQUE7Ozs7QUFFRCxTQUFBLGdCQUFBLENBQUEsR0FBQSxFQUFzQztBQUMxQyxTQUFPLHFCQUFPLEtBQUssR0FBRyxHQUFHLElBQUksQ0FBSixLQUFBLENBQVcsSUFBSSxDQUFKLE1BQUEsS0FBZ0IsSUFBSSxDQUEvQixHQUEyQixFQUEzQixDQUF6QixJQUFPLENBQVA7QUFDRDs7QUFFTSxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsR0FBQSxNQUFBLEdBQWhDLGdCQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBpbnRlcm4gZnJvbSAnLi9pbnRlcm4nO1xuXG5leHBvcnQgdHlwZSBGYWN0b3J5PFQ+ID0gbmV3ICguLi5hcmdzOiB1bmtub3duW10pID0+IFQ7XG5cbmV4cG9ydCBjb25zdCBIQVNfTkFUSVZFX1BST1hZID0gdHlwZW9mIFByb3h5ID09PSAnZnVuY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgSEFTX05BVElWRV9TWU1CT0wgPSAoZnVuY3Rpb24gKCkge1xuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzeW1ib2wtZGVzY3JpcHRpb25cbiAgcmV0dXJuIHR5cGVvZiBTeW1ib2woKSA9PT0gJ3N5bWJvbCc7XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24ga2V5czxUPihvYmo6IFQpOiBBcnJheTxrZXlvZiBUPiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopIGFzIEFycmF5PGtleW9mIFQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwPFQ+KHZhbDogTWF5YmU8VD4pOiBUIHtcbiAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB2YWx1ZSB0byBiZSBwcmVzZW50YCk7XG4gIHJldHVybiB2YWwgYXMgVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdDxUPih2YWw6IE1heWJlPFQ+LCBtZXNzYWdlOiBzdHJpbmcpOiBUIHtcbiAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gdmFsIGFzIFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnJlYWNoYWJsZShtZXNzYWdlID0gJ3VucmVhY2hhYmxlJyk6IEVycm9yIHtcbiAgcmV0dXJuIG5ldyBFcnJvcihtZXNzYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4aGF1c3RlZCh2YWx1ZTogbmV2ZXIpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgRXhoYXVzdGVkICR7dmFsdWV9YCk7XG59XG5cbmV4cG9ydCB0eXBlIExpdCA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsIHwgdm9pZCB8IHt9O1xuXG5leHBvcnQgY29uc3QgdHVwbGUgPSA8VCBleHRlbmRzIExpdFtdPiguLi5hcmdzOiBUKSA9PiBhcmdzO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bWVyYWJsZVN5bWJvbChrZXk6IHN0cmluZyk6IGFueSB7XG4gIHJldHVybiBpbnRlcm4oYF9fJHtrZXl9JHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBEYXRlLm5vdygpKX1fX2ApO1xufVxuXG5leHBvcnQgY29uc3Qgc3ltYm9sID0gSEFTX05BVElWRV9TWU1CT0wgPyBTeW1ib2wgOiBlbnVtZXJhYmxlU3ltYm9sO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==