{"version":3,"file":"RuntimeError-5b082e8f.js","sources":["../../../../Source/Core/DeveloperError.js","../../../../Source/Core/Check.js","../../../../Source/Core/RuntimeError.js"],"sourcesContent":["import defined from \"./defined.js\";\n\n/**\n * Constructs an exception object that is thrown due to a developer error, e.g., invalid argument,\n * argument out of range, etc. This exception should only be thrown during development;\n * it usually indicates a bug in the calling code. This exception should never be\n * caught; instead the calling code should strive not to generate it.\n *
\n * On the other hand, a {@link RuntimeError} indicates an exception that may\n * be thrown at runtime, e.g., out of memory, that the calling code should be prepared\n * to catch.\n *\n * @alias DeveloperError\n * @constructor\n * @extends Error\n *\n * @param {String} [message] The error message for this exception.\n *\n * @see RuntimeError\n */\nfunction DeveloperError(message) {\n /**\n * 'DeveloperError' indicating that this exception was thrown due to a developer error.\n * @type {String}\n * @readonly\n */\n this.name = \"DeveloperError\";\n\n /**\n * The explanation for why this exception was thrown.\n * @type {String}\n * @readonly\n */\n this.message = message;\n\n //Browsers such as IE don't have a stack property until you actually throw the error.\n let stack;\n try {\n throw new Error();\n } catch (e) {\n stack = e.stack;\n }\n\n /**\n * The stack trace of this exception, if available.\n * @type {String}\n * @readonly\n */\n this.stack = stack;\n}\n\nif (defined(Object.create)) {\n DeveloperError.prototype = Object.create(Error.prototype);\n DeveloperError.prototype.constructor = DeveloperError;\n}\n\nDeveloperError.prototype.toString = function () {\n let str = `${this.name}: ${this.message}`;\n\n if (defined(this.stack)) {\n str += `\\n${this.stack.toString()}`;\n }\n\n return str;\n};\n\n/**\n * @private\n */\nDeveloperError.throwInstantiationError = function () {\n throw new DeveloperError(\n \"This function defines an interface and should not be called directly.\"\n );\n};\nexport default DeveloperError;\n","import defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\n\n/**\n * Contains functions for checking that supplied arguments are of a specified type\n * or meet specified conditions\n * @private\n */\nconst Check = {};\n\n/**\n * Contains type checking functions, all using the typeof operator\n */\nCheck.typeOf = {};\n\nfunction getUndefinedErrorMessage(name) {\n return `${name} is required, actual value was undefined`;\n}\n\nfunction getFailedTypeErrorMessage(actual, expected, name) {\n return `Expected ${name} to be typeof ${expected}, actual typeof was ${actual}`;\n}\n\n/**\n * Throws if test is not defined\n *\n * @param {String} name The name of the variable being tested\n * @param {*} test The value that is to be checked\n * @exception {DeveloperError} test must be defined\n */\nCheck.defined = function (name, test) {\n if (!defined(test)) {\n throw new DeveloperError(getUndefinedErrorMessage(name));\n }\n};\n\n/**\n * Throws if test is not typeof 'function'\n *\n * @param {String} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'function'\n */\nCheck.typeOf.func = function (name, test) {\n if (typeof test !== \"function\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"function\", name)\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'string'\n *\n * @param {String} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'string'\n */\nCheck.typeOf.string = function (name, test) {\n if (typeof test !== \"string\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"string\", name)\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number'\n *\n * @param {String} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'number'\n */\nCheck.typeOf.number = function (name, test) {\n if (typeof test !== \"number\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"number\", name)\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and less than limit\n *\n * @param {String} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {Number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and less than limit\n */\nCheck.typeOf.number.lessThan = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test >= limit) {\n throw new DeveloperError(\n `Expected ${name} to be less than ${limit}, actual value was ${test}`\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and less than or equal to limit\n *\n * @param {String} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {Number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and less than or equal to limit\n */\nCheck.typeOf.number.lessThanOrEquals = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test > limit) {\n throw new DeveloperError(\n `Expected ${name} to be less than or equal to ${limit}, actual value was ${test}`\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and greater than limit\n *\n * @param {String} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {Number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and greater than limit\n */\nCheck.typeOf.number.greaterThan = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test <= limit) {\n throw new DeveloperError(\n `Expected ${name} to be greater than ${limit}, actual value was ${test}`\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and greater than or equal to limit\n *\n * @param {String} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {Number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and greater than or equal to limit\n */\nCheck.typeOf.number.greaterThanOrEquals = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test < limit) {\n throw new DeveloperError(\n `Expected ${name} to be greater than or equal to ${limit}, actual value was ${test}`\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'object'\n *\n * @param {String} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'object'\n */\nCheck.typeOf.object = function (name, test) {\n if (typeof test !== \"object\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"object\", name)\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'boolean'\n *\n * @param {String} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'boolean'\n */\nCheck.typeOf.bool = function (name, test) {\n if (typeof test !== \"boolean\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"boolean\", name)\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'bigint'\n *\n * @param {String} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'bigint'\n */\nCheck.typeOf.bigint = function (name, test) {\n if (typeof test !== \"bigint\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"bigint\", name)\n );\n }\n};\n\n/**\n * Throws if test1 and test2 is not typeof 'number' and not equal in value\n *\n * @param {String} name1 The name of the first variable being tested\n * @param {String} name2 The name of the second variable being tested against\n * @param {*} test1 The value to test\n * @param {*} test2 The value to test against\n * @exception {DeveloperError} test1 and test2 should be type of 'number' and be equal in value\n */\nCheck.typeOf.number.equals = function (name1, name2, test1, test2) {\n Check.typeOf.number(name1, test1);\n Check.typeOf.number(name2, test2);\n if (test1 !== test2) {\n throw new DeveloperError(\n `${name1} must be equal to ${name2}, the actual values are ${test1} and ${test2}`\n );\n }\n};\nexport default Check;\n","import defined from \"./defined.js\";\n\n/**\n * Constructs an exception object that is thrown due to an error that can occur at runtime, e.g.,\n * out of memory, could not compile shader, etc. If a function may throw this\n * exception, the calling code should be prepared to catch it.\n *
\n * On the other hand, a {@link DeveloperError} indicates an exception due\n * to a developer error, e.g., invalid argument, that usually indicates a bug in the\n * calling code.\n *\n * @alias RuntimeError\n * @constructor\n * @extends Error\n *\n * @param {String} [message] The error message for this exception.\n *\n * @see DeveloperError\n */\nfunction RuntimeError(message) {\n /**\n * 'RuntimeError' indicating that this exception was thrown due to a runtime error.\n * @type {String}\n * @readonly\n */\n this.name = \"RuntimeError\";\n\n /**\n * The explanation for why this exception was thrown.\n * @type {String}\n * @readonly\n */\n this.message = message;\n\n //Browsers such as IE don't have a stack property until you actually throw the error.\n let stack;\n try {\n throw new Error();\n } catch (e) {\n stack = e.stack;\n }\n\n /**\n * The stack trace of this exception, if available.\n * @type {String}\n * @readonly\n */\n this.stack = stack;\n}\n\nif (defined(Object.create)) {\n RuntimeError.prototype = Object.create(Error.prototype);\n RuntimeError.prototype.constructor = RuntimeError;\n}\n\nRuntimeError.prototype.toString = function () {\n let str = `${this.name}: ${this.message}`;\n\n if (defined(this.stack)) {\n str += `\\n${this.stack.toString()}`;\n }\n\n return str;\n};\nexport default RuntimeError;\n"],"names":["defined"],"mappings":"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"}