emails-renderer/webpack-utils/intl-json-loader/index.js
2019-05-10 01:53:28 +03:00

35 lines
897 B
JavaScript

const path = require('path');
module.exports = function(input) {
this.cacheable && this.cacheable();
const moduleId = this.context
.replace(path.join(this.rootContext, 'src'), '')
.replace(/^\/|\/$/g, '')
.replace(/\//g, '.');
const json = JSON.parse(input);
const result = JSON.stringify(Object.keys(json).reduce((translations, key) => {
const value = json[key];
const id = `${moduleId}.${key}`;
if (typeof value === 'object') {
translations[key] = {
...value,
id,
};
} else {
translations[key] = {
id,
defaultMessage: value,
};
}
return translations;
}, {}));
return `
import { defineMessages } from 'react-intl';
export default defineMessages(${result});
`;
};