UNPKG

typescript-logging

Version:

Library for logging, written in typescript, can be used by normal es5+ javascript as well.

274 lines 8.73 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); /** * Module containing bunch of JSON related stuff. */ var LoggerOptions_1 = require("../log/LoggerOptions"); var DataStructures_1 = require("./DataStructures"); var JSONTypeImpl = (function () { function JSONTypeImpl(value) { this._value = value; } JSONTypeImpl.prototype.getValue = function () { return this._value; }; JSONTypeImpl.prototype.toString = function () { var value = this.getValue(); if (value != null) { return value.toString(); } return "null"; }; return JSONTypeImpl; }()); var JSONBooleanType = (function (_super) { __extends(JSONBooleanType, _super); function JSONBooleanType(value) { return _super.call(this, value) || this; } return JSONBooleanType; }(JSONTypeImpl)); var JSONNumberType = (function (_super) { __extends(JSONNumberType, _super); function JSONNumberType(value) { return _super.call(this, value) || this; } return JSONNumberType; }(JSONTypeImpl)); var JSONStringType = (function (_super) { __extends(JSONStringType, _super); function JSONStringType(value) { return _super.call(this, value) || this; } JSONStringType.prototype.toString = function () { var value = this.getValue(); if (value != null) { return JSON.stringify(value.toString()); } return "null"; }; return JSONStringType; }(JSONTypeImpl)); var JSONObjectType = (function (_super) { __extends(JSONObjectType, _super); function JSONObjectType(value) { return _super.call(this, value) || this; } return JSONObjectType; }(JSONTypeImpl)); var JSONArrayType = (function (_super) { __extends(JSONArrayType, _super); function JSONArrayType(value) { return _super.call(this, value) || this; } JSONArrayType.prototype.toString = function () { var value = this.getValue(); if (value != null) { return value.toString(); } return "null"; }; return JSONArrayType; }(JSONTypeImpl)); var JSONNullType = (function (_super) { __extends(JSONNullType, _super); function JSONNullType() { return _super.call(this, null) || this; } JSONNullType.prototype.toString = function () { return "null"; }; return JSONNullType; }(JSONTypeImpl)); var JSONTypeConverter = (function () { function JSONTypeConverter() { } JSONTypeConverter.toJSONType = function (value) { if (value === null) { return new JSONNullType(); } if (typeof value === "string") { return new JSONStringType(value); } if (typeof value === "number") { return new JSONNumberType(value); } if (typeof value === "boolean") { return new JSONBooleanType(value); } if (value instanceof JSONObject) { return new JSONObjectType(value); } throw new Error("Type not supported for value: " + value); }; return JSONTypeConverter; }()); var JSONObject = (function () { function JSONObject() { this.values = new DataStructures_1.SimpleMap(); } JSONObject.prototype.addBoolean = function (name, value) { this.checkName(name); JSONObject.checkValue(value); this.values.put(name, new JSONBooleanType(value)); return this; }; JSONObject.prototype.addNumber = function (name, value) { this.checkName(name); JSONObject.checkValue(value); this.values.put(name, new JSONNumberType(value)); return this; }; JSONObject.prototype.addString = function (name, value) { this.checkName(name); JSONObject.checkValue(value); this.values.put(name, new JSONStringType(value)); return this; }; JSONObject.prototype.addNull = function (name) { this.checkName(name); this.values.put(name, new JSONNullType()); return this; }; JSONObject.prototype.addArray = function (name, array) { this.checkName(name); JSONObject.checkValue(array); if (array == null) { throw new Error("Cannot add array as null"); } this.values.put(name, new JSONArrayType(array)); return this; }; JSONObject.prototype.addObject = function (name, object) { this.checkName(name); JSONObject.checkValue(object); if (object == null) { throw new Error("Cannot add object as null"); } this.values.put(name, new JSONObjectType(object)); return this; }; JSONObject.prototype.toString = function (pretty) { var _this = this; if (pretty === void 0) { pretty = false; } var comma = false; var buffer = new DataStructures_1.StringBuilder(); buffer.append("{"); this.values.keys().forEach(function (key) { var value = _this.values.get(key); if (value != null) { if (comma) { buffer.append(","); } buffer.append('"').append(key).append('":').append(value.toString()); comma = true; } }); buffer.append("}"); return buffer.toString(); }; JSONObject.prototype.checkName = function (name) { if (name == null || name === undefined) { throw new Error("Name is null or undefined"); } if (this.values.exists(name)) { throw new Error("Name " + name + " is already present for this object"); } }; JSONObject.checkValue = function (value) { if (value === undefined) { throw new Error("Value is undefined"); } }; return JSONObject; }()); exports.JSONObject = JSONObject; var JSONArray = (function () { function JSONArray() { this.objects = []; } JSONArray.prototype.add = function (object) { if (object === undefined) { throw new Error("Object is not allowed to be undefined"); } this.objects.push(JSONTypeConverter.toJSONType(object)); return this; }; JSONArray.prototype.toString = function (pretty) { if (pretty === void 0) { pretty = false; } var buffer = new DataStructures_1.StringBuilder(); buffer.append("["); this.objects.forEach(function (value, index) { if (index > 0) { buffer.append(","); } buffer.append(value.toString()); }); buffer.append("]"); return buffer.toString(); }; return JSONArray; }()); exports.JSONArray = JSONArray; /** * Utility class that helps us convert things to and from json (not for normal usage). */ var JSONHelper = (function () { function JSONHelper() { } JSONHelper.categoryToJSON = function (cat, recursive) { /* { "categories": [ { id=1, name: "x", parent: null, logLevel: "Error" }, { id=2, name: "y", parent: 1, logLevel: "Error" } ] } */ var arr = new JSONArray(); JSONHelper._categoryToJSON(cat, arr, recursive); var object = new JSONObject(); object.addArray("categories", arr); return object; }; JSONHelper._categoryToJSON = function (cat, arr, recursive) { var object = new JSONObject(); object.addNumber("id", cat.id); object.addString("name", cat.name); object.addString("logLevel", LoggerOptions_1.LogLevel[cat.logLevel].toString()); if (cat.parent != null) { object.addNumber("parent", cat.parent.id); } else { object.addNull("parent"); } arr.add(object); if (recursive) { cat.children.forEach(function (child) { JSONHelper._categoryToJSON(child, arr, recursive); }); } }; return JSONHelper; }()); exports.JSONHelper = JSONHelper; //# sourceMappingURL=JSONHelper.js.map