TWNTY-3794 - ESLint rule: only take explicit boolean predicates in if statements (#4354)

* ESLint rule: only take explicit boolean predicates in if statements

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Merge main

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Fix frontend linter errors

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Fix jest

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Refactor according to review

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Refactor according to review

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Fix lint on new code

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

---------

Co-authored-by: gitstart-twenty <gitstart-twenty@users.noreply.github.com>
Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>
This commit is contained in:
gitstart-app[bot]
2024-03-09 10:48:19 +01:00
committed by GitHub
parent 40bea0d95e
commit 17511be0cf
164 changed files with 655 additions and 367 deletions

View File

@ -1,4 +1,10 @@
import { isObject, isString } from '@sniptt/guards';
import {
isArray,
isNonEmptyString,
isNumber,
isObject,
isString,
} from '@sniptt/guards';
import { GraphQLVariables } from 'msw';
import { isNonNullable } from '../../utils/isNonNullable';
@ -24,7 +30,7 @@ const filterData = <DataT>(
if (!['OR', 'AND', 'NOT'].includes(key)) {
const filterElement = where[key] as StringFilter & { is?: object };
if (filterElement.is) {
if (isNonNullable(filterElement.is)) {
const nestedKey = Object.keys(filterElement.is)[0] as string;
if (
item[key as keyof typeof item] &&
@ -41,22 +47,22 @@ const filterData = <DataT>(
);
}
}
if (filterElement.equals) {
if (isNonEmptyString(filterElement.equals)) {
return item[key as keyof typeof item] === filterElement.equals;
}
if (filterElement.contains) {
if (isNonEmptyString(filterElement.contains)) {
return (item[key as keyof typeof item] as string)
.toLocaleLowerCase()
.includes(
filterElement.contains.replaceAll('%', '').toLocaleLowerCase(),
);
}
if (filterElement.in) {
if (isArray(filterElement.in)) {
const itemValue = item[key as keyof typeof item] as string;
return filterElement.in.includes(itemValue);
}
if (filterElement.notIn) {
if (isArray(filterElement.notIn)) {
const itemValue = item[key as keyof typeof item] as string;
if (filterElement.notIn.length === 0) return true;
@ -68,18 +74,18 @@ const filterData = <DataT>(
});
// { OR: [{ firstName: filter }, { lastName: filter }]
if (where.OR && Array.isArray(where.OR)) {
if (isArray(where.OR)) {
isMatch =
isMatch ||
where.OR.some((orFilter) =>
where.OR.some((orFilter: any) =>
filterData<DataT>(data, orFilter).includes(item),
);
}
if (where.AND && Array.isArray(where.AND)) {
if (isArray(where.AND)) {
isMatch =
isMatch ||
where.AND.every((andFilter) =>
where.AND.every((andFilter: any) =>
filterData<DataT>(data, andFilter).includes(item),
);
}
@ -95,12 +101,12 @@ export const filterAndSortData = <DataT>(
): Array<DataT> => {
let filteredData = data;
if (where) {
if (isNonNullable(where)) {
filteredData = filterData<DataT>(data, where);
}
if (Array.isArray(orderBy) && orderBy.length > 0 && orderBy[0]) {
const firstOrderBy = orderBy[0];
if (isArray(orderBy) && orderBy.length > 0 && isNonNullable(orderBy[0])) {
const firstOrderBy = orderBy?.[0];
const key = Object.keys(firstOrderBy)[0];
@ -122,7 +128,7 @@ export const filterAndSortData = <DataT>(
});
}
if (limit) {
if (isNumber(limit) && limit > 0) {
filteredData = filteredData.slice(0, limit);
}