From d0ba9b21dcc90dc4a0d93a50025a98ef30084b02 Mon Sep 17 00:00:00 2001 From: Laurent Leclerc-Poulin Date: Thu, 24 Feb 2022 12:55:03 -0500 Subject: [PATCH] chore(dev): added unused import rule to eslint --- .eslintrc.js | 11 ++- package.json | 2 + packages/board/src/chat/chat.ts | 2 +- .../board/src/chat/conversation/system.ts | 2 +- packages/board/src/chat/user/events.ts | 2 +- packages/board/src/chat/user/system.ts | 1 - packages/channels/src/base/stream.ts | 2 +- packages/channels/src/slack/api.ts | 1 - .../channels/src/slack/renderers/carousel.ts | 1 - .../channels/src/teams/renderers/dropdown.ts | 2 +- packages/channels/src/telegram/stream.ts | 1 - packages/client/test/e2e/client.test.ts | 2 +- packages/server/src/user-tokens/service.ts | 1 - packages/server/test/security/api.test.ts | 6 +- packages/server/test/unit/sync.test.ts | 3 - yarn.lock | 93 +++++++++++++++++-- 16 files changed, 107 insertions(+), 25 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 69af2a8fc..742392ee0 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -12,8 +12,17 @@ module.exports = { sourceType: 'module' }, ignorePatterns: ['*.js', '**/dist/**'], - plugins: ['eslint-plugin-import', 'eslint-plugin-jsdoc', '@typescript-eslint'], + plugins: [ + 'eslint-plugin-import', + 'eslint-plugin-jsdoc', + '@typescript-eslint', + 'eslint-plugin-react', + 'unused-imports' + ], rules: { + 'react/jsx-uses-react': 'error', + 'react/jsx-uses-vars': 'error', + 'unused-imports/no-unused-imports': 'error', '@typescript-eslint/consistent-type-definitions': 'error', '@typescript-eslint/member-delimiter-style': [ 'error', diff --git a/package.json b/package.json index 78f55ba3d..14f5ea6da 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,8 @@ "eslint-import-resolver-node": "^0.3.6", "eslint-plugin-import": "^2.25.4", "eslint-plugin-jsdoc": "37.7.0", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-unused-imports": "^2.0.0", "jest": "^27.4.7", "jest-dev-server": "^6.0.3", "mkdirp": "^1.0.4", diff --git a/packages/board/src/chat/chat.ts b/packages/board/src/chat/chat.ts index d49a4fb2f..91958ba7a 100644 --- a/packages/board/src/chat/chat.ts +++ b/packages/board/src/chat/chat.ts @@ -35,6 +35,6 @@ export class Webchat { } public async destroy() { - this.socket.disconnect() + await this.socket.disconnect() } } diff --git a/packages/board/src/chat/conversation/system.ts b/packages/board/src/chat/conversation/system.ts index 7e0d51d33..84f2669be 100644 --- a/packages/board/src/chat/conversation/system.ts +++ b/packages/board/src/chat/conversation/system.ts @@ -26,7 +26,7 @@ export class WebchatConversation extends WebchatSystem { if (!conversation) { conversation = await this.socket.createConversation() } else { - this.socket.switchConversation(conversation.id) + await this.socket.switchConversation(conversation.id) } this.storage.set(STORAGE_ID, conversation.id) diff --git a/packages/board/src/chat/user/events.ts b/packages/board/src/chat/user/events.ts index 44a05193d..6cea45302 100644 --- a/packages/board/src/chat/user/events.ts +++ b/packages/board/src/chat/user/events.ts @@ -1,4 +1,4 @@ -import { Emitter, uuid } from '@botpress/messaging-base' +import { Emitter } from '@botpress/messaging-base' import { UserCredentials } from '@botpress/messaging-socket' export enum UserEvents { diff --git a/packages/board/src/chat/user/system.ts b/packages/board/src/chat/user/system.ts index 39648474a..2c798db6f 100644 --- a/packages/board/src/chat/user/system.ts +++ b/packages/board/src/chat/user/system.ts @@ -1,4 +1,3 @@ -import { User, uuid } from '@botpress/messaging-base' import { MessagingSocket, UserCredentials } from '@botpress/messaging-socket' import { WebchatSystem } from '../base/system' import { WebchatStorage } from '../storage/system' diff --git a/packages/channels/src/base/stream.ts b/packages/channels/src/base/stream.ts index cef3addf6..1122be6de 100644 --- a/packages/channels/src/base/stream.ts +++ b/packages/channels/src/base/stream.ts @@ -1,5 +1,5 @@ import _ from 'lodash' -import { ChannelContext, IndexChoiceOption } from './context' +import { ChannelContext } from './context' import { ChannelRenderer } from './renderer' import { ChannelSender } from './sender' import { ChannelSendEvent, ChannelService } from './service' diff --git a/packages/channels/src/slack/api.ts b/packages/channels/src/slack/api.ts index d6dbf12b3..89151c7cb 100644 --- a/packages/channels/src/slack/api.ts +++ b/packages/channels/src/slack/api.ts @@ -1,5 +1,4 @@ import { - AckFn, ButtonAction, ReceiverEvent, RespondFn, diff --git a/packages/channels/src/slack/renderers/carousel.ts b/packages/channels/src/slack/renderers/carousel.ts index ef1c43a94..44ef524a3 100644 --- a/packages/channels/src/slack/renderers/carousel.ts +++ b/packages/channels/src/slack/renderers/carousel.ts @@ -1,5 +1,4 @@ import { Button } from '@slack/bolt' -import _ from 'lodash' import { v4 as uuidv4 } from 'uuid' import { CarouselContext, CarouselRenderer } from '../../base/renderers/carousel' import { ActionOpenURL, ActionPostback, ActionSaySomething, CardContent } from '../../content/types' diff --git a/packages/channels/src/teams/renderers/dropdown.ts b/packages/channels/src/teams/renderers/dropdown.ts index 04b9d443b..d46892baf 100644 --- a/packages/channels/src/teams/renderers/dropdown.ts +++ b/packages/channels/src/teams/renderers/dropdown.ts @@ -1,4 +1,4 @@ -import { ActivityTypes, CardFactory } from 'botbuilder' +import { CardFactory } from 'botbuilder' import { ChannelRenderer } from '../../base/renderer' import { TeamsContext } from '../context' import { QUICK_REPLY_PREFIX } from './choices' diff --git a/packages/channels/src/telegram/stream.ts b/packages/channels/src/telegram/stream.ts index 5984598d8..aeff8c1c4 100644 --- a/packages/channels/src/telegram/stream.ts +++ b/packages/channels/src/telegram/stream.ts @@ -1,4 +1,3 @@ -import _ from 'lodash' import { ChannelContext } from '../base/context' import { CardToCarouselRenderer } from '../base/renderers/card' import { DropdownToChoicesRenderer } from '../base/renderers/dropdown' diff --git a/packages/client/test/e2e/client.test.ts b/packages/client/test/e2e/client.test.ts index 62d4d1152..b33d79a3a 100644 --- a/packages/client/test/e2e/client.test.ts +++ b/packages/client/test/e2e/client.test.ts @@ -1,5 +1,5 @@ import { v4 as uuid, validate as validateUuid } from 'uuid' -import { Conversation, Message, MessagingChannel, MessagingClient, SyncRequest, SyncWebhook, User } from '../../src' +import { Conversation, Message, MessagingChannel, MessagingClient, SyncWebhook, User } from '../../src' const FAKE_UUID = uuid() const FAKE_CLIENT_ID = uuid() diff --git a/packages/server/src/user-tokens/service.ts b/packages/server/src/user-tokens/service.ts index 1d39c956e..a0c1b29e3 100644 --- a/packages/server/src/user-tokens/service.ts +++ b/packages/server/src/user-tokens/service.ts @@ -10,7 +10,6 @@ import { } from '@botpress/messaging-engine' import crypto from 'crypto' import { validate as validateUuid, v4 as uuidv4 } from 'uuid' -import yn from 'yn' import { UserService } from '../users/service' import { UserTokenTable } from './table' import { UserToken } from './types' diff --git a/packages/server/test/security/api.test.ts b/packages/server/test/security/api.test.ts index 4b3c79cf7..4781a62b3 100644 --- a/packages/server/test/security/api.test.ts +++ b/packages/server/test/security/api.test.ts @@ -1,7 +1,5 @@ -import { Conversation, Endpoint, Message, SyncRequest, SyncResult, User } from '@botpress/messaging-base' -import axios, { AxiosError, AxiosRequestConfig, Method } from 'axios' -import _ from 'lodash' -import querystring from 'querystring' +import { Conversation, Endpoint, Message, SyncResult, User } from '@botpress/messaging-base' +import axios, { AxiosError, AxiosRequestConfig } from 'axios' import { v4 as uuid } from 'uuid' import { randStr } from '../integration/utils' import froth from './mocha-froth' diff --git a/packages/server/test/unit/sync.test.ts b/packages/server/test/unit/sync.test.ts index 0eabec17c..4e7070bfc 100644 --- a/packages/server/test/unit/sync.test.ts +++ b/packages/server/test/unit/sync.test.ts @@ -1,6 +1,3 @@ -import { DatabaseService } from '@botpress/messaging-engine' -import cloneDeep from 'lodash/cloneDeep' - import { ChannelService } from '../../src/channels/service' import { SyncApi } from '../../src/sync/api' diff --git a/yarn.lock b/yarn.lock index 9429b5495..dcfe79f21 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2367,6 +2367,8 @@ __metadata: eslint-import-resolver-node: ^0.3.6 eslint-plugin-import: ^2.25.4 eslint-plugin-jsdoc: 37.7.0 + eslint-plugin-react: ^7.28.0 + eslint-plugin-unused-imports: ^2.0.0 jest: ^27.4.7 jest-dev-server: ^6.0.3 mkdirp: ^1.0.4 @@ -7460,7 +7462,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.0.3, array-includes@npm:^3.1.4": +"array-includes@npm:^3.0.3, array-includes@npm:^3.1.3, array-includes@npm:^3.1.4": version: 3.1.4 resolution: "array-includes@npm:3.1.4" dependencies: @@ -7514,7 +7516,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.2.1": +"array.prototype.flatmap@npm:^1.2.1, array.prototype.flatmap@npm:^1.2.5": version: 1.2.5 resolution: "array.prototype.flatmap@npm:1.2.5" dependencies: @@ -11229,6 +11231,45 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-react@npm:^7.28.0": + version: 7.28.0 + resolution: "eslint-plugin-react@npm:7.28.0" + dependencies: + array-includes: ^3.1.4 + array.prototype.flatmap: ^1.2.5 + doctrine: ^2.1.0 + estraverse: ^5.3.0 + jsx-ast-utils: ^2.4.1 || ^3.0.0 + minimatch: ^3.0.4 + object.entries: ^1.1.5 + object.fromentries: ^2.0.5 + object.hasown: ^1.1.0 + object.values: ^1.1.5 + prop-types: ^15.7.2 + resolve: ^2.0.0-next.3 + semver: ^6.3.0 + string.prototype.matchall: ^4.0.6 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 90293d0fd53bb1f735ffd32141cdd211fb1120c9f7bbe5342f9e923261a39e52a2b2575d4e46c9cd77d257f42db4a99b8b339689fc5b5c1c26048929f69b1784 + languageName: node + linkType: hard + +"eslint-plugin-unused-imports@npm:^2.0.0": + version: 2.0.0 + resolution: "eslint-plugin-unused-imports@npm:2.0.0" + dependencies: + eslint-rule-composer: ^0.3.0 + peerDependencies: + "@typescript-eslint/eslint-plugin": ^5.0.0 + eslint: ^8.0.0 + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + checksum: 8aa1e03e75da2a62a354065e0cb8fe370118c6f8d9720a32fe8c1da937de6adb81a4fed7d0d391d115ac9453b49029fb19f970d180a2cf3dba451fd4c20f0dc4 + languageName: node + linkType: hard + "eslint-rule-composer@npm:^0.3.0": version: 0.3.0 resolution: "eslint-rule-composer@npm:0.3.0" @@ -11396,7 +11437,7 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b @@ -15437,6 +15478,16 @@ __metadata: languageName: node linkType: hard +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0": + version: 3.2.1 + resolution: "jsx-ast-utils@npm:3.2.1" + dependencies: + array-includes: ^3.1.3 + object.assign: ^4.1.2 + checksum: dcee22e6382ee5a6bd4187333a44b6420d9d079838119a07055d6e88d137dd0afadc97a2246152b0b65006bd5fc393112dc0cef01956a01a66c1713913953c66 + languageName: node + linkType: hard + "junk@npm:^3.1.0": version: 3.1.0 resolution: "junk@npm:3.1.0" @@ -17353,7 +17404,7 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.0": +"object.entries@npm:^1.1.0, object.entries@npm:^1.1.5": version: 1.1.5 resolution: "object.entries@npm:1.1.5" dependencies: @@ -17364,7 +17415,7 @@ __metadata: languageName: node linkType: hard -"object.fromentries@npm:^2.0.0 || ^1.0.0": +"object.fromentries@npm:^2.0.0 || ^1.0.0, object.fromentries@npm:^2.0.5": version: 2.0.5 resolution: "object.fromentries@npm:2.0.5" dependencies: @@ -17386,6 +17437,16 @@ __metadata: languageName: node linkType: hard +"object.hasown@npm:^1.1.0": + version: 1.1.0 + resolution: "object.hasown@npm:1.1.0" + dependencies: + define-properties: ^1.1.3 + es-abstract: ^1.19.1 + checksum: 5c5d0b1b793514609f7a635f3110fbd346e142c9afd2485b802775e1ef6c90e48ff6e8e8744927933370ba30964e21af9c5fcf782b47f34d650aa6b277565330 + languageName: node + linkType: hard + "object.pick@npm:^1.3.0": version: 1.3.0 resolution: "object.pick@npm:1.3.0" @@ -20258,6 +20319,16 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^2.0.0-next.3": + version: 2.0.0-next.3 + resolution: "resolve@npm:2.0.0-next.3" + dependencies: + is-core-module: ^2.2.0 + path-parse: ^1.0.6 + checksum: f34b3b93ada77d64a6d590c06a83e198f3a827624c4ec972260905fa6c4d612164fbf0200d16d2beefea4ad1755b001f4a9a1293d8fc2322a8f7d6bf692c4ff5 + languageName: node + linkType: hard + "resolve@patch:resolve@^1.0.0#~builtin": version: 1.21.0 resolution: "resolve@patch:resolve@npm%3A1.21.0#~builtin::version=1.21.0&hash=07638b" @@ -20281,6 +20352,16 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@^2.0.0-next.3#~builtin": + version: 2.0.0-next.3 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.3#~builtin::version=2.0.0-next.3&hash=07638b" + dependencies: + is-core-module: ^2.2.0 + path-parse: ^1.0.6 + checksum: 21684b4d99a4877337cdbd5484311c811b3e8910edb5d868eec85c6e6550b0f570d911f9a384f9e176172d6713f2715bd0b0887fa512cb8c6aeece018de6a9f8 + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -21505,7 +21586,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.0 || ^3.0.1": +"string.prototype.matchall@npm:^4.0.0 || ^3.0.1, string.prototype.matchall@npm:^4.0.6": version: 4.0.6 resolution: "string.prototype.matchall@npm:4.0.6" dependencies: