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 / extract.js
Size: Mime:
"use strict";

var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.extractDefaultMessages = exports.extractDefaultMessagesFromFile = void 0;

var _globby = _interopRequireDefault(require("globby"));

var _deepmerge = _interopRequireDefault(require("deepmerge"));

var babel = _interopRequireWildcard(require("@babel/core"));

var _util = require("util");

const transformFile = (0, _util.promisify)(babel.transformFile);
/**
 * Extract translations from source code
 *
 * @module @doodle/i18n/disty/onesky/extract
 */

/**
 * Extract react-intl's `defineMessages` message definition from Javascript file by parsing the AST
 *
 * @param {String} file
 * @returns {Promise<object>}
 * @async
 */

const extractDefaultMessagesFromFile = async file => {
  const {
    metadata = {}
  } = await transformFile(file, {
    plugins: ['react-intl']
  });
  const {
    messages = []
  } = metadata['react-intl'];
  return messages.reduce((extracted, message) => {
    extracted[message.id] = message.defaultMessage;
    return extracted;
  }, {});
};
/**
 * Extract react-intl's `defineMessages` message definitions from source files
 *
 * @param {string} sourcePattern
 * @returns {Promise<object>}
 * @async
 */


exports.extractDefaultMessagesFromFile = extractDefaultMessagesFromFile;

const extractDefaultMessages = async sourcePattern => {
  const files = await (0, _globby.default)(`${sourcePattern}`);
  const messagesArray = await Promise.all(files.map(extractDefaultMessagesFromFile));
  return _deepmerge.default.all(messagesArray);
};

exports.extractDefaultMessages = extractDefaultMessages;
//# sourceMappingURL=extract.js.map