ngx-restful-client
Version:
The ultimate Angular library to exquisitely declare and implement the REST APIs you'll use in your application.
123 lines (122 loc) • 4.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var core_1 = require("../core");
var CoreUtil = /** @class */ (function () {
// noinspection JSUnusedLocalSymbols
function CoreUtil() {
throw Error('Utility class');
}
CoreUtil.isRepeatedCharString = function (str) {
var toCheck = str || '';
var index = 0;
var repeated = toCheck.length > 1;
while (repeated && toCheck.length > index + 1) {
if (toCheck.charAt(index) !== toCheck.charAt(++index)) {
repeated = false;
}
}
return repeated;
};
CoreUtil.hasAttributes = function (param) {
return (!!param &&
typeof param !== 'boolean' &&
typeof param !== 'number' &&
typeof param !== 'string' &&
!Array.isArray(param) &&
!this.isDate(param));
};
CoreUtil.isDate = function (param) {
return param instanceof Date;
};
CoreUtil.objectToPlainMap = function (json) {
if (!CoreUtil.hasAttributes(json)) {
throw new Error("An object is required for mapping. Got: " + json);
}
var map = new Map();
Object.keys(json).forEach(function (k) { return CoreUtil.doMapAttributes(map, k, json); });
return map;
};
CoreUtil.doMapAttributes = function (keymap, k, obj) {
var _this = this;
var splitted = k.split('.');
var current = k;
if (1 < splitted.length) {
current = splitted[splitted.length - 1];
}
var value = obj[current];
if (5 < splitted.length) {
core_1.logger.warn('Object with more than 5 levels deep on instances attributes. ' +
'Please, check if it has a recursion (ref/back-ref).');
core_1.logger.warn('If you need to convert more than 5 levels deep, please implement your custom logic to extract your params.' +
' 5 levels it`s all that I can do!');
core_1.logger.debug('Processing was interrupted at: ', value);
return;
}
if (CoreUtil.hasAttributes(value)) {
Object.keys(value).forEach(function (ok) { return _this.doMapAttributes(keymap, k + "." + ok, value); });
}
else {
if (Array.isArray(value)) {
value = value.map(function (i) { return CoreUtil.objectToString(i); });
}
else {
value = CoreUtil.objectToString(value);
}
keymap.set(k, value);
}
};
// noinspection JSUnusedLocalSymbols
CoreUtil.objectToPlainMapOld = function (json) {
if (!CoreUtil.hasAttributes(json)) {
throw new Error("An object is required for mapping. Got: " + json);
}
var map = new Map();
map.set(CoreUtil.PLAIN_MAP_OBJECTS, []);
Object.keys(json).forEach(function (k) { return CoreUtil.doMapAttributesOld(map, k, json); });
map.delete(CoreUtil.PLAIN_MAP_OBJECTS);
return map;
};
CoreUtil.doMapAttributesOld = function (map, key, object) {
if (!CoreUtil.hasAttributes(object[key])) {
var value = object[key];
if (Array.isArray(value)) {
value = value.map(function (i) { return CoreUtil.objectToString(i); });
}
else {
value = CoreUtil.objectToString(value);
}
map.set(key, value);
}
else if (!CoreUtil.wasProcessed(map, object[key])) {
CoreUtil.markAsProcessed(map, object[key]);
Object.keys(object[key]).forEach(function (k) { return CoreUtil.doMapAttributes(map, k, object[key]); });
}
};
CoreUtil.objectToString = function (object) {
var toString;
if (typeof object === 'string') {
toString = object;
}
else if (CoreUtil.isDate(object)) {
toString = object.toISOString();
}
else if (CoreUtil.hasAttributes(object)) {
toString = JSON.stringify(object);
}
else {
toString = "" + object;
}
return toString;
};
CoreUtil.wasProcessed = function (map, objectElement) {
var objects = map.get(CoreUtil.PLAIN_MAP_OBJECTS);
var processed = objects.find(function (o) { return o === objectElement; });
return !!processed;
};
CoreUtil.markAsProcessed = function (map, object) {
map.get(CoreUtil.PLAIN_MAP_OBJECTS).push(object);
};
CoreUtil.PLAIN_MAP_OBJECTS = '#toplainmap:objects#';
return CoreUtil;
}());
exports.CoreUtil = CoreUtil;