Repository URL to install this package:
|
Version:
5.0.0-rc.13 ▾
|
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.flatten = exports.unflatten = void 0;
var _deepmerge = _interopRequireDefault(require("deepmerge"));
/**
* Transform translation files between flat JSON and hierarchical JSON
*
* @module @doodle/i18n/disty/onesky/transform
*/
/**
* Unflatten a messages object
*
* @param {object} messages a flat messages object
* @returns {object} a hierarchical messages object
*/
const unflatten = messages => {
const hierarchicalMessages = Object.entries(messages).map(([key, value]) => {
const keyComponents = key.split('.');
const leafKeyComponent = keyComponents.pop();
return keyComponents.reverse().reduce((hierarchicalMessage, keyComponent) => ({
[keyComponent]: hierarchicalMessage
}), {
[leafKeyComponent]: value
});
});
return _deepmerge.default.all(hierarchicalMessages);
};
/**
* Flatten a messages object
*
* @param {object} messages hierarchical object
* @return {object} a flat messages object
*/
exports.unflatten = unflatten;
const flatten = messages => Object.entries(messages).reduce((result, [key, value]) => {
if (typeof value === 'object') {
Object.entries(flatten(value)).forEach(([flatKey, flatValue]) => {
result[`${key}.${flatKey}`] = flatValue;
});
} else {
result[key] = value;
}
return result;
}, {});
exports.flatten = flatten;
//# sourceMappingURL=transform.js.map