[QRQC_2] No explicit any in twenty-server (#12068)

# Introduction

Added a no-explicit-any rule to the twenty-server, not applicable to
tests and integration tests folder

Related to https://github.com/twentyhq/core-team-issues/issues/975
Discussed with Charles

## In case of conflicts
Until this is approved I won't rebased and handle conflict, just need to
drop two latest commits and re run the scripts etc

## Legacy
We decided not to handle the existing lint error occurrences and
programmatically ignored them through a disable next line rule comment

## Open question
We might wanna activate the
[no-explicit-any](https://typescript-eslint.io/rules/no-explicit-any/)
`ignoreRestArgs` for our use case ?
```
    ignoreRestArgs?: boolean;
```

---------

Co-authored-by: etiennejouan <jouan.etienne@gmail.com>
This commit is contained in:
Paul Rastoin
2025-05-15 16:26:38 +02:00
committed by GitHub
parent c95c4383b4
commit a8423e8503
213 changed files with 453 additions and 4 deletions

View File

@ -13,6 +13,7 @@ export const camelCaseDeep = <T>(value: T): CamelCasedPropertiesDeep<T> => {
// Check if it's an object
if (isObject(value)) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const result: Record<string, any> = {};
for (const key in value) {

View File

@ -1,3 +1,4 @@
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const isDate = (date: any): date is Date => {
return date instanceof Date;
};

View File

@ -1,3 +1,4 @@
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const isValidDate = (date: any): date is Date => {
return date instanceof Date && !isNaN(date.getTime());
};

View File

@ -13,6 +13,7 @@ export const kebabCaseDeep = <T>(value: T): KebabCasedPropertiesDeep<T> => {
// Check if it's an object
if (isObject(value)) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const result: Record<string, any> = {};
for (const key in value) {

View File

@ -14,6 +14,7 @@ export const pascalCaseDeep = <T>(value: T): PascalCasedPropertiesDeep<T> => {
// Check if it's an object
if (isObject(value)) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const result: Record<string, any> = {};
for (const key in value) {

View File

@ -1,6 +1,8 @@
export const removeSecretFromWebhookRecord = (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
record: Record<string, any> | undefined,
isWebhookEvent: boolean,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
): Record<string, any> | undefined => {
if (!isWebhookEvent || !record) return record;

View File

@ -13,6 +13,7 @@ export const snakeCaseDeep = <T>(value: T): SnakeCasedPropertiesDeep<T> => {
// Check if it's an object
if (isObject(value)) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const result: Record<string, any> = {};
for (const key in value) {

View File

@ -1,6 +1,7 @@
import { Readable } from 'stream';
export const streamToBuffer = async (stream: Readable): Promise<Buffer> => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const chunks: any[] = [];
for await (const chunk of stream) {