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/prefer-nullish-coalescing': 'warn',
'@typescript-eslint/no-base-to-string': 'warn', '@typescript-eslint/no-base-to-string': 'warn',
'@typescript-eslint/no-redundant-type-constituents': 'warn', '@typescript-eslint/no-redundant-type-constituents': 'warn',
'@typescript-eslint/no-unused-vars': 'warn',
'@typescript-eslint/no-unsafe-argument': 'warn', '@typescript-eslint/no-unsafe-argument': 'warn',
'@typescript-eslint/prefer-optional-chain': 'warn', '@typescript-eslint/prefer-optional-chain': 'warn',
'@typescript-eslint/restrict-plus-operands': 'warn', '@typescript-eslint/restrict-plus-operands': 'warn',

View file

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

View file

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

View file

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

View file

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

View file

@ -77,8 +77,7 @@ export class Start extends BaseCommand {
private openBrowser() { private openBrowser() {
const editorUrl = Container.get(UrlService).baseUrl; const editorUrl = Container.get(UrlService).baseUrl;
// eslint-disable-next-line @typescript-eslint/no-unused-vars open(editorUrl, { wait: true }).catch(() => {
open(editorUrl, { wait: true }).catch((error: Error) => {
console.log( console.log(
`\nWas not able to open URL in browser. Please open manually by visiting:\n${editorUrl}\n`, `\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/naming-convention */
/* eslint-disable @typescript-eslint/no-unused-vars */
import type { BinaryData } from 'n8n-core'; import type { BinaryData } from 'n8n-core';
import type { schema } from './schema'; 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-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/no-unused-vars */
import { MessageEventBusDestination } from './MessageEventBusDestination.ee'; import { MessageEventBusDestination } from './MessageEventBusDestination.ee';
import axios from 'axios'; import axios from 'axios';
@ -133,7 +132,6 @@ export class MessageEventBusDestinationWebhook
const sendQuery = this.sendQuery; const sendQuery = this.sendQuery;
const specifyQuery = this.specifyQuery; const specifyQuery = this.specifyQuery;
const sendPayload = this.sendPayload;
const sendHeaders = this.sendHeaders; const sendHeaders = this.sendHeaders;
const specifyHeaders = this.specifyHeaders; const specifyHeaders = this.specifyHeaders;
@ -287,8 +285,6 @@ export class MessageEventBusDestinationWebhook
let httpDigestAuth; let httpDigestAuth;
let httpHeaderAuth; let httpHeaderAuth;
let httpQueryAuth; let httpQueryAuth;
let oAuth1Api;
let oAuth2Api;
if (this.authentication === 'genericCredentialType') { if (this.authentication === 'genericCredentialType') {
if (this.genericAuthType === 'httpBasicAuth') { if (this.genericAuthType === 'httpBasicAuth') {
@ -307,14 +303,6 @@ export class MessageEventBusDestinationWebhook
try { try {
httpQueryAuth = await this.matchDecryptedCredentialType('httpQueryAuth'); httpQueryAuth = await this.matchDecryptedCredentialType('httpQueryAuth');
} catch {} } 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", "tsBuildInfoFile": "dist/typecheck.tsbuildinfo",
// TODO: remove all options below this line // TODO: remove all options below this line
"strict": false, "strict": false,
"noUnusedLocals": false,
"useUnknownInCatchVariables": false "useUnknownInCatchVariables": false
}, },
"include": ["src/**/*.ts", "test/**/*.ts", "src/sso/saml/saml-schema-metadata-2.0.xsd"], "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-unsafe-argument */
/* eslint-disable @typescript-eslint/no-explicit-any */ /* 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/prefer-nullish-coalescing */
/* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable @typescript-eslint/naming-convention */
/* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-call */
@ -2527,8 +2526,6 @@ async function getInputConnectionData(
closeFunctions: CloseFunction[], closeFunctions: CloseFunction[],
inputName: ConnectionTypes, inputName: ConnectionTypes,
itemIndex: number, itemIndex: number,
// TODO: Not implemented yet, and maybe also not needed
inputIndex?: number,
): Promise<unknown> { ): Promise<unknown> {
const node = this.getNode(); const node = this.getNode();
const nodeType = workflow.nodeTypes.getByNameAndVersion(node.type, node.typeVersion); const nodeType = workflow.nodeTypes.getByNameAndVersion(node.type, node.typeVersion);
@ -3201,12 +3198,12 @@ export function getExecutePollFunctions(
return ((workflow: Workflow, node: INode) => { return ((workflow: Workflow, node: INode) => {
return { return {
...getCommonWorkflowFunctions(workflow, node, additionalData), ...getCommonWorkflowFunctions(workflow, node, additionalData),
__emit: (data: INodeExecutionData[][]): void => { __emit: (): void => {
throw new ApplicationError( throw new ApplicationError(
'Overwrite NodeExecuteFunctions.getExecutePollFunctions.__emit function!', 'Overwrite NodeExecuteFunctions.getExecutePollFunctions.__emit function!',
); );
}, },
__emitError(error: Error) { __emitError() {
throw new ApplicationError( throw new ApplicationError(
'Overwrite NodeExecuteFunctions.getExecutePollFunctions.__emitError function!', 'Overwrite NodeExecuteFunctions.getExecutePollFunctions.__emitError function!',
); );
@ -3264,12 +3261,12 @@ export function getExecuteTriggerFunctions(
return ((workflow: Workflow, node: INode) => { return ((workflow: Workflow, node: INode) => {
return { return {
...getCommonWorkflowFunctions(workflow, node, additionalData), ...getCommonWorkflowFunctions(workflow, node, additionalData),
emit: (data: INodeExecutionData[][]): void => { emit: (): void => {
throw new ApplicationError( throw new ApplicationError(
'Overwrite NodeExecuteFunctions.getExecuteTriggerFunctions.emit function!', 'Overwrite NodeExecuteFunctions.getExecuteTriggerFunctions.emit function!',
); );
}, },
emitError: (error: Error): void => { emitError: (): void => {
throw new ApplicationError( throw new ApplicationError(
'Overwrite NodeExecuteFunctions.getExecuteTriggerFunctions.emit function!', 'Overwrite NodeExecuteFunctions.getExecuteTriggerFunctions.emit function!',
); );
@ -3390,8 +3387,6 @@ export function getExecuteFunctions(
async getInputConnectionData( async getInputConnectionData(
inputName: ConnectionTypes, inputName: ConnectionTypes,
itemIndex: number, itemIndex: number,
// TODO: Not implemented yet, and maybe also not needed
inputIndex?: number,
): Promise<unknown> { ): Promise<unknown> {
return await getInputConnectionData.call( return await getInputConnectionData.call(
this, this,
@ -3405,7 +3400,6 @@ export function getExecuteFunctions(
closeFunctions, closeFunctions,
inputName, inputName,
itemIndex, itemIndex,
inputIndex,
); );
}, },
@ -3919,8 +3913,6 @@ export function getExecuteWebhookFunctions(
async getInputConnectionData( async getInputConnectionData(
inputName: ConnectionTypes, inputName: ConnectionTypes,
itemIndex: number, itemIndex: number,
// TODO: Not implemented yet, and maybe also not needed
inputIndex?: number,
): Promise<unknown> { ): Promise<unknown> {
// To be able to use expressions like "$json.sessionId" set the // To be able to use expressions like "$json.sessionId" set the
// body data the webhook received to what is normally used for // body data the webhook received to what is normally used for
@ -3954,7 +3946,6 @@ export function getExecuteWebhookFunctions(
closeFunctions, closeFunctions,
inputName, inputName,
itemIndex, itemIndex,
inputIndex,
); );
}, },
getMode: () => mode, getMode: () => mode,

View file

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

View file

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

View file

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

View file

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

View file

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