UNPKG

@berish/serber

Version:

Serializable and deserializable adaptive adapter with plugins

56 lines 3.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const typeof_1 = require("@berish/typeof"); const const_1 = require("../const"); const getKeys_1 = require("../getKeys"); exports.objectPlugin = { isForSerialize: obj => { return typeof_1.default(obj) === 'object'; }, isForDeserialize: obj => { return typeof_1.default(obj) === 'object'; }, serialize: (obj, params) => { params[const_1.SERBER_PATH_SYMBOL] = params[const_1.SERBER_PATH_SYMBOL] || []; params[const_1.SERBER_KEY_SYMBOL] = params[const_1.SERBER_KEY_SYMBOL] || ''; return getKeys_1.getKeys(obj).reduce((prev, key) => { params[const_1.SERBER_PARENT_OBJECT_SYMBOL] = obj; params[const_1.SERBER_KEY_SYMBOL] = key; return Object.assign(Object.assign({}, prev), { [key]: params[const_1.SERBER_INSTANCE_SYMBOL].serialize(obj[key], Object.assign(Object.assign({}, params), { [const_1.SERBER_PATH_SYMBOL]: params[const_1.SERBER_PATH_SYMBOL].concat(key) })) }); }, {}); }, serializeAsync: (obj, params) => { params[const_1.SERBER_PATH_SYMBOL] = params[const_1.SERBER_PATH_SYMBOL] || []; params[const_1.SERBER_KEY_SYMBOL] = params[const_1.SERBER_KEY_SYMBOL] || ''; return getKeys_1.getKeys(obj).reduce((prev, key) => { params[const_1.SERBER_PARENT_OBJECT_SYMBOL] = obj; params[const_1.SERBER_KEY_SYMBOL] = key; return Promise.all([ prev, params[const_1.SERBER_INSTANCE_SYMBOL].serializeAsync(obj[key], Object.assign(Object.assign({}, params), { [const_1.SERBER_PATH_SYMBOL]: params[const_1.SERBER_PATH_SYMBOL].concat(key) })), ]).then(([prev, value]) => (Object.assign(Object.assign({}, prev), { [key]: value }))); }, Promise.resolve({})); }, deserialize: (obj, params) => { params[const_1.SERBER_PATH_SYMBOL] = params[const_1.SERBER_PATH_SYMBOL] || []; params[const_1.SERBER_KEY_SYMBOL] = params[const_1.SERBER_KEY_SYMBOL] || ''; return getKeys_1.getKeys(obj).reduce((prev, key) => { params[const_1.SERBER_PARENT_OBJECT_SYMBOL] = obj; params[const_1.SERBER_KEY_SYMBOL] = key; return Object.assign(Object.assign({}, prev), { [key]: params[const_1.SERBER_INSTANCE_SYMBOL].deserialize(obj[key], Object.assign(Object.assign({}, params), { [const_1.SERBER_PATH_SYMBOL]: params[const_1.SERBER_PATH_SYMBOL].concat(key) })) }); }, {}); }, deserializeAsync: (obj, params) => { params[const_1.SERBER_PATH_SYMBOL] = params[const_1.SERBER_PATH_SYMBOL] || []; params[const_1.SERBER_KEY_SYMBOL] = params[const_1.SERBER_KEY_SYMBOL] || ''; return getKeys_1.getKeys(obj).reduce((prev, key) => { params[const_1.SERBER_PARENT_OBJECT_SYMBOL] = obj; params[const_1.SERBER_KEY_SYMBOL] = key; return Promise.all([ prev, params[const_1.SERBER_INSTANCE_SYMBOL].deserializeAsync(obj[key], Object.assign(Object.assign({}, params), { [const_1.SERBER_PATH_SYMBOL]: params[const_1.SERBER_PATH_SYMBOL].concat(key) })), ]).then(([prev, value]) => (Object.assign(Object.assign({}, prev), { [key]: value }))); }, Promise.resolve({})); }, }; //# sourceMappingURL=object.js.map