{"version":3,"sources":["jsdelivr-header.js","/npm/json-math@2.0.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAQA,IAAI,SAAW,OAAO,QAAU,SAAU,GAEzC,KAAK,SAAW,GAAW,CAAC,EAE5B,KAAK,SAAS,OAAS,KAAK,SAAS,SAAU,EAE/C,KAAK,WAAa,KAAK,SAAS,WAAa,CAAC,CAE/C,EASA,SAAS,UAAU,QAAU,SAAU,EAAY,GAIlD,OAFA,KAAK,oBAAsB,GAAsB,CAAC,EAE1C,EAAW,aAElB,KAAK,MACJ,OAAO,KAAK,cAAc,GAE3B,KAAK,OACJ,OAAO,KAAK,eAAe,GAE5B,QACC,GAAI,KAAK,SAAS,OACjB,MAAM,IAAI,MAAM,0CAA4C,KAAK,UAAU,IAE5E,MAAO,CAAC,EAIX,EAQA,SAAS,UAAU,cAAgB,SAAU,GAQ5C,OANA,EAAW,QAAQ,SAAU,GAE5B,KAAK,eAAe,EAErB,EAAE,KAAK,OAEA,KAAK,UAEb,EAOA,SAAS,UAAU,eAAiB,SAAU,GAM7C,IAAI,EAAe,CAAC,EAEpB,IAAK,IAAI,KAAY,EAChB,EAAU,eAAe,KAE5B,EAAa,GAAY,KAAK,WAAW,EAAU,KAKrD,IAAK,IAAI,KAAY,EAChB,EAAa,eAAe,KAE/B,KAAK,WAAW,GAAY,EAAa,IAK3C,OAAO,KAAK,UAEb,EAEA,SAAS,UAAU,WAAa,SAAU,GAEzC,IAAI,EAEJ,OAAQ,EAAU,WAEjB,IAAK,IACJ,EAAO,SAAU,EAAG,GACnB,OAAO,EAAI,CACZ,EACA,MACD,IAAK,IACJ,EAAO,SAAU,EAAG,GACnB,OAAO,EAAI,CACZ,EACA,MACD,IAAK,IACJ,EAAO,SAAU,EAAG,GACnB,OAAO,EAAI,CACZ,EACA,MACD,IAAK,IACJ,EAAO,SAAU,EAAG,GACnB,OAAO,EAAI,CACZ,EACA,MACD,IAAK,IACJ,EAAO,SAAU,EAAG,GACnB,OAAO,KAAK,IAAI,EAAG,EACpB,EACA,MACD,QACC,GAAI,EAAU,cAAgB,OAC7B,OAAO,EACD,GAAI,EAAU,cAAgB,OACpC,OAAO,KAAK,aAAa,GAE1B,MAAM,IAAI,MAAM,iCAAmC,KAAK,UAAU,IAMpE,IAFA,IAAI,EAAS,EAEJ,EAAI,EAAG,EAAI,EAAU,UAAU,OAAQ,IAE/C,GAAS,GAAL,GAEH,EAAS,EAAU,UAAU,IAElB,cAAgB,OAC1B,EAAS,KAAK,WAAW,GACf,EAAO,cAAgB,SACjC,EAAS,KAAK,aAAa,QAGtB,CAEN,IAAI,EAAM,EAAU,UAAU,GAE1B,EAAI,cAAgB,OACvB,EAAM,KAAK,WAAW,GACZ,EAAI,cAAgB,SAC9B,EAAM,KAAK,aAAa,IAGzB,EAAS,EAAK,EAAQ,EAEvB,CAID,OAAO,CAER,EASA,SAAS,UAAU,aAAe,SAAU,GAE3C,GAAI,KAAK,oBAAoB,GAC5B,OAAO,KAAK,oBAAoB,GAC1B,GAAI,KAAK,WAAW,GAC1B,OAAO,KAAK,WAAW,GACjB,GAAI,KAAK,SAAS,OACxB,MAAM,IAAI,MAAM,aAAe,EAAO,6BAEtC,OAAO,CAGT","file":"/npm/json-math@2.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/json-math@2.0.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\r\n\r\n/**\r\n * Constructs a new JSONMath instance with some options\r\n * @type {Function}\r\n * @param {{}} options\r\n * @constructor\r\n */\r\nvar JSONMath = module.exports = function (options) {\r\n\r\n\tthis._options = options || {};\r\n\r\n\tthis._options.strict = this._options.strict || false;\r\n\r\n\tthis._variables = this._options.variables || {};\r\n\r\n};\r\n\r\n/**\r\n * Executes one or more mathmatical operations on a set of variables\r\n * @param {Array|Object} operations\r\n * @param {Object} temporaryVariables\r\n * @returns {Object}\r\n * @throws Error\r\n */\r\nJSONMath.prototype.execute = function (operations, temporaryVariables) {\r\n\r\n\tthis._temporaryVariables = temporaryVariables || {};\r\n\r\n\tswitch (operations.constructor) {\r\n\r\n\t\tcase Array:\r\n\t\t\treturn this._executeArray(operations);\r\n\t\t\tbreak;\r\n\t\tcase Object:\r\n\t\t\treturn this._executeObject(operations);\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tif (this._options.strict) {\r\n\t\t\t\tthrow new Error(\"Invalid call to JSONMath#execute with: \" + JSON.stringify(operations));\r\n\t\t\t}\r\n\t\t\treturn {};\r\n\r\n\t}\r\n\r\n};\r\n\r\n/**\r\n * Executes a series of operations and then returns the resultant variables\r\n * @param {Array} operations\r\n * @returns {{}|null}\r\n * @private\r\n */\r\nJSONMath.prototype._executeArray = function (operations) {\r\n\r\n\toperations.forEach(function (operation) {\r\n\r\n\t\tthis._executeObject(operation);\r\n\r\n\t}.bind(this));\r\n\r\n\treturn this._variables;\r\n\r\n};\r\n\r\n/**\r\n * Executes a single operation and then returns the resultant variables\r\n * @param {Object} operation\r\n * @private\r\n */\r\nJSONMath.prototype._executeObject = function (operation) {\r\n\r\n\t/*\r\n\t * Here's where the fancy stuff is going to happen\r\n\t */\r\n\r\n\tvar newVariables = {};\r\n\r\n\tfor (var variable in operation) {\r\n\t\tif (operation.hasOwnProperty(variable)) {\r\n\r\n\t\t\tnewVariables[variable] = this._calculate(operation[variable]);\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tfor (var variable in newVariables) {\r\n\t\tif (newVariables.hasOwnProperty(variable)) {\r\n\r\n\t\t\tthis._variables[variable] = newVariables[variable];\r\n\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._variables;\r\n\r\n};\r\n\r\nJSONMath.prototype._calculate = function (operation) {\r\n\r\n\tvar func;\r\n\r\n\tswitch (operation.operation) {\r\n\r\n\t\tcase \"+\":\r\n\t\t\tfunc = function (a, b) {\r\n\t\t\t\treturn a + b\r\n\t\t\t};\r\n\t\t\tbreak;\r\n\t\tcase \"-\":\r\n\t\t\tfunc = function (a, b) {\r\n\t\t\t\treturn a - b\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase \"*\":\r\n\t\t\tfunc = function (a, b) {\r\n\t\t\t\treturn a * b\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase \"/\":\r\n\t\t\tfunc = function (a, b) {\r\n\t\t\t\treturn a / b\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase \"^\":\r\n\t\t\tfunc = function (a, b) {\r\n\t\t\t\treturn Math.pow(a, b)\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tif (operation.constructor === Number) {\r\n\t\t\t\treturn operation;\r\n\t\t\t} else if (operation.constructor === String) {\r\n\t\t\t\treturn this._getVariable(operation);\r\n\t\t\t}\r\n\t\t\tthrow new Error(\"Invalid operation to perform: \" + JSON.stringify(operation));\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tvar result = 0;\r\n\r\n\tfor (var i = 0; i < operation.variables.length; i++) {\r\n\r\n\t\tif (i == 0) {\r\n\r\n\t\t\tresult = operation.variables[i];\r\n\r\n\t\t\tif (result.constructor === Object) {\r\n\t\t\t\tresult = this._calculate(result);\r\n\t\t\t} else if (result.constructor === String) {\r\n\t\t\t\tresult = this._getVariable(result);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tvar sec = operation.variables[i];\r\n\r\n\t\t\tif (sec.constructor === Object) {\r\n\t\t\t\tsec = this._calculate(sec);\r\n\t\t\t} else if (sec.constructor === String) {\r\n\t\t\t\tsec = this._getVariable(sec);\r\n\t\t\t}\r\n\r\n\t\t\tresult = func(result, sec);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn result;\r\n\r\n};\r\n\r\n/**\r\n * Gets a variable from allowed sources by name\r\n * @param {String} name\r\n * @returns {Number}\r\n * @throws Error\r\n * @private\r\n */\r\nJSONMath.prototype._getVariable = function (name) {\r\n\r\n\tif (this._temporaryVariables[name]) {\r\n\t\treturn this._temporaryVariables[name];\r\n\t} else if (this._variables[name]) {\r\n\t\treturn this._variables[name];\r\n\t} else if (this._options.strict) {\r\n\t\tthrow new Error(\"Variable '\" + name + \"' has not been initalised\");\r\n\t} else {\r\n\t\treturn 0;\r\n\t}\r\n\r\n};\r\n"]}