From 03a7e20d89973a296c690c57ee2224ce8aff101a Mon Sep 17 00:00:00 2001 From: fletcherist Date: Mon, 30 Jul 2018 18:28:39 +0300 Subject: [PATCH] fix: jsdoc & comments --- src/alice.ts | 127 ++++++++++++------------ src/buttonBuilder.ts | 1 - src/context.ts | 18 ++-- src/middlewares/aliceStateMiddleware.ts | 21 ---- src/scene.ts | 13 ++- src/sessions.ts | 6 +- 6 files changed, 82 insertions(+), 104 deletions(-) delete mode 100644 src/middlewares/aliceStateMiddleware.ts diff --git a/src/alice.ts b/src/alice.ts index 01733df..a4fa4e4 100644 --- a/src/alice.ts +++ b/src/alice.ts @@ -71,11 +71,11 @@ export default class Alice implements IAlice { eventEmitter.subscribe(event, callback) } - /* - * Attach alice middleware to the application - * @param {Function} middleware - function, that receives {context} - * and makes some modifications with it. - */ + /** + * Attach alice middleware to the application + * @param {Function} middleware - function, that receives {context} + * and makes some modifications with it. + */ public use(middleware: (IContext: IContext) => IContext): void { if (!isFunction(middleware)) { throw new Error('Any middleware could only be a function.') @@ -83,37 +83,37 @@ export default class Alice implements IAlice { this.middlewares.push(middleware) } - /* - * Set up the command - * @param {string | Array | regex} name — Trigger for the command - * @param {Function} callback — Handler for the command - */ + /** + * Set up the command + * @param {string | Array | regex} name — Trigger for the command + * @param {Function} callback — Handler for the command + */ public command(name: ICommand, callback: (IContext) => void) { this.commands.add(name, callback) } - /* - * Стартовая команда на начало сессии - */ + /** + * Стартовая команда на начало сессии + */ public welcome(callback: (IContext) => void): void { this.welcomeCallback = callback } - /* - * Если среди команд не нашлось той, - * которую запросил пользователь, - * вызывается этот колбек - */ + /** + * Если среди команд не нашлось той, + * которую запросил пользователь, + * вызывается этот колбек + */ public any(callback: (IContext) => void): void { this.anyCallback = callback } - /* - * Match the request with action handler, - * compose and return a reply. - * @param {Object} req — JSON request from the client - * @param {Function} sendResponse — Express res function while listening on port. - */ + /** + * Match the request with action handler, + * compose and return a reply. + * @param {Object} req — JSON request from the client + * @param {Function} sendResponse — Express res function while listening on port. + */ public async handleRequestBody(req, sendResponse): Promise { /* clear old sessions */ if (this.sessions.length > (this.config.sessionsLimit || DEFAULT_SESSIONS_LIMIT)) { @@ -124,17 +124,17 @@ export default class Alice implements IAlice { const sessionId = selectSessionId(req) const session = this.sessions.findOrCreate(sessionId) - /* - * Initializing context of the request - */ + /** + * Initializing context of the request + */ const ctxDefaultParams = { req, session, sendResponse: sendResponse || null, - /* - * if Alice is listening on express.js port, add this server instance - * to the context - */ + /** + * if Alice is listening on express.js port, add this server instance + * to the context + */ server: this.server || null, scenes: this.scenes, middlewares: this.middlewares, @@ -159,10 +159,10 @@ export default class Alice implements IAlice { return scene.name === session.getData('currentScene') }) - /* - * Checking whether that's the leave scene - * activation trigger - */ + /** + * Checking whether that's the leave scene + * activation trigger + */ if (matchedScene) { if (await matchedScene.isLeaveCommand(context)) { const sceneResponse = await matchedScene.handleSceneRequest( @@ -185,9 +185,9 @@ export default class Alice implements IAlice { } } } else { - /* - * Looking for scene's activational phrases - */ + /** + * Looking for scene's activational phrases + */ let matchedScene = null for (const scene of this.scenes) { const result = await scene.isEnterCommand(context) @@ -211,31 +211,31 @@ export default class Alice implements IAlice { } const requestedCommands = await this.commands.search(context) - /* - * Если новая сессия, то запускаем стартовую команду - */ + /** + * Если новая сессия, то запускаем стартовую команду + */ if (req.session.new && this.welcomeCallback) { - /* - * Patch context with middlewares - */ + /** + * Patch context with middlewares + */ if (this.welcomeCallback) { return await this.welcomeCallback(context) } } - /* - * Команда нашлась в списке. - * Запускаем её обработчик. - */ + /** + * Команда нашлась в списке. + * Запускаем её обработчик. + */ if (requestedCommands.length !== 0) { const requestedCommand: ICommand = requestedCommands[0] context.command = requestedCommand return await requestedCommand.callback(context) } - /* - * Такой команды не было зарегестрировано. - * Переходим в обработчик исключений - */ + /** + * Такой команды не было зарегестрировано. + * Переходим в обработчик исключений + */ if (!this.anyCallback) { throw new Error( [ @@ -247,9 +247,9 @@ export default class Alice implements IAlice { return await this.anyCallback(context) } - /* - * Same as handleRequestBody, but syntax shorter - */ + /** + * Same as handleRequestBody, but syntax shorter + */ public async handleRequest( req: WebhookRequest, sendResponse?: (res: WebhookResponse) => void @@ -267,15 +267,14 @@ export default class Alice implements IAlice { this.timeoutCallback(new Context({ req, sendResponse })) }) } - /* - * Метод создаёт сервер, который слушает указанный порт. - - * Когда на указанный URL приходит POST запрос, управление - * передаётся в @handleRequestBody - * - * При получении ответа от @handleRequestBody, результат - * отправляется обратно. - */ + /** + * Метод создаёт сервер, который слушает указанный порт. + * Когда на указанный URL приходит POST запрос, управление + * передаётся в @handleRequestBody + * + * При получении ответа от @handleRequestBody, результат + * отправляется обратно. + */ public async listen(webhookPath = '/', port = 80, callback?: () => void) { return new Promise(resolve => { const app = express() diff --git a/src/buttonBuilder.ts b/src/buttonBuilder.ts index 52dd232..131ba85 100644 --- a/src/buttonBuilder.ts +++ b/src/buttonBuilder.ts @@ -43,4 +43,3 @@ export default class ButtonBuilder { return this } } - diff --git a/src/context.ts b/src/context.ts index fb3bf5b..9b6380e 100644 --- a/src/context.ts +++ b/src/context.ts @@ -144,10 +144,10 @@ export default class Context implements IContext { } private _createReply(replyMessage): WebhookResponse { - /* - * Если @replyMessage — string, - * то заворачиваем в стандартную форму. - */ + /** + * Если @replyMessage — string, + * то заворачиваем в стандартную форму. + */ if (typeof replyMessage === 'string') { replyMessage = this.replyBuilder .text(replyMessage) @@ -162,11 +162,13 @@ export default class Context implements IContext { } private _sendReply(replyMessage: WebhookResponse): any { - if (this._isReplied) return + if (this._isReplied) { + return + } this._isReplied = true - /* - * That fires when listening on port. - */ + /** + * That fires when listening on port. + */ if (typeof this.sendResponse === 'function') { eventEmitter.dispatch(EVENT_MESSAGE_SENT, { data: replyMessage.response.text, diff --git a/src/middlewares/aliceStateMiddleware.ts b/src/middlewares/aliceStateMiddleware.ts deleted file mode 100644 index 8a59d25..0000000 --- a/src/middlewares/aliceStateMiddleware.ts +++ /dev/null @@ -1,21 +0,0 @@ -export default function aliceStateMiddleware() { - const store = new Map() - - return async ctx => { - const key = ctx.session.sessionId - let { state } = store.get(key) || { state: {} } - Object.defineProperty(ctx, 'state', { - get() { - return state - }, - set(value) { - state = Object.assign({}, value) - }, - }) - store.set(key, { - state, - }) - - return ctx - } -} diff --git a/src/scene.ts b/src/scene.ts index b293ab5..9d3cce8 100644 --- a/src/scene.ts +++ b/src/scene.ts @@ -33,9 +33,9 @@ export default class Scene extends Alice { /* enter, leave, etc */ } - /* - * Trigger to activate the scene - */ + /** + * Trigger to activate the scene + */ public enter(name, callback) { if (!name) { throw new Error('Enter command name is not specified') @@ -44,9 +44,9 @@ export default class Scene extends Alice { this.enterCommand.add(name, callback) } - /* - * Trigger to leave the scene - */ + /** + * Trigger to leave the scene + */ public leave(name, callback) { if (!name) { throw new Error('Leave command name is not specified') @@ -109,4 +109,3 @@ export default class Scene extends Alice { return Promise.resolve() } } - diff --git a/src/sessions.ts b/src/sessions.ts index 720c840..4b9f035 100644 --- a/src/sessions.ts +++ b/src/sessions.ts @@ -48,9 +48,9 @@ class Sessions { return false } - /* - * Remove all sessions - */ + /** + * Remove all sessions + */ public flush() { this.sessions = {} }