Made ESLint lint all TypeScript files and fix a few linter errors (#273)

* Remove unused import of preact/h

* Remove unused imports

* Create 273.misc

* Lint all TypeScript files

* Re-add preact/h import

* Fix a few ESLint errors

* Update 273.misc

* Readd eslint:recommended

* Update .eslintrc.js

Co-authored-by: Will Hunt <will@half-shot.uk>
This commit is contained in:
Christian Paul 2022-04-06 16:25:10 +02:00 committed by GitHub
parent f8934fb1c7
commit 7df772cda5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 832 additions and 35 deletions

View File

@ -2,20 +2,56 @@ module.exports = {
root: true,
parser: '@typescript-eslint/parser',
plugins: [
'@typescript-eslint',
'mocha'
'@typescript-eslint'
],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
],
// eslint-config-preact needs a Jest version to be happy, even if Jest isn't used.
// See https://github.com/preactjs/eslint-config-preact/issues/19#issuecomment-997924892
settings: {
jest: { "version": 27 },
},
rules: {
"@typescript-eslint/explicit-module-boundary-types": "off",
"camelcase": ["error", { "properties": "never", "ignoreDestructuring": true }],
"no-console": "error"
},
"env": {
"node": true,
"es6": true,
env: {
node: true,
es6: true,
},
overrides: [
{
files: ["test/**/*.ts"],
parser: '@typescript-eslint/parser',
plugins: [
'@typescript-eslint',
'mocha',
],
},
{
files: ["web/**/*.ts", "web/**/*.tsx"],
parser: '@typescript-eslint/parser',
env: {
browser: true,
node: false,
},
extends: [
'plugin:@typescript-eslint/recommended',
'preact',
],
plugins: [
'@typescript-eslint',
],
rules: {
"no-console": "off",
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": ["error"],
"no-useless-constructor": "off",
"@typescript-eslint/no-useless-constructor": ["error"],
},
}
]
};

1
changelog.d/273.misc Normal file
View File

@ -0,0 +1 @@
Made ESLint lint all TypeScript files and fix a few linter errors.

View File

@ -28,7 +28,7 @@
"start:matrixsender": "node --require source-map-support/register lib/App/MatrixSenderApp.js",
"test": "mocha -r ts-node/register tests/init.ts tests/*.ts tests/**/*.ts",
"lint": "yarn run lint:js && yarn run lint:rs",
"lint:js": "eslint -c .eslintrc.js src/**/*.ts",
"lint:js": "eslint -c .eslintrc.js 'src/**/*.ts' 'tests/**/*.ts' 'web/**/*.ts' 'web/**/*.tsx'",
"lint:rs": "cargo fmt --all -- --check",
"generate-default-config": "ts-node src/Config/Defaults.ts --config > config.sample.yml",
"validate-config": "ts-node src/Config/Config.ts"
@ -81,6 +81,7 @@
"@typescript-eslint/parser": "^5.4.0",
"chai": "^4.3.4",
"eslint": "^8.3.0",
"eslint-config-preact": "^1.3.0",
"eslint-plugin-mocha": "^9.0.0",
"mini.css": "^3.0.1",
"mocha": "^8.2.1",

View File

@ -1,4 +1,4 @@
import { Appservice, MatrixClient, RichReply } from "matrix-bot-sdk";
import { Appservice, MatrixClient } from "matrix-bot-sdk";
import markdownit from "markdown-it";
import { FigmaPayload } from "../figma/types";
import { BaseConnection } from "./BaseConnection";

View File

@ -2,7 +2,6 @@ import { AdminRoomCommandHandler } from "../AdminRoomCommandHandler";
import { botCommand } from "../BotCommands";
import { JiraAPIAccessibleResource } from "./Types";
import LogWrapper from "../LogWrapper";
import { CommandError } from "../errors";
import { CLOUD_INSTANCE } from "./Client";
const log = new LogWrapper('JiraBotCommands');

View File

@ -1,5 +1,5 @@
import axios, { Method } from 'axios';
import JiraApi, { SearchUserOptions } from 'jira-client';
import JiraApi from 'jira-client';
import { JiraAccount, JiraAPIAccessibleResource, JiraProject } from './Types';
export function isJiraCloudInstance(host: string) {

View File

@ -6,8 +6,6 @@ import LogWrapper from "../LogWrapper";
import { ApiError, ErrCode } from "../provisioning/api";
import { JiraOAuthRequestCloud, JiraOAuthRequestOnPrem, JiraOAuthRequestResult } from "./OAuth";
import { HookshotJiraApi } from "./Client";
import { createPublicKey } from "crypto";
import { readFileSync } from "fs";
const log = new LogWrapper("JiraRouter");

View File

@ -1,14 +1,11 @@
import { JiraAPIAccessibleResource, JiraProject, JiraCloudProjectSearchResponse, JiraStoredToken, JiraOnPremProjectSearchResponse } from '../Types';
import { JiraAPIAccessibleResource, JiraProject, JiraStoredToken, JiraOnPremProjectSearchResponse } from '../Types';
import { BridgeConfigJiraOnPremOAuth } from '../../Config/Config';
import LogWrapper from '../../LogWrapper';
import { decodeJiraToken } from '../OAuth';
import { KeyObject } from 'crypto';
import { HookshotJiraApi, JiraClient } from '../Client';
import JiraApi from 'jira-client';
const log = new LogWrapper("JiraOnPremClient");
export class HookshotOnPremJiraApi extends HookshotJiraApi {
constructor(options: JiraApi.JiraApiOptions, res: JiraAPIAccessibleResource) {

View File

@ -58,6 +58,8 @@ export default class App extends Component<void, IState> {
this.widgetApi.start();
const roomState = await this.bridgeApi.state();
console.log('Got state', roomState);
// Calling setState is ok because we've awaited a network request.
// eslint-disable-next-line react/no-did-mount-set-state
this.setState({
roomState,
roomId,
@ -65,6 +67,8 @@ export default class App extends Component<void, IState> {
});
} catch (ex) {
console.error(`Bridge verifiation failed:`, ex);
// Calling setState is ok because we've awaited a network request.
// eslint-disable-next-line react/no-did-mount-set-state
this.setState({
error: ex.message,
busy: false,
@ -78,9 +82,9 @@ export default class App extends Component<void, IState> {
if (this.state.error) {
content = <ErrorPane>{this.state.error}</ErrorPane>;
} else if (this.state.roomState) {
content = <AdminSettings roomState={this.state.roomState}></AdminSettings>;
content = <AdminSettings roomState={this.state.roomState} />;
} else if (this.state.busy) {
content = <div class="spinner"></div>;
content = <div class="spinner" />;
} else {
content = <b>Invalid state</b>;
}

View File

@ -17,7 +17,7 @@ export default class BridgeAPI {
method,
body: body ? JSON.stringify(body) : undefined,
headers: {
'Authorization': `Bearer ${this.accessToken}`,
Authorization: `Bearer ${this.accessToken}`,
// Only set Content-Type if we send a body
...(!!body && {
'Content-Type': 'application/json',

View File

@ -8,10 +8,6 @@ interface IProps{
}
export default class AdminSettings extends Component<IProps> {
constructor(props) {
super(props)
}
renderGitHub() {
const githubConfig = this.props.roomState.github;
if (!githubConfig.enabled) {
@ -29,7 +25,7 @@ export default class AdminSettings extends Component<IProps> {
Your token does not appear to work
</strong>;
}
return <GitHubState config={githubConfig}/>;
return <GitHubState config={githubConfig} />;
}
render() {

View File

@ -6,7 +6,7 @@ const GitHubState: FunctionComponent<{config: BridgeRoomStateGitHub}> = ({ confi
return <div class="container login-card">
<div class="row">
<div class="col-sm-2">
<img src={config.identity.avatarUrl} title="GitHub avatar"/>
<img src={config.identity.avatarUrl} title="GitHub avatar" />
</div>
<div class="col-sm-9">
Logged in as <span>{config.identity.name}</span>

787
yarn.lock

File diff suppressed because it is too large Load Diff