@glimmer/util
Version:
Common utilities used in Glimmer
43 lines (39 loc) • 4.75 kB
JavaScript
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=