Repository URL to install this package:
|
Version:
6.1.0 ▾
|
"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