Skip to content

Commit

Permalink
Feat eslint vs code (#29)
Browse files Browse the repository at this point in the history
* feat: eslint and rules added

* refactor: quotes single

* refactor: npx eslint --ext .ts --fix  src/** executed
  • Loading branch information
SmartNetAR authored Mar 30, 2021
1 parent 5afffdf commit 5d98580
Show file tree
Hide file tree
Showing 250 changed files with 1,856 additions and 1,702 deletions.
38 changes: 38 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
module.exports = {
'env': {
'browser': true,
'es2021': true,
'node': true
},
'extends': [
'eslint:recommended',
'plugin:@typescript-eslint/recommended'
],
'parser': '@typescript-eslint/parser',
'parserOptions': {
'ecmaVersion': 12,
'sourceType': 'module'
},
'plugins': [
'@typescript-eslint'
],
'rules': {
indent: [1, 4, {SwitchCase: 1}],
quotes: ['warn', 'single'],
semi: ['warn', 'always'],
'semi-spacing': ['warn', {'before': false, 'after': true}],
'comma-spacing': ['warn', {'before': false, 'after': true}],
'space-infix-ops': 2,
'space-in-parens': [1, 'never'],
'array-bracket-spacing': ['warn', 'never'],
'object-curly-spacing': ['warn', 'never'],
'block-spacing': 'warn',
'arrow-spacing': 'warn',
'space-before-function-paren': ['warn', 'never'],
'keyword-spacing': ['warn', {'before': true}],
'linebreak-style': ['error', 'unix'],
'brace-style': ['error', 'allman'],
'no-unused-vars': ['error', {'args': 'none'}],
'prefer-const': ['warn'],
}
};
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,9 @@
"@types/supertest": "^2.0.10",
"@types/uuid": "^8.3.0",
"@types/web-push": "^3.3.0",
"@typescript-eslint/eslint-plugin": "^4.17.0",
"@typescript-eslint/parser": "^4.17.0",
"eslint": "^7.22.0",
"fs-extra": "^8.1.0",
"jest": "^26.6.3",
"nodemon": "^2.0.2",
Expand Down
4 changes: 2 additions & 2 deletions src/Application/Exceptions/WrongPermissionsException.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ErrorException} from "@digichanges/shared-experience";
import {Locales} from "../app";
import {ErrorException} from '@digichanges/shared-experience';
import {Locales} from '../app';

class WrongPermissionsException extends ErrorException
{
Expand Down
34 changes: 17 additions & 17 deletions src/Application/Services/AuthService.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import {injectable} from "inversify";
import jwt, { TAlgorithm } from "jwt-simple";
import _ from "lodash/fp";
import Config from "config";

import EncryptionFactory from "../../Infrastructure/Factories/EncryptionFactory";
import IAuthService from "../../InterfaceAdapters/IServices/IAuthService";
import IUserDomain from "../../InterfaceAdapters/IDomain/IUserDomain";
import IRoleDomain from "../../InterfaceAdapters/IDomain/IRoleDomain";
import Permissions from "../../Config/Permissions";
import WrongPermissionsException from "../Exceptions/WrongPermissionsException";
import {IEncryption} from "@digichanges/shared-experience";
import {injectable} from 'inversify';
import jwt, {TAlgorithm} from 'jwt-simple';
import _ from 'lodash/fp';
import Config from 'config';

import EncryptionFactory from '../../Infrastructure/Factories/EncryptionFactory';
import IAuthService from '../../InterfaceAdapters/IServices/IAuthService';
import IUserDomain from '../../InterfaceAdapters/IDomain/IUserDomain';
import IRoleDomain from '../../InterfaceAdapters/IDomain/IRoleDomain';
import Permissions from '../../Config/Permissions';
import WrongPermissionsException from '../Exceptions/WrongPermissionsException';
import {IEncryption} from '@digichanges/shared-experience';

@injectable()
class AuthService implements IAuthService
Expand All @@ -21,26 +21,26 @@ class AuthService implements IAuthService
this.encryption = EncryptionFactory.create();
}

public decodeToken (token: string): any // TODO: Add type
public decodeToken(token: string): any // TODO: Add type
{
let TokenArray = token.split(" ");
const TokenArray = token.split(' ');

let secret: string = Config.get('jwt.secret');
const secret: string = Config.get('jwt.secret');
const algorithm: TAlgorithm = Config.get('encryption.bcrypt.algorithm');

return jwt.decode(TokenArray[1], secret, false, algorithm);
}

public getPermissions(user: IUserDomain): string[]
{
let permissions: string[] = user.permissions;
const permissions: string[] = user.permissions;
const roles: IRoleDomain[] = user.getRoles();

for (const role of roles)
{
if (role.permissions)
{
role.permissions.map( (rolePermission: string) => permissions.push(rolePermission));
role.permissions.map((rolePermission: string) => permissions.push(rolePermission));
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/Application/Shared/ErrorHttpException.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ValidationError} from "class-validator";
import {IStatusCode} from "@digichanges/shared-experience";
import {ValidationError} from 'class-validator';
import {IStatusCode} from '@digichanges/shared-experience';

class ErrorHttpException extends Error
{
Expand Down
12 changes: 6 additions & 6 deletions src/Application/Shared/JWTToken.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import moment from "moment";
import jwt from "jwt-simple";
import IToken from "../../InterfaceAdapters/Shared/IToken";
import Config from "config";
import IUserDomain from "../../InterfaceAdapters/IDomain/IUserDomain";
import moment from 'moment';
import jwt from 'jwt-simple';
import IToken from '../../InterfaceAdapters/Shared/IToken';
import Config from 'config';
import IUserDomain from '../../InterfaceAdapters/IDomain/IUserDomain';

class JWTToken implements IToken
{
Expand All @@ -14,7 +14,7 @@ class JWTToken implements IToken
constructor(id: string, expires: number, user: IUserDomain, secret: string)
{
this.user = user;
this.expires = moment().utc().add({ minutes: expires }).unix();
this.expires = moment().utc().add({minutes: expires}).unix();
this.payload = {
id,
iss: Config.get('jwt.iss'),
Expand Down
2 changes: 1 addition & 1 deletion src/Application/Shared/ValidationModel.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {ValidationError} from "class-validator";
import {ValidationError} from 'class-validator';

class ValidationModel
{
Expand Down
8 changes: 4 additions & 4 deletions src/Application/Shared/ValidatorRequest.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {validate} from "class-validator";
import _ from "lodash";
import ErrorHttpException from "./ErrorHttpException";
import {StatusCode} from "@digichanges/shared-experience";
import {validate} from 'class-validator';
import _ from 'lodash';
import ErrorHttpException from './ErrorHttpException';
import {StatusCode} from '@digichanges/shared-experience';

class ValidatorRequest
{
Expand Down
21 changes: 11 additions & 10 deletions src/Application/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ import AuthenticationMiddleware from '../Presentation/Middlewares/Authentication
import {ErrorHandler} from '../Presentation/Shared/ErrorHandler';
import {loggerCli} from '../Infrastructure/Shared/Logger';
import RedirectRouteNotFoundMiddleware from '../Presentation/Middlewares/RedirectRouteNotFoundMiddleware';
import Throttle from "../Presentation/Middlewares/Throttle";
import VerifyTokenMiddleware from "../Presentation/Middlewares/VerifyTokenMiddleware";
import container from "../inversify.config";
import Throttle from '../Presentation/Middlewares/Throttle';
import VerifyTokenMiddleware from '../Presentation/Middlewares/VerifyTokenMiddleware';
import container from '../inversify.config';

export let Locales = i18n;
export const Locales = i18n;

class App
{
Expand Down Expand Up @@ -57,18 +57,18 @@ class App
limit: '5mb'
}));
app.use(bodyParser.json({
limit: '5mb'
limit: '5mb'
}));
app.use(compression());
app.use(cors());
app.use(helmet());
const viewRoute = `${Config.get('nodePath')}/dist/Presentation/Views`;
app.set('views', viewRoute);
app.engine('.hbs', exphbs({
defaultLayout: 'main',
extname: '.hbs',
layoutsDir: `${viewRoute}/Layouts`,
partialsDir: `${viewRoute}/Partials`
defaultLayout: 'main',
extname: '.hbs',
layoutsDir: `${viewRoute}/Layouts`,
partialsDir: `${viewRoute}/Partials`
}));
app.set('view engine', '.hbs');
app.use(LoggerWinston);
Expand All @@ -93,7 +93,8 @@ class App
{
this.app.use(RedirectRouteNotFoundMiddleware);

this.app.listen(this.port, () => {
this.app.listen(this.port, () =>
{
loggerCli.debug(`App listening on the port ${this.port}`);
});
}
Expand Down
2 changes: 1 addition & 1 deletion src/Config/Roles.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import Permissions from "./Permissions";
import Permissions from './Permissions';

class Roles
{
Expand Down
3 changes: 2 additions & 1 deletion src/Config/validateEnv.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import {cleanEnv, str, port, bool, num, url} from 'envalid';

export function validateEnv() {
export function validateEnv()
{
cleanEnv(process.env, {
NODE_ENV: str(),
SERVER_PORT: port(),
Expand Down
4 changes: 2 additions & 2 deletions src/Domain/Entities/File.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import IFileDomain from "../../InterfaceAdapters/IDomain/IFileDomain";
import { v4 as uuidv4 } from 'uuid';
import IFileDomain from '../../InterfaceAdapters/IDomain/IFileDomain';
import {v4 as uuidv4} from 'uuid';

class File implements IFileDomain
{
Expand Down
4 changes: 2 additions & 2 deletions src/Domain/Entities/Item.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import IItemDomain from "../../InterfaceAdapters/IDomain/IItemDomain";
import { v4 as uuidv4 } from 'uuid';
import IItemDomain from '../../InterfaceAdapters/IDomain/IItemDomain';
import {v4 as uuidv4} from 'uuid';

class Item implements IItemDomain
{
Expand Down
4 changes: 2 additions & 2 deletions src/Domain/Entities/Role.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import IRoleDomain from "../../InterfaceAdapters/IDomain/IRoleDomain";
import { v4 as uuidv4 } from 'uuid';
import IRoleDomain from '../../InterfaceAdapters/IDomain/IRoleDomain';
import {v4 as uuidv4} from 'uuid';

class Role implements IRoleDomain
{
Expand Down
6 changes: 3 additions & 3 deletions src/Domain/Entities/User.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import IRoleDomain from "../../InterfaceAdapters/IDomain/IRoleDomain";
import IUserDomain from "../../InterfaceAdapters/IDomain/IUserDomain";
import { v4 as uuidv4 } from 'uuid';
import IRoleDomain from '../../InterfaceAdapters/IDomain/IRoleDomain';
import IUserDomain from '../../InterfaceAdapters/IDomain/IUserDomain';
import {v4 as uuidv4} from 'uuid';

class User implements IUserDomain
{
Expand Down
4 changes: 2 additions & 2 deletions src/Domain/Exceptions/BadCredentialsException.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ErrorException} from "@digichanges/shared-experience";
import {Locales} from "../../Application/app";
import {ErrorException} from '@digichanges/shared-experience';
import {Locales} from '../../Application/app';

class BadCredentialsException extends ErrorException
{
Expand Down
4 changes: 2 additions & 2 deletions src/Domain/Exceptions/CantDisabledException.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ErrorException} from "@digichanges/shared-experience";
import {Locales} from "../../Application/app";
import {ErrorException} from '@digichanges/shared-experience';
import {Locales} from '../../Application/app';

class CantDisabledException extends ErrorException
{
Expand Down
4 changes: 2 additions & 2 deletions src/Domain/Exceptions/PasswordWrongException.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ErrorException} from "@digichanges/shared-experience";
import {Locales} from "../../Application/app";
import {ErrorException} from '@digichanges/shared-experience';
import {Locales} from '../../Application/app';

class PasswordWrongException extends ErrorException
{
Expand Down
4 changes: 2 additions & 2 deletions src/Domain/Exceptions/RoleDisabledException.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ErrorException} from "@digichanges/shared-experience";
import {Locales} from "../../Application/app";
import {ErrorException} from '@digichanges/shared-experience';
import {Locales} from '../../Application/app';

class RoleDisabledException extends ErrorException
{
Expand Down
4 changes: 2 additions & 2 deletions src/Domain/Exceptions/UserDisabledException.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ErrorException} from "@digichanges/shared-experience";
import {Locales} from "../../Application/app";
import {ErrorException} from '@digichanges/shared-experience';
import {Locales} from '../../Application/app';

class UserDisabledException extends ErrorException
{
Expand Down
10 changes: 5 additions & 5 deletions src/Domain/UseCases/Auth/ChangeForgotPasswordUseCase.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import ChangeForgotPasswordPayload from "../../../InterfaceAdapters/Payloads/Auth/ChangeForgotPasswordPayload";
import IUserRepository from "../../../InterfaceAdapters/IRepositories/IUserRepository";
import {REPOSITORIES} from "../../../repositories";
import ContainerFactory from "../../../Infrastructure/Factories/ContainerFactory";
import ChangeForgotPasswordPayload from '../../../InterfaceAdapters/Payloads/Auth/ChangeForgotPasswordPayload';
import IUserRepository from '../../../InterfaceAdapters/IRepositories/IUserRepository';
import {REPOSITORIES} from '../../../repositories';
import ContainerFactory from '../../../Infrastructure/Factories/ContainerFactory';

class ChangeForgotPasswordUseCase
{
Expand All @@ -23,7 +23,7 @@ class ChangeForgotPasswordUseCase

await this.repository.update(user);

return {message: "Your password has been changed"};
return {message: 'Your password has been changed'};
}
}

Expand Down
24 changes: 12 additions & 12 deletions src/Domain/UseCases/Auth/ForgotPasswordUseCase.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import ForgotPasswordPayload from "../../../InterfaceAdapters/Payloads/Auth/ForgotPasswordPayload";
import IUserRepository from "../../../InterfaceAdapters/IRepositories/IUserRepository";
import Config from "config";
import {REPOSITORIES} from "../../../repositories";
import EmailNotification from "../../../Infrastructure/Entities/EmailNotification";
import EventHandler from "../../../Infrastructure/Events/EventHandler";
import ForgotPasswordEvent from "../../../Infrastructure/Events/ForgotPasswordEvent";
import ContainerFactory from "../../../Infrastructure/Factories/ContainerFactory";
import ForgotPasswordPayload from '../../../InterfaceAdapters/Payloads/Auth/ForgotPasswordPayload';
import IUserRepository from '../../../InterfaceAdapters/IRepositories/IUserRepository';
import Config from 'config';
import {REPOSITORIES} from '../../../repositories';
import EmailNotification from '../../../Infrastructure/Entities/EmailNotification';
import EventHandler from '../../../Infrastructure/Events/EventHandler';
import ForgotPasswordEvent from '../../../Infrastructure/Events/ForgotPasswordEvent';
import ContainerFactory from '../../../Infrastructure/Factories/ContainerFactory';

class ForgotPasswordUseCase
{
Expand All @@ -25,17 +25,17 @@ class ForgotPasswordUseCase

const emailNotification = new EmailNotification();

let urlConfirmationToken: string = Config.get('url.urlWeb') + 'changeForgotPassword/' + user.confirmationToken;
const urlConfirmationToken: string = Config.get('url.urlWeb') + 'changeForgotPassword/' + user.confirmationToken;

emailNotification.name = "Forgot Password";
emailNotification.name = 'Forgot Password';
emailNotification.to = payload.getEmail();
emailNotification.subject = "Forgot Password";
emailNotification.subject = 'Forgot Password';

const eventHandler = EventHandler.getInstance();

eventHandler.execute(ForgotPasswordEvent.FORGOT_PASSWORD_EVENT, {emailNotification, urlConfirmationToken});

return {message: "We've sent you an email"};
return {message: 'We\'ve sent you an email'};
}
}

Expand Down
16 changes: 8 additions & 8 deletions src/Domain/UseCases/Auth/KeepAliveUseCase.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import {ITokenRepository} from "@digichanges/shared-experience";
import KeepAlivePayload from "../../../InterfaceAdapters/Payloads/Auth/KeepAlivePayload";
import IUserRepository from "../../../InterfaceAdapters/IRepositories/IUserRepository";
import TokenFactory from "../../../Infrastructure/Factories/TokenFactory";
import {REPOSITORIES} from "../../../repositories";
import SetTokenBlacklistUseCase from "../Tokens/SetTokenBlacklistUseCase";
import ContainerFactory from "../../../Infrastructure/Factories/ContainerFactory";
import {ITokenRepository} from '@digichanges/shared-experience';
import KeepAlivePayload from '../../../InterfaceAdapters/Payloads/Auth/KeepAlivePayload';
import IUserRepository from '../../../InterfaceAdapters/IRepositories/IUserRepository';
import TokenFactory from '../../../Infrastructure/Factories/TokenFactory';
import {REPOSITORIES} from '../../../repositories';
import SetTokenBlacklistUseCase from '../Tokens/SetTokenBlacklistUseCase';
import ContainerFactory from '../../../Infrastructure/Factories/ContainerFactory';

class KeepAliveUseCase
{
Expand All @@ -22,7 +22,7 @@ class KeepAliveUseCase
async handle(payload: KeepAlivePayload)
{
const email = payload.getEmail();
const tokenId = payload.getTokenId()
const tokenId = payload.getTokenId();

const user = await this.repository.getOneByEmail(email);
const token: any = await this.tokenRepository.getOne(tokenId);
Expand Down
Loading

0 comments on commit 5d98580

Please sign in to comment.