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 / 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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));

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

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

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

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

var _util = require("util");

var 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
 */

var extractDefaultMessagesFromFile = /*#__PURE__*/function () {
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(file) {
    var _yield$transformFile, _yield$transformFile$, metadata, _metadata$reactIntl$, messages;

    return _regenerator.default.wrap(function _callee$(_context) {
      while (1) {
        switch (_context.prev = _context.next) {
          case 0:
            _context.next = 2;
            return transformFile(file, {
              plugins: ['react-intl']
            });

          case 2:
            _yield$transformFile = _context.sent;
            _yield$transformFile$ = _yield$transformFile.metadata;
            metadata = _yield$transformFile$ === void 0 ? {} : _yield$transformFile$;
            _metadata$reactIntl$ = metadata['react-intl'].messages, messages = _metadata$reactIntl$ === void 0 ? [] : _metadata$reactIntl$;
            return _context.abrupt("return", messages.reduce(function (extracted, message) {
              extracted[message.id] = message.defaultMessage;
              return extracted;
            }, {}));

          case 7:
          case "end":
            return _context.stop();
        }
      }
    }, _callee);
  }));

  return function extractDefaultMessagesFromFile(_x) {
    return _ref.apply(this, arguments);
  };
}();
/**
 * Extract react-intl's `defineMessages` message definitions from source files
 *
 * @param {string} sourcePattern
 * @returns {Promise<object>}
 * @async
 */


exports.extractDefaultMessagesFromFile = extractDefaultMessagesFromFile;

var extractDefaultMessages = /*#__PURE__*/function () {
  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(sourcePattern) {
    var files, messagesArray;
    return _regenerator.default.wrap(function _callee2$(_context2) {
      while (1) {
        switch (_context2.prev = _context2.next) {
          case 0:
            _context2.next = 2;
            return (0, _globby.default)("".concat(sourcePattern));

          case 2:
            files = _context2.sent;
            _context2.next = 5;
            return Promise.all(files.map(extractDefaultMessagesFromFile));

          case 5:
            messagesArray = _context2.sent;
            return _context2.abrupt("return", _deepmerge.default.all(messagesArray));

          case 7:
          case "end":
            return _context2.stop();
        }
      }
    }, _callee2);
  }));

  return function extractDefaultMessages(_x2) {
    return _ref2.apply(this, arguments);
  };
}();

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