Skip to content

Commit

Permalink
linting project
Browse files Browse the repository at this point in the history
  • Loading branch information
[email protected] authored and [email protected] committed Jan 28, 2023
1 parent 200ccd8 commit a5be748
Show file tree
Hide file tree
Showing 58 changed files with 1,003 additions and 1,157 deletions.
22 changes: 20 additions & 2 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,43 @@
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
tsconfigRootDir : __dirname,
tsconfigRootDir : __dirname,
sourceType: 'module',
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: [
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:react/recommended',
'plugin:prettier/recommended',
],
root: true,
env: {
node: true,
jest: true,
es6: true,
},
overrides: [
{
'files': ['*.tsx'],
'rules': {
'react/prop-types': 'off'
}
},
{
'files': ['*.js'],
'rules': {
'@typescript-eslint/no-var-requires': 'off'
}
}
],
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',
'@typescript-eslint/no-empty-function': 'off',
},
};
6 changes: 4 additions & 2 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
{
"singleQuote": true,
"trailingComma": "all"
}
"trailingComma": "all",
"printWidth": 120,
"tabWidth": 2
}
5 changes: 3 additions & 2 deletions Todo.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,6 @@
17. - [ ] name the routes
18. - [ ] seed
19. - [ ] add ELASTIC
20. - [ ] add linters
21.
20. - [x] add linters
21. - [ ] separate configuration files
22. - [ ]
9 changes: 5 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,12 @@
"@types/node": "^16.0.0",
"@types/passport-jwt": "^3.0.8",
"@types/supertest": "^2.0.11",
"@typescript-eslint/eslint-plugin": "^5.0.0",
"@typescript-eslint/parser": "^5.0.0",
"eslint": "^8.0.1",
"@typescript-eslint/eslint-plugin": "^5.49.0",
"@typescript-eslint/parser": "^5.49.0",
"eslint": "^8.32.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.32.1",
"jest": "28.1.3",
"prettier": "^2.3.2",
"source-map-support": "^0.5.20",
Expand Down
126 changes: 51 additions & 75 deletions rich/commander/commander.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';
import { Command, CommandFactory, CommandRunner, Option, } from 'nest-commander';
import * as fs from "fs"
import { Command, CommandFactory, CommandRunner, Option } from 'nest-commander';
import * as fs from 'fs';
import { resolve } from 'path';

interface CrudCommandOptions {
Expand All @@ -9,10 +9,7 @@ interface CrudCommandOptions {

@Command({ name: 'crud', description: 'A parameter parse' })
export class CrudCommand extends CommandRunner {
async run(
passedParam: string[],
options?: CrudCommandOptions,
): Promise<void> {
async run(passedParam: string[], options?: CrudCommandOptions): Promise<void> {
if (options?.permission) {
this.runWithoutPermission(passedParam);
} else {
Expand All @@ -25,108 +22,97 @@ export class CrudCommand extends CommandRunner {
description: 'a crud without permission',
})
async runWithoutPermission(param: string[]): Promise<void> {
return this.runCrud(param)
return this.runCrud(param);
}


async runCrud(param: string[], noPermission?: boolean): Promise<void> {

const [name] = param
const [name] = param;

if (!name || name.length <= 2) {
throw new Error("Please Provide A Name For Crud")
throw new Error('Please Provide A Name For Crud');
}

const ModuleName = this.generateModuleName(name)
const ModuleName = this.generateModuleName(name);

const path = resolve(__dirname + "../../../src/" + ModuleName)
const path = resolve(__dirname + '../../../src/' + ModuleName);

if (fs.existsSync(path)) {
throw new Error('Directory exists!')
throw new Error('Directory exists!');
}

fs.mkdirSync(path)
fs.writeFile(`${path}/${ModuleName}.module.ts`, this.generateModule(ModuleName), () => { })
fs.writeFile(`${path}/${ModuleName}.service.ts`, this.generateService(ModuleName), () => { })
fs.writeFile(`${path}/${ModuleName}.controller.ts`, this.generateController(ModuleName, noPermission), () => { })

fs.mkdirSync(path + "/model")
fs.writeFile(`${path}/model/${ModuleName}.entity.ts`, this.generateEntity(ModuleName), () => { })

fs.mkdirSync(path + "/dto")
fs.writeFile(`${path}/dto/${ModuleName}.create.dto.ts`, this.generateCreateOrUpdateDto(ModuleName, "Create"), () => { })
fs.writeFile(`${path}/dto/${ModuleName}.delete.dto.ts`, this.generateParamsDto(ModuleName, "Delete"), () => { })
fs.writeFile(`${path}/dto/${ModuleName}.search.dto.ts`, this.generateSearchDto(ModuleName), () => { })
fs.writeFile(`${path}/dto/${ModuleName}.show.dto.ts`, this.generateParamsDto(ModuleName, "Show"), () => { })
fs.writeFile(`${path}/dto/${ModuleName}.update.dto.ts`, this.generateUpdateDto(ModuleName), () => { })

console.log(`Please Add ${this.generateModuleName(ModuleName, true)}Module In AppModule Imports`)

fs.mkdirSync(path);
fs.writeFile(`${path}/${ModuleName}.module.ts`, this.generateModule(ModuleName), () => {});
fs.writeFile(`${path}/${ModuleName}.service.ts`, this.generateService(ModuleName), () => {});
fs.writeFile(`${path}/${ModuleName}.controller.ts`, this.generateController(ModuleName, noPermission), () => {});

fs.mkdirSync(path + '/model');
fs.writeFile(`${path}/model/${ModuleName}.entity.ts`, this.generateEntity(ModuleName), () => {});

fs.mkdirSync(path + '/dto');
fs.writeFile(
`${path}/dto/${ModuleName}.create.dto.ts`,
this.generateCreateOrUpdateDto(ModuleName, 'Create'),
() => {},
);
fs.writeFile(`${path}/dto/${ModuleName}.delete.dto.ts`, this.generateParamsDto(ModuleName, 'Delete'), () => {});
fs.writeFile(`${path}/dto/${ModuleName}.search.dto.ts`, this.generateSearchDto(ModuleName), () => {});
fs.writeFile(`${path}/dto/${ModuleName}.show.dto.ts`, this.generateParamsDto(ModuleName, 'Show'), () => {});
fs.writeFile(`${path}/dto/${ModuleName}.update.dto.ts`, this.generateUpdateDto(ModuleName), () => {});

console.log(`Please Add ${this.generateModuleName(ModuleName, true)}Module In AppModule Imports`);
}




generateEntity(name: string) {

const EntityName = this.generateModuleName(name, true)
const EntityName = this.generateModuleName(name, true);

return `
import { CommonEntity } from "@rich";
import { Entity } from "typeorm";
@Entity("${name}s")
export class ${EntityName} extends CommonEntity {}
`
`;
}

generateSearchDto(name: string) {

const SearchDtoName = this.generateModuleName(name, true)
const SearchDtoName = this.generateModuleName(name, true);

return `
import { CommonSearchDto } from "@rich"
export class ${SearchDtoName}SearchDto extends CommonSearchDto { }
`
`;
}

generateParamsDto(name: string, type: "Show" | "Delete" | "UpdateParams") {

const ParamsDtoName = this.generateModuleName(name, true)
generateParamsDto(name: string, type: 'Show' | 'Delete' | 'UpdateParams') {
const ParamsDtoName = this.generateModuleName(name, true);

return `
import { CommonParamsDto } from '@rich';
export class ${ParamsDtoName}${type}Dto extends CommonParamsDto {}
`
`;
}

generateCreateOrUpdateDto(name: string, type: "Create" | "UpdatePayload") {

const dtoName = this.generateModuleName(name, true)
generateCreateOrUpdateDto(name: string, type: 'Create' | 'UpdatePayload') {
const dtoName = this.generateModuleName(name, true);

return `
export class ${dtoName}${type}Dto {}
`
`;
}

generateUpdateDto(name: string) {

return `
${this.generateParamsDto(name, "UpdateParams")}
${this.generateParamsDto(name, 'UpdateParams')}
${this.generateCreateOrUpdateDto(name, "UpdatePayload")}
${this.generateCreateOrUpdateDto(name, 'UpdatePayload')}
`

`;
}



generateModule(name: string) {

const ModuleName = this.generateModuleName(name, true)
const ModuleName = this.generateModuleName(name, true);

return `
import { Module } from '@nestjs/common';
Expand All @@ -148,13 +134,11 @@ export class CrudCommand extends CommandRunner {
]
})
export class ${ModuleName}Module {}
`

`;
}

generateService(name: string) {

const ServiceName = this.generateModuleName(name, true)
const ServiceName = this.generateModuleName(name, true);

return `
import { Injectable } from '@nestjs/common';
Expand All @@ -173,14 +157,11 @@ export class CrudCommand extends CommandRunner {
}
}
`
`;
}



generateController(name: string, noPermission?: boolean) {

const ControllerName = this.generateModuleName(name, true)
const ControllerName = this.generateModuleName(name, true);

return `
import {
Expand Down Expand Up @@ -261,30 +242,25 @@ export class CrudCommand extends CommandRunner {
}
`
`;
}


generateModuleName(name: string, startCap?: boolean) {
let ModuleName = name.replace(/^[\w,\s-]+\.[A-Za-z]{3}$/g, "").toLowerCase()
let ModuleName = name.replace(/^[\w,\s-]+\.[A-Za-z]{3}$/g, '').toLowerCase();
if (startCap) {
ModuleName = ModuleName.charAt(0).toUpperCase() + ModuleName.slice(1);
}
return ModuleName
return ModuleName;
}


}

@Module({
providers: [CrudCommand],
})
export class AppModule { }
export class AppModule {}

async function bootstrap() {
await CommandFactory.run(AppModule);
}

bootstrap();


58 changes: 26 additions & 32 deletions rich/index.ts
Original file line number Diff line number Diff line change
@@ -1,45 +1,39 @@
//rich module
export * from "./modules/rich.module"
export * from './modules/rich.module';

export * from "./modules/excel/excel.service"
export * from "./modules/cache/cache.service"
export * from "./modules/file/file.utils"
export * from './modules/excel/excel.service';
export * from './modules/cache/cache.service';
export * from './modules/file/file.utils';

export * from './modules/permission/permission.guard';
export * from './modules/permission/permission.decorator';


export * from "./modules/permission/permission.guard"
export * from "./modules/permission/permission.decorator"

export * from "./modules/auth/auth.guard"

export * from './modules/auth/auth.guard';

//commons
export * from "./modules/common/common.module"
export * from "./modules/common/common.service"
export * from "./modules/common/models/common.entity"
export * from "./modules/common/Dtos/common.params.dto"
export * from "./modules/common/Dtos/common.search.dto"

export * from "./modules/permission/permission.gurd.service"
export * from "./modules/permission/permission.module"
export * from "./modules/permission/models/permission.entity"


export * from "./modules/request_log/request_log.middleware"
export * from "./modules/request_log/request_log.service"
export * from "./modules/request_log/models/request_log.entity"
export * from './modules/common/common.module';
export * from './modules/common/common.service';
export * from './modules/common/models/common.entity';
export * from './modules/common/Dtos/common.params.dto';
export * from './modules/common/Dtos/common.search.dto';

export * from "./modules/auth/auth.module"
export * from './modules/permission/permission.gurd.service';
export * from './modules/permission/permission.module';
export * from './modules/permission/models/permission.entity';

export * from "./modules/cache/cache.module"
export * from './modules/request_log/request_log.middleware';
export * from './modules/request_log/request_log.service';
export * from './modules/request_log/models/request_log.entity';

export * from './modules/auth/auth.module';

export * from "./modules/request_log/request_log.module"
export * from './modules/cache/cache.module';

export * from "./modules/role/role.module"
export * from "./modules/role/models/role.entity"
export * from './modules/request_log/request_log.module';

export * from "./modules/user/user.module"
export * from "./modules/user/models/user.entity"
export * from "./modules/user/user.service"
export * from './modules/role/role.module';
export * from './modules/role/models/role.entity';

export * from './modules/user/user.module';
export * from './modules/user/models/user.entity';
export * from './modules/user/user.service';
Loading

0 comments on commit a5be748

Please sign in to comment.