waibu-mpa
Version:
MPA support for Waibu Framework
41 lines (39 loc) • 1.94 kB
JavaScript
const wmpa = {
url: '/wmpa.js',
method: 'GET',
noCacheReq: true,
handler: async function (req, reply) {
const { get, trim, cloneDeep } = this.app.lib._
const { getPluginPrefix } = this.app.waibu
const { importModule } = this.app.bajo
const { types: formatTypes, formats } = await importModule('bajo:/lib/formats.js', { asDefaultImport: false })
const prefix = {
virtual: `/${getPluginPrefix('waibuStatic')}/${this.app.waibu.config.prefixVirtual}`,
asset: `/${getPluginPrefix('waibuStatic')}`,
main: `/${getPluginPrefix('main')}`
}
const mpaPrefix = get(this, 'app.waibuMpa.config.waibu.prefix')
const renderUrl = '/' + trim(`/${mpaPrefix}/component/render`, '/')
let accessTokenUrl = ''
let api = {}
if (this.app.sumba) {
const sumbaPrefix = get(this, 'app.sumba.config.waibu.prefix')
accessTokenUrl = '/' + trim(`/${mpaPrefix}/${sumbaPrefix}/access-token`, '/')
api = {
prefix: this.app.waibuRestApi ? this.app.waibuRestApi.config.waibu.prefix : '',
ext: this.app.waibuRestApi ? (this.app.waibuRestApi.config.format.asExt ? '.json' : '') : '',
headerKey: this.app.waibuRestApi ? this.app.sumba.config.auth.common.jwt.headerKey : '',
dataKey: this.app.waibuRestApi ? this.app.waibuRestApi.config.responseKey.data : '',
rateLimitDelay: 2000,
rateLimitRetry: 2
}
}
const formatOpts = cloneDeep(this.app.bajo.config.intl.format)
formatOpts.datetime.timeZone = get(req, 'site.setting.sumba.timeZone', 'UTC')
formatOpts.date.timeZone = get(req, 'site.setting.sumba.timeZone', 'UTC')
formatOpts.time.timeZone = get(req, 'site.setting.sumba.timeZone', 'UTC')
const params = { prefix, accessTokenUrl, renderUrl, api, formatOpts, formatTypes, formats }
return await reply.view('waibuMpa.template:/wmpa.js', params)
}
}
export default wmpa