| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | import defined from "./defined.js";/** * Constructs an exception object that is thrown due to a developer error, e.g., invalid argument, * argument out of range, etc.  This exception should only be thrown during development; * it usually indicates a bug in the calling code.  This exception should never be * caught; instead the calling code should strive not to generate it. * <br /><br /> * On the other hand, a {@link RuntimeError} indicates an exception that may * be thrown at runtime, e.g., out of memory, that the calling code should be prepared * to catch. * * @alias DeveloperError * @constructor * @extends Error * * @param {String} [message] The error message for this exception. * * @see RuntimeError */function DeveloperError(message) {  /**   * 'DeveloperError' indicating that this exception was thrown due to a developer error.   * @type {String}   * @readonly   */  this.name = "DeveloperError";  /**   * The explanation for why this exception was thrown.   * @type {String}   * @readonly   */  this.message = message;  //Browsers such as IE don't have a stack property until you actually throw the error.  let stack;  try {    throw new Error();  } catch (e) {    stack = e.stack;  }  /**   * The stack trace of this exception, if available.   * @type {String}   * @readonly   */  this.stack = stack;}if (defined(Object.create)) {  DeveloperError.prototype = Object.create(Error.prototype);  DeveloperError.prototype.constructor = DeveloperError;}DeveloperError.prototype.toString = function () {  let str = `${this.name}: ${this.message}`;  if (defined(this.stack)) {    str += `\n${this.stack.toString()}`;  }  return str;};/** * @private */DeveloperError.throwInstantiationError = function () {  throw new DeveloperError(    "This function defines an interface and should not be called directly."  );};export default DeveloperError;
 |