{"remainingRequest":"/data/node_modules/babel-loader/lib/index.js!/data/node_modules/typescript-logging/dist/commonjs/utils/JSONHelper.js","dependencies":[{"path":"/data/node_modules/typescript-logging/dist/commonjs/utils/JSONHelper.js","mtime":1553611387936},{"path":"/data/.babelrc","mtime":1553611371556},{"path":"/data/node_modules/cache-loader/dist/cjs.js","mtime":1553611387012},{"path":"/data/node_modules/babel-loader/lib/index.js","mtime":1553611386992}],"contextDependencies":[],"result":["\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function (d, b) {\n    for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n    }function __() {\n        this.constructor = d;\n    }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar LoggerOptions_1 = require(\"../log/LoggerOptions\");\nvar DataStructures_1 = require(\"./DataStructures\");\nvar JSONTypeImpl = function () {\n    function JSONTypeImpl(value) {\n        this._value = value;\n    }\n    JSONTypeImpl.prototype.getValue = function () {\n        return this._value;\n    };\n    JSONTypeImpl.prototype.toString = function () {\n        var value = this.getValue();\n        if (value != null) {\n            return value.toString();\n        }\n        return \"null\";\n    };\n    return JSONTypeImpl;\n}();\nvar JSONBooleanType = function (_super) {\n    __extends(JSONBooleanType, _super);\n    function JSONBooleanType(value) {\n        return _super.call(this, value) || this;\n    }\n    return JSONBooleanType;\n}(JSONTypeImpl);\nvar JSONNumberType = function (_super) {\n    __extends(JSONNumberType, _super);\n    function JSONNumberType(value) {\n        return _super.call(this, value) || this;\n    }\n    return JSONNumberType;\n}(JSONTypeImpl);\nvar JSONStringType = function (_super) {\n    __extends(JSONStringType, _super);\n    function JSONStringType(value) {\n        return _super.call(this, value) || this;\n    }\n    JSONStringType.prototype.toString = function () {\n        var value = this.getValue();\n        if (value != null) {\n            return JSON.stringify(value.toString());\n        }\n        return \"null\";\n    };\n    return JSONStringType;\n}(JSONTypeImpl);\nvar JSONObjectType = function (_super) {\n    __extends(JSONObjectType, _super);\n    function JSONObjectType(value) {\n        return _super.call(this, value) || this;\n    }\n    return JSONObjectType;\n}(JSONTypeImpl);\nvar JSONArrayType = function (_super) {\n    __extends(JSONArrayType, _super);\n    function JSONArrayType(value) {\n        return _super.call(this, value) || this;\n    }\n    JSONArrayType.prototype.toString = function () {\n        var value = this.getValue();\n        if (value != null) {\n            return value.toString();\n        }\n        return \"null\";\n    };\n    return JSONArrayType;\n}(JSONTypeImpl);\nvar JSONNullType = function (_super) {\n    __extends(JSONNullType, _super);\n    function JSONNullType() {\n        return _super.call(this, null) || this;\n    }\n    JSONNullType.prototype.toString = function () {\n        return \"null\";\n    };\n    return JSONNullType;\n}(JSONTypeImpl);\nvar JSONTypeConverter = function () {\n    function JSONTypeConverter() {}\n    JSONTypeConverter.toJSONType = function (value) {\n        if (value === null) {\n            return new JSONNullType();\n        }\n        if (typeof value === \"string\") {\n            return new JSONStringType(value);\n        }\n        if (typeof value === \"number\") {\n            return new JSONNumberType(value);\n        }\n        if (typeof value === \"boolean\") {\n            return new JSONBooleanType(value);\n        }\n        if (value instanceof JSONObject) {\n            return new JSONObjectType(value);\n        }\n        throw new Error(\"Type not supported for value: \" + value);\n    };\n    return JSONTypeConverter;\n}();\nvar JSONObject = function () {\n    function JSONObject() {\n        this.values = new DataStructures_1.SimpleMap();\n    }\n    JSONObject.prototype.addBoolean = function (name, value) {\n        this.checkName(name);\n        JSONObject.checkValue(value);\n        this.values.put(name, new JSONBooleanType(value));\n        return this;\n    };\n    JSONObject.prototype.addNumber = function (name, value) {\n        this.checkName(name);\n        JSONObject.checkValue(value);\n        this.values.put(name, new JSONNumberType(value));\n        return this;\n    };\n    JSONObject.prototype.addString = function (name, value) {\n        this.checkName(name);\n        JSONObject.checkValue(value);\n        this.values.put(name, new JSONStringType(value));\n        return this;\n    };\n    JSONObject.prototype.addNull = function (name) {\n        this.checkName(name);\n        this.values.put(name, new JSONNullType());\n        return this;\n    };\n    JSONObject.prototype.addArray = function (name, array) {\n        this.checkName(name);\n        JSONObject.checkValue(array);\n        if (array == null) {\n            throw new Error(\"Cannot add array as null\");\n        }\n        this.values.put(name, new JSONArrayType(array));\n        return this;\n    };\n    JSONObject.prototype.addObject = function (name, object) {\n        this.checkName(name);\n        JSONObject.checkValue(object);\n        if (object == null) {\n            throw new Error(\"Cannot add object as null\");\n        }\n        this.values.put(name, new JSONObjectType(object));\n        return this;\n    };\n    JSONObject.prototype.toString = function (pretty) {\n        var _this = this;\n        if (pretty === void 0) {\n            pretty = false;\n        }\n        var comma = false;\n        var buffer = new DataStructures_1.StringBuilder();\n        buffer.append(\"{\");\n        this.values.keys().forEach(function (key) {\n            var value = _this.values.get(key);\n            if (value != null) {\n                if (comma) {\n                    buffer.append(\",\");\n                }\n                buffer.append('\"').append(key).append('\":').append(value.toString());\n                comma = true;\n            }\n        });\n        buffer.append(\"}\");\n        return buffer.toString();\n    };\n    JSONObject.prototype.checkName = function (name) {\n        if (name == null || name === undefined) {\n            throw new Error(\"Name is null or undefined\");\n        }\n        if (this.values.exists(name)) {\n            throw new Error(\"Name \" + name + \" is already present for this object\");\n        }\n    };\n    JSONObject.checkValue = function (value) {\n        if (value === undefined) {\n            throw new Error(\"Value is undefined\");\n        }\n    };\n    return JSONObject;\n}();\nexports.JSONObject = JSONObject;\nvar JSONArray = function () {\n    function JSONArray() {\n        this.objects = [];\n    }\n    JSONArray.prototype.add = function (object) {\n        if (object === undefined) {\n            throw new Error(\"Object is not allowed to be undefined\");\n        }\n        this.objects.push(JSONTypeConverter.toJSONType(object));\n        return this;\n    };\n    JSONArray.prototype.toString = function (pretty) {\n        if (pretty === void 0) {\n            pretty = false;\n        }\n        var buffer = new DataStructures_1.StringBuilder();\n        buffer.append(\"[\");\n        this.objects.forEach(function (value, index) {\n            if (index > 0) {\n                buffer.append(\",\");\n            }\n            buffer.append(value.toString());\n        });\n        buffer.append(\"]\");\n        return buffer.toString();\n    };\n    return JSONArray;\n}();\nexports.JSONArray = JSONArray;\n/**\n * Utility class that helps us convert things to and from json (not for normal usage).\n */\nvar JSONHelper = function () {\n    function JSONHelper() {}\n    JSONHelper.categoryToJSON = function (cat, recursive) {\n        /*\n         {\n         \"categories\":\n         [\n         { id=1,\n         name: \"x\",\n         parent: null,\n         logLevel: \"Error\"\n         },\n         { id=2,\n         name: \"y\",\n         parent: 1,\n         logLevel: \"Error\"\n         }\n         ]\n         }\n         */\n        var arr = new JSONArray();\n        JSONHelper._categoryToJSON(cat, arr, recursive);\n        var object = new JSONObject();\n        object.addArray(\"categories\", arr);\n        return object;\n    };\n    JSONHelper._categoryToJSON = function (cat, arr, recursive) {\n        var object = new JSONObject();\n        object.addNumber(\"id\", cat.id);\n        object.addString(\"name\", cat.name);\n        object.addString(\"logLevel\", LoggerOptions_1.LogLevel[cat.logLevel].toString());\n        if (cat.parent != null) {\n            object.addNumber(\"parent\", cat.parent.id);\n        } else {\n            object.addNull(\"parent\");\n        }\n        arr.add(object);\n        if (recursive) {\n            cat.children.forEach(function (child) {\n                JSONHelper._categoryToJSON(child, arr, recursive);\n            });\n        }\n    };\n    return JSONHelper;\n}();\nexports.JSONHelper = JSONHelper;\n//# sourceMappingURL=JSONHelper.js.map",{"version":3,"sources":["node_modules/typescript-logging/dist/commonjs/utils/JSONHelper.js"],"names":["__extends","d","b","p","hasOwnProperty","__","constructor","prototype","Object","create","LoggerOptions_1","require","DataStructures_1","JSONTypeImpl","value","_value","getValue","toString","JSONBooleanType","_super","call","JSONNumberType","JSONStringType","JSON","stringify","JSONObjectType","JSONArrayType","JSONNullType","JSONTypeConverter","toJSONType","JSONObject","Error","values","SimpleMap","addBoolean","name","checkName","checkValue","put","addNumber","addString","addNull","addArray","array","addObject","object","pretty","_this","comma","buffer","StringBuilder","append","keys","forEach","key","get","undefined","exists","exports","JSONArray","objects","add","push","index","JSONHelper","categoryToJSON","cat","recursive","arr","_categoryToJSON","id","LogLevel","logLevel","parent","children","child"],"mappings":"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","file":"JSONHelper.js","sourceRoot":"/data","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar LoggerOptions_1 = require(\"../log/LoggerOptions\");\nvar DataStructures_1 = require(\"./DataStructures\");\nvar JSONTypeImpl = (function () {\n    function JSONTypeImpl(value) {\n        this._value = value;\n    }\n    JSONTypeImpl.prototype.getValue = function () {\n        return this._value;\n    };\n    JSONTypeImpl.prototype.toString = function () {\n        var value = this.getValue();\n        if (value != null) {\n            return value.toString();\n        }\n        return \"null\";\n    };\n    return JSONTypeImpl;\n}());\nvar JSONBooleanType = (function (_super) {\n    __extends(JSONBooleanType, _super);\n    function JSONBooleanType(value) {\n        return _super.call(this, value) || this;\n    }\n    return JSONBooleanType;\n}(JSONTypeImpl));\nvar JSONNumberType = (function (_super) {\n    __extends(JSONNumberType, _super);\n    function JSONNumberType(value) {\n        return _super.call(this, value) || this;\n    }\n    return JSONNumberType;\n}(JSONTypeImpl));\nvar JSONStringType = (function (_super) {\n    __extends(JSONStringType, _super);\n    function JSONStringType(value) {\n        return _super.call(this, value) || this;\n    }\n    JSONStringType.prototype.toString = function () {\n        var value = this.getValue();\n        if (value != null) {\n            return JSON.stringify(value.toString());\n        }\n        return \"null\";\n    };\n    return JSONStringType;\n}(JSONTypeImpl));\nvar JSONObjectType = (function (_super) {\n    __extends(JSONObjectType, _super);\n    function JSONObjectType(value) {\n        return _super.call(this, value) || this;\n    }\n    return JSONObjectType;\n}(JSONTypeImpl));\nvar JSONArrayType = (function (_super) {\n    __extends(JSONArrayType, _super);\n    function JSONArrayType(value) {\n        return _super.call(this, value) || this;\n    }\n    JSONArrayType.prototype.toString = function () {\n        var value = this.getValue();\n        if (value != null) {\n            return value.toString();\n        }\n        return \"null\";\n    };\n    return JSONArrayType;\n}(JSONTypeImpl));\nvar JSONNullType = (function (_super) {\n    __extends(JSONNullType, _super);\n    function JSONNullType() {\n        return _super.call(this, null) || this;\n    }\n    JSONNullType.prototype.toString = function () {\n        return \"null\";\n    };\n    return JSONNullType;\n}(JSONTypeImpl));\nvar JSONTypeConverter = (function () {\n    function JSONTypeConverter() {\n    }\n    JSONTypeConverter.toJSONType = function (value) {\n        if (value === null) {\n            return new JSONNullType();\n        }\n        if (typeof value === \"string\") {\n            return new JSONStringType(value);\n        }\n        if (typeof value === \"number\") {\n            return new JSONNumberType(value);\n        }\n        if (typeof value === \"boolean\") {\n            return new JSONBooleanType(value);\n        }\n        if (value instanceof JSONObject) {\n            return new JSONObjectType(value);\n        }\n        throw new Error(\"Type not supported for value: \" + value);\n    };\n    return JSONTypeConverter;\n}());\nvar JSONObject = (function () {\n    function JSONObject() {\n        this.values = new DataStructures_1.SimpleMap();\n    }\n    JSONObject.prototype.addBoolean = function (name, value) {\n        this.checkName(name);\n        JSONObject.checkValue(value);\n        this.values.put(name, new JSONBooleanType(value));\n        return this;\n    };\n    JSONObject.prototype.addNumber = function (name, value) {\n        this.checkName(name);\n        JSONObject.checkValue(value);\n        this.values.put(name, new JSONNumberType(value));\n        return this;\n    };\n    JSONObject.prototype.addString = function (name, value) {\n        this.checkName(name);\n        JSONObject.checkValue(value);\n        this.values.put(name, new JSONStringType(value));\n        return this;\n    };\n    JSONObject.prototype.addNull = function (name) {\n        this.checkName(name);\n        this.values.put(name, new JSONNullType());\n        return this;\n    };\n    JSONObject.prototype.addArray = function (name, array) {\n        this.checkName(name);\n        JSONObject.checkValue(array);\n        if (array == null) {\n            throw new Error(\"Cannot add array as null\");\n        }\n        this.values.put(name, new JSONArrayType(array));\n        return this;\n    };\n    JSONObject.prototype.addObject = function (name, object) {\n        this.checkName(name);\n        JSONObject.checkValue(object);\n        if (object == null) {\n            throw new Error(\"Cannot add object as null\");\n        }\n        this.values.put(name, new JSONObjectType(object));\n        return this;\n    };\n    JSONObject.prototype.toString = function (pretty) {\n        var _this = this;\n        if (pretty === void 0) { pretty = false; }\n        var comma = false;\n        var buffer = new DataStructures_1.StringBuilder();\n        buffer.append(\"{\");\n        this.values.keys().forEach(function (key) {\n            var value = _this.values.get(key);\n            if (value != null) {\n                if (comma) {\n                    buffer.append(\",\");\n                }\n                buffer.append('\"').append(key).append('\":').append(value.toString());\n                comma = true;\n            }\n        });\n        buffer.append(\"}\");\n        return buffer.toString();\n    };\n    JSONObject.prototype.checkName = function (name) {\n        if (name == null || name === undefined) {\n            throw new Error(\"Name is null or undefined\");\n        }\n        if (this.values.exists(name)) {\n            throw new Error(\"Name \" + name + \" is already present for this object\");\n        }\n    };\n    JSONObject.checkValue = function (value) {\n        if (value === undefined) {\n            throw new Error(\"Value is undefined\");\n        }\n    };\n    return JSONObject;\n}());\nexports.JSONObject = JSONObject;\nvar JSONArray = (function () {\n    function JSONArray() {\n        this.objects = [];\n    }\n    JSONArray.prototype.add = function (object) {\n        if (object === undefined) {\n            throw new Error(\"Object is not allowed to be undefined\");\n        }\n        this.objects.push(JSONTypeConverter.toJSONType(object));\n        return this;\n    };\n    JSONArray.prototype.toString = function (pretty) {\n        if (pretty === void 0) { pretty = false; }\n        var buffer = new DataStructures_1.StringBuilder();\n        buffer.append(\"[\");\n        this.objects.forEach(function (value, index) {\n            if (index > 0) {\n                buffer.append(\",\");\n            }\n            buffer.append(value.toString());\n        });\n        buffer.append(\"]\");\n        return buffer.toString();\n    };\n    return JSONArray;\n}());\nexports.JSONArray = JSONArray;\n/**\n * Utility class that helps us convert things to and from json (not for normal usage).\n */\nvar JSONHelper = (function () {\n    function JSONHelper() {\n    }\n    JSONHelper.categoryToJSON = function (cat, recursive) {\n        /*\n         {\n         \"categories\":\n         [\n         { id=1,\n         name: \"x\",\n         parent: null,\n         logLevel: \"Error\"\n         },\n         { id=2,\n         name: \"y\",\n         parent: 1,\n         logLevel: \"Error\"\n         }\n         ]\n         }\n         */\n        var arr = new JSONArray();\n        JSONHelper._categoryToJSON(cat, arr, recursive);\n        var object = new JSONObject();\n        object.addArray(\"categories\", arr);\n        return object;\n    };\n    JSONHelper._categoryToJSON = function (cat, arr, recursive) {\n        var object = new JSONObject();\n        object.addNumber(\"id\", cat.id);\n        object.addString(\"name\", cat.name);\n        object.addString(\"logLevel\", LoggerOptions_1.LogLevel[cat.logLevel].toString());\n        if (cat.parent != null) {\n            object.addNumber(\"parent\", cat.parent.id);\n        }\n        else {\n            object.addNull(\"parent\");\n        }\n        arr.add(object);\n        if (recursive) {\n            cat.children.forEach(function (child) {\n                JSONHelper._categoryToJSON(child, arr, recursive);\n            });\n        }\n    };\n    return JSONHelper;\n}());\nexports.JSONHelper = JSONHelper;\n//# sourceMappingURL=JSONHelper.js.map"]}]}