Skip to content

Commit

Permalink
style: fixed lint errors, dont forget to fix warnings later
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelyali committed Apr 21, 2022
1 parent 17f7fa5 commit ec70a5b
Show file tree
Hide file tree
Showing 27 changed files with 968 additions and 566 deletions.
Empty file added .eslintignore
Empty file.
59 changes: 59 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.eslint.json',
sourceType: 'module',
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: ['plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
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/no-explicit-any': 'off',
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-var-requires': 'off',
'lines-between-class-members': ['error', 'always'],
'padded-blocks': ['error', 'never'],
semi: ['error', 'always'],
quotes: ['error', 'single', { avoidEscape: true }],
'max-len': ['error', { code: 150, comments: 200 }],
'comma-dangle': ['error', 'always-multiline'],
'@typescript-eslint/no-namespace': 'off',
'@typescript-eslint/member-ordering': [
'error',
{
default: [
'signature',
'public-static-field',
'protected-static-field',
'private-static-field',
'public-instance-field',
'protected-instance-field',
'private-instance-field',
'public-abstract-field',
'protected-abstract-field',
'private-abstract-field',
'public-constructor',
'protected-constructor',
'private-constructor',
'public-static-method',
'protected-static-method',
'private-static-method',
'public-instance-method',
'protected-instance-method',
'private-instance-method',
'public-abstract-method',
'protected-abstract-method',
'private-abstract-method',
],
},
],
},
};
2 changes: 1 addition & 1 deletion .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

echo ":)"
yarn lint && yarn format
12 changes: 10 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,10 @@
"lint": "npx eslint \"packages/**/!(*.d).ts\" --fix",
"commit": "npx git-cz",
"postinstall": "npx opencollective",
"pub": "npx lerna publish --force-publish --no-verify-access",
"prepare": "npx husky install"
"prepare": "npx husky install",
"release": "mrepo release",
"release:alpha": "yarn release prerelease --preid alpha --dist-tag alpha",
"release:beta": "yarn release prerelease --preid beta --dist-tag beta"
},
"config": {
"commitizen": {
Expand Down Expand Up @@ -70,9 +72,15 @@
"@types/node": "17.0.23",
"@types/qs": "6.9.7",
"@types/supertest": "2.0.12",
"@typescript-eslint/eslint-plugin": "4.19.0",
"@typescript-eslint/parser": "4.19.0",
"commitizen": "4.2.3",
"conventional-changelog-cli": "2.1.1",
"coveralls": "3.1.1",
"eslint": "7.22.0",
"eslint-config-airbnb-base": "14.2.1",
"eslint-config-prettier": "8.1.0",
"eslint-plugin-import": "2.22.1",
"husky": "7.0.4",
"jest": "27.5.1",
"jest-extended": "2.0.0",
Expand Down
46 changes: 14 additions & 32 deletions packages/crud-request/src/request-query.builder.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
import {
hasValue,
isObject,
isString,
isArrayFull,
isNil,
isUndefined,
} from '@nestjsx/util';
import { hasValue, isObject, isString, isArrayFull, isNil, isUndefined } from '@nestjsx/util';
import { stringify } from 'qs';

import { RequestQueryBuilderOptions, CreateQueryParams } from './interfaces';
Expand All @@ -29,10 +22,6 @@ import {

// tslint:disable:variable-name ban-types
export class RequestQueryBuilder {
constructor() {
this.setParamNames();
}

private static _options: RequestQueryBuilderOptions = {
delim: '||',
delimStr: ',',
Expand All @@ -50,11 +39,18 @@ export class RequestQueryBuilder {
includeDeleted: 'include_deleted',
},
};

public queryObject: { [key: string]: any } = {};

public queryString: string;

private paramNames: {
[key in keyof RequestQueryBuilderOptions['paramNamesMap']]: string;
} = {};
public queryObject: { [key: string]: any } = {};
public queryString: string;

constructor() {
this.setParamNames();
}

static setOptions(options: RequestQueryBuilderOptions) {
RequestQueryBuilder._options = {
Expand Down Expand Up @@ -172,20 +168,12 @@ export class RequestQueryBuilder {
return this;
}

cond(
f: QueryFilter | QueryFilterArr,
cond: 'filter' | 'or' | 'search' = 'search',
): string {
cond(f: QueryFilter | QueryFilterArr, cond: 'filter' | 'or' | 'search' = 'search'): string {
const filter = Array.isArray(f) ? { field: f[0], operator: f[1], value: f[2] } : f;
validateCondition(filter, cond);
const d = this.options.delim;

return (
filter.field +
d +
filter.operator +
(hasValue(filter.value) ? d + filter.value : '')
);
return filter.field + d + filter.operator + (hasValue(filter.value) ? d + filter.value : '');
}

private addJoin(j: QueryJoin | QueryJoinArr): string {
Expand Down Expand Up @@ -222,10 +210,7 @@ export class RequestQueryBuilder {
return this;
}

private checkQueryObjectParam(
cond: keyof RequestQueryBuilderOptions['paramNamesMap'],
defaults: any,
): string {
private checkQueryObjectParam(cond: keyof RequestQueryBuilderOptions['paramNamesMap'], defaults: any): string {
const param = this.paramNames[cond];
if (isNil(this.queryObject[param]) && !isUndefined(defaults)) {
this.queryObject[param] = defaults;
Expand All @@ -248,10 +233,7 @@ export class RequestQueryBuilder {
}
}

private setNumeric(
n: number,
cond: 'limit' | 'offset' | 'page' | 'cache' | 'includeDeleted',
): void {
private setNumeric(n: number, cond: 'limit' | 'offset' | 'page' | 'cache' | 'includeDeleted'): void {
if (!isNil(n)) {
validateNumeric(n, cond);
this.queryObject[this.paramNames[cond]] = n;
Expand Down
98 changes: 33 additions & 65 deletions packages/crud-request/src/request-query.parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,7 @@ import {
} from '@nestjsx/util';

import { RequestQueryException } from './exceptions';
import {
ParamsOptions,
ParsedRequestParams,
RequestQueryBuilderOptions,
} from './interfaces';
import { ParamsOptions, ParsedRequestParams, RequestQueryBuilderOptions } from './interfaces';
import { RequestQueryBuilder } from './request-query.builder';
import {
validateCondition,
Expand All @@ -41,26 +37,41 @@ import {
// tslint:disable:variable-name ban-types
export class RequestQueryParser implements ParsedRequestParams {
public fields: QueryFields = [];

public paramsFilter: QueryFilter[] = [];

public authPersist: ObjectLiteral = undefined;

public search: SCondition;

public filter: QueryFilter[] = [];

public or: QueryFilter[] = [];

public join: QueryJoin[] = [];

public sort: QuerySort[] = [];

public limit: number;

public offset: number;

public page: number;

public cache: number;

public includeDeleted: number;

private _params: any;

private _query: any;

private _paramNames: string[];

private _paramsOptions: ParamsOptions;

private get _options(): RequestQueryBuilderOptions {
return RequestQueryBuilder.getOptions();
return RequestQueryBuilder._options;
}

static create(): RequestQueryParser {
Expand Down Expand Up @@ -92,35 +103,19 @@ export class RequestQueryParser implements ParsedRequestParams {
if (hasLength(paramNames)) {
this._query = query;
this._paramNames = paramNames;
let searchData = this._query[this.getParamNames('search')[0]];
const searchData = this._query[this.getParamNames('search')[0]];
this.search = this.parseSearchQueryParam(searchData) as any;
if (isNil(this.search)) {
this.filter = this.parseQueryParam(
'filter',
this.conditionParser.bind(this, 'filter'),
);
this.filter = this.parseQueryParam('filter', this.conditionParser.bind(this, 'filter'));
this.or = this.parseQueryParam('or', this.conditionParser.bind(this, 'or'));
}
this.fields =
this.parseQueryParam('fields', this.fieldsParser.bind(this))[0] || [];
this.fields = this.parseQueryParam('fields', this.fieldsParser.bind(this))[0] || [];
this.join = this.parseQueryParam('join', this.joinParser.bind(this));
this.sort = this.parseQueryParam('sort', this.sortParser.bind(this));
this.limit = this.parseQueryParam(
'limit',
this.numericParser.bind(this, 'limit'),
)[0];
this.offset = this.parseQueryParam(
'offset',
this.numericParser.bind(this, 'offset'),
)[0];
this.page = this.parseQueryParam(
'page',
this.numericParser.bind(this, 'page'),
)[0];
this.cache = this.parseQueryParam(
'cache',
this.numericParser.bind(this, 'cache'),
)[0];
this.limit = this.parseQueryParam('limit', this.numericParser.bind(this, 'limit'))[0];
this.offset = this.parseQueryParam('offset', this.numericParser.bind(this, 'offset'))[0];
this.page = this.parseQueryParam('page', this.numericParser.bind(this, 'page'))[0];
this.cache = this.parseQueryParam('cache', this.numericParser.bind(this, 'cache'))[0];
this.includeDeleted = this.parseQueryParam(
'includeDeleted',
this.numericParser.bind(this, 'includeDeleted'),
Expand All @@ -138,9 +133,7 @@ export class RequestQueryParser implements ParsedRequestParams {
if (hasLength(paramNames)) {
this._params = params;
this._paramsOptions = options;
this.paramsFilter = paramNames
.map((name) => this.paramParser(name))
.filter((filter) => filter);
this.paramsFilter = paramNames.map((name) => this.paramParser(name)).filter((filter) => filter);
}
}

Expand All @@ -160,24 +153,20 @@ export class RequestQueryParser implements ParsedRequestParams {
return filter
? {
[filter.field]: {
[filter.operator]: isEmptyValue[filter.operator]
? isEmptyValue[filter.operator]
: filter.value,
[filter.operator]: isEmptyValue[filter.operator] ? isEmptyValue[filter.operator] : filter.value,
},
}
: /* istanbul ignore next */ {};
}

private getParamNames(
type: keyof RequestQueryBuilderOptions['paramNamesMap'],
): string[] {
private getParamNames(type: keyof RequestQueryBuilderOptions['paramNamesMap']): string[] {
return this._paramNames.filter((p) => {
const name = this._options.paramNamesMap[type];
return isString(name) ? name === p : (name as string[]).some((m) => m === p);
});
}

private getParamValues(value: string | string[], parser: Function): string[] {
private getParamValues(value: string | string[], parser: any): string[] {
if (isStringFull(value)) {
return [parser.call(this, value)];
}
Expand All @@ -189,17 +178,11 @@ export class RequestQueryParser implements ParsedRequestParams {
return [];
}

private parseQueryParam(
type: keyof RequestQueryBuilderOptions['paramNamesMap'],
parser: Function,
) {
private parseQueryParam(type: keyof RequestQueryBuilderOptions['paramNamesMap'], parser: any) {
const param = this.getParamNames(type);

if (isArrayFull(param)) {
return param.reduce(
(a, name) => [...a, ...this.getParamValues(this._query[name], parser)],
[],
);
return param.reduce((a, name) => [...a, ...this.getParamValues(this._query[name], parser)], []);
}

return [];
Expand All @@ -212,10 +195,7 @@ export class RequestQueryParser implements ParsedRequestParams {
if (!isDate(parsed) && isObject(parsed)) {
// throw new Error('Don\'t support object now');
return val;
} else if (
typeof parsed === 'number' &&
parsed.toLocaleString('fullwide', { useGrouping: false }) !== val
) {
} else if (typeof parsed === 'number' && parsed.toLocaleString('fullwide', { useGrouping: false }) !== val) {
// JS cannot handle big numbers. Leave it as a string to prevent data loss
return val;
}
Expand Down Expand Up @@ -261,16 +241,7 @@ export class RequestQueryParser implements ParsedRequestParams {
}

private conditionParser(cond: 'filter' | 'or' | 'search', data: string): QueryFilter {
const isArrayValue = [
'in',
'notin',
'between',
'$in',
'$notin',
'$between',
'$inL',
'$notinL',
];
const isArrayValue = ['in', 'notin', 'between', '$in', '$notin', '$between', '$inL', '$notinL'];
const isEmptyValue = ['isnull', 'notnull', '$isnull', '$notnull'];
const param = data.split(this._options.delim);
const field = param[0];
Expand Down Expand Up @@ -315,10 +286,7 @@ export class RequestQueryParser implements ParsedRequestParams {
return sort;
}

private numericParser(
num: 'limit' | 'offset' | 'page' | 'cache' | 'includeDeleted',
data: string,
): number {
private numericParser(num: 'limit' | 'offset' | 'page' | 'cache' | 'includeDeleted', data: string): number {
const val = this.parseValue(data);
validateNumeric(val, num);

Expand Down
Loading

0 comments on commit ec70a5b

Please sign in to comment.