UNPKG

@ali-i18n-fe/dada-component

Version:
60 lines (52 loc) 2.01 kB
const axios = require("axios"); const i18NCache = {}; const promiseCache = {}; const downloadMedusaCopyPackage = async medusaAppName => { const fetchUrl = `http://mcms.alibaba-inc.com/info/allResources.htm?type=new&appName=${medusaAppName}`; console.log(`download mcms ${medusaAppName} package...`); const { data: originData } = await axios.get(fetchUrl, { credentials: "include" }); return originData; }; const parseMedusaCopyPackage = medusaCopyPackage => { const I18NCopyPackage = { max: {}, min: {} }; Object.keys(medusaCopyPackage).forEach(originKey => { const language = originKey.slice(0, 2).toLowerCase(); // en const medusaKey = originKey.slice(3); // app_title const medusaValue = medusaCopyPackage[originKey]; if (!I18NCopyPackage[language]) { I18NCopyPackage[language] = {}; } I18NCopyPackage[language][medusaKey] = medusaCopyPackage[originKey]; const originMaxValue = I18NCopyPackage.max[medusaKey] || ""; const newMaxValue = originMaxValue.length > medusaValue.length ? originMaxValue : medusaValue; I18NCopyPackage.max[medusaKey] = newMaxValue; const originMinValue = I18NCopyPackage.min[medusaKey] || new Array(999).fill("foo").join(""); const newMinValue = originMinValue.length < medusaValue.length ? originMinValue : medusaValue; I18NCopyPackage.min[medusaKey] = newMinValue; }); return I18NCopyPackage; }; const getI18NCopyPackage = async medusaAppName => { if (medusaAppName in i18NCache) { return i18NCache[medusaAppName]; } let promise = promiseCache[medusaAppName]; if(!promise){ promise = downloadMedusaCopyPackage(medusaAppName); promiseCache[medusaAppName] = promise } const medusaCopyPackage = await promise; const I18NCopyPackage = parseMedusaCopyPackage(medusaCopyPackage); I18NCopyPackage.medusaAppName = medusaAppName; i18NCache[medusaAppName] = I18NCopyPackage; return I18NCopyPackage; }; exports.getI18NCopyPackage = getI18NCopyPackage;