ci: Enforce noUnusedLocals on all backend and nodes packages (no-changelog) (#8428)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™ 2024-01-25 14:33:35 +01:00 committed by GitHub
parent 16a2ea5df0
commit cc2f0ada76
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 33 additions and 93 deletions

View file

@ -32,7 +32,6 @@ module.exports = {
'@typescript-eslint/prefer-nullish-coalescing': 'warn',
'@typescript-eslint/no-base-to-string': 'warn',
'@typescript-eslint/no-redundant-type-constituents': 'warn',
'@typescript-eslint/no-unused-vars': 'warn',
'@typescript-eslint/no-unsafe-argument': 'warn',
'@typescript-eslint/prefer-optional-chain': 'warn',
'@typescript-eslint/restrict-plus-operands': 'warn',

View file

@ -10,7 +10,6 @@
"forceConsistentCasingInFileNames": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"strictNullChecks": true,
"preserveConstEnums": true,
"esModuleInterop": true,

View file

@ -419,19 +419,9 @@ const config = (module.exports = {
*/
'prefer-spread': 'error',
/**
* https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/no-unused-vars.md
*/
// These are tuned off since we use `noUnusedLocals` and `noUnusedParameters` now
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': [
process.env.CI_LINT_MASTER ? 'warn' : 'error',
{
argsIgnorePattern: '^_',
destructuredArrayIgnorePattern: '^_',
varsIgnorePattern: '^_',
ignoreRestSiblings: true,
},
],
'@typescript-eslint/no-unused-vars': 'off',
/**
* https://www.typescriptlang.org/docs/handbook/enums.html#const-enums
@ -471,12 +461,6 @@ const config = (module.exports = {
},
overrides: [
{
files: ['**/*.d.ts'],
rules: {
'@typescript-eslint/no-unused-vars': 'off',
},
},
{
files: ['test/**/*.ts', '**/__tests__/*.ts'],
rules: {
@ -499,7 +483,6 @@ const config = (module.exports = {
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unused-expressions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-use-before-define': 'off',
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/prefer-nullish-coalescing': 'off',

View file

@ -2,7 +2,6 @@
/* eslint-disable @typescript-eslint/no-use-before-define */
/* eslint-disable id-denylist */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unused-vars */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
import { WorkflowExecute } from 'n8n-core';
@ -305,11 +304,7 @@ function hookFunctionsPush(): IWorkflowExecuteHooks {
},
],
workflowExecuteAfter: [
async function (
this: WorkflowHooks,
fullRunData: IRun,
newStaticData: IDataObject,
): Promise<void> {
async function (this: WorkflowHooks, fullRunData: IRun): Promise<void> {
const { sessionId, executionId, retryOf } = this;
const { id: workflowId } = this.workflowData;
logger.debug('Executing hook (hookFunctionsPush)', {
@ -360,8 +355,7 @@ function hookFunctionsPush(): IWorkflowExecuteHooks {
};
}
export function hookFunctionsPreExecute(parentProcessMode?: string): IWorkflowExecuteHooks {
const logger = Container.get(Logger);
export function hookFunctionsPreExecute(): IWorkflowExecuteHooks {
const externalHooks = Container.get(ExternalHooks);
return {
workflowExecuteBefore: [
@ -556,7 +550,7 @@ function hookFunctionsSaveWorker(): IWorkflowExecuteHooks {
},
],
workflowExecuteBefore: [
async function (workflow: Workflow, data: IRunExecutionData): Promise<void> {
async function (): Promise<void> {
void internalHooks.onWorkflowBeforeExecute(this.executionId, this.workflowData);
},
],
@ -625,15 +619,11 @@ function hookFunctionsSaveWorker(): IWorkflowExecuteHooks {
eventsService.emit('workflowExecutionCompleted', this.workflowData, fullRunData);
}
},
async function (
this: WorkflowHooks,
fullRunData: IRun,
newStaticData: IDataObject,
): Promise<void> {
async function (this: WorkflowHooks, fullRunData: IRun): Promise<void> {
// send tracking and event log events, but don't wait for them
void internalHooks.onWorkflowPostExecute(this.executionId, this.workflowData, fullRunData);
},
async function (this: WorkflowHooks, fullRunData: IRun, newStaticData: IDataObject) {
async function (this: WorkflowHooks, fullRunData: IRun) {
const externalHooks = Container.get(ExternalHooks);
if (externalHooks.exists('workflow.postExecute')) {
try {
@ -661,7 +651,6 @@ export async function getRunData(
workflowData: IWorkflowBase,
userId: string,
inputData?: INodeExecutionData[],
parentWorkflowId?: string,
): Promise<IWorkflowExecutionDataProcess> {
const mode = 'integrated';
@ -1012,7 +1001,7 @@ function getWorkflowHooksIntegrated(
): WorkflowHooks {
optionalParameters = optionalParameters || {};
const hookFunctions = hookFunctionsSave(optionalParameters.parentProcessMode);
const preExecuteFunctions = hookFunctionsPreExecute(optionalParameters.parentProcessMode);
const preExecuteFunctions = hookFunctionsPreExecute();
for (const key of Object.keys(preExecuteFunctions)) {
if (hookFunctions[key] === undefined) {
hookFunctions[key] = [];
@ -1034,7 +1023,7 @@ export function getWorkflowHooksWorkerExecuter(
): WorkflowHooks {
optionalParameters = optionalParameters || {};
const hookFunctions = hookFunctionsSaveWorker();
const preExecuteFunctions = hookFunctionsPreExecute(optionalParameters.parentProcessMode);
const preExecuteFunctions = hookFunctionsPreExecute();
for (const key of Object.keys(preExecuteFunctions)) {
if (hookFunctions[key] === undefined) {
hookFunctions[key] = [];
@ -1055,7 +1044,7 @@ export function getWorkflowHooksWorkerMain(
optionalParameters?: IWorkflowHooksOptionalParameters,
): WorkflowHooks {
optionalParameters = optionalParameters || {};
const hookFunctions = hookFunctionsPreExecute(optionalParameters.parentProcessMode);
const hookFunctions = hookFunctionsPreExecute();
// TODO: why are workers pushing to frontend?
// TODO: simplifying this for now to just leave the bare minimum hooks
@ -1075,11 +1064,7 @@ export function getWorkflowHooksWorkerMain(
hookFunctions.nodeExecuteBefore = [];
hookFunctions.nodeExecuteAfter = [];
hookFunctions.workflowExecuteAfter = [
async function (
this: WorkflowHooks,
fullRunData: IRun,
newStaticData: IDataObject,
): Promise<void> {
async function (this: WorkflowHooks, fullRunData: IRun): Promise<void> {
const executionStatus = determineFinalExecutionStatus(fullRunData);
const saveSettings = toSaveSettings(this.workflowData.settings);

View file

@ -212,7 +212,6 @@ class WorkflowRunnerProcess {
workflowData,
additionalData.userId,
options?.inputData,
options?.parentWorkflowId,
);
await sendToParentProcess('startExecution', { runData });
const executionId: string = await new Promise((resolve) => {

View file

@ -77,8 +77,7 @@ export class Start extends BaseCommand {
private openBrowser() {
const editorUrl = Container.get(UrlService).baseUrl;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
open(editorUrl, { wait: true }).catch((error: Error) => {
open(editorUrl, { wait: true }).catch(() => {
console.log(
`\nWas not able to open URL in browser. Please open manually by visiting:\n${editorUrl}\n`,
);

View file

@ -1,5 +1,4 @@
/* eslint-disable @typescript-eslint/naming-convention */
/* eslint-disable @typescript-eslint/no-unused-vars */
import type { BinaryData } from 'n8n-core';
import type { schema } from './schema';

View file

@ -1,6 +1,5 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/no-unused-vars */
import { MessageEventBusDestination } from './MessageEventBusDestination.ee';
import axios from 'axios';
@ -133,7 +132,6 @@ export class MessageEventBusDestinationWebhook
const sendQuery = this.sendQuery;
const specifyQuery = this.specifyQuery;
const sendPayload = this.sendPayload;
const sendHeaders = this.sendHeaders;
const specifyHeaders = this.specifyHeaders;
@ -287,8 +285,6 @@ export class MessageEventBusDestinationWebhook
let httpDigestAuth;
let httpHeaderAuth;
let httpQueryAuth;
let oAuth1Api;
let oAuth2Api;
if (this.authentication === 'genericCredentialType') {
if (this.genericAuthType === 'httpBasicAuth') {
@ -307,14 +303,6 @@ export class MessageEventBusDestinationWebhook
try {
httpQueryAuth = await this.matchDecryptedCredentialType('httpQueryAuth');
} catch {}
} else if (this.genericAuthType === 'oAuth1Api') {
try {
oAuth1Api = await this.matchDecryptedCredentialType('oAuth1Api');
} catch {}
} else if (this.genericAuthType === 'oAuth2Api') {
try {
oAuth2Api = await this.matchDecryptedCredentialType('oAuth2Api');
} catch {}
}
}

View file

@ -13,7 +13,6 @@
"tsBuildInfoFile": "dist/typecheck.tsbuildinfo",
// TODO: remove all options below this line
"strict": false,
"noUnusedLocals": false,
"useUnknownInCatchVariables": false
},
"include": ["src/**/*.ts", "test/**/*.ts", "src/sso/saml/saml-schema-metadata-2.0.xsd"],

View file

@ -1,6 +1,5 @@
/* eslint-disable @typescript-eslint/no-unsafe-argument */
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/no-unused-vars */
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
/* eslint-disable @typescript-eslint/naming-convention */
/* eslint-disable @typescript-eslint/no-unsafe-call */
@ -2527,8 +2526,6 @@ async function getInputConnectionData(
closeFunctions: CloseFunction[],
inputName: ConnectionTypes,
itemIndex: number,
// TODO: Not implemented yet, and maybe also not needed
inputIndex?: number,
): Promise<unknown> {
const node = this.getNode();
const nodeType = workflow.nodeTypes.getByNameAndVersion(node.type, node.typeVersion);
@ -3201,12 +3198,12 @@ export function getExecutePollFunctions(
return ((workflow: Workflow, node: INode) => {
return {
...getCommonWorkflowFunctions(workflow, node, additionalData),
__emit: (data: INodeExecutionData[][]): void => {
__emit: (): void => {
throw new ApplicationError(
'Overwrite NodeExecuteFunctions.getExecutePollFunctions.__emit function!',
);
},
__emitError(error: Error) {
__emitError() {
throw new ApplicationError(
'Overwrite NodeExecuteFunctions.getExecutePollFunctions.__emitError function!',
);
@ -3264,12 +3261,12 @@ export function getExecuteTriggerFunctions(
return ((workflow: Workflow, node: INode) => {
return {
...getCommonWorkflowFunctions(workflow, node, additionalData),
emit: (data: INodeExecutionData[][]): void => {
emit: (): void => {
throw new ApplicationError(
'Overwrite NodeExecuteFunctions.getExecuteTriggerFunctions.emit function!',
);
},
emitError: (error: Error): void => {
emitError: (): void => {
throw new ApplicationError(
'Overwrite NodeExecuteFunctions.getExecuteTriggerFunctions.emit function!',
);
@ -3390,8 +3387,6 @@ export function getExecuteFunctions(
async getInputConnectionData(
inputName: ConnectionTypes,
itemIndex: number,
// TODO: Not implemented yet, and maybe also not needed
inputIndex?: number,
): Promise<unknown> {
return await getInputConnectionData.call(
this,
@ -3405,7 +3400,6 @@ export function getExecuteFunctions(
closeFunctions,
inputName,
itemIndex,
inputIndex,
);
},
@ -3919,8 +3913,6 @@ export function getExecuteWebhookFunctions(
async getInputConnectionData(
inputName: ConnectionTypes,
itemIndex: number,
// TODO: Not implemented yet, and maybe also not needed
inputIndex?: number,
): Promise<unknown> {
// To be able to use expressions like "$json.sessionId" set the
// body data the webhook received to what is normally used for
@ -3954,7 +3946,6 @@ export function getExecuteWebhookFunctions(
closeFunctions,
inputName,
itemIndex,
inputIndex,
);
},
getMode: () => mode,

View file

@ -5,7 +5,6 @@
"preserveSymlinks": true,
"tsBuildInfoFile": "dist/build.tsbuildinfo",
// TODO: remove all options below this line
"noUnusedLocals": false,
"useUnknownInCatchVariables": false
},
"include": ["commands/**/*.ts", "src/**/*.ts"]

View file

@ -33,7 +33,6 @@ module.exports = {
'@typescript-eslint/prefer-nullish-coalescing': 'warn',
'@typescript-eslint/no-base-to-string': 'warn',
'@typescript-eslint/no-redundant-type-constituents': 'warn',
'@typescript-eslint/no-unused-vars': 'warn',
'@typescript-eslint/no-unsafe-argument': 'warn',
'@typescript-eslint/prefer-optional-chain': 'warn',
'@typescript-eslint/restrict-plus-operands': 'warn',

View file

@ -1,6 +1,4 @@
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
/* eslint-disable @typescript-eslint/no-unused-vars */
/* eslint-disable @typescript-eslint/no-this-alias */
/* eslint-disable @typescript-eslint/no-unsafe-return */
@ -122,13 +120,13 @@ export class WorkflowDataProxy {
return Reflect.ownKeys(target);
},
getOwnPropertyDescriptor(k) {
getOwnPropertyDescriptor() {
return {
enumerable: true,
configurable: true,
};
},
get(target, name, receiver) {
get(_, name) {
if (name === 'isProxy') return true;
name = name.toString();
@ -151,7 +149,7 @@ export class WorkflowDataProxy {
return Reflect.ownKeys(target);
},
get(target, name, receiver) {
get(_, name) {
if (name === 'isProxy') return true;
name = name.toString();
return that.selfData[name];
@ -175,13 +173,13 @@ export class WorkflowDataProxy {
ownKeys(target) {
return Reflect.ownKeys(target);
},
getOwnPropertyDescriptor(k) {
getOwnPropertyDescriptor() {
return {
enumerable: true,
configurable: true,
};
},
get(target, name, receiver) {
get(target, name) {
if (name === 'isProxy') return true;
if (name === 'toJSON') return () => deepCopy(target);
@ -439,7 +437,7 @@ export class WorkflowDataProxy {
{},
{
has: () => true,
get(target, name, receiver) {
get(_, name) {
if (name === 'isProxy') return true;
if (typeof process === 'undefined') {
@ -470,10 +468,10 @@ export class WorkflowDataProxy {
{},
{
has: () => true,
ownKeys(target) {
ownKeys() {
return allowedValues;
},
getOwnPropertyDescriptor(k) {
getOwnPropertyDescriptor() {
return {
enumerable: true,
configurable: true,
@ -518,10 +516,10 @@ export class WorkflowDataProxy {
{},
{
has: () => true,
ownKeys(target) {
ownKeys() {
return allowedValues;
},
getOwnPropertyDescriptor(k) {
getOwnPropertyDescriptor() {
return {
enumerable: true,
configurable: true,
@ -561,7 +559,7 @@ export class WorkflowDataProxy {
{},
{
has: () => true,
get(target, name, receiver) {
get(_, name) {
if (name === 'isProxy') return true;
const nodeName = name.toString();
@ -932,7 +930,7 @@ export class WorkflowDataProxy {
{},
{
has: () => true,
ownKeys(target) {
ownKeys() {
return [
'pairedItem',
'itemMatching',
@ -1056,10 +1054,10 @@ export class WorkflowDataProxy {
$input: new Proxy({} as ProxyInput, {
has: () => true,
ownKeys(target) {
ownKeys() {
return ['all', 'context', 'first', 'item', 'last', 'params'];
},
getOwnPropertyDescriptor(k) {
getOwnPropertyDescriptor() {
return {
enumerable: true,
configurable: true,

View file

@ -2,6 +2,8 @@
"compilerOptions": {
"types": ["node"],
"noEmit": false,
"noUnusedLocals": false,
"noUnusedParameters": false,
"declaration": true
},
"tsc-alias": {

View file

@ -11,6 +11,7 @@
"noImplicitAny": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"strictNullChecks": true,
"preserveConstEnums": true,
"esModuleInterop": true,