UNPKG

@glimmer/util

Version:

Common utilities used in Glimmer

43 lines (39 loc) 4.75 kB
import intern from './intern'; export var HAS_NATIVE_PROXY = typeof Proxy === 'function'; export var HAS_NATIVE_SYMBOL = function () { if (typeof Symbol !== 'function') { return false; } // eslint-disable-next-line symbol-description return typeof Symbol() === 'symbol'; }(); export function keys(obj) { return Object.keys(obj); } export function unwrap(val) { if (val === null || val === undefined) throw new Error("Expected value to be present"); return val; } export function expect(val, message) { if (val === null || val === undefined) throw new Error(message); return val; } export function unreachable(message) { if (message === void 0) { message = 'unreachable'; } return new Error(message); } export function exhausted(value) { throw new Error("Exhausted " + value); } export var tuple = function tuple() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return args; }; export function enumerableSymbol(key) { return intern("__" + key + Math.floor(Math.random() * Date.now()) + "__"); } export var symbol = HAS_NATIVE_SYMBOL ? Symbol : enumerableSymbol; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3V0aWwvbGliL3BsYXRmb3JtLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQUEsTUFBQSxNQUFBLFVBQUE7QUFJQSxPQUFPLElBQU0sZ0JBQWdCLEdBQUcsT0FBQSxLQUFBLEtBQXpCLFVBQUE7QUFFUCxPQUFPLElBQU0saUJBQWlCLEdBQUksWUFBQTtBQUNoQyxNQUFJLE9BQUEsTUFBQSxLQUFKLFVBQUEsRUFBa0M7QUFDaEMsV0FBQSxLQUFBO0FBRjhCLEdBQUEsQ0FLaEM7OztBQUNBLFNBQU8sT0FBTyxNQUFQLEVBQUEsS0FBUCxRQUFBO0FBTkssQ0FBMkIsRUFBM0I7QUFTUCxPQUFNLFNBQUEsSUFBQSxDQUFBLEdBQUEsRUFBd0I7QUFDNUIsU0FBTyxNQUFNLENBQU4sSUFBQSxDQUFQLEdBQU8sQ0FBUDtBQUNEO0FBRUQsT0FBTSxTQUFBLE1BQUEsQ0FBQSxHQUFBLEVBQWlDO0FBQ3JDLE1BQUksR0FBRyxLQUFILElBQUEsSUFBZ0IsR0FBRyxLQUF2QixTQUFBLEVBQXVDLE1BQU0sSUFBTixLQUFNLGdDQUFOO0FBQ3ZDLFNBQUEsR0FBQTtBQUNEO0FBRUQsT0FBTSxTQUFBLE1BQUEsQ0FBQSxHQUFBLEVBQUEsT0FBQSxFQUFrRDtBQUN0RCxNQUFJLEdBQUcsS0FBSCxJQUFBLElBQWdCLEdBQUcsS0FBdkIsU0FBQSxFQUF1QyxNQUFNLElBQUEsS0FBQSxDQUFOLE9BQU0sQ0FBTjtBQUN2QyxTQUFBLEdBQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxXQUFBLENBQXNCLE9BQXRCLEVBQTZDO0FBQUEsTUFBdkIsT0FBdUI7QUFBdkIsSUFBQSxPQUF1QixHQUE3QyxhQUE2QztBQUFBOztBQUNqRCxTQUFPLElBQUEsS0FBQSxDQUFQLE9BQU8sQ0FBUDtBQUNEO0FBRUQsT0FBTSxTQUFBLFNBQUEsQ0FBQSxLQUFBLEVBQWdDO0FBQ3BDLFFBQU0sSUFBQSxLQUFBLGdCQUFOLEtBQU0sQ0FBTjtBQUNEO0FBSUQsT0FBTyxJQUFNLEtBQUssR0FBRyxTQUFSLEtBQVE7QUFBQSxvQ0FBQSxJQUFBO0FBQUEsSUFBQSxJQUFBO0FBQUE7O0FBQUEsU0FBZCxJQUFjO0FBQUEsQ0FBZDtBQUVQLE9BQU0sU0FBQSxnQkFBQSxDQUFBLEdBQUEsRUFBc0M7QUFDMUMsU0FBTyxNQUFNLFFBQU0sR0FBTixHQUFZLElBQUksQ0FBSixLQUFBLENBQVcsSUFBSSxDQUFKLE1BQUEsS0FBZ0IsSUFBSSxDQUF4RCxHQUFvRCxFQUEzQixDQUFaLFFBQWI7QUFDRDtBQUVELE9BQU8sSUFBTSxNQUFNLEdBQUcsaUJBQWlCLEdBQUEsTUFBQSxHQUFoQyxnQkFBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgaW50ZXJuIGZyb20gJy4vaW50ZXJuJztcblxuZXhwb3J0IHR5cGUgRmFjdG9yeTxUPiA9IG5ldyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBUO1xuXG5leHBvcnQgY29uc3QgSEFTX05BVElWRV9QUk9YWSA9IHR5cGVvZiBQcm94eSA9PT0gJ2Z1bmN0aW9uJztcblxuZXhwb3J0IGNvbnN0IEhBU19OQVRJVkVfU1lNQk9MID0gKGZ1bmN0aW9uICgpIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3ltYm9sLWRlc2NyaXB0aW9uXG4gIHJldHVybiB0eXBlb2YgU3ltYm9sKCkgPT09ICdzeW1ib2wnO1xufSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGtleXM8VD4ob2JqOiBUKTogQXJyYXk8a2V5b2YgVD4ge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKSBhcyBBcnJheTxrZXlvZiBUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcDxUPih2YWw6IE1heWJlPFQ+KTogVCB7XG4gIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdmFsdWUgdG8gYmUgcHJlc2VudGApO1xuICByZXR1cm4gdmFsIGFzIFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBlY3Q8VD4odmFsOiBNYXliZTxUPiwgbWVzc2FnZTogc3RyaW5nKTogVCB7XG4gIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIHZhbCBhcyBUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5yZWFjaGFibGUobWVzc2FnZSA9ICd1bnJlYWNoYWJsZScpOiBFcnJvciB7XG4gIHJldHVybiBuZXcgRXJyb3IobWVzc2FnZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGhhdXN0ZWQodmFsdWU6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYEV4aGF1c3RlZCAke3ZhbHVlfWApO1xufVxuXG5leHBvcnQgdHlwZSBMaXQgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbCB8IHZvaWQgfCB7fTtcblxuZXhwb3J0IGNvbnN0IHR1cGxlID0gPFQgZXh0ZW5kcyBMaXRbXT4oLi4uYXJnczogVCkgPT4gYXJncztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1lcmFibGVTeW1ib2woa2V5OiBzdHJpbmcpOiBhbnkge1xuICByZXR1cm4gaW50ZXJuKGBfXyR7a2V5fSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogRGF0ZS5ub3coKSl9X19gKTtcbn1cblxuZXhwb3J0IGNvbnN0IHN5bWJvbCA9IEhBU19OQVRJVkVfU1lNQk9MID8gU3ltYm9sIDogZW51bWVyYWJsZVN5bWJvbDtcbiJdLCJzb3VyY2VSb290IjoiIn0=