UNPKG

@ngha/transform-object

Version:

New object is transformed by object pattern

190 lines (179 loc) 7.03 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core')) : typeof define === 'function' && define.amd ? define('@ngha/transform-object', ['exports', '@angular/core'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ngha = global.ngha || {}, global.ngha['transform-object'] = {}), global.ng.core)); }(this, (function (exports, core) { 'use strict'; var TransformObjectService = /** @class */ (function () { function TransformObjectService() { this.get = function (object, path, defaultValue) { var travel = function (regexp) { return String.prototype.split .call(path, regexp) .filter(Boolean) .reduce(function (res, key) { return (res !== null && res !== undefined ? res[key] : res); }, object); }; var result = travel(/[,[\]]+?/) || travel(/[,[\].]+?/); return result === undefined || result === object ? defaultValue : result; }; this.mapValue = function (object, iteratee) { object = Object(object); var result = {}; Object.keys(object).forEach(function (key) { result[key] = iteratee(object[key], key, object); }); return result; }; // private has = (obj, key) => { // const keyParts = key.split('.'); // // return !!obj && ( // keyParts.length > 1 // ? this.has(obj[key.split('.')[0]], keyParts.slice(1).join('.')) // : hasOwnProperty.call(obj, key) // ); // }; } /** * transformObject map object to new object base on object pattern * * @param value * @param objPattern * @param objDefaultValue * @example * dataProvider = [ { 'id': '005564a8-2b3d-4f87-9e19-290526ac5e26', 'username': 'a@mail.com', 'emailAddress': 'a@mail.com', 'fullName': 'John', 'status': 'ACTIVE', 'roleId': '09323760-ba53-42e2-a961-840c75726f93', 'role': { 'id': '09323760-ba53-42e2-a961-840c75726f93', 'code': 'USER' }, 'createdDate': '2020-09-07T03:01:15.587Z' }, { 'id': '91458c99-271b-408d-b0bc-9e23384e5c5f', 'username': 'b@mail.com', 'emailAddress': 'b@mail.com', 'fullName': 'test2', 'status': 'PENDING', 'roleId': 'f34ebf72-f55d-4ad4-b7ea-72f2711bf7f8', 'role': { 'id': 'f34ebf72-f55d-4ad4-b7ea-72f2711bf7f8', 'code': 'PARTNER' }, 'createdDate': '2020-09-01T08:27:47.237Z' }, { 'id': '13d8b6a7-d7da-49b0-8a98-0bad8e6117cc', 'username': 'c@mail.com', 'emailAddress': 'c@mail.com', 'fullName': 'test111', 'status': 'PENDING', 'roleId': '09323760-ba53-42e2-a961-840c75726f93', 'role': { 'id': '09323760-ba53-42e2-a961-840c75726f93', 'code': 'USER' }, 'createdDate': '2020-09-01T08:27:04.553Z' } ]; objectPattern = { index: 'id', name: 'fullName', title: 'role.code' } transformObject(dataProvider[0], objectPattern) => { "index": "005564a8-2b3d-4f87-9e19-290526ac5e26", "name": "John", "title": "USER" } transformObject(dataProvider, objectPattern) => [ { "index": "005564a8-2b3d-4f87-9e19-290526ac5e26", "name": "John", "title": "USER" }, { "index": "91458c99-271b-408d-b0bc-9e23384e5c5f", "name": "test2", "title": "PARTNER" }, { "index": "13d8b6a7-d7da-49b0-8a98-0bad8e6117cc", "name": "test111", "title": "USER" } ] * */ TransformObjectService.prototype.transformObject = function (value, objPattern, objDefaultValue) { var _this = this; return Array.isArray(value) ? value === null || value === void 0 ? void 0 : value.map(function (val) { return _this.mapValue(objPattern, function (v, k) { return _this.get(val, v, objDefaultValue && _this.get(objDefaultValue, k, null)); }); }) : this.mapValue(objPattern, function (v, k) { return _this.get(value, v, objDefaultValue && _this.get(objDefaultValue, k, null)); }); }; return TransformObjectService; }()); TransformObjectService.decorators = [ { type: core.Injectable } ]; var TransformObjectPipe = /** @class */ (function () { function TransformObjectPipe(transformObjectService) { this.transformObjectService = transformObjectService; } TransformObjectPipe.prototype.transform = function (object, objectKey, objDefaultValue) { return object && this.transformObjectService.transformObject(object, objectKey, objDefaultValue) || null; }; return TransformObjectPipe; }()); TransformObjectPipe.decorators = [ { type: core.Pipe, args: [{ name: 'transformObject' },] } ]; TransformObjectPipe.ctorParameters = function () { return [ { type: TransformObjectService } ]; }; var TransformObjectsPipe = /** @class */ (function () { function TransformObjectsPipe(transformObjectService) { this.transformObjectService = transformObjectService; } TransformObjectsPipe.prototype.transform = function (objects, objectKey, objDefaultValue) { return objects && this.transformObjectService.transformObject(objects, objectKey, objDefaultValue) || null; }; return TransformObjectsPipe; }()); TransformObjectsPipe.decorators = [ { type: core.Pipe, args: [{ name: 'transformObjects' },] } ]; TransformObjectsPipe.ctorParameters = function () { return [ { type: TransformObjectService } ]; }; var TransformObjectModule = /** @class */ (function () { function TransformObjectModule() { } return TransformObjectModule; }()); TransformObjectModule.decorators = [ { type: core.NgModule, args: [{ declarations: [TransformObjectPipe, TransformObjectsPipe], exports: [TransformObjectPipe, TransformObjectsPipe], providers: [TransformObjectService] },] } ]; /** * Generated bundle index. Do not edit. */ exports.TransformObjectModule = TransformObjectModule; exports.TransformObjectPipe = TransformObjectPipe; exports.TransformObjectService = TransformObjectService; exports.TransformObjectsPipe = TransformObjectsPipe; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=ngha-transform-object.umd.js.map