UNPKG

ts-error

Version:

An extendable Error class that actually works, with TypeScript definition files, supporting old and new style classes and compatibility even with the oldest browsers

86 lines (77 loc) 2.82 kB
"use strict"; exports.__esModule = undefined; exports.__esModule = true; // Misc helpers var objectSetPrototypeOfIsDefined = typeof Object.setPrototypeOf === "function"; var objectGetPrototypeOfIsDefined = typeof Object.getPrototypeOf === "function"; var objectDefinePropertyIsDefined = typeof Object.defineProperty === "function"; var objectCreateIsDefined = typeof Object.create === "function"; var objectHasOwnPropertyIsDefined = typeof Object.prototype.hasOwnProperty === "function"; var setPrototypeOf = function setPrototypeOf(target, prototype) { if (objectSetPrototypeOfIsDefined) { Object.setPrototypeOf(target, prototype); } else { target.__proto__ = prototype; } }; exports.setPrototypeOf = setPrototypeOf; var getPrototypeOf = function getPrototypeOf(target) { if (objectGetPrototypeOfIsDefined) { return Object.getPrototypeOf(target); } else { return target.__proto__ || target.prototype; } }; exports.getPrototypeOf = getPrototypeOf; // Object.defineProperty exists in IE8, but the implementation is buggy, so we // need to test if the call fails, and, if so, set a flag to use the shim, as if // the function were not defined. When this error is caught the first time, the // function is called again recursively, after the flag is set, so the desired // effect is achieved anyway. var ie8ObjectDefinePropertyBug = false; var defineProperty = function defineProperty(target, name, propertyDescriptor) { if (objectDefinePropertyIsDefined && !ie8ObjectDefinePropertyBug) { try { Object.defineProperty(target, name, propertyDescriptor); } catch (e) { ie8ObjectDefinePropertyBug = true; defineProperty(target, name, propertyDescriptor); } } else { target[name] = propertyDescriptor.value; } }; exports.defineProperty = defineProperty; var hasOwnProperty = function hasOwnProperty(target, name) { if (objectHasOwnPropertyIsDefined) { return target.hasOwnProperty(target, name); } else { return target[name] === undefined; } }; exports.hasOwnProperty = hasOwnProperty; var objectCreate = function objectCreate(prototype, propertyDescriptors) { if (objectCreateIsDefined) { return Object.create(prototype, propertyDescriptors); } else { var F = function F() {}; F.prototype = prototype; var result = new F(); if (typeof propertyDescriptors === "undefined") { return result; } if (typeof propertyDescriptors === "null") { throw new Error("PropertyDescriptors must not be null."); } if (typeof propertyDescriptors === "object") { for (var key in propertyDescriptors) { if (hasOwnProperty(propertyDescriptors, key)) { result[key] = propertyDescriptors[key].value; } } } return result; } }; exports.objectCreate = objectCreate;