UNPKG

12 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/BotsRouter.js"],"names":["BotsRouter","routes","log","warn","bot","client","use","trace","map","c","path","filter","Boolean","router","UniversalRouter","middleware","bind","ctx","next","props","getPathFromEvent","resolve","res","str","url","parse","pathname","queryString","query","length","qs","decode","undefined","session","isMessageCallback","nextRoute","parsePathnameAndQuery","getMessageCallbackData","isMessageCommand","getMessageCommand","isMessageStartsWithEmoji","emojies","getMessageStartsEmojiArray","join","defaultRoute","user","locale","app","module","i18Module","instance","anyLocale","throwError","i18","botsModule","debug","nextRedirect","Err","isDev","info","JSON","stringify","redirect","Bluebird","delay","provide","req","t","data","Object","keys","err","error","Module"],"mappings":"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","sourcesContent":["import { isDev } from '@lskjs/env';\nimport Err from '@lskjs/err';\nimport Module from '@lskjs/module';\nimport Bluebird from 'bluebird';\nimport qs from 'querystring';\nimport UniversalRouter from 'universal-router';\nimport url from 'url';\n\nexport class BotsRouter extends Module {\n // debug = true;\n async init() {\n await super.init();\n if (!this.routes) {\n this.log.warn('!routes');\n return;\n }\n if (!this.bot.client) {\n this.log.warn('!client');\n return;\n }\n if (!this.bot.client.use) {\n this.log.warn('!client.use');\n return;\n }\n this.log.trace('routes', this.routes.map((c) => c.path).filter(Boolean));\n this.router = new UniversalRouter(this.routes);\n this.bot.client.use(this.middleware.bind(this));\n }\n\n async middleware(ctx, next) {\n // console.log('ctx.session.nextRoute', ctx.session.nextRoute);\n // console.log('ctx.session.nextRoute', ctx.session.defaultRoute);\n const props = this.getPathFromEvent(ctx);\n // console.log('routerPath', { routerPath });\n const res = await this.resolve({ ctx, ...props });\n // console.log('middleware res', props, res);\n // await this.redirect(ctx, routerPath);\n return next(ctx);\n }\n\n parsePathnameAndQuery(str) {\n const { pathname, query: queryString } = url.parse(str);\n const query = queryString && queryString.length ? qs.decode(queryString) : undefined;\n\n return {\n pathname,\n query,\n };\n }\n\n getPathFromEvent(ctx) {\n const { session = {} } = ctx;\n if (this.bot.isMessageCallback(ctx)) {\n delete session.nextRoute;\n return this.parsePathnameAndQuery(this.bot.getMessageCallbackData(ctx));\n }\n if (this.bot.isMessageCommand(ctx)) {\n delete session.nextRoute;\n return this.parsePathnameAndQuery(this.bot.getMessageCommand(ctx));\n }\n if (session.nextRoute) {\n const { nextRoute } = session;\n delete session.nextRoute;\n if (typeof nextRoute === 'string') return this.parsePathnameAndQuery(nextRoute);\n return nextRoute;\n }\n if (this.bot.isMessageStartsWithEmoji(ctx)) {\n const emojies = this.bot.getMessageStartsEmojiArray(ctx);\n if (!emojies.length) return null;\n return { path: `/${emojies.join('/')}` };\n }\n return session.defaultRoute || null;\n }\n\n // redirect(ctx, routerPath) {\n // ctx.session.routerPath = routerPath;\n // return this.resolve(ctx);\n // }\n\n async provide({ user: { locale } = {} }) {\n const i18Module = await this.app.module('i18');\n const i18 = await i18Module.instance(locale, { anyLocale: true, throwError: false });\n return {\n app: this.app,\n router: this,\n botsModule: this.app.botsModule,\n bot: this.bot,\n i18,\n module: this.app.module,\n log: this.log,\n };\n }\n\n async resolve({ pathname, path, query = {}, ctx } = {}) {\n // eslint-disable-next-line no-param-reassign\n if (!path && pathname) path = pathname;\n // const { routerPath: pathname } = ctx.session;\n if (!path) {\n if (this.debug) this.log.warn('!path');\n return null;\n }\n if (!ctx) {\n if (this.debug) this.log.warn('!ctx');\n return null;\n }\n if (this.debug) this.log.trace('resolve', path);\n ctx.nextRedirect = async (path, query) => {\n if (!path) throw new Err('!path');\n let props = {};\n if (typeof path === 'string') {\n props = { path };\n } else {\n props = path;\n }\n if (!props.query && query) props.query = query;\n if (!ctx.session) ctx.session = {};\n ctx.session.nextRoute = props;\n if (isDev) {\n this.log.info(`nextRedirect => ${JSON.stringify(props)}`);\n // await Bluebird.delay(1000);\n }\n return props;\n };\n ctx.redirect = async (path, query) => {\n if (!path) throw new Err('!path');\n let props = {};\n if (typeof path === 'string') {\n props = { path };\n } else {\n props = path;\n }\n if (!props.query && query) props.query = query;\n if (isDev) {\n this.log.info(`redirect => ${props.path || props.pathname} ${JSON.stringify(props.query)} [delay] ${1000}`);\n await Bluebird.delay(1000);\n }\n return this.resolve({ ctx, ...props });\n };\n const provide = await this.provide({});\n const req = {\n path,\n pathname: path,\n bot: provide.bot,\n log: this.log,\n ctx,\n query,\n i18: provide.i18,\n t: provide.i18 && provide.i18.t,\n };\n const data = {\n ...provide,\n req,\n path,\n pathname: path,\n query,\n ctx,\n };\n if (this.debug) this.log.trace('context', Object.keys(data));\n return this.router.resolve(data).catch((err) => {\n this.log.error('err', err);\n throw err;\n });\n }\n}\n\nexport default BotsRouter;\n"],"file":"BotsRouter.js"}
\No newline at end of file