| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | const _ = require('lodash')const { createApolloFetch } = require('apollo-fetch')/* global WIKI */module.exports = async (localeCode) => {  WIKI.logger.info(`Fetching locale ${localeCode} from Graph endpoint...`)  try {    const apollo = createApolloFetch({      uri: WIKI.config.graphEndpoint    })    const respStrings = await apollo({      query: `query ($code: String!) {        localization {          strings(code: $code) {            key            value          }        }      }`,      variables: {        code: localeCode      }    })    const strings = _.get(respStrings, 'data.localization.strings', [])    let lcObj = {}    _.forEach(strings, row => {      if (_.includes(row.key, '::')) { return }      if (_.isEmpty(row.value)) {        row.value = row.key      }      _.set(lcObj, row.key.replace(':', '.'), row.value)    })    const locales = await WIKI.cache.get('locales')    if (locales) {      const currentLocale = _.find(locales, ['code', localeCode]) || {}      const existingLocale = await WIKI.models.locales.query().where('code', localeCode).first()      if (existingLocale) {        await WIKI.models.locales.query().patch({          strings: lcObj        }).where('code', localeCode)      } else {        await WIKI.models.locales.query().insert({          code: localeCode,          strings: lcObj,          isRTL: currentLocale.isRTL,          name: currentLocale.name,          nativeName: currentLocale.nativeName,          availability: currentLocale.availability        })      }    } else {      throw new Error('Failed to fetch cached locales list! Restart server to resolve this issue.')    }    await WIKI.lang.refreshNamespaces()    WIKI.logger.info(`Fetching locale ${localeCode} from Graph endpoint: [ COMPLETED ]`)  } catch (err) {    WIKI.logger.error(`Fetching locale ${localeCode} from Graph endpoint: [ FAILED ]`)    WIKI.logger.error(err.message)  }}
 |