@ngha/transform-object
Version:
New object is transformed by object pattern
190 lines (179 loc) • 7.03 kB
JavaScript
(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