Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/i18n / dist / onesky / transform.js
Size: Mime:
"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