Repository URL to install this package:
|
Version:
5.0.0-rc.13 ▾
|
"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