UNPKG

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
"use strict"; 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;