typescript-logging
Version:
Library for logging, written in typescript, can be used by normal es5+ javascript as well.
274 lines • 8.73 kB
JavaScript
"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