Migrate from ESLint to OxLint (#18443)

## Summary

Fully replaces ESLint with OxLint across the entire monorepo:

- **Replaced all ESLint configs** (`eslint.config.mjs`) with OxLint
configs (`.oxlintrc.json`) for every package: `twenty-front`,
`twenty-server`, `twenty-emails`, `twenty-ui`, `twenty-shared`,
`twenty-sdk`, `twenty-zapier`, `twenty-docs`, `twenty-website`,
`twenty-apps/*`, `create-twenty-app`
- **Migrated custom lint rules** from ESLint plugin format to OxLint JS
plugin system (`@oxlint/plugins`), including
`styled-components-prefixed-with-styled`, `no-hardcoded-colors`,
`sort-css-properties-alphabetically`,
`graphql-resolvers-should-be-guarded`,
`rest-api-methods-should-be-guarded`, `max-consts-per-file`, and
Jotai-related rules
- **Migrated custom rule tests** from ESLint `RuleTester` + Jest to
`oxlint/plugins-dev` `RuleTester` + Vitest
- **Removed all ESLint dependencies** from `package.json` files and
regenerated lockfiles
- **Updated Nx targets** (`lint`, `lint:diff-with-main`, `fmt`) in
`nx.json` and per-project `project.json` to use `oxlint` commands with
proper `dependsOn` for plugin builds
- **Updated CI workflows** (`.github/workflows/ci-*.yaml`) — no more
ESLint executor
- **Updated IDE setup**: replaced `dbaeumer.vscode-eslint` with
`oxc.oxc-vscode` extension, configured `source.fixAll.oxc` and
format-on-save with Prettier
- **Replaced all `eslint-disable` comments** with `oxlint-disable`
equivalents across the codebase
- **Updated docs** (`twenty-docs`) to reference OxLint instead of ESLint
- **Renamed** `twenty-eslint-rules` package to `twenty-oxlint-rules`

### Temporarily disabled rules (tracked in `OXLINT_MIGRATION_TODO.md`)

| Rule | Package | Violations | Auto-fixable |
|------|---------|-----------|-------------|
| `twenty/sort-css-properties-alphabetically` | twenty-front | 578 | Yes
|
| `typescript/consistent-type-imports` | twenty-server | 3814 | Yes |
| `twenty/max-consts-per-file` | twenty-server | 94 | No |

### Dropped plugins (no OxLint equivalent)

`eslint-plugin-project-structure`, `lingui/*`, `@stylistic/*`,
`import/order`, `prefer-arrow/prefer-arrow-functions`,
`eslint-plugin-mdx`, `@next/eslint-plugin-next`,
`eslint-plugin-storybook`, `eslint-plugin-react-refresh`. Partial
coverage for `jsx-a11y` and `unused-imports`.

### Additional fixes (pre-existing issues exposed by merge)

- Fixed `EmailThreadPreview.tsx` broken import from main rename
(`useOpenEmailThreadInSidePanel`)
- Restored truthiness guard in `getActivityTargetObjectRecords.ts`
- Fixed `AgentTurnResolver` return types to match entity (virtual
`fileMediaType`/`fileUrl` are resolved via `@ResolveField()`)

## Test plan

- [x] `npx nx lint twenty-front` passes
- [x] `npx nx lint twenty-server` passes
- [x] `npx nx lint twenty-docs` passes
- [x] Custom oxlint rules validated with Vitest: `npx nx test
twenty-oxlint-rules`
- [x] `npx nx typecheck twenty-front` passes
- [x] `npx nx typecheck twenty-server` passes
- [x] CI workflows trigger correctly with `dependsOn:
["twenty-oxlint-rules:build"]`
- [x] IDE linting works with `oxc.oxc-vscode` extension
This commit is contained in:
Charles Bochet
2026-03-06 01:03:50 +01:00
committed by GitHub
parent b421efbff7
commit 9d57bc39e5
880 changed files with 4711 additions and 9687 deletions
@@ -14,7 +14,7 @@ export class QueryRunnerArgsFactory {
async overrideValueByFieldMetadata(
key: string,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
value: any,
fieldIdByName: Record<string, string>,
flatObjectMetadata: FlatObjectMetadata,
@@ -50,7 +50,7 @@ export class ProcessNestedRelationsV2Helper {
flatFieldMetadataMaps: FlatEntityMaps<FlatFieldMetadata>;
parentObjectMetadataItem: FlatObjectMetadata;
parentObjectRecords: T[];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
parentObjectRecordsAggregatedValues?: Record<string, any>;
relations: Record<string, FindOptionsRelations<ObjectLiteral>>;
aggregate?: Record<string, AggregationField>;
@@ -58,7 +58,7 @@ export class ProcessNestedRelationsV2Helper {
authContext: WorkspaceAuthContext;
workspaceDataSource: GlobalWorkspaceDataSource;
rolePermissionConfig?: RolePermissionConfig;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
selectedFields: Record<string, any>;
}): Promise<void> {
const processRelationTasks = Object.entries(relations).map(
@@ -105,7 +105,7 @@ export class ProcessNestedRelationsV2Helper {
flatFieldMetadataMaps: FlatEntityMaps<FlatFieldMetadata>;
parentObjectMetadataItem: FlatObjectMetadata;
parentObjectRecords: T[];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
parentObjectRecordsAggregatedValues: Record<string, any>;
sourceFieldName: string;
nestedRelations: FindOptionsRelations<ObjectLiteral>;
@@ -309,7 +309,7 @@ export class ProcessNestedRelationsV2Helper {
}: {
records: ObjectRecord[];
idField: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
}): any[] {
return [...new Set(records.map((item) => item[idField]))];
}
@@ -323,24 +323,24 @@ export class ProcessNestedRelationsV2Helper {
sourceFieldName,
targetObjectNameSingular,
}: {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
referenceQueryBuilder: WorkspaceSelectQueryBuilder<any>;
column: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
ids: any[];
limit: number;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
aggregate: Record<string, any>;
sourceFieldName: string;
targetObjectNameSingular: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
}): Promise<{ relationResults: any[]; relationAggregatedFieldsResult: any }> {
if (ids.length === 0) {
return { relationResults: [], relationAggregatedFieldsResult: {} };
}
const aggregateForRelation = aggregate[sourceFieldName];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
let relationAggregatedFieldsResult: Record<string, any> = {};
if (aggregateForRelation) {
@@ -401,11 +401,11 @@ export class ProcessNestedRelationsV2Helper {
relationType,
}: {
parentRecords: ObjectRecord[];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
parentObjectRecordsAggregatedValues: Record<string, any>;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
relationResults: any[];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
relationAggregatedFieldsResult: Record<string, any>;
sourceFieldName: string;
joinField: string;
@@ -36,7 +36,7 @@ export class ProcessNestedRelationsHelper {
flatFieldMetadataMaps: FlatEntityMaps<FlatFieldMetadata>;
parentObjectMetadataItem: FlatObjectMetadata;
parentObjectRecords: T[];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
parentObjectRecordsAggregatedValues?: Record<string, any>;
relations: Record<string, FindOptionsRelations<ObjectLiteral>>;
aggregate?: Record<string, AggregationField>;
@@ -44,7 +44,7 @@ export class ProcessNestedRelationsHelper {
authContext: WorkspaceAuthContext;
workspaceDataSource: GlobalWorkspaceDataSource;
rolePermissionConfig?: RolePermissionConfig;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
selectedFields: Record<string, any>;
}): Promise<void> {
return this.processNestedRelationsV2Helper.processNestedRelations({
@@ -11,7 +11,7 @@ import { type FileUrlService } from 'src/engine/core-modules/file/file-url/file-
import { extractFileIdFromUrl } from 'src/engine/core-modules/file/files-field/utils/extract-file-id-from-url.util';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
type RichTextBlock = Record<string, any>;
const parseBlocknoteJsonSafely = (
@@ -7,9 +7,9 @@ import { isDefined } from 'twenty-shared/utils';
import { InternalServerError } from 'src/engine/core-modules/graphql/utils/graphql-errors.util';
export type CacheMetadataPluginConfig = {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
cacheGetter: (key: string) => any;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
cacheSetter: (key: string, value: any) => void;
operationsToCache: string[];
};
@@ -42,7 +42,7 @@ export function useCachedMetadata(config: CacheMetadataPluginConfig): Plugin {
return `graphql:operations:${operationName}:${workspace.id}:${workspaceMetadataVersion}:${locale}:${queryHash}`;
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
const getOperationName = (serverContext: any) =>
serverContext?.req?.body?.operationName;
@@ -25,11 +25,11 @@ export class GraphqlQueryFilterConditionParser {
}
public parse(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
queryBuilder: WorkspaceSelectQueryBuilder<any>,
objectNameSingular: string,
filter: Partial<ObjectRecordFilter>,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
): WorkspaceSelectQueryBuilder<any> {
if (!filter || Object.keys(filter).length === 0) {
return queryBuilder;
@@ -48,7 +48,7 @@ export class GraphqlQueryFilterConditionParser {
queryBuilder: WhereExpressionBuilder,
objectNameSingular: string,
key: string,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
value: any,
isFirst = false,
): void {
@@ -42,7 +42,7 @@ export class GraphqlQueryFilterFieldParser {
queryBuilder: WhereExpressionBuilder,
objectNameSingular: string,
key: string,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
filterValue: any,
isFirst = false,
useDirectTableReference = false,
@@ -101,7 +101,7 @@ export class GraphqlQueryFilterFieldParser {
queryBuilder: WhereExpressionBuilder,
fieldMetadata: FlatFieldMetadata,
objectNameSingular: string,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
fieldValue: any,
isFirst = false,
useDirectTableReference = false,
@@ -130,7 +130,7 @@ export class GraphqlQueryFilterFieldParser {
const fullFieldName = `${fieldMetadata.name}${capitalize(subFieldKey)}`;
const [[operator, value]] = Object.entries(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
subFieldFilter as Record<string, any>,
);
@@ -12,7 +12,7 @@ import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object
export class GraphqlQuerySelectedFieldsAggregateParser {
parse(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
graphqlSelectedFields: Partial<Record<string, any>>,
flatObjectMetadata: FlatObjectMetadata,
flatFieldMetadataMaps: FlatEntityMaps<FlatFieldMetadata>,
@@ -27,7 +27,7 @@ export class GraphqlQuerySelectedFieldsRelationParser {
| FlatFieldMetadata<FieldMetadataType.RELATION>
| FlatFieldMetadata<FieldMetadataType.MORPH_RELATION>,
fieldKey: string,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
fieldValue: any,
accumulator: GraphqlQuerySelectedFieldsResult,
isFromOneToManyRelation?: boolean,
@@ -16,11 +16,11 @@ import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-fiel
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
export type GraphqlQuerySelectedFieldsResult = {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
select: Record<string, any>;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
relations: Record<string, any>;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
aggregate: Record<string, any>;
relationFieldsCount: number;
hasAtLeastTwoNestedOneToManyRelations: boolean;
@@ -47,7 +47,7 @@ export class GraphqlQuerySelectedFieldsParser {
}
parse(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
graphqlSelectedFields: Partial<Record<string, any>>,
flatObjectMetadata: FlatObjectMetadata,
isFromOneToManyRelation?: boolean,
@@ -89,7 +89,7 @@ export class GraphqlQuerySelectedFieldsParser {
}
private parseRecordFields(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
graphqlSelectedFields: Partial<Record<string, any>>,
flatObjectMetadata: FlatObjectMetadata,
accumulator: GraphqlQuerySelectedFieldsResult,
@@ -204,7 +204,7 @@ export class GraphqlQuerySelectedFieldsParser {
}
private parseConnectionField(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
graphqlSelectedFields: Partial<Record<string, any>>,
flatObjectMetadata: FlatObjectMetadata,
accumulator: GraphqlQuerySelectedFieldsResult,
@@ -228,7 +228,7 @@ export class GraphqlQuerySelectedFieldsParser {
}
private isRootConnection(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
graphqlSelectedFields: Partial<Record<string, any>>,
): boolean {
return Object.keys(graphqlSelectedFields).includes('edges');
@@ -236,9 +236,9 @@ export class GraphqlQuerySelectedFieldsParser {
private parseCompositeField(
fieldMetadata: FlatFieldMetadata,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
fieldValue: any,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
): Record<string, any> {
const compositeType = compositeTypeDefinitions.get(
fieldMetadata.type as CompositeFieldMetadataType,
@@ -270,7 +270,7 @@ export class GraphqlQuerySelectedFieldsParser {
return acc;
},
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
{} as Record<string, any>,
);
}
@@ -58,11 +58,11 @@ export class GraphqlQueryParser {
}
public applyFilterToBuilder(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
queryBuilder: WorkspaceSelectQueryBuilder<any>,
objectNameSingular: string,
recordFilter: Partial<ObjectRecordFilter>,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
): WorkspaceSelectQueryBuilder<any> {
return this.filterConditionParser.parse(
queryBuilder,
@@ -72,10 +72,10 @@ export class GraphqlQueryParser {
}
public applyDeletedAtToBuilder(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
queryBuilder: WorkspaceSelectQueryBuilder<any>,
recordFilter: Partial<ObjectRecordFilter>,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
): WorkspaceSelectQueryBuilder<any> {
if (this.checkForDeletedAtFilter(recordFilter)) {
queryBuilder.withDeleted();
@@ -111,7 +111,7 @@ export class GraphqlQueryParser {
};
public applyOrderToBuilder(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
queryBuilder: WorkspaceSelectQueryBuilder<any>,
orderBy: ObjectRecordOrderBy | OrderByWithGroupBy,
objectNameSingular: string,
@@ -138,7 +138,7 @@ export class GraphqlQueryParser {
}
public addRelationOrderColumnsToBuilder(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
queryBuilder: WorkspaceSelectQueryBuilder<any>,
parsedOrderBy: Record<string, OrderByClause>,
objectNameSingular: string,
@@ -216,11 +216,11 @@ export class GraphqlQueryParser {
}
public applyGroupByOrderToBuilder(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
queryBuilder: WorkspaceSelectQueryBuilder<any>,
orderBy: ObjectRecordOrderBy | OrderByWithGroupBy,
groupByFields: GroupByField[],
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
): WorkspaceSelectQueryBuilder<any> {
const parsedOrderBys = this.orderGroupByParser.parse({
orderBy,
@@ -241,7 +241,7 @@ export class GraphqlQueryParser {
}
public parseSelectedFields(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
graphqlSelectedFields: Partial<Record<string, any>>,
): GraphqlQuerySelectedFieldsResult {
const selectedFieldsParser = new GraphqlQuerySelectedFieldsParser(
@@ -57,9 +57,9 @@ export class ObjectRecordsToGraphqlConnectionHelper {
}: {
objectRecords: T[];
parentObjectRecord?: T;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
objectRecordsAggregatedValues?: Record<string, any>;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
selectedAggregatedFields?: Record<string, any>;
objectName: string;
take: number;
@@ -108,7 +108,7 @@ export class ObjectRecordsToGraphqlConnectionHelper {
objectRecordsAggregatedValues,
}: {
selectedAggregatedFields: Record<string, AggregationField[]>;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
objectRecordsAggregatedValues: Record<string, any>;
}) => {
if (!isDefined(objectRecordsAggregatedValues)) {
@@ -134,7 +134,7 @@ export class ObjectRecordsToGraphqlConnectionHelper {
);
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
public processRecord<T extends Record<string, any>>({
objectRecord,
objectName,
@@ -147,9 +147,9 @@ export class ObjectRecordsToGraphqlConnectionHelper {
}: {
objectRecord: T;
objectName: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
objectRecordsAggregatedValues?: Record<string, any>;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
selectedAggregatedFields?: Record<string, any>;
take: number;
totalCount: number;
@@ -171,7 +171,7 @@ export class ObjectRecordsToGraphqlConnectionHelper {
flatEntityMaps: this.flatObjectMetadataMaps,
});
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
const processedObjectRecord: Record<string, any> = {};
for (const fieldId of flatObjectMetadata.fieldIds) {
@@ -273,9 +273,9 @@ export class ObjectRecordsToGraphqlConnectionHelper {
private processCompositeField(
fieldMetadata: FlatFieldMetadata,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
fieldValue: any,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
): Record<string, any> {
const compositeType = compositeTypeDefinitions.get(
fieldMetadata.type as CompositeFieldMetadataType,
@@ -308,12 +308,12 @@ export class ObjectRecordsToGraphqlConnectionHelper {
return acc;
},
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
{} as Record<string, any>,
);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
private formatFieldValue(value: any, fieldType: FieldMetadataType) {
switch (fieldType) {
case FieldMetadataType.DATE:
@@ -12,7 +12,7 @@ export class ProcessAggregateHelper {
objectMetadataNameSingular,
}: {
selectedAggregatedFields: Record<string, AggregationField>;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
queryBuilder: WorkspaceSelectQueryBuilder<any>;
objectMetadataNameSingular: string;
}) => {
@@ -30,7 +30,7 @@ export const computeWhereConditionParts = ({
objectNameSingular: string;
key: string;
subFieldKey?: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
value: any;
fieldMetadataType: FieldMetadataType;
useDirectTableReference?: boolean;
@@ -10,7 +10,7 @@ import {
import { STANDARD_ERROR_MESSAGE } from 'src/engine/api/common/common-query-runners/errors/standard-error-message.constant';
export interface CursorData {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
[key: string]: any;
}
@@ -30,7 +30,7 @@ export const encodeCursor = <T extends ObjectRecord = ObjectRecord>(
objectRecord: T,
order: ObjectRecordOrderBy | undefined,
): string => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
const orderByValues: Record<string, any> = {};
const orderBy = order?.reduce((acc, orderBy) => ({ ...acc, ...orderBy }), {});
@@ -54,9 +54,9 @@ export const encodeCursorData = (cursorData: CursorData) => {
};
export const getCursor = (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
args: FindManyResolverArgs<any, any>,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
): Record<string, any> | undefined => {
if (args.after) return decodeCursor(args.after);
if (args.before) return decodeCursor(args.before);
@@ -7,7 +7,7 @@ import {
} from 'twenty-shared/types';
export type ObjectRecordFilter = Partial<{
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
[Property in keyof ObjectRecord]: any;
}>;
@@ -77,7 +77,7 @@ const parseValueNode = (
export const getFieldArgumentsByKey = (
info: GraphQLResolveInfo,
fieldKey: string,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
): Record<string, any> => {
// Start from the first top-level field node and search recursively
const targetField = findFieldNode(info.fieldNodes[0].selectionSet, fieldKey);
@@ -88,7 +88,7 @@ export const getFieldArgumentsByKey = (
}
// Extract the arguments from the field we've found
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
const args: Record<string, any> = {};
if (targetField.arguments && targetField.arguments.length) {
@@ -1,4 +1,4 @@
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
export const stringifyWithoutKeyQuote = (obj: any) => {
const jsonString = JSON.stringify(obj);
const jsonWithoutQuotes = jsonString?.replace(/"(\w+)"\s*:/g, '$1:');
@@ -53,7 +53,7 @@ const pgGraphQLErrorMapping: PgGraphQLErrorMapping = {
export const computePgGraphQLError = (
command: string,
objectName: string,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
errors: any[],
pgGraphqlConfig: PgGraphQLConfig,
) => {
@@ -4,10 +4,10 @@ import {
} from 'src/engine/api/graphql/workspace-query-builder/utils/composite-field-metadata.util';
export const handleCompositeKey = (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
result: any,
key: string,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
value: any,
): void => {
const parsedFieldKey = parseCompositeFieldKey(key);
@@ -24,7 +24,7 @@ export const handleCompositeKey = (
result[parsedFieldKey.parentFieldName][parsedFieldKey.childFieldName] = value;
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
export const parseResult = (obj: any): any => {
if (obj === null || typeof obj !== 'object' || typeof obj === 'function') {
return obj;
@@ -34,11 +34,11 @@ export const parseResult = (obj: any): any => {
return obj.map((item) => parseResult(item));
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
const result: any = {};
for (const key in obj) {
// eslint-disable-next-line no-prototype-builtins
// oxlint-disable-next-line no-prototype-builtins
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
result[key] = parseResult(obj[key]);
@@ -13,7 +13,7 @@ import {
import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver-builder/constants/resolver-method-names';
import { type workspaceResolverBuilderMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/factories/factories';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
export type Resolver<Args = any> = GraphQLFieldResolver<any, any, Args>;
// Use RESOLVER_METHOD_NAMES as the single source of truth for operation names
@@ -77,7 +77,7 @@ export interface UpdateOneResolverArgs<
export interface UpdateManyResolverArgs<
Data extends Partial<ObjectRecord> = Partial<ObjectRecord>,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
Filter = any,
> {
filter: Filter;
@@ -88,7 +88,7 @@ export interface DeleteOneResolverArgs {
id: string;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
export interface DeleteManyResolverArgs<Filter = any> {
filter: Filter;
}
@@ -97,7 +97,7 @@ export interface RestoreOneResolverArgs {
id: string;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
export interface RestoreManyResolverArgs<Filter = any> {
filter: Filter;
}
@@ -112,7 +112,7 @@ export interface DestroyOneResolverArgs {
id: string;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
export interface DestroyManyResolverArgs<Filter = any> {
filter: Filter;
}
@@ -22,7 +22,7 @@ export class ArgsTypeGenerator {
const fieldConfigMap: GraphQLFieldConfigArgumentMap = {};
for (const key in args) {
// eslint-disable-next-line no-prototype-builtins
// oxlint-disable-next-line no-prototype-builtins
if (!args.hasOwnProperty(key)) {
continue;
}
@@ -10,7 +10,7 @@ const isValidStringPosition = (value: string): boolean =>
const isValidNumberPosition = (value: number): boolean =>
typeof value === 'number';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
const checkPosition = (value: any): PositionType => {
if (isValidNumberPosition(value) || isValidStringPosition(value)) {
return value;
@@ -3,7 +3,7 @@ import { validate as uuidValidate } from 'uuid';
import { ValidationError } from 'src/engine/core-modules/graphql/utils/graphql-errors.util';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
const checkUUID = (value: any): string => {
if (typeof value !== 'string') {
throw new ValidationError('UUID must be a string');
@@ -1,14 +1,14 @@
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
export const cleanGraphQLResponse = (input: any) => {
if (!input) return null;
const output = { data: {} }; // Initialize the output with a data key at the top level
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
const isObject = (obj: any) => {
return obj !== null && typeof obj === 'object' && !Array.isArray(obj);
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
const cleanObject = (obj: any) => {
const cleanedObj = {};
@@ -49,7 +49,7 @@ export class AdminPanelHealthService {
: AdminPanelHealthServiceStatus.OUTAGE;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
private transformServiceDetails(details: any) {
if (!details) return details;
@@ -1,11 +1,11 @@
export class HealthStateManager {
private lastKnownState: {
timestamp: Date;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
details: Record<string, any>;
} | null = null;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
updateState(details: Record<string, any>) {
this.lastKnownState = {
timestamp: new Date(),
@@ -9,13 +9,13 @@ import { CreateAppTokenInput } from 'src/engine/core-modules/app-token/dtos/crea
import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
export const appTokenAutoResolverOpts: AutoResolverOpts<
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
any,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
any,
unknown,
unknown,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
ReadResolverOpts<any>,
PagingStrategies
>[] = [
@@ -11,7 +11,7 @@ export class BeforeCreateOneAppToken<T extends AppTokenEntity>
{
async run(
instance: CreateOneInputType<T>,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
context: any,
): Promise<CreateOneInputType<T>> {
const userId = context?.req?.user?.id;
@@ -32,7 +32,7 @@ export const copyYarnEngineAndBuildDependencies = async (
env: cleanEnv,
},
);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
} catch (error: any) {
const errorMessage =
[error?.stdout, error?.stderr].filter(Boolean).join('\n') ||
@@ -32,6 +32,6 @@ export class CreateObjectEventInput {
@Field(() => GraphQLJSON, { nullable: true })
@IsObject()
@IsOptional()
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
properties?: Record<string, any>;
}
@@ -11,7 +11,7 @@ export const genericTrackSchema = baseEventSchema.extend({
export type GenericTrackEvent<E extends string = string> = {
type: 'track';
event: E;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
properties: any;
timestamp: string;
version: string;
@@ -19,10 +19,10 @@ export type GenericTrackEvent<E extends string = string> = {
workspaceId?: string;
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
export const eventsRegistry = new Map<string, z.ZodSchema<any>>();
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
export function registerEvent<E extends string, S extends z.ZodObject<any>>(
event: E,
schema: S,
@@ -62,7 +62,7 @@ export class SSOAuthController {
PublicEndpointGuard,
NoPermissionGuard,
)
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
async generateMetadata(@Req() req: any): Promise<string | void> {
return generateServiceProviderMetadata({
wantAssertionsSigned: true,
@@ -26,7 +26,7 @@ export class OIDCAuthGuard extends AuthGuard('openidconnect') {
super();
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
private getStateByRequest(request: any): {
identityProviderId: string;
} {
@@ -71,7 +71,7 @@ import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.
import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service';
@Injectable()
// eslint-disable-next-line twenty/inject-workspace-repository
// oxlint-disable-next-line twenty/inject-workspace-repository
export class AuthService {
constructor(
private readonly accessTokenService: AccessTokenService,
@@ -48,7 +48,7 @@ import { isWorkEmail } from 'src/utils/is-work-email';
import { TelemetryEventType } from 'src/engine/core-modules/telemetry/telemetry-event.type';
@Injectable()
// eslint-disable-next-line twenty/inject-workspace-repository
// oxlint-disable-next-line twenty/inject-workspace-repository
export class SignInUpService {
constructor(
@InjectRepository(UserEntity)
@@ -19,7 +19,7 @@ export class GoogleAPIsOauthRequestCodeStrategy extends GoogleAPIsOauthCommonStr
super(twentyConfigService, isDraftEmailEnabled);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
authenticate(req: any, options: any) {
options = {
...options,
@@ -48,7 +48,7 @@ export class GoogleStrategy extends PassportStrategy(Strategy, 'google') {
});
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
authenticate(req: Request, options: any) {
options = {
...options,
@@ -11,7 +11,7 @@ export class MicrosoftAPIsOauthRequestCodeStrategy extends MicrosoftAPIsOauthCom
super(twentyConfigService);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
authenticate(req: any, options: any) {
options = {
...options,
@@ -47,7 +47,7 @@ export class MicrosoftStrategy extends PassportStrategy(Strategy, 'microsoft') {
});
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
authenticate(req: Request, options: any) {
options = {
...options,
@@ -45,7 +45,7 @@ export class OIDCAuthStrategy extends PassportStrategy(
});
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
async authenticate(req: Request, options: any) {
return super.authenticate(req, {
...options,
@@ -85,7 +85,7 @@ export class OIDCAuthStrategy extends PassportStrategy(
async validate(
req: Request,
tokenset: TokenSet,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
done: (err: any, user?: OIDCRequest['user']) => void,
) {
try {
@@ -38,7 +38,7 @@ import {
} from 'src/engine/workspace-manager/workspace-cleaner/jobs/clean-workspace-deletion-warning-user-vars.job';
@Injectable()
// eslint-disable-next-line twenty/inject-workspace-repository
// oxlint-disable-next-line twenty/inject-workspace-repository
export class BillingWebhookSubscriptionService {
protected readonly logger = new Logger(
BillingWebhookSubscriptionService.name,
@@ -16,7 +16,7 @@ export const WithLock = (
const originalMethod = descriptor.value;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
descriptor.value = async function (...args: any[]) {
const self = this as { cacheLockService: CacheLockService };
@@ -34,9 +34,9 @@ export class CacheStorageModule implements OnModuleDestroy {
constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {}
async onModuleDestroy() {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
if ((this.cacheManager.store as any)?.name === 'redis') {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
await (this.cacheManager.store as any).client.quit();
}
}
@@ -306,7 +306,7 @@ export class CacheStorageService {
}
private isRedisCache() {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
return (this.cache.store as any)?.name === 'redis';
}
@@ -18,7 +18,7 @@ export class CaptchaModule {
provide: CAPTCHA_DRIVER,
useFactory: async (
secureHttpClientService: SecureHttpClientService,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
...args: any[]
) => {
const config = await options.useFactory(...args);
@@ -31,7 +31,7 @@ export type CaptchaModuleOptions =
export type CaptchaModuleAsyncOptions = {
useFactory: (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
...args: any[]
) => CaptchaModuleOptions | Promise<CaptchaModuleOptions> | undefined;
} & Pick<ModuleMetadata, 'imports'> &
@@ -2,14 +2,14 @@ import * as Sentry from '@sentry/node';
export function SentryCronMonitor(monitorSlug: string, schedule: string) {
return function (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
_target: any,
_propertyKey: string,
descriptor: PropertyDescriptor,
) {
const originalMethod = descriptor.value;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
descriptor.value = async function (...args: any[]) {
if (!Sentry.isInitialized()) {
return await originalMethod.apply(this, args);
@@ -74,7 +74,7 @@ export const objectRecordChangedValues = (
return acc;
},
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
{} as Record<string, { before: any; after: any }>,
);
};
@@ -1,11 +1,11 @@
export function objectRecordDiffMerge(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
oldRecord: Record<string, any>,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
newRecord: Record<string, any>,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
): Record<string, any> {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
const result: Record<string, any> = { diff: {} };
// Iterate over the keys in the oldRecord diff
@@ -1,4 +1,4 @@
/* eslint-disable no-console */
/* oxlint-disable no-console */
import { type ExceptionHandlerOptions } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface';
import { type ExceptionHandlerDriverInterface } from 'src/engine/core-modules/exception-handler/interfaces';
@@ -7,7 +7,7 @@ export class ExceptionHandlerConsoleDriver
implements ExceptionHandlerDriverInterface
{
captureExceptions(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
exceptions: ReadonlyArray<any>,
options?: ExceptionHandlerOptions,
) {
@@ -16,7 +16,7 @@ export class ExceptionHandlerSentryDriver
implements ExceptionHandlerDriverInterface
{
captureExceptions(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
exceptions: ReadonlyArray<any>,
options?: ExceptionHandlerOptions,
) {
@@ -37,7 +37,7 @@ export class ExceptionHandlerModule extends ConfigurableModuleClass {
static forRootAsync(options: typeof ASYNC_OPTIONS_TYPE): DynamicModule {
const provider = {
provide: EXCEPTION_HANDLER_DRIVER,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
useFactory: async (...args: any[]) => {
const config = await options?.useFactory?.(...args);
@@ -13,7 +13,7 @@ export class ExceptionHandlerService {
) {}
captureExceptions(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
exceptions: ReadonlyArray<any>,
options?: ExceptionHandlerOptions,
): string[] {
@@ -2,7 +2,7 @@ import { type ExceptionHandlerOptions } from 'src/engine/core-modules/exception-
export interface ExceptionHandlerDriverInterface {
captureExceptions(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
exceptions: ReadonlyArray<any>,
options?: ExceptionHandlerOptions,
): string[];
@@ -9,7 +9,7 @@ export interface ExceptionHandlerOptions {
name: string;
};
document?: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
additionalData?: Record<string, any>;
user?: ExceptionHandlerUser | null;
workspace?: ExceptionHandlerWorkspace | null;
@@ -9,7 +9,7 @@ export class ExceptionHandlerMockService
implements ExceptionHandlerDriverInterface
{
captureExceptions(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
exceptions: readonly any[],
_?: ExceptionHandlerOptions | undefined,
): string[] {
@@ -10,7 +10,7 @@ export class MockedUnhandledExceptionFilter
extends BaseExceptionFilter
implements ExceptionFilter
{
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
catch(exception: any, _host: ArgumentsHost) {
throw exception;
}
@@ -89,7 +89,7 @@ export class FileController {
@Param('fileFolder') fileFolder: SupportedFileFolder,
@Param('id') fileId: string,
) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
const workspaceId = (req as any)?.workspaceId;
try {
@@ -42,7 +42,7 @@ export class ResolverValidationPipe implements PipeTransform {
throw new UserInputError(errorMessage);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
private toValidate(metatype: Type<any>): boolean {
const types: unknown[] = [String, Boolean, Number, Array, Object];
@@ -41,7 +41,7 @@ type RestrictedGraphQLErrorExtensions = {
};
export class BaseGraphQLError extends GraphQLError {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
public extensions: Record<string, any>;
override readonly name!: string;
readonly locations: ReadonlyArray<SourceLocation> | undefined;
@@ -51,12 +51,12 @@ export class BaseGraphQLError extends GraphQLError {
readonly nodes: ReadonlyArray<ASTNode> | undefined;
public originalError: Error | undefined;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
[key: string]: any;
constructor(
exceptionOrMessage: string | CustomException,
code?: string,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
extensions?: Record<string, any>,
) {
if (exceptionOrMessage instanceof CustomException) {
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -34,7 +34,7 @@ export class JwtWrapperService {
return this.jwtService.sign(payload, options);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
verify<T extends object = any>(
token: string,
options?: { secret: string },
@@ -42,7 +42,7 @@ export class JwtWrapperService {
return this.jwtService.verify(token, options);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
decode<T = any>(payload: string, options?: jwt.DecodeOptions): T {
return this.jwtService.decode(payload, options);
}
@@ -8,7 +8,7 @@ import {
} from 'src/engine/core-modules/key-value-pair/key-value-pair.entity';
export class KeyValuePairService<
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
KeyValueTypesMap extends Record<string, any> = Record<string, any>,
> {
constructor(
@@ -39,7 +39,7 @@ export class LoggerModule extends ConfigurableModuleClass {
static forRootAsync(options: typeof ASYNC_OPTIONS_TYPE): DynamicModule {
const provider = {
provide: LOGGER_DRIVER,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
useFactory: async (...args: any[]) => {
const config = await options?.useFactory?.(...args);
@@ -18,12 +18,12 @@ type LoggerDriverType = ConsoleLogger & {
export class LoggerService implements LoggerServiceInterface {
constructor(@Inject(LOGGER_DRIVER) private driver: LoggerDriverType) {}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
log(message: any, category: string, ...optionalParams: any[]) {
this.driver.log.apply(this.driver, [message, category, ...optionalParams]);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
error(message: any, category: string, ...optionalParams: any[]) {
this.driver.error.apply(this.driver, [
message,
@@ -32,12 +32,12 @@ export class LoggerService implements LoggerServiceInterface {
]);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
warn(message: any, category: string, ...optionalParams: any[]) {
this.driver.warn.apply(this.driver, [message, category, ...optionalParams]);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
debug?(message: any, category: string, ...optionalParams: any[]) {
this.driver.debug?.apply(this.driver, [
message,
@@ -46,7 +46,7 @@ export class LoggerService implements LoggerServiceInterface {
]);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
verbose?(message: any, category: string, ...optionalParams: any[]) {
this.driver.verbose?.apply(this.driver, [
message,
@@ -61,14 +61,14 @@ export class LoggerService implements LoggerServiceInterface {
time(category: string, label: string) {
if (this.driver.options.logLevels?.includes('debug')) {
// eslint-disable-next-line no-console
// oxlint-disable-next-line no-console
console.time(`[${category}] ${label}`);
}
}
timeEnd(category: string, label: string) {
if (this.driver.options.logLevels?.includes('debug')) {
// eslint-disable-next-line no-console
// oxlint-disable-next-line no-console
console.timeEnd(`[${category}] ${label}`);
}
}
@@ -6,7 +6,7 @@ export const handler = async (event) => {
const mainPath = `/tmp/${randomId}.mjs`;
// eslint-disable-next-line no-undef
// oxlint-disable-next-line no-undef
const oldProcessEnv = { ...process.env };
try {
@@ -14,7 +14,7 @@ export const handler = async (event) => {
await fs.writeFile(mainPath, code, 'utf8');
// eslint-disable-next-line no-undef
// oxlint-disable-next-line no-undef
process.env = { ...process.env, ...(env ?? {}) };
const mainFile = await import(mainPath);
@@ -26,7 +26,7 @@ export const handler = async (event) => {
return await handlerFn(params);
} finally {
await fs.rm(mainPath, { force: true });
// eslint-disable-next-line no-undef
// oxlint-disable-next-line no-undef
process.env = oldProcessEnv;
}
};
@@ -63,7 +63,7 @@ export type LogicFunctionModuleOptions =
export type LogicFunctionModuleAsyncOptions = {
useFactory: (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
...args: any[]
) => LogicFunctionModuleOptions | Promise<LogicFunctionModuleOptions>;
} & Pick<ModuleMetadata, 'imports'> &
@@ -15,7 +15,7 @@ export class LogicFunctionDriversModule {
static forRootAsync(options: LogicFunctionModuleAsyncOptions): DynamicModule {
const provider = {
provide: LOGIC_FUNCTION_DRIVER,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
useFactory: async (...args: any[]) => {
const config = await options.useFactory(...args);
@@ -1,4 +1,4 @@
/* eslint-disable no-console */
/* oxlint-disable no-console */
export class ConsoleListener {
private readonly originalConsole;
@@ -12,11 +12,11 @@ export class ConsoleListener {
};
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
intercept(callback: (type: string, message: any[]) => void) {
Object.keys(this.originalConsole).forEach((method) => {
// @ts-expect-error legacy noImplicitAny
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
console[method] = (...args: any[]) => {
callback(method, args);
};
@@ -26,7 +26,7 @@ export class ConsoleListener {
release() {
Object.keys(this.originalConsole).forEach((method) => {
// @ts-expect-error legacy noImplicitAny
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
console[method] = (...args: any[]) => {
// @ts-expect-error legacy noImplicitAny
this.originalConsole[method](...args);

Some files were not shown because too many files have changed in this diff Show More