From d5f7944ac4a112b50054619bc53b4588f75176cc Mon Sep 17 00:00:00 2001 From: Elliot DeNolf Date: Mon, 29 Apr 2024 22:30:05 -0400 Subject: [PATCH] chore(eslint): set prefer-ts-expect-error to error --- .../eslint-config/index.js | 5 +- .../src/fields/config/sanitize.spec.ts | 55 ++++++++----------- .../payload/src/utilities/createLocalReq.ts | 2 +- 3 files changed, 26 insertions(+), 36 deletions(-) diff --git a/packages/eslint-config-payload/eslint-config/index.js b/packages/eslint-config-payload/eslint-config/index.js index 5162d9eac..0ecf7320f 100644 --- a/packages/eslint-config-payload/eslint-config/index.js +++ b/packages/eslint-config-payload/eslint-config/index.js @@ -53,8 +53,9 @@ const typescriptRules = { '@typescript-eslint/consistent-type-imports': 'warn', '@typescript-eslint/no-explicit-any': 'warn', // Type-aware any rules end - // ts-expect should always be preferred over ts-ignore - '@typescript-eslint/prefer-ts-expect-error': 'warn', + + // ts-expect preferred over ts-ignore. It will error if the expected error is no longer present. + '@typescript-eslint/prefer-ts-expect-error': 'error', // By default, it errors for unused variables. This is annoying, warnings are enough. '@typescript-eslint/no-unused-vars': [ 'warn', diff --git a/packages/payload/src/fields/config/sanitize.spec.ts b/packages/payload/src/fields/config/sanitize.spec.ts index fa52e16a8..3dae7409c 100644 --- a/packages/payload/src/fields/config/sanitize.spec.ts +++ b/packages/payload/src/fields/config/sanitize.spec.ts @@ -1,3 +1,6 @@ +import { Config } from '../../config/types' +import { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors' +import { sanitizeFields } from './sanitize' import type { ArrayField, Block, @@ -7,34 +10,20 @@ import type { NumberField, TextField, } from './types' -import { Config } from '../../config/types' -import { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors' -import { sanitizeFields } from './sanitize' -import type { BaseDatabaseAdapter } from '../../database/types.js' - -const dummyConfig: Config = { - collections: [], - db: { - defaultIDType: 'text', - init: () => ({}) as BaseDatabaseAdapter['init'], - } as BaseDatabaseAdapter, -} describe('sanitizeFields', () => { + const config = {} as Config it('should throw on missing type field', () => { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore const fields: Field[] = [ + // @ts-expect-error { label: 'some-collection', name: 'Some Collection', }, ] expect(() => { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore sanitizeFields({ - config: dummyConfig, + config, fields, validRelationships: [], }) @@ -50,7 +39,7 @@ describe('sanitizeFields', () => { ] expect(() => { sanitizeFields({ - config: dummyConfig, + config, fields, validRelationships: [], }) @@ -66,7 +55,7 @@ describe('sanitizeFields', () => { }, ] const sanitizedField = sanitizeFields({ - config: dummyConfig, + config, fields, validRelationships: [], })[0] as TextField @@ -83,7 +72,7 @@ describe('sanitizeFields', () => { }, ] const sanitizedField = sanitizeFields({ - config: dummyConfig, + config, fields, validRelationships: [], })[0] as TextField @@ -102,7 +91,7 @@ describe('sanitizeFields', () => { }, ] const sanitizedField = sanitizeFields({ - config: dummyConfig, + config, fields, validRelationships: [], })[0] as TextField @@ -124,7 +113,7 @@ describe('sanitizeFields', () => { type: 'array', } const sanitizedField = sanitizeFields({ - config: dummyConfig, + config, fields: [arrayField], validRelationships: [], })[0] as ArrayField @@ -153,7 +142,7 @@ describe('sanitizeFields', () => { }, ] const sanitizedField = sanitizeFields({ - config: dummyConfig, + config, fields, validRelationships: [], })[0] as BlockField @@ -178,7 +167,7 @@ describe('sanitizeFields', () => { }, ] const sanitizedField = sanitizeFields({ - config: dummyConfig, + config, fields, validRelationships: [], })[0] as ArrayField @@ -202,7 +191,7 @@ describe('sanitizeFields', () => { }, ] const sanitizedField = sanitizeFields({ - config: dummyConfig, + config, fields, validRelationships: [], })[0] as BlockField @@ -229,7 +218,7 @@ describe('sanitizeFields', () => { }, ] expect(() => { - sanitizeFields({ config: dummyConfig, fields, validRelationships }) + sanitizeFields({ config, fields, validRelationships }) }).not.toThrow() }) @@ -244,7 +233,7 @@ describe('sanitizeFields', () => { }, ] expect(() => { - sanitizeFields({ config: dummyConfig, fields, validRelationships }) + sanitizeFields({ config, fields, validRelationships }) }).not.toThrow() }) @@ -270,7 +259,7 @@ describe('sanitizeFields', () => { }, ] expect(() => { - sanitizeFields({ config: dummyConfig, fields, validRelationships }) + sanitizeFields({ config, fields, validRelationships }) }).not.toThrow() }) @@ -285,7 +274,7 @@ describe('sanitizeFields', () => { }, ] expect(() => { - sanitizeFields({ config: dummyConfig, fields, validRelationships }) + sanitizeFields({ config, fields, validRelationships }) }).toThrow(InvalidFieldRelationship) }) @@ -300,7 +289,7 @@ describe('sanitizeFields', () => { }, ] expect(() => { - sanitizeFields({ config: dummyConfig, fields, validRelationships }) + sanitizeFields({ config, fields, validRelationships }) }).toThrow(InvalidFieldRelationship) }) @@ -326,7 +315,7 @@ describe('sanitizeFields', () => { }, ] expect(() => { - sanitizeFields({ config: dummyConfig, fields, validRelationships }) + sanitizeFields({ config, fields, validRelationships }) }).toThrow(InvalidFieldRelationship) }) @@ -340,7 +329,7 @@ describe('sanitizeFields', () => { ] const sanitizedField = sanitizeFields({ - config: dummyConfig, + config, fields, validRelationships: [], })[0] as CheckboxField @@ -349,7 +338,7 @@ describe('sanitizeFields', () => { it('should return empty field array if no fields', () => { const sanitizedFields = sanitizeFields({ - config: dummyConfig, + config, fields: [], validRelationships: [], }) diff --git a/packages/payload/src/utilities/createLocalReq.ts b/packages/payload/src/utilities/createLocalReq.ts index d8deacee9..09bfa921e 100644 --- a/packages/payload/src/utilities/createLocalReq.ts +++ b/packages/payload/src/utilities/createLocalReq.ts @@ -26,7 +26,7 @@ const attachFakeURLProperties = (req: PayloadRequestWithData) => { * *NOTE* * If no URL is provided, the local API was called directly outside * the context of a request. Therefore we create a fake URL object. - * `ts-ignore` is used below for properties that are 'read-only' + * `ts-expect-error` is used below for properties that are 'read-only' * since they do not exist yet we can safely ignore the error. */ let urlObject