From a54c62f8656b0b453e3d6a7c9b563853fe43d42c Mon Sep 17 00:00:00 2001 From: Berend Sliedrecht <sliedrecht@berend.io> Date: Mon, 20 Nov 2023 13:49:37 +0100 Subject: [PATCH] fixed linting for ssi-abstraction Signed-off-by: Berend Sliedrecht <sliedrecht@berend.io> --- apps/ssi-abstraction/.eslintrc.cjs | 46 +++++++++++++++++++ apps/ssi-abstraction/.eslintrc.js | 25 ---------- apps/ssi-abstraction/package.json | 4 +- .../src/agent/agent.controller.ts | 1 - .../src/agent/agent.service.ts | 2 - .../src/agent/ledger/register.ts | 5 -- .../src/agent/utils/helperFunctions.ts | 3 +- .../src/agent/utils/listener.spec.ts | 2 - .../ssi-abstraction/src/agent/utils/logger.ts | 35 +++++++++++--- apps/ssi-abstraction/src/app.module.ts | 1 - .../ssi-abstraction/src/client/nats.client.ts | 2 +- apps/ssi-abstraction/src/common/response.ts | 4 +- apps/ssi-abstraction/src/config/config.ts | 4 -- .../src/globalUtils/exception.handler.ts | 11 +---- .../ssi-abstraction/src/globalUtils/logger.ts | 17 +------ .../src/health/health.controller.ts | 1 - .../src/middleware/agentMid.middleware.ts | 1 - apps/ssi-abstraction/test/didComm.e2e-spec.ts | 2 +- apps/ssi-abstraction/tsconfig.json | 2 +- package.json | 3 +- 20 files changed, 88 insertions(+), 83 deletions(-) create mode 100644 apps/ssi-abstraction/.eslintrc.cjs delete mode 100644 apps/ssi-abstraction/.eslintrc.js diff --git a/apps/ssi-abstraction/.eslintrc.cjs b/apps/ssi-abstraction/.eslintrc.cjs new file mode 100644 index 0000000..b77971f --- /dev/null +++ b/apps/ssi-abstraction/.eslintrc.cjs @@ -0,0 +1,46 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + parserOptions: { + sourceType: 'module', + ecmaVersion: 2021, + }, + env: { + node: true, + }, + plugins: ['prettier', '@typescript-eslint/eslint-plugin', 'jest'], + extends: [ + 'prettier', + 'plugin:@typescript-eslint/recommended', + 'plugin:jest/recommended', + ], + ignorePatterns: ['.eslintrc.cjs', 'dist'], + overrides: [], + settings: { + jest: { + version: '29', + }, + }, + rules: { + 'no-unused-vars': 0, + '@typescript-eslint/no-unused-vars': [1, { argsIgnorePattern: '^_' }], + }, + overrides: [ + { + files: [ + '*.spec.ts', + '*.e2e-spec.ts', + '__mocks__/*.ts', + '__mocks__/**/*.ts', + ], + rules: { + '@typescript-eslint/no-explicit-any': 0, + '@typescript-eslint/no-empty-function': 0, + '@typescript-eslint/ban-ts-comment': 0, + '@typescript-eslint/no-unused-vars': 0, + 'jest/no-mocks-import': 0, + 'jest/expect-expect': 0, + }, + }, + ], +}; diff --git a/apps/ssi-abstraction/.eslintrc.js b/apps/ssi-abstraction/.eslintrc.js deleted file mode 100644 index ba9f72b..0000000 --- a/apps/ssi-abstraction/.eslintrc.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - parserOptions: { - project: 'tsconfig.json', - sourceType: 'module', - }, - plugins: ['@typescript-eslint/eslint-plugin'], - extends: [ - 'plugin:@typescript-eslint/recommended', - 'airbnb-base', - 'airbnb-typescript/base' - ], - root: true, - env: { - node: true, - jest: true, - }, - ignorePatterns: ['.eslintrc.js'], - rules: { - '@typescript-eslint/interface-name-prefix': 'off', - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - }, -}; diff --git a/apps/ssi-abstraction/package.json b/apps/ssi-abstraction/package.json index 638c6d3..f73fbc7 100644 --- a/apps/ssi-abstraction/package.json +++ b/apps/ssi-abstraction/package.json @@ -17,8 +17,8 @@ "start": "nest start", "start:dev": "nest start --watch --preserveWatchOutput", "start:docker": "pnpm prisma:generate && pnpm dbSchema && pnpm start", - "lint": "eslint --fix", - "lint:all": "npm run lint -- .", + "lint": "eslint .", + "lint:fix": "pnpm lint --fix", "format": "prettier --write", "format:all": "npm run format -- .", "test": "jest", diff --git a/apps/ssi-abstraction/src/agent/agent.controller.ts b/apps/ssi-abstraction/src/agent/agent.controller.ts index f5b90bb..af3ff3b 100644 --- a/apps/ssi-abstraction/src/agent/agent.controller.ts +++ b/apps/ssi-abstraction/src/agent/agent.controller.ts @@ -5,7 +5,6 @@ import { AgentService } from './agent.service.js'; export class AgentController { public constructor(private agent: AgentService) {} - // eslint-disable-next-line class-methods-use-this @Get('info') async getWalletInfo() { return { diff --git a/apps/ssi-abstraction/src/agent/agent.service.ts b/apps/ssi-abstraction/src/agent/agent.service.ts index 4d58a67..33755ea 100644 --- a/apps/ssi-abstraction/src/agent/agent.service.ts +++ b/apps/ssi-abstraction/src/agent/agent.service.ts @@ -168,9 +168,7 @@ export class AgentService { seed: publicDidSeed, }); - // eslint-disable-next-line no-restricted-syntax for (const publicDidResponse of registeredPublicDidResponses) { - // eslint-disable-next-line no-await-in-loop await this.agent.dids.import({ overwrite: true, did: publicDidResponse.did, diff --git a/apps/ssi-abstraction/src/agent/ledger/register.ts b/apps/ssi-abstraction/src/agent/ledger/register.ts index d3957e5..0197185 100644 --- a/apps/ssi-abstraction/src/agent/ledger/register.ts +++ b/apps/ssi-abstraction/src/agent/ledger/register.ts @@ -27,12 +27,8 @@ export const registerPublicDids = async ({ seed, }: RegisterPublicDidOptions): Promise<Array<RegisterPublicDidResponse>> => { const responses: Array<RegisterPublicDidResponse> = []; - // eslint-disable-next-line no-restricted-syntax for (const ledgerId of ledgerIds) { try { - // TODO: why does this fail? - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore const ledgerRegisterUrl = NYM_URL[ledgerId]; const ledgerNamespace = ledgerNamespaces[ledgerId]; @@ -42,7 +38,6 @@ export const registerPublicDids = async ({ seed, }; - // eslint-disable-next-line no-await-in-loop const res = await new axios.Axios().post<RegisterPublicDidResponse>( ledgerRegisterUrl, body, diff --git a/apps/ssi-abstraction/src/agent/utils/helperFunctions.ts b/apps/ssi-abstraction/src/agent/utils/helperFunctions.ts index 0f4f272..a8e80ba 100644 --- a/apps/ssi-abstraction/src/agent/utils/helperFunctions.ts +++ b/apps/ssi-abstraction/src/agent/utils/helperFunctions.ts @@ -1,6 +1,7 @@ +import { AxiosError } from 'axios'; import logger from '../../globalUtils/logger.js'; -export function logAxiosError(err: any) { +export function logAxiosError(err: AxiosError) { if (err.response) { logger.error('Request made and server responded: '); logger.error(`Data: ${err.response.data}`); diff --git a/apps/ssi-abstraction/src/agent/utils/listener.spec.ts b/apps/ssi-abstraction/src/agent/utils/listener.spec.ts index 95d5a43..1792bf3 100644 --- a/apps/ssi-abstraction/src/agent/utils/listener.spec.ts +++ b/apps/ssi-abstraction/src/agent/utils/listener.spec.ts @@ -4,7 +4,6 @@ describe('listener', () => { it('should subscribe agent to available events', async () => { const agent = { events: { - // eslint-disable-next-line @typescript-eslint/no-unused-vars on: (eventName: string, cb: () => void) => {}, }, }; @@ -21,7 +20,6 @@ describe('listener', () => { .mockImplementation((eventName: string, cb: () => void) => { lastCb = cb; }); - // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore subscribe(agent, natsClient); expect(spy).toHaveBeenCalled(); diff --git a/apps/ssi-abstraction/src/agent/utils/logger.ts b/apps/ssi-abstraction/src/agent/utils/logger.ts index dff3f0c..dacc601 100644 --- a/apps/ssi-abstraction/src/agent/utils/logger.ts +++ b/apps/ssi-abstraction/src/agent/utils/logger.ts @@ -2,37 +2,58 @@ import { BaseLogger, LogLevel } from '@aries-framework/core'; import logger from '../../globalUtils/logger.js'; export class AgentLogger extends BaseLogger { - public test(message: string, data?: Record<string, any> | undefined): void { + public test( + message: string, + data?: Record<string, unknown> | undefined, + ): void { if (!this.isEnabled(LogLevel.test)) return; logger.verbose(message, data); } - public trace(message: string, data?: Record<string, any> | undefined): void { + public trace( + message: string, + data?: Record<string, unknown> | undefined, + ): void { if (!this.isEnabled(LogLevel.trace)) return; logger.info(message, data); } - public debug(message: string, data?: Record<string, any> | undefined): void { + public debug( + message: string, + data?: Record<string, unknown> | undefined, + ): void { if (!this.isEnabled(LogLevel.debug)) return; logger.info(message, data); } - public info(message: string, data?: Record<string, any> | undefined): void { + public info( + message: string, + data?: Record<string, unknown> | undefined, + ): void { if (!this.isEnabled(LogLevel.info)) return; logger.info(message, data); } - public warn(message: string, data?: Record<string, any> | undefined): void { + public warn( + message: string, + data?: Record<string, unknown> | undefined, + ): void { if (!this.isEnabled(LogLevel.warn)) return; logger.warn(message, data); } - public error(message: string, data?: Record<string, any> | undefined): void { + public error( + message: string, + data?: Record<string, unknown> | undefined, + ): void { if (!this.isEnabled(LogLevel.error)) return; logger.error(message, data); } - public fatal(message: string, data?: Record<string, any> | undefined): void { + public fatal( + message: string, + data?: Record<string, unknown> | undefined, + ): void { if (!this.isEnabled(LogLevel.fatal)) return; logger.error(message, data); } diff --git a/apps/ssi-abstraction/src/app.module.ts b/apps/ssi-abstraction/src/app.module.ts index 0eda6d7..8c3928c 100644 --- a/apps/ssi-abstraction/src/app.module.ts +++ b/apps/ssi-abstraction/src/app.module.ts @@ -29,7 +29,6 @@ import { AgentModule } from './agent/agent.module.js'; ], }) export class AppModule implements NestModule { - // eslint-disable-next-line class-methods-use-this configure(consumer: MiddlewareConsumer) { consumer.apply(AgentMid).forRoutes('agent', '*/agent'); } diff --git a/apps/ssi-abstraction/src/client/nats.client.ts b/apps/ssi-abstraction/src/client/nats.client.ts index 1e995b4..fffd1c8 100644 --- a/apps/ssi-abstraction/src/client/nats.client.ts +++ b/apps/ssi-abstraction/src/client/nats.client.ts @@ -15,7 +15,7 @@ export class NatsClientService { * @param eventName - the event name * @param data - the data to be passed as payload of the event */ - publish(eventName: string, data: any) { + publish<D = unknown>(eventName: string, data: D) { logger.info( `Publish nats event: ${NATSServices.SERVICE_NAME}/${eventName}`, ); diff --git a/apps/ssi-abstraction/src/common/response.ts b/apps/ssi-abstraction/src/common/response.ts index 0bbcc92..6fe63e5 100644 --- a/apps/ssi-abstraction/src/common/response.ts +++ b/apps/ssi-abstraction/src/common/response.ts @@ -1,6 +1,6 @@ export interface ResponseType { statusCode: number; message: string; - data?: any; - error?: any; + data?: unknown; + error?: unknown; } diff --git a/apps/ssi-abstraction/src/config/config.ts b/apps/ssi-abstraction/src/config/config.ts index 8b7c010..c827fbe 100644 --- a/apps/ssi-abstraction/src/config/config.ts +++ b/apps/ssi-abstraction/src/config/config.ts @@ -22,8 +22,6 @@ interface Config { autoAcceptConnection: boolean; autoAcceptCredential: AutoAcceptCredential; idUnionKey: string; - basicUser: string; - basicPass: string; }; } @@ -49,8 +47,6 @@ const config = (): Config => ({ autoAcceptCredential: process.env .AGENT_AUTO_ACCEPT_CREDENTIAL as AutoAcceptCredential, idUnionKey: process.env.AGENT_ID_UNION_KEY || '', - basicUser: process.env.BASIC_USER!, - basicPass: process.env.BASIC_PASS!, }, }); diff --git a/apps/ssi-abstraction/src/globalUtils/exception.handler.ts b/apps/ssi-abstraction/src/globalUtils/exception.handler.ts index dec5873..08fa2a6 100644 --- a/apps/ssi-abstraction/src/globalUtils/exception.handler.ts +++ b/apps/ssi-abstraction/src/globalUtils/exception.handler.ts @@ -18,7 +18,7 @@ export class ExceptionHandler implements ExceptionFilter { * @param exception - error * @param host - the execution context for exceptions */ - catch(exception: any, host: ArgumentsHost): void { + catch(exception: HttpException, host: ArgumentsHost): void { // In certain situations `httpAdapter` might not be available in the // constructor method, thus we should resolve it here. const { httpAdapter } = this.httpAdapterHost; @@ -27,17 +27,10 @@ export class ExceptionHandler implements ExceptionFilter { const response = ctx.getResponse(); let statusCode = HttpStatus.INTERNAL_SERVER_ERROR; - let message = - exception.message.error || exception.message || 'Something went wrong!'; + const message = exception.message || 'Something went wrong!'; if (exception instanceof HttpException) { - const errorResponse = exception.getResponse(); - statusCode = exception.getStatus(); - message = - typeof errorResponse === 'object' && 'error' in errorResponse - ? errorResponse.error - : errorResponse || message; } const responseBody: ResponseType = { diff --git a/apps/ssi-abstraction/src/globalUtils/logger.ts b/apps/ssi-abstraction/src/globalUtils/logger.ts index cc73b21..d5a8bbe 100644 --- a/apps/ssi-abstraction/src/globalUtils/logger.ts +++ b/apps/ssi-abstraction/src/globalUtils/logger.ts @@ -1,27 +1,12 @@ import winston, { Logger } from 'winston'; import ecsFormat from '@elastic/ecs-winston-format'; -// import { ElasticsearchTransport } from 'winston-elasticsearch'; -// const esTransportOpts = { -// clientOpts: { node: process.env.ECSURL }, -// }; -// -// const esTransport = new ElasticsearchTransport(esTransportOpts); -// -// esTransport.on('error', (error: any) => { -// console.error('Error in logger caught', error); -// }); - const logger: Logger = winston.createLogger({ format: ecsFormat({ convertReqRes: true }), - transports: [ - new winston.transports.Console(), - // esTransport, - ], + transports: [new winston.transports.Console()], }); logger.on('error', (error: Error) => { - // eslint-disable-next-line no-console console.error('Error in logger caught', error); }); diff --git a/apps/ssi-abstraction/src/health/health.controller.ts b/apps/ssi-abstraction/src/health/health.controller.ts index d957968..94fb4e9 100644 --- a/apps/ssi-abstraction/src/health/health.controller.ts +++ b/apps/ssi-abstraction/src/health/health.controller.ts @@ -7,7 +7,6 @@ export class HealthController { * * @returns - OK (200) if app is running */ - // eslint-disable-next-line class-methods-use-this @Get() getHealth() { return { diff --git a/apps/ssi-abstraction/src/middleware/agentMid.middleware.ts b/apps/ssi-abstraction/src/middleware/agentMid.middleware.ts index d4b37ea..a8d1a66 100644 --- a/apps/ssi-abstraction/src/middleware/agentMid.middleware.ts +++ b/apps/ssi-abstraction/src/middleware/agentMid.middleware.ts @@ -7,7 +7,6 @@ import { Request, NextFunction, Response } from 'express'; */ @Injectable() export class AgentMid implements NestMiddleware { - // eslint-disable-next-line class-methods-use-this use(req: Request, res: Response, next: NextFunction) { const [, prop] = req.url.split('/'); if (prop === 'info') { diff --git a/apps/ssi-abstraction/test/didComm.e2e-spec.ts b/apps/ssi-abstraction/test/didComm.e2e-spec.ts index 94bd4ba..2e35063 100644 --- a/apps/ssi-abstraction/test/didComm.e2e-spec.ts +++ b/apps/ssi-abstraction/test/didComm.e2e-spec.ts @@ -1,7 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { INestApplication } from '@nestjs/common'; import request from 'supertest'; -import AppModule from '@src/app.module'; +import AppModule from '../src/app.module'; describe('DidCommController (e2e)', () => { let app: INestApplication; diff --git a/apps/ssi-abstraction/tsconfig.json b/apps/ssi-abstraction/tsconfig.json index c759d12..dd7aef8 100644 --- a/apps/ssi-abstraction/tsconfig.json +++ b/apps/ssi-abstraction/tsconfig.json @@ -11,5 +11,5 @@ "rootDir": "./src" }, "include": ["src", "config"], - "exclude": ["node_modules", "./dist/**/*"] + "exclude": ["node_modules", "dist"] } diff --git a/package.json b/package.json index 5e3bc07..dedb9f0 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "connection:build": "pnpm -F connection-manager build", "principal:build": "pnpm -F principal-manager build", "proof:build": "pnpm -F proof-manager build", - "ssi:build": "pnpm -F ssi-abstraction build" + "ssi:build": "pnpm -F ssi-abstraction build", + "lint": "pnpm -r lint" } } -- GitLab